]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
Add new interface GetVariable2 and GetEfiGlobalVariable2 to return more info. Also...
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / DeviceMngr / DeviceManager.c
index 40d93c5ae007c43a6482d451257607f98f249cf6..0dddba7077c54894dda6dcc755356fa99e865037 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   The platform device manager reference implementation\r
 \r
-Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2012, 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
@@ -34,9 +34,6 @@ DEVICE_MANAGER_CALLBACK_DATA  gDeviceManagerPrivate = {
 \r
 #define  MAX_MAC_ADDRESS_NODE_LIST_LEN    10\r
 \r
-EFI_GUID mDeviceManagerGuid = DEVICE_MANAGER_FORMSET_GUID;\r
-EFI_GUID mDriverHealthGuid = DRIVER_HEALTH_FORMSET_GUID;\r
-\r
 //\r
 // Which Mac Address string is select\r
 // it will decide what menu need to show in the NETWORK_DEVICE_FORM_ID form.\r
@@ -72,10 +69,7 @@ HII_VENDOR_DEVICE_PATH  mDeviceManagerHiiVendorDevicePath = {
         (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)\r
       }\r
     },\r
-    //\r
-    // {102579A0-3686-466e-ACD8-80C087044F4A}\r
-    //\r
-    { 0x102579a0, 0x3686, 0x466e, { 0xac, 0xd8, 0x80, 0xc0, 0x87, 0x4, 0x4f, 0x4a } }\r
+    DEVICE_MANAGER_FORMSET_GUID\r
   },\r
   {\r
     END_DEVICE_PATH_TYPE,\r
@@ -97,10 +91,7 @@ HII_VENDOR_DEVICE_PATH  mDriverHealthHiiVendorDevicePath = {
           (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)\r
       }\r
     },\r
-    //\r
-    // {D8F76651-1675-4986-BED4-3824B2F1F4C8}\r
-    //\r
-    { 0xd8f76651, 0x1675, 0x4986, { 0xbe, 0xd4, 0x38, 0x24, 0xb2, 0xf1, 0xf4, 0xc8 } }\r
+    DRIVER_HEALTH_FORMSET_GUID\r
   },\r
   {\r
     END_DEVICE_PATH_TYPE,\r
@@ -141,20 +132,19 @@ DeviceManagerCallback (
   )\r
 {\r
   UINTN CurIndex;\r
-  \r
-  if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) {\r
+\r
+  if (Action != EFI_BROWSER_ACTION_CHANGING) {\r
     //\r
-    // Do nothing for UEFI OPEN/CLOSE Action\r
+    // All other action return unsupported.\r
     //\r
-    return EFI_SUCCESS;\r
+    return EFI_UNSUPPORTED;\r
   }\r
 \r
-  if ((Value == NULL) || (ActionRequest == NULL)) {\r
+  if (Value == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
   gCallbackKey = QuestionId;\r
-\r
   if ((QuestionId < MAX_KEY_SECTION_LEN + NETWORK_DEVICE_LIST_KEY_OFFSET) && (QuestionId >= NETWORK_DEVICE_LIST_KEY_OFFSET)) {\r
     //\r
     // If user select the mac address, need to record mac address string to support next form show.\r
@@ -165,11 +155,6 @@ DeviceManagerCallback (
       }\r
     }\r
   }\r
-  \r
-  //\r
-  // Request to exit SendForm(), so as to switch to selected form\r
-  //\r
-  *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
 \r
   return EFI_SUCCESS;\r
 }\r
@@ -589,7 +574,6 @@ IsNeedAddNetworkMenu (
   EFI_STATUS     Status;\r
   UINTN          EntryCount;\r
   UINTN          Index;  \r
-  EFI_HII_HANDLE HiiDeviceManagerHandle;\r
   EFI_HANDLE     DriverHandle;\r
   EFI_HANDLE     ControllerHandle;\r
   EFI_DEVICE_PATH_PROTOCOL   *DevicePath;\r
@@ -598,7 +582,6 @@ IsNeedAddNetworkMenu (
   EFI_OPEN_PROTOCOL_INFORMATION_ENTRY   *OpenInfoBuffer;\r
   BOOLEAN        IsNeedAdd;\r
 \r
-  HiiDeviceManagerHandle = gDeviceManagerPrivate.HiiHandle;\r
   IsNeedAdd  = FALSE;\r
   OpenInfoBuffer = NULL;\r
   if ((Handle == NULL) || (ItemCount == NULL)) {\r
@@ -776,7 +759,7 @@ CallDeviceManager (
     // Publish our HII data.\r
     //\r
     HiiHandle = HiiAddPackages (\r
-                  &mDeviceManagerGuid,\r
+                  &gDeviceManagerFormSetGuid,\r
                   gDeviceManagerPrivate.DriverHandle,\r
                   DeviceManagerVfrBin,\r
                   BdsDxeStrings,\r
@@ -885,7 +868,7 @@ CallDeviceManager (
           AddNetworkMenu = TRUE;\r
           HiiCreateGotoOpCode (\r
             StartOpCodeHandle,\r
-            DEVICE_MANAGER_FORM_ID,\r
+            INVALID_FORM_ID,\r
             STRING_TOKEN (STR_FORM_NETWORK_DEVICE_LIST_TITLE),\r
             STRING_TOKEN (STR_FORM_NETWORK_DEVICE_LIST_HELP),\r
             EFI_IFR_FLAG_CALLBACK,\r
@@ -899,7 +882,7 @@ CallDeviceManager (
         while (AddItemCount > 0) {\r
             HiiCreateGotoOpCode (\r
               StartOpCodeHandle,\r
-              NETWORK_DEVICE_LIST_FORM_ID,\r
+              INVALID_FORM_ID,\r
               mMacDeviceList.NodeList[mMacDeviceList.CurListLen - AddItemCount].PromptId,\r
               STRING_TOKEN (STR_NETWORK_DEVICE_HELP),\r
               EFI_IFR_FLAG_CALLBACK,\r
@@ -913,7 +896,7 @@ CallDeviceManager (
         //\r
         HiiCreateGotoOpCode (\r
           StartOpCodeHandle,\r
-          NETWORK_DEVICE_FORM_ID,\r
+          INVALID_FORM_ID,\r
           Token,\r
           TokenHelp,\r
           EFI_IFR_FLAG_CALLBACK,\r
@@ -928,7 +911,7 @@ CallDeviceManager (
       if (mNextShowFormId == DEVICE_MANAGER_FORM_ID) {\r
         HiiCreateGotoOpCode (\r
           StartOpCodeHandle,\r
-          DEVICE_MANAGER_FORM_ID,\r
+          INVALID_FORM_ID,\r
           Token,\r
           TokenHelp,\r
           EFI_IFR_FLAG_CALLBACK,\r
@@ -981,7 +964,7 @@ CallDeviceManager (
 \r
   HiiUpdateForm (\r
     HiiHandle,\r
-    &mDeviceManagerGuid,\r
+    &gDeviceManagerFormSetGuid,\r
     mNextShowFormId,\r
     StartOpCodeHandle,\r
     EndOpCodeHandle\r
@@ -992,7 +975,7 @@ CallDeviceManager (
                            gFormBrowser2,\r
                            &HiiHandle,\r
                            1,\r
-                           &mDeviceManagerGuid,\r
+                           &gDeviceManagerFormSetGuid,\r
                            mNextShowFormId,\r
                            NULL,\r
                            &ActionRequest\r
@@ -1109,25 +1092,25 @@ DriverHealthCallback (
   OUT EFI_BROWSER_ACTION_REQUEST             *ActionRequest\r
   )\r
 {\r
-  if ((Action == EFI_BROWSER_ACTION_FORM_OPEN) || (Action == EFI_BROWSER_ACTION_FORM_CLOSE)) {\r
+  if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+    if ((Value == NULL) || (ActionRequest == NULL)) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+\r
+    gCallbackKey = QuestionId;\r
+\r
     //\r
-    // Do nothing for UEFI OPEN/CLOSE Action\r
+    // Request to exit SendForm(), so as to switch to selected form\r
     //\r
-    return EFI_SUCCESS;\r
-  }\r
+    *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
 \r
-  if ((Value == NULL) || (ActionRequest == NULL)) {\r
-    return EFI_INVALID_PARAMETER;\r
+    return EFI_SUCCESS;\r
   }\r
 \r
-  gCallbackKey = QuestionId;\r
-\r
   //\r
-  // Request to exit SendForm(), so as to switch to selected form\r
+  // All other action return unsupported.\r
   //\r
-  *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
-\r
-  return EFI_SUCCESS;\r
+  return EFI_UNSUPPORTED;\r
 }\r
 \r
 /**\r
@@ -1167,11 +1150,9 @@ CallDriverHealth (
   DRIVER_HEALTH_INFO          *DriverHealthInfo;\r
   LIST_ENTRY                  *Link;\r
   EFI_DEVICE_PATH_PROTOCOL    *DriverDevicePath;\r
-  UINTN                       Length;\r
   BOOLEAN                     RebootRequired;\r
 \r
   Index               = 0;\r
-  Length              = 0;\r
   DriverHealthInfo    = NULL;  \r
   DriverDevicePath    = NULL;\r
   InitializeListHead (&DriverHealthList);\r
@@ -1182,7 +1163,7 @@ CallDriverHealth (
     // Publish Driver Health HII data.\r
     //\r
     HiiHandle = HiiAddPackages (\r
-                  &mDeviceManagerGuid,\r
+                  &gDeviceManagerFormSetGuid,\r
                   gDeviceManagerPrivate.DriverHealthHandle,\r
                   DriverHealthVfrBin,\r
                   BdsDxeStrings,\r
@@ -1380,7 +1361,7 @@ CallDriverHealth (
 \r
   Status = HiiUpdateForm (\r
              HiiHandle,\r
-             &mDriverHealthGuid,\r
+             &gDriverHealthFormSetGuid,\r
              DRIVER_HEALTH_FORM_ID,\r
              StartOpCodeHandle,\r
              EndOpCodeHandle\r
@@ -1390,7 +1371,7 @@ CallDriverHealth (
 \r
   Status = HiiUpdateForm (\r
             HiiHandle,\r
-            &mDriverHealthGuid,\r
+            &gDriverHealthFormSetGuid,\r
             DRIVER_HEALTH_FORM_ID,\r
             StartOpCodeHandleRepair,\r
             EndOpCodeHandleRepair\r
@@ -1403,7 +1384,7 @@ CallDriverHealth (
                            gFormBrowser2,\r
                            &HiiHandle,\r
                            1,\r
-                           &mDriverHealthGuid,\r
+                           &gDriverHealthFormSetGuid,\r
                            DRIVER_HEALTH_FORM_ID,\r
                            NULL,\r
                            &ActionRequest\r
@@ -2186,7 +2167,7 @@ DriverHealthSelectBestLanguage (
   CHAR8           *LanguageVariable;\r
   CHAR8           *BestLanguage;\r
 \r
-  LanguageVariable =  GetEfiGlobalVariable (Iso639Language ? L"Lang" : L"PlatformLang");\r
+  GetEfiGlobalVariable2 (Iso639Language ? L"Lang" : L"PlatformLang", &LanguageVariable, NULL);\r
 \r
   BestLanguage = GetBestLanguage(\r
                    SupportedLanguages,\r