+++ /dev/null
-/*++\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:\r
-\r
- DevicePath.h\r
- \r
-Abstract:\r
- Definition for Device Path Utilities driver\r
-\r
---*/\r
-\r
-#ifndef _DEVICE_PATH_DRIVER_H\r
-#define _DEVICE_PATH_DRIVER_H\r
-\r
-extern const EFI_GUID mEfiDevicePathMessagingUartFlowControlGuid;\r
-extern const EFI_GUID mEfiDevicePathMessagingSASGuid;\r
-\r
-#define MAX_CHAR 480\r
-\r
-#define MIN_ALIGNMENT_SIZE sizeof(UINTN)\r
-#define ALIGN_SIZE(a) ((a % MIN_ALIGNMENT_SIZE) ? MIN_ALIGNMENT_SIZE - (a % MIN_ALIGNMENT_SIZE) : 0)\r
-\r
-#define IS_COMMA(a) ((a) == L',')\r
-#define IS_HYPHEN(a) ((a) == L'-')\r
-#define IS_DOT(a) ((a) == L'.')\r
-#define IS_LEFT_PARENTH(a) ((a) == L'(')\r
-#define IS_RIGHT_PARENTH(a) ((a) == L')')\r
-#define IS_SLASH(a) ((a) == L'/')\r
-#define IS_NULL(a) ((a) == L'\0')\r
-\r
-#define DEVICE_NODE_END 1\r
-#define DEVICE_PATH_INSTANCE_END 2\r
-#define DEVICE_PATH_END 3\r
-\r
-#define SetDevicePathInstanceEndNode(a) { \\r
- (a)->Type = END_DEVICE_PATH_TYPE; \\r
- (a)->SubType = END_INSTANCE_DEVICE_PATH_SUBTYPE; \\r
- (a)->Length[0] = sizeof (EFI_DEVICE_PATH_PROTOCOL); \\r
- (a)->Length[1] = 0; \\r
- }\r
-\r
-//\r
-// Private Data structure\r
-//\r
-typedef struct {\r
- CHAR16 *Str;\r
- UINTN Len;\r
- UINTN MaxLen;\r
-} POOL_PRINT;\r
-\r
-typedef struct {\r
- UINT8 Type;\r
- UINT8 SubType;\r
- VOID (*Function) (POOL_PRINT *, VOID *, BOOLEAN, BOOLEAN);\r
-} DEVICE_PATH_TO_TEXT_TABLE;\r
-\r
-typedef struct {\r
- CHAR16 *DevicePathNodeText;\r
- EFI_DEVICE_PATH_PROTOCOL * (*Function) (CHAR16 *);\r
-} DEVICE_PATH_FROM_TEXT_TABLE;\r
-\r
-typedef struct {\r
- BOOLEAN ClassExist;\r
- UINT8 Class;\r
- BOOLEAN SubClassExist;\r
- UINT8 SubClass;\r
-} USB_CLASS_TEXT;\r
-\r
-#define USB_CLASS_AUDIO 1\r
-#define USB_CLASS_CDCCONTROL 2\r
-#define USB_CLASS_HID 3\r
-#define USB_CLASS_IMAGE 6\r
-#define USB_CLASS_PRINTER 7\r
-#define USB_CLASS_MASS_STORAGE 8\r
-#define USB_CLASS_HUB 9\r
-#define USB_CLASS_CDCDATA 10\r
-#define USB_CLASS_SMART_CARD 11\r
-#define USB_CLASS_VIDEO 14\r
-#define USB_CLASS_DIAGNOSTIC 220\r
-#define USB_CLASS_WIRELESS 224\r
-\r
-#define USB_CLASS_RESERVE 254\r
-#define USB_SUBCLASS_FW_UPDATE 1\r
-#define USB_SUBCLASS_IRDA_BRIDGE 2\r
-#define USB_SUBCLASS_TEST 3\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Guid;\r
- UINT8 VendorDefinedData[1];\r
-} VENDOR_DEFINED_HARDWARE_DEVICE_PATH;\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Guid;\r
- UINT8 VendorDefinedData[1];\r
-} VENDOR_DEFINED_MESSAGING_DEVICE_PATH;\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Guid;\r
- UINT8 VendorDefinedData[1];\r
-} VENDOR_DEFINED_MEDIA_DEVICE_PATH;\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT32 HID;\r
- UINT32 UID;\r
- UINT32 CID;\r
- CHAR8 HidUidCidStr[3];\r
-} ACPI_EXTENDED_HID_DEVICE_PATH_WITH_STR;\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- UINT16 NetworkProtocol;\r
- UINT16 LoginOption;\r
- UINT16 Reserved;\r
- UINT16 TargetPortalGroupTag;\r
- UINT64 Lun;\r
- CHAR16 iSCSITargetName[1];\r
-} ISCSI_DEVICE_PATH_WITH_NAME;\r
-\r
-typedef struct {\r
- EFI_DEVICE_PATH_PROTOCOL Header;\r
- EFI_GUID Guid;\r
- UINT8 VendorDefinedData[1];\r
-} VENDOR_DEVICE_PATH_WITH_DATA;\r
-\r
-CHAR16 *\r
-ConvertDeviceNodeToText (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode,\r
- IN BOOLEAN DisplayOnly,\r
- IN BOOLEAN AllowShortcuts\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Convert a device node to its text representation.\r
-\r
- Arguments:\r
- DeviceNode - Points to the device node to be converted.\r
- DisplayOnly - If DisplayOnly is TRUE, then the shorter text representation\r
- of the display node is used, where applicable. If DisplayOnly\r
- is FALSE, then the longer text representation of the display node\r
- is used.\r
- AllowShortcuts - If AllowShortcuts is TRUE, then the shortcut forms of text\r
- representation for a device node can be used, where applicable.\r
-\r
- Returns:\r
- A pointer - a pointer to the allocated text representation of the device node.\r
- NULL - if DeviceNode is NULL or there was insufficient memory.\r
-\r
---*/\r
-;\r
-\r
-CHAR16 *\r
-ConvertDevicePathToText (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode,\r
- IN BOOLEAN DisplayOnly,\r
- IN BOOLEAN AllowShortcuts\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Convert a device path to its text representation.\r
-\r
- Arguments:\r
- DeviceNode - Points to the device path to be converted.\r
- DisplayOnly - If DisplayOnly is TRUE, then the shorter text representation\r
- of the display node is used, where applicable. If DisplayOnly\r
- is FALSE, then the longer text representation of the display node\r
- is used.\r
- AllowShortcuts - If AllowShortcuts is TRUE, then the shortcut forms of text\r
- representation for a device node can be used, where applicable.\r
-\r
- Returns:\r
- A pointer - a pointer to the allocated text representation of the device path.\r
- NULL - if DeviceNode is NULL or there was insufficient memory.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-ConvertTextToDeviceNode (\r
- IN CONST CHAR16 *TextDeviceNode\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Convert text to the binary representation of a device node.\r
-\r
- Arguments:\r
- TextDeviceNode - TextDeviceNode points to the text representation of a device\r
- node. Conversion starts with the first character and continues\r
- until the first non-device node character.\r
-\r
- Returns:\r
- A pointer - Pointer to the EFI device node.\r
- NULL - if TextDeviceNode is NULL or there was insufficient memory.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-ConvertTextToDevicePath (\r
- IN CONST CHAR16 *TextDevicePath\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Convert text to the binary representation of a device path.\r
-\r
- Arguments:\r
- TextDevicePath - TextDevicePath points to the text representation of a device\r
- path. Conversion starts with the first character and continues\r
- until the first non-device node character.\r
-\r
- Returns:\r
- A pointer - Pointer to the allocated device path.\r
- NULL - if TextDeviceNode is NULL or there was insufficient memory.\r
-\r
---*/\r
-;\r
-\r
-UINTN\r
-GetDevicePathSizeProtocolInterface (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Returns the size of the device path, in bytes.\r
-\r
- Arguments:\r
- DevicePath - Points to the start of the EFI device path.\r
-\r
- Returns:\r
- Size - Size of the specified device path, in bytes, including the end-of-path tag.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-DuplicateDevicePathProtocolInterface (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Create a duplicate of the specified path.\r
-\r
- Arguments:\r
- DevicePath - Points to the source EFI device path.\r
-\r
- Returns:\r
- Pointer - A pointer to the duplicate device path.\r
- NULL - Insufficient memory.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-AppendDevicePathProtocolInterface (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *Src1,\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *Src2\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Create a new path by appending the second device path to the first.\r
-\r
- Arguments:\r
- Src1 - Points to the first device path. If NULL, then it is ignored.\r
- Src2 - Points to the second device path. If NULL, then it is ignored.\r
-\r
- Returns:\r
- Pointer - A pointer to the newly created device path.\r
- NULL - Memory could not be allocated\r
- or either DevicePath or DeviceNode is NULL.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-AppendDeviceNodeProtocolInterface (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Creates a new path by appending the device node to the device path.\r
-\r
- Arguments:\r
- DevicePath - Points to the device path.\r
- DeviceNode - Points to the device node.\r
-\r
- Returns:\r
- Pointer - A pointer to the allocated device node.\r
- NULL - Memory could not be allocated\r
- or either DevicePath or DeviceNode is NULL.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-AppendDevicePathInstanceProtocolInterface (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Creates a new path by appending the specified device path instance to the specified device path.\r
-\r
- Arguments:\r
- DevicePath - Points to the device path. If NULL, then ignored.\r
- DevicePathInstance - Points to the device path instance.\r
-\r
- Returns:\r
- Pointer - A pointer to the newly created device path\r
- NULL - Memory could not be allocated or DevicePathInstance is NULL.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-GetNextDevicePathInstanceProtocolInterface (\r
- IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathInstance,\r
- OUT UINTN *DevicePathInstanceSize\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Creates a copy of the current device path instance and returns a pointer to the next device path instance.\r
-\r
- Arguments:\r
- DevicePathInstance - On input, this holds the pointer to the current device path\r
- instance. On output, this holds the pointer to the next\r
- device path instance or NULL if there are no more device\r
- path instances in the device path.\r
- DevicePathInstanceSize - On output, this holds the size of the device path instance,\r
- in bytes or zero, if DevicePathInstance is zero.\r
-\r
- Returns:\r
- Pointer - A pointer to the copy of the current device path instance.\r
- NULL - DevicePathInstace was NULL on entry or there was insufficient memory.\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsDevicePathMultiInstanceProtocolInterface (\r
- IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Returns whether a device path is multi-instance.\r
-\r
- Arguments:\r
- DevicePath - Points to the device path. If NULL, then ignored.\r
-\r
- Returns:\r
- TRUE - The device path has more than one instance\r
- FALSE - The device path is empty or contains only a single instance.\r
-\r
---*/\r
-;\r
-\r
-EFI_DEVICE_PATH_PROTOCOL *\r
-CreateDeviceNodeProtocolInterface (\r
- IN UINT8 NodeType,\r
- IN UINT8 NodeSubType,\r
- IN UINT16 NodeLength\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Creates a device node\r
-\r
- Arguments:\r
- NodeType - NodeType is the device node type (EFI_DEVICE_PATH.Type) for\r
- the new device node.\r
- NodeSubType - NodeSubType is the device node sub-type\r
- EFI_DEVICE_PATH.SubType) for the new device node.\r
- NodeLength - NodeLength is the length of the device node\r
- (EFI_DEVICE_PATH.Length) for the new device node.\r
-\r
- Returns:\r
- Pointer - A pointer to the newly created device node.\r
- NULL - NodeLength is less than\r
- the size of the header or there was insufficient memory.\r
-\r
---*/\r
-;\r
-\r
-#endif\r