]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
Update for IntelFrameworkModulePkg.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / UpdatePage.c
index f83d166bb3bd6aa119ddcf707332df4fe4ce3583..7d4f33d409601bae44f9041cafdf3552bfb8f2c0 100644 (file)
@@ -99,31 +99,31 @@ UpdatePageEnd (
       0\r
       );\r
 \r
-    HiiCreateGotoOpCode (\r
+    HiiCreateActionOpCode (\r
       mStartOpCodeHandle,\r
-      FORM_MAIN_ID,\r
+      KEY_VALUE_SAVE_AND_EXIT,\r
       STRING_TOKEN (STR_SAVE_AND_EXIT),\r
       STRING_TOKEN (STR_NULL_STRING),\r
       EFI_IFR_FLAG_CALLBACK,\r
-      KEY_VALUE_SAVE_AND_EXIT\r
+      0\r
       );\r
   }\r
 \r
   //\r
   // Ensure user can return to the main page.\r
   //\r
-  HiiCreateGotoOpCode (\r
+  HiiCreateActionOpCode (\r
     mStartOpCodeHandle,\r
-    FORM_MAIN_ID,\r
+    KEY_VALUE_NO_SAVE_AND_EXIT,\r
     STRING_TOKEN (STR_NO_SAVE_AND_EXIT),\r
     STRING_TOKEN (STR_NULL_STRING),\r
     EFI_IFR_FLAG_CALLBACK,\r
-    KEY_VALUE_NO_SAVE_AND_EXIT\r
+    0\r
     );\r
 \r
   HiiUpdateForm (\r
     CallbackData->BmmHiiHandle,\r
-    &mBootMaintGuid,\r
+    &gBootMaintFormSetGuid,\r
     CallbackData->BmmCurrentPageId,\r
     mStartOpCodeHandle, // Label CallbackData->BmmCurrentPageId\r
     mEndOpCodeHandle    // LABEL_END\r
@@ -151,7 +151,7 @@ CleanUpPage (
   mStartLabel->Number = LabelId;\r
   HiiUpdateForm (\r
     CallbackData->BmmHiiHandle,\r
-    &mBootMaintGuid,\r
+    &gBootMaintFormSetGuid,\r
     LabelId,\r
     mStartOpCodeHandle, // Label LabelId\r
     mEndOpCodeHandle    // LABEL_END\r
@@ -254,7 +254,7 @@ UpdateBootDelPage (
   UpdatePageStart (CallbackData);\r
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &BootOptionMenu);\r
 \r
-  ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.BootOptionDel) / sizeof (CallbackData->BmmFakeNvData.BootOptionDel[0])));\r
+  ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.OptionDel) / sizeof (CallbackData->BmmFakeNvData.OptionDel[0])));\r
   for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
     NewMenuEntry    = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
     NewLoadContext  = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
@@ -263,13 +263,13 @@ UpdateBootDelPage (
     }\r
 \r
     NewLoadContext->Deleted = FALSE;\r
-    CallbackData->BmmFakeNvData.BootOptionDel[Index] = 0x00;\r
+    CallbackData->BmmFakeNvData.OptionDel[Index] = FALSE;\r
 \r
     HiiCreateCheckBoxOpCode (\r
       mStartOpCodeHandle,\r
-      (EFI_QUESTION_ID) (BOOT_OPTION_DEL_QUESTION_ID + Index),\r
+      (EFI_QUESTION_ID) (OPTION_DEL_QUESTION_ID + Index),\r
       VARSTORE_ID_BOOT_MAINT,\r
-      (UINT16) (BOOT_OPTION_DEL_VAR_OFFSET + Index),\r
+      (UINT16) (OPTION_DEL_VAR_OFFSET + Index),\r
       NewMenuEntry->DisplayStringToken,\r
       NewMenuEntry->HelpStringToken,\r
       0,\r
@@ -337,19 +337,19 @@ UpdateDrvDelPage (
 \r
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &DriverOptionMenu);\r
   \r
-  ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.DriverOptionDel) / sizeof (CallbackData->BmmFakeNvData.DriverOptionDel[0])));\r
+  ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.OptionDel) / sizeof (CallbackData->BmmFakeNvData.OptionDel[0])));\r
   for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {\r
     NewMenuEntry            = BOpt_GetMenuEntry (&DriverOptionMenu, Index);\r
 \r
     NewLoadContext          = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
     NewLoadContext->Deleted = FALSE;\r
-    CallbackData->BmmFakeNvData.DriverOptionDel[Index] = 0x00;\r
+    CallbackData->BmmFakeNvData.OptionDel[Index] = FALSE;\r
 \r
     HiiCreateCheckBoxOpCode (\r
       mStartOpCodeHandle,\r
-      (EFI_QUESTION_ID) (DRIVER_OPTION_DEL_QUESTION_ID + Index),\r
+      (EFI_QUESTION_ID) (OPTION_DEL_QUESTION_ID + Index),\r
       VARSTORE_ID_BOOT_MAINT,\r
-      (UINT16) (DRIVER_OPTION_DEL_VAR_OFFSET + Index),\r
+      (UINT16) (OPTION_DEL_VAR_OFFSET + Index),\r
       NewMenuEntry->DisplayStringToken,\r
       NewMenuEntry->HelpStringToken,\r
       0,\r
@@ -535,43 +535,60 @@ UpdateOrderPage (
   IN BMM_CALLBACK_DATA                *CallbackData\r
   )\r
 {\r
-  BM_MENU_ENTRY *NewMenuEntry;\r
-  UINT16        Index;\r
-  VOID          *OptionsOpCodeHandle;\r
+  BM_MENU_ENTRY   *NewMenuEntry;\r
+  UINT16          Index;\r
+  UINT16          OptionOrderIndex;\r
+  VOID            *OptionsOpCodeHandle;\r
+  UINTN           DeviceType;\r
+  BM_LOAD_CONTEXT *NewLoadContext;\r
 \r
+  DeviceType                    = (UINTN) -1;\r
   CallbackData->BmmAskSaveOrNot = TRUE;\r
 \r
   UpdatePageStart (CallbackData);\r
 \r
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, OptionMenu);\r
 \r
-  ZeroMem (CallbackData->BmmFakeNvData.OptionOrder, 100);\r
+  ZeroMem (CallbackData->BmmFakeNvData.OptionOrder, sizeof (CallbackData->BmmFakeNvData.OptionOrder));\r
 \r
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
   \r
   for (\r
-        Index = 0;\r
+        Index = 0, OptionOrderIndex = 0;\r
         (\r
           (Index < OptionMenu->MenuNumber) &&\r
-          (Index <\r
+          (OptionOrderIndex <\r
             (\r
               sizeof (CallbackData->BmmFakeNvData.OptionOrder) /\r
-              sizeof (UINT8)\r
+              sizeof (CallbackData->BmmFakeNvData.OptionOrder[0])\r
             )\r
           )\r
         );\r
         Index++\r
       ) {\r
-    NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
+    NewMenuEntry   = BOpt_GetMenuEntry (OptionMenu, Index);\r
+    NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
+\r
+    if (NewLoadContext->IsLegacy) {\r
+      if (((BBS_BBS_DEVICE_PATH *) NewLoadContext->FilePathList)->DeviceType != DeviceType) {\r
+        DeviceType = ((BBS_BBS_DEVICE_PATH *) NewLoadContext->FilePathList)->DeviceType;\r
+      } else {\r
+        //\r
+        // Only show one legacy boot option for the same device type\r
+        // assuming the boot options are grouped by the device type\r
+        //\r
+        continue;\r
+      }\r
+    }\r
     HiiCreateOneOfOptionOpCode (\r
       OptionsOpCodeHandle,\r
       NewMenuEntry->DisplayStringToken,\r
       0,\r
-      EFI_IFR_NUMERIC_SIZE_1,\r
-      (UINT8) (NewMenuEntry->OptionNumber + 1)\r
+      EFI_IFR_TYPE_NUM_SIZE_32,\r
+      (UINT32) (NewMenuEntry->OptionNumber + 1)\r
       );\r
-    CallbackData->BmmFakeNvData.OptionOrder[Index] = (UINT8) (NewMenuEntry->OptionNumber + 1);\r
+    CallbackData->BmmFakeNvData.OptionOrder[OptionOrderIndex++] = (UINT32) (NewMenuEntry->OptionNumber + 1);\r
   }\r
 \r
   if (OptionMenu->MenuNumber > 0) {\r
@@ -584,7 +601,7 @@ UpdateOrderPage (
       STRING_TOKEN (STR_CHANGE_ORDER),             // Question help text                        \r
       0,                                           // Question flag                             \r
       0,                                           // Ordered list flag, e.g. EFI_IFR_UNIQUE_SET\r
-      EFI_IFR_NUMERIC_SIZE_1,                      // Data type of Question value               \r
+      EFI_IFR_TYPE_NUM_SIZE_32,                    // Data type of Question value               \r
       100,                                         // Maximum container                         \r
       OptionsOpCodeHandle,                         // Option Opcode list                        \r
       NULL                                         // Default Opcode is NULL                    \r
@@ -598,7 +615,7 @@ UpdateOrderPage (
   CopyMem (\r
     CallbackData->BmmOldFakeNVData.OptionOrder,\r
     CallbackData->BmmFakeNvData.OptionOrder,\r
-    100\r
+    sizeof (CallbackData->BmmOldFakeNVData.OptionOrder)\r
     );\r
 }\r
 \r
@@ -641,7 +658,7 @@ UpdateBootNextPage (
           OptionsOpCodeHandle,\r
           NewMenuEntry->DisplayStringToken,\r
           EFI_IFR_OPTION_DEFAULT,\r
-          EFI_IFR_NUMERIC_SIZE_2,\r
+          EFI_IFR_TYPE_NUM_SIZE_16,\r
           Index\r
           );\r
         CallbackData->BmmFakeNvData.BootNext = Index;\r
@@ -650,7 +667,7 @@ UpdateBootNextPage (
           OptionsOpCodeHandle,\r
           NewMenuEntry->DisplayStringToken,\r
           0,\r
-          EFI_IFR_NUMERIC_SIZE_2,\r
+          EFI_IFR_TYPE_NUM_SIZE_16,\r
           Index\r
           );\r
       }\r
@@ -661,7 +678,7 @@ UpdateBootNextPage (
         OptionsOpCodeHandle,\r
         STRING_TOKEN (STR_NONE),\r
         EFI_IFR_OPTION_DEFAULT,\r
-        EFI_IFR_NUMERIC_SIZE_2,\r
+        EFI_IFR_TYPE_NUM_SIZE_16,\r
         Index\r
         );\r
     } else {\r
@@ -669,7 +686,7 @@ UpdateBootNextPage (
         OptionsOpCodeHandle,\r
         STRING_TOKEN (STR_NONE),\r
         0,\r
-        EFI_IFR_NUMERIC_SIZE_2,\r
+        EFI_IFR_TYPE_NUM_SIZE_16,\r
         Index\r
         );\r
     }      \r
@@ -715,7 +732,7 @@ UpdateTimeOutPage (
 \r
   DefaultOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (DefaultOpCodeHandle != NULL);\r
-  HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_NUMERIC_SIZE_2, BootTimeOut);\r
+  HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_NUM_SIZE_16, BootTimeOut);\r
 \r
   HiiCreateNumericOpCode (\r
     mStartOpCodeHandle,\r
@@ -823,7 +840,7 @@ UpdateConModePage (
         OptionsOpCodeHandle,\r
         ModeToken[Index],\r
         EFI_IFR_OPTION_DEFAULT,\r
-        EFI_IFR_NUMERIC_SIZE_2,\r
+        EFI_IFR_TYPE_NUM_SIZE_16,\r
         (UINT16) Mode\r
         );\r
     } else {\r
@@ -831,7 +848,7 @@ UpdateConModePage (
         OptionsOpCodeHandle,\r
         ModeToken[Index],\r
         0,\r
-        EFI_IFR_NUMERIC_SIZE_2,\r
+        EFI_IFR_TYPE_NUM_SIZE_16,\r
         (UINT16) Mode\r
         );\r
     }\r
@@ -905,7 +922,7 @@ UpdateTerminalPage (
       OptionsOpCodeHandle,\r
       BaudRateList[Index].StringToken,\r
       CheckFlags,\r
-      EFI_IFR_NUMERIC_SIZE_1,\r
+      EFI_IFR_TYPE_NUM_SIZE_8,\r
       Index\r
       );\r
   }\r
@@ -940,7 +957,7 @@ UpdateTerminalPage (
       OptionsOpCodeHandle,\r
       DataBitsList[Index].StringToken,\r
       CheckFlags,\r
-      EFI_IFR_NUMERIC_SIZE_1,\r
+      EFI_IFR_TYPE_NUM_SIZE_8,\r
       Index\r
       );\r
   }\r
@@ -974,7 +991,7 @@ UpdateTerminalPage (
       OptionsOpCodeHandle,\r
       ParityList[Index].StringToken,\r
       CheckFlags,\r
-      EFI_IFR_NUMERIC_SIZE_1,\r
+      EFI_IFR_TYPE_NUM_SIZE_8,\r
       Index\r
       );\r
   }\r
@@ -1008,7 +1025,7 @@ UpdateTerminalPage (
       OptionsOpCodeHandle,\r
       StopBitsList[Index].StringToken,\r
       CheckFlags,\r
-      EFI_IFR_NUMERIC_SIZE_1,\r
+      EFI_IFR_TYPE_NUM_SIZE_8,\r
       Index\r
       );\r
   }\r
@@ -1041,7 +1058,7 @@ UpdateTerminalPage (
       OptionsOpCodeHandle,\r
       (EFI_STRING_ID) TerminalType[Index],\r
       CheckFlags,\r
-      EFI_IFR_NUMERIC_SIZE_1,\r
+      EFI_IFR_TYPE_NUM_SIZE_8,\r
       Index\r
       );\r
   }\r
@@ -1059,6 +1076,34 @@ UpdateTerminalPage (
     NULL\r
     );\r
 \r
+  HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+  OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+  ASSERT (OptionsOpCodeHandle != NULL);\r
+\r
+  CallbackData->BmmFakeNvData.COMFlowControl = NewTerminalContext->FlowControl;\r
+  for (Index = 0; Index < sizeof (mFlowControlType) / sizeof (mFlowControlType[0]); Index++) {\r
+    HiiCreateOneOfOptionOpCode (\r
+      OptionsOpCodeHandle,\r
+      (EFI_STRING_ID) mFlowControlType[Index],\r
+      0,\r
+      EFI_IFR_TYPE_NUM_SIZE_8,\r
+      mFlowControlValue[Index]\r
+      );\r
+  }\r
+\r
+  HiiCreateOneOfOpCode (\r
+    mStartOpCodeHandle,\r
+    (EFI_QUESTION_ID) COM_FLOWCONTROL_QUESTION_ID,\r
+    VARSTORE_ID_BOOT_MAINT,\r
+    COM_FLOWCONTROL_VAR_OFFSET,\r
+    STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
+    STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
+    0,\r
+    EFI_IFR_NUMERIC_SIZE_1,\r
+    OptionsOpCodeHandle,\r
+    NULL\r
+    );\r
+\r
   HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
 \r
   UpdatePageEnd (CallbackData);\r
@@ -1206,7 +1251,7 @@ UpdateSetLegacyDeviceOrderPage (
   IN BMM_CALLBACK_DATA                *CallbackData\r
   )\r
 {\r
-  BM_LEGACY_DEV_ORDER_CONTEXT *DevOrder;\r
+  LEGACY_DEV_ORDER_ENTRY      *DevOrder;\r
   BM_MENU_OPTION              *OptionMenu;\r
   BM_MENU_ENTRY               *NewMenuEntry;\r
   EFI_STRING_ID               StrRef;\r
@@ -1241,9 +1286,8 @@ UpdateSetLegacyDeviceOrderPage (
   CallbackData->BmmAskSaveOrNot = TRUE;\r
   UpdatePageStart (CallbackData);\r
 \r
-  DisMap = CallbackData->BmmOldFakeNVData.DisableMap;\r
+  DisMap = ZeroMem (CallbackData->BmmOldFakeNVData.DisableMap, sizeof (CallbackData->BmmOldFakeNVData.DisableMap));\r
 \r
-  SetMem (DisMap, 32, 0);\r
   //\r
   // Create oneof option list\r
   //\r
@@ -1311,25 +1355,25 @@ UpdateSetLegacyDeviceOrderPage (
   for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
     NewMenuEntry                = BOpt_GetMenuEntry (OptionMenu, Index);\r
     //\r
-    // Create OneOf for each legacy device, select the first one by default\r
+    // Create OneOf for each legacy device\r
     //\r
     HiiCreateOneOfOptionOpCode (\r
       OptionsOpCodeHandle,\r
       NewMenuEntry->DisplayStringToken,\r
-      (UINT8) ((Index == 0) ? EFI_IFR_OPTION_DEFAULT : 0),\r
-      EFI_IFR_NUMERIC_SIZE_1,\r
-      (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->Index\r
+      0,\r
+      EFI_IFR_TYPE_NUM_SIZE_8,\r
+      (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->BbsIndex\r
       );\r
   }\r
 \r
   //\r
-  // for item "Disabled"\r
+  // Create OneOf for item "Disabled"\r
   //\r
   HiiCreateOneOfOptionOpCode (\r
     OptionsOpCodeHandle,\r
     STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE),\r
     0,\r
-    EFI_IFR_NUMERIC_SIZE_1,\r
+    EFI_IFR_TYPE_NUM_SIZE_8,\r
     0xFF\r
     );\r
 \r
@@ -1338,12 +1382,12 @@ UpdateSetLegacyDeviceOrderPage (
   //\r
   VarData = BdsLibGetVariableAndSize (\r
               VAR_LEGACY_DEV_ORDER,\r
-              &EfiLegacyDevOrderGuid,\r
+              &gEfiLegacyDevOrderVariableGuid,\r
               &VarSize\r
               );\r
 \r
   if (NULL != VarData) {\r
-    DevOrder    = (BM_LEGACY_DEV_ORDER_CONTEXT *) VarData;\r
+    DevOrder    = (LEGACY_DEV_ORDER_ENTRY *) VarData;\r
     while (VarData < VarData + VarSize) {\r
       if (DevOrder->BbsType == BbsType) {\r
         break;\r
@@ -1351,7 +1395,7 @@ UpdateSetLegacyDeviceOrderPage (
 \r
       VarData += sizeof (BBS_TYPE);\r
       VarData += *(UINT16 *) VarData;\r
-      DevOrder = (BM_LEGACY_DEV_ORDER_CONTEXT *) VarData;\r
+      DevOrder = (LEGACY_DEV_ORDER_ENTRY *) VarData;\r
     }\r
     //\r
     // Create oneof tag here for FD/HD/CD #1 #2\r