]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/PlatformDriOverrideDxe/PlatDriOverrideDxe.c
Update all the code to consume the ConvertDevicePathToText, ConvertDevicePathNodeToTe...
[mirror_edk2.git] / MdeModulePkg / Universal / PlatformDriOverrideDxe / PlatDriOverrideDxe.c
index 20bc43c345aefbaad36204673d2b21dde8cd7d36..ab254a0b450e1eb4d558c427ff7a0bafdf4fcdba 100644 (file)
@@ -13,7 +13,7 @@
   4. It save all the mapping info in NV variables which will be consumed\r
      by platform override protocol driver to publish the platform override protocol.\r
 \r
-Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>\r
 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
@@ -104,45 +104,29 @@ HII_VENDOR_DEVICE_PATH  mHiiVendorDevicePath = {
 };\r
 \r
 /**\r
-  Converting a given device to an unicode string. \r
-  \r
-  This function will dependent on gEfiDevicePathToTextProtocolGuid, if protocol\r
-  does not installed, then return unknown device path L"?" directly.\r
-  \r
+  Converting a given device to an unicode string.\r
+\r
   @param    DevPath     Given device path instance\r
   \r
   @return   Converted string from given device path.\r
-  @retval   L"?"  Can not locate gEfiDevicePathToTextProtocolGuid protocol for converting.\r
+  @retval   L"?" Converting failed.\r
 **/\r
 CHAR16 *\r
 DevicePathToStr (\r
   IN EFI_DEVICE_PATH_PROTOCOL     *DevPath\r
   )\r
 {\r
-  EFI_STATUS                       Status;\r
-  EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *DevPathToText;\r
-  CHAR16                           *ToText;\r
-  \r
-  if (DevPath == NULL) {\r
-    return L"";\r
-  }\r
-    \r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiDevicePathToTextProtocolGuid,\r
-                  NULL,\r
-                  (VOID **) &DevPathToText\r
-                  );\r
-  if (!EFI_ERROR (Status)) {\r
-    ToText = DevPathToText->ConvertDevicePathToText (\r
-                              DevPath,\r
-                              FALSE,\r
-                              TRUE\r
-                              );\r
-    ASSERT (ToText != NULL);\r
-    return ToText;\r
+  CHAR16                          *Text;\r
+  Text = ConvertDevicePathToText (\r
+           DevPath,\r
+           FALSE,\r
+           TRUE\r
+           );\r
+  if (Text == NULL) {\r
+    return AllocateCopyPool (sizeof (L"?"), L"?");\r
+  } else {\r
+    return Text;\r
   }\r
-\r
-  return L"?";\r
 }\r
 \r
 /**\r
@@ -185,7 +169,7 @@ GetComponentNameWorker (
   //\r
   // Find the best matching language.\r
   //\r
-  Language = GetEfiGlobalVariable (VariableName);\r
+  GetEfiGlobalVariable2 (VariableName, (VOID**)&Language, NULL);\r
   BestLanguage = GetBestLanguage (\r
                    ComponentName->SupportedLanguages,\r
                    (BOOLEAN) (ProtocolGuid == &gEfiComponentNameProtocolGuid),\r
@@ -1334,17 +1318,25 @@ PlatOverMngrCallback (
   EFI_INPUT_KEY                             Key;\r
   PLAT_OVER_MNGR_DATA                       *FakeNvData;\r
 \r
+  if ((Action != EFI_BROWSER_ACTION_CHANGING) && (Action != EFI_BROWSER_ACTION_CHANGED)) {\r
+    //\r
+    // All other action return unsupported.\r
+    //\r
+    return EFI_UNSUPPORTED;\r
+  }\r
+\r
+  Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
+  FakeNvData = &Private->FakeNvData;\r
+  if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
   if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
-    Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
-    FakeNvData = &Private->FakeNvData;\r
-    if (!HiiGetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData)) {\r
-      return EFI_NOT_FOUND;\r
+    if (Value == NULL) {\r
+      return EFI_INVALID_PARAMETER;\r
     }\r
-\r
-    if (KeyValue == KEY_VALUE_DEVICE_REFRESH ||\r
-        KeyValue == KEY_VALUE_DEVICE_FILTER ||\r
-        KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS\r
-        ) {\r
+    \r
+    if (KeyValue == KEY_VALUE_DRIVER_GOTO_PREVIOUS) {\r
       UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
       //\r
       // Update page title string\r
@@ -1380,15 +1372,6 @@ PlatOverMngrCallback (
       }\r
     }\r
 \r
-    if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) {\r
-      Status = CommintChanges (Private, KeyValue, FakeNvData);\r
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
-      if (EFI_ERROR (Status)) {\r
-        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
-        return EFI_DEVICE_ERROR;\r
-      }\r
-    }\r
-\r
     if (KeyValue == KEY_VALUE_DEVICE_CLEAR) {\r
       //\r
       // Deletes all environment variable(s) that contain the override mappings info\r
@@ -1397,18 +1380,40 @@ PlatOverMngrCallback (
       Status = SaveOverridesMapping (&mMappingDataBase);\r
       UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
     }\r
-    //\r
-    // Pass changed uncommitted data back to Form Browser\r
-    //\r
-    HiiSetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    switch (KeyValue) {\r
+    case KEY_VALUE_DEVICE_REFRESH:\r
+    case KEY_VALUE_DEVICE_FILTER:\r
+      UpdateDeviceSelectPage (Private, KeyValue, FakeNvData);\r
+      //\r
+      // Update page title string\r
+      //\r
+      NewStringToken = STRING_TOKEN (STR_TITLE);\r
+      if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) {\r
+        ASSERT (FALSE);\r
+      }\r
+    break;\r
+    \r
+    case KEY_VALUE_ORDER_SAVE_AND_EXIT:\r
+      Status = CommintChanges (Private, KeyValue, FakeNvData);\r
+      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+      if (EFI_ERROR (Status)) {\r
+        CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
+        return EFI_DEVICE_ERROR;\r
+      }\r
+    break;\r
 \r
-    return EFI_SUCCESS;\r
-  } \r
+    default:\r
+    break;\r
+    }\r
+  }\r
 \r
   //\r
-  // All other action return unsupported.\r
+  // Pass changed uncommitted data back to Form Browser\r
   //\r
-  return EFI_UNSUPPORTED;\r
+  HiiSetBrowserData (&gPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+\r
+  return EFI_SUCCESS;\r
 }\r
 \r
 /**\r