]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/UefiDevicePathLib/DevicePathFromText.c
MdePkg: Add WiFi device path definition and its node/text conversion
[mirror_edk2.git] / MdePkg / Library / UefiDevicePathLib / DevicePathFromText.c
index dec084c313fed7a67a26e490659551a9dd20ba66..c2aa93cedc5ef972cde85250c034a819abb5502e 100644 (file)
@@ -1840,6 +1840,34 @@ DevPathFromTextUfs (
   return (EFI_DEVICE_PATH_PROTOCOL *) Ufs;\r
 }\r
 \r
+/**\r
+  Converts a text device path node to SD (Secure Digital) device path structure.\r
+\r
+  @param TextDeviceNode  The input Text device path node.\r
+\r
+  @return A pointer to the newly-created SD device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextSd (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16            *SlotNumberStr;\r
+  SD_DEVICE_PATH    *Sd;\r
+\r
+  SlotNumberStr = GetNextParamStr (&TextDeviceNode);\r
+  Sd            = (SD_DEVICE_PATH *) CreateDeviceNode (\r
+                                       MESSAGING_DEVICE_PATH,\r
+                                       MSG_SD_DP,\r
+                                       (UINT16) sizeof (SD_DEVICE_PATH)\r
+                                       );\r
+\r
+  Sd->SlotNumber = (UINT8) Strtoi (SlotNumberStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Sd;\r
+}\r
+\r
 /**\r
   Converts a text device path node to Debug Port device path structure.\r
 \r
@@ -2741,6 +2769,68 @@ DevPathFromTextBluetooth (
   return (EFI_DEVICE_PATH_PROTOCOL *) BluetoothDp;\r
 }\r
 \r
+/**\r
+  Converts a text device path node to Wi-Fi device path structure.\r
+\r
+  @param TextDeviceNode  The input Text device path node.\r
+\r
+  @return A pointer to the newly-created Wi-Fi device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextWiFi (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16                *SSIdStr;\r
+  CHAR8                 *AsciiStr;\r
+  WIFI_DEVICE_PATH      *WiFiDp;\r
+\r
+  SSIdStr = GetNextParamStr (&TextDeviceNode);\r
+  WiFiDp  = (WIFI_DEVICE_PATH *) CreateDeviceNode (\r
+                                   MESSAGING_DEVICE_PATH,\r
+                                   MSG_WIFI_DP,\r
+                                   (UINT16) sizeof (WIFI_DEVICE_PATH)\r
+                                   );\r
+\r
+  AsciiStr = WiFiDp->SSId;\r
+  StrToAscii (SSIdStr, &AsciiStr);\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) WiFiDp;\r
+}\r
+\r
+/**\r
+  Converts a text device path node to URI device path structure.\r
+\r
+  @param TextDeviceNode  The input Text device path node.\r
+\r
+  @return A pointer to the newly-created URI device path structure.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+DevPathFromTextUri (\r
+  IN CHAR16 *TextDeviceNode\r
+  )\r
+{\r
+  CHAR16           *UriStr;\r
+  UINTN            UriLength;\r
+  URI_DEVICE_PATH  *Uri;\r
+\r
+  UriStr = GetNextParamStr (&TextDeviceNode);\r
+  UriLength = StrnLenS (UriStr, MAX_UINT16 - sizeof (URI_DEVICE_PATH));\r
+  Uri    = (URI_DEVICE_PATH *) CreateDeviceNode (\r
+                                 MESSAGING_DEVICE_PATH,\r
+                                 MSG_URI_DP,\r
+                                 (UINT16) (sizeof (URI_DEVICE_PATH) + UriLength)\r
+                                 );\r
+\r
+  while (UriLength-- != 0) {\r
+    Uri->Uri[UriLength] = (CHAR8) UriStr[UriLength];\r
+  }\r
+\r
+  return (EFI_DEVICE_PATH_PROTOCOL *) Uri;\r
+}\r
+\r
 /**\r
   Converts a media text device path node to media device path structure.\r
 \r
@@ -3156,6 +3246,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
   {L"SasEx",                   DevPathFromTextSasEx                   },\r
   {L"NVMe",                    DevPathFromTextNVMe                    },\r
   {L"UFS",                     DevPathFromTextUfs                     },\r
+  {L"SD",                      DevPathFromTextSd                      },\r
   {L"DebugPort",               DevPathFromTextDebugPort               },\r
   {L"MAC",                     DevPathFromTextMAC                     },\r
   {L"IPv4",                    DevPathFromTextIPv4                    },\r
@@ -3181,7 +3272,9 @@ GLOBAL_REMOVE_IF_UNREFERENCED DEVICE_PATH_FROM_TEXT_TABLE mUefiDevicePathLibDevP
   {L"Unit",                    DevPathFromTextUnit                    },\r
   {L"iSCSI",                   DevPathFromTextiSCSI                   },\r
   {L"Vlan",                    DevPathFromTextVlan                    },\r
+  {L"Uri",                     DevPathFromTextUri                     },\r
   {L"Bluetooth",               DevPathFromTextBluetooth               },\r
+  {L"WiFi",                    DevPathFromTextWiFi                    },\r
   {L"MediaPath",               DevPathFromTextMediaPath               },\r
   {L"HD",                      DevPathFromTextHD                      },\r
   {L"CDROM",                   DevPathFromTextCDROM                   },\r