]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Protocol/TapeIo.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Protocol / TapeIo.h
diff --git a/OldMdePkg/Include/Protocol/TapeIo.h b/OldMdePkg/Include/Protocol/TapeIo.h
new file mode 100644 (file)
index 0000000..919c95b
--- /dev/null
@@ -0,0 +1,236 @@
+/** @file\r
+  EFI_TAPE_IO_PROTOCOL as defined in the UEFI 2.0.\r
+  Provide services to control and access a tape device.\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+  Module Name:  TapeIo.h\r
+\r
+**/\r
+\r
+#ifndef __EFI_TAPE_IO_PROTOCOL_H__\r
+#define __EFI_TAPE_IO_PROTOCOL_H__\r
+\r
+#define EFI_TAPE_IO_PROTOCOL_GUID \\r
+  { \\r
+    0x1e93e633, 0xd65a, 0x459e, {0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \\r
+  }\r
+\r
+typedef struct _EFI_TAPE_IO_PROTOCOL EFI_TAPE_IO_PROTOCOL;\r
+\r
+typedef struct {\r
+  UINT64     Signature;\r
+  UINT32     Revision;\r
+  UINT32     BootDescSize;\r
+  UINT32     BootDescCRC;\r
+  EFI_GUID   TapeGUID;\r
+  EFI_GUID   TapeType;\r
+  EFI_GUID   TapeUnique;\r
+  UINT32     BLLocation;\r
+  UINT32     BLBlocksize;\r
+  UINT32     BLFilesize;\r
+  CHAR8      OSVersion[40];\r
+  CHAR8      AppVersion[40];\r
+  CHAR8      CreationDate[10];\r
+  CHAR8      CreationTime[10];\r
+  CHAR8      SystemName[256];  // UTF-8\r
+  CHAR8      TapeTitle[120];   // UTF-8\r
+  CHAR8      pad[468];         // pad to 1024\r
+} TAPE_HEADER;\r
+\r
+/**\r
+  Reads from the tape.\r
+\r
+  @param  This       A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
+  @param  BufferSize Size of the buffer in bytes pointed to by Buffer.\r
+  @param  Buffer     Pointer to the buffer for data to be read into.\r
+\r
+  @retval EFI_SUCCESS           Data was successfully transferred from the media.\r
+  @retval EFI_END_OF_FILE       A filemark was encountered which limited the data\r
+                                transferred by the read operation or the head is positioned\r
+                                just after a filemark.\r
+  @retval EFI_NO_MEDIA          No media is loaded in the device.\r
+  @retval EFI_NOT_READY         The transfer failed since the device was not ready (e.g. not\r
+                                online). The transfer may be retried at a later time.\r
+  @retval EFI_UNSUPPORTED       The device does not support this type of transfer.\r
+  @retval EFI_TIMEOUT           The transfer failed to complete within the timeout specified.\r
+  @retval EFI_MEDIA_CHANGED     The media in the device was changed since the last access.\r
+                                The transfer was aborted since the current position of the\r
+                                media may be incorrect.\r
+  @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
+                                BufferSize or the device is operating in fixed block\r
+                                size mode and the BufferSize was not a multiple of\r
+                                device's fixed block size\r
+  @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data\r
+                                from the media.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_TAPE_READ) (\r
+  IN EFI_TAPE_IO_PROTOCOL *This,\r
+  IN OUT UINTN            *BufferSize,\r
+  OUT VOID                *Buffer\r
+  )\r
+;    \r
+\r
+/**\r
+  Writes to the tape.\r
+\r
+  @param  This       A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
+  @param  BufferSize Size of the buffer in bytes pointed to by Buffer.\r
+  @param  Buffer     Pointer to the buffer for data to be written from.\r
+\r
+  @retval EFI_SUCCESS           Data was successfully transferred to the media.\r
+  @retval EFI_END_OF_MEDIA      The logical end of media has been reached. Data may have\r
+                                been successfully transferred to the media.\r
+  @retval EFI_NO_MEDIA          No media is loaded in the device.\r
+  @retval EFI_NOT_READY         The transfer failed since the device was not ready (e.g. not\r
+                                online). The transfer may be retried at a later time.\r
+  @retval EFI_UNSUPPORTED       The device does not support this type of transfer.\r
+  @retval EFI_TIMEOUT           The transfer failed to complete within the timeout specified.\r
+  @retval EFI_MEDIA_CHANGED     The media in the device was changed since the last access.\r
+                                The transfer was aborted since the current position of the\r
+                                media may be incorrect.\r
+  @retval EFI_WRITE_PROTECTED   The media in the device is write-protected. The transfer\r
+                                was aborted since a write cannot be completed.\r
+  @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
+                                BufferSize or the device is operating in fixed block\r
+                                size mode and the BufferSize was not a multiple of\r
+                                device's fixed block size\r
+  @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data\r
+                                from the media.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_TAPE_WRITE) (\r
+  IN EFI_TAPE_IO_PROTOCOL *This,\r
+  IN UINTN                *BufferSize,\r
+  IN VOID                 *Buffer\r
+  )\r
+; \r
+  \r
+\r
+/**\r
+  Rewinds the tape.\r
+\r
+  @param  This A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
+\r
+  @retval EFI_SUCCESS      The media was successfully repositioned.\r
+  @retval EFI_NO_MEDIA     No media is loaded in the device.\r
+  @retval EFI_NOT_READY    Repositioning the media failed since the device was not\r
+                           ready (e.g. not online). The transfer may be retried at a later time.\r
+  @retval EFI_UNSUPPORTED  The device does not support this type of media repositioning.\r
+  @retval EFI_TIMEOUT      Repositioning of the media did not complete within the timeout specified.\r
+  @retval EFI_DEVICE_ERROR A device error occurred while attempting to reposition the media.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_TAPE_REWIND) (\r
+  IN EFI_TAPE_IO_PROTOCOL *This\r
+  )\r
+;   \r
+\r
+\r
+/**\r
+  Positions the tape.\r
+\r
+  @param  This      A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
+  @param  Direction Direction and number of data blocks or filemarks to space over on media.\r
+  @param  Type      Type of mark to space over on media.\r
+\r
+  @retval EFI_SUCCESS       The media was successfully repositioned.\r
+  @retval EFI_END_OF_MEDIA  Beginning or end of media was reached before the\r
+                            indicated number of data blocks or filemarks were found.\r
+  @retval EFI_NO_MEDIA      No media is loaded in the device.\r
+  @retval EFI_NOT_READY     The reposition failed since the device was not ready (e.g. not\r
+                            online). The reposition may be retried at a later time.\r
+  @retval EFI_UNSUPPORTED   The device does not support this type of repositioning.\r
+  @retval EFI_TIMEOUT       The repositioning failed to complete within the timeout specified.\r
+  @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.\r
+                            Repositioning the media was aborted since the current\r
+                            position of the media may be incorrect.\r
+  @retval EFI_DEVICE_ERROR  A device error occurred while attempting to reposition the media.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_TAPE_SPACE) (\r
+  IN EFI_TAPE_IO_PROTOCOL *This,\r
+  INTN                    Direction,\r
+  UINTN                   Type\r
+  )\r
+;   \r
+\r
+\r
+/**\r
+  Writes filemarks to the media.\r
+\r
+  @param  This  A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
+  @param  Count Number of filemarks to write to the media.\r
+\r
+  @retval EFI_SUCCESS       Data was successfully transferred from the media.\r
+  @retval EFI_NO_MEDIA      No media is loaded in the device.\r
+  @retval EFI_NOT_READY     The transfer failed since the device was not ready (e.g. not\r
+                            online). The transfer may be retried at a later time.\r
+  @retval EFI_UNSUPPORTED   The device does not support this type of repositioning.\r
+  @retval EFI_TIMEOUT       The transfer failed to complete within the timeout specified.\r
+  @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.\r
+                            The transfer was aborted since the current position of the\r
+                            media may be incorrect.\r
+  @retval EFI_DEVICE_ERROR  A device error occurred while attempting to transfer data from the media.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_TAPE_WRITEFM) (\r
+  IN EFI_TAPE_IO_PROTOCOL *This,\r
+  IN UINTN                Count\r
+  )\r
+;   \r
+\r
+\r
+/**\r
+  Resets the tape device.\r
+\r
+  @param  This                 A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
+  @param  ExtendedVerification Indicates whether the parent bus should also be reset.\r
+\r
+  @retval  EFI_SUCCESS      The bus and/or device were successfully reset.\r
+  @retval  EFI_NO_MEDIA     No media is loaded in the device.\r
+  @retval  EFI_NOT_READY    The reset failed since the device and/or bus was not ready.\r
+                            The reset may be retried at a later time.\r
+  @retval  EFI_UNSUPPORTED  The device does not support this type of reset.\r
+  @retval  EFI_TIMEOUT      The reset did not complete within the timeout allowed.\r
+  @retval  EFI_DEVICE_ERROR A device error occurred while attempting to reset the bus and/or device.\r
+\r
+**/\r
+typedef \r
+EFI_STATUS\r
+(EFIAPI *EFI_TAPE_RESET) (\r
+  IN EFI_TAPE_IO_PROTOCOL *This,\r
+  IN BOOLEAN              ExtendedVerification\r
+  )\r
+;    \r
+\r
+struct _EFI_TAPE_IO_PROTOCOL {\r
+  EFI_TAPE_READ           TapeRead;\r
+  EFI_TAPE_WRITE          TapeWrite;\r
+  EFI_TAPE_REWIND         TapeRewind;\r
+  EFI_TAPE_SPACE          TapeSpace;\r
+  EFI_TAPE_WRITEFM        TapeWriteFM;\r
+  EFI_TAPE_RESET          TapeReset;\r
+};\r
+\r
+extern EFI_GUID gEfiTapeIoProtocolGuid;\r
+\r
+#endif\r