UpdateDrvDelPage (Private);\r
break;\r
\r
- case FORM_BOOT_NEXT_ID:\r
- CleanUpPage (FORM_BOOT_NEXT_ID, Private);\r
- UpdateBootNextPage (Private);\r
- break;\r
-\r
- case FORM_TIME_OUT_ID:\r
- CleanUpPage (FORM_TIME_OUT_ID, Private);\r
- UpdateTimeOutPage (Private);\r
- break;\r
-\r
case FORM_CON_IN_ID:\r
case FORM_CON_OUT_ID:\r
case FORM_CON_ERR_ID:\r
}\r
\r
/**\r
- Create dynamic code for BMM.\r
\r
- @param BmmCallbackInfo The BMM context data.\r
+ Update the menus in the BMM page.\r
\r
**/\r
VOID\r
-InitializeDrivers(\r
- IN BMM_CALLBACK_DATA *BmmCallbackInfo\r
+CustomizeMenus (\r
+ VOID\r
)\r
{\r
- EFI_HII_HANDLE HiiHandle;\r
VOID *StartOpCodeHandle;\r
VOID *EndOpCodeHandle;\r
- EFI_IFR_GUID_LABEL *StartLabel;\r
- EFI_IFR_GUID_LABEL *EndLabel;\r
- UINTN Index; \r
- EFI_STRING String;\r
- EFI_STRING_ID Token;\r
- EFI_STRING_ID TokenHelp; \r
- EFI_HII_HANDLE *HiiHandles;\r
- EFI_GUID FormSetGuid;\r
- CHAR16 *DevicePathStr;\r
- EFI_STRING_ID DevicePathId;\r
- EFI_IFR_FORM_SET *Buffer; \r
- UINTN BufferSize; \r
- UINT8 ClassGuidNum; \r
- EFI_GUID *ClassGuid; \r
- UINTN TempSize;\r
- UINT8 *Ptr;\r
- EFI_STATUS Status;\r
-\r
- TempSize =0;\r
- BufferSize = 0;\r
- Buffer = NULL;\r
-\r
- HiiHandle = BmmCallbackInfo->BmmHiiHandle;\r
+ EFI_IFR_GUID_LABEL *StartGuidLabel;\r
+ EFI_IFR_GUID_LABEL *EndGuidLabel;\r
+\r
//\r
// Allocate space for creation of UpdateData Buffer\r
//\r
\r
EndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (EndOpCodeHandle != NULL);\r
-\r
//\r
// Create Hii Extend Label OpCode as the start opcode\r
//\r
- StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
- StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
- StartLabel->Number = LABEL_BMM_PLATFORM_INFORMATION;\r
-\r
+ StartGuidLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ StartGuidLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ StartGuidLabel->Number = LABEL_FORM_MAIN_START;\r
//\r
// Create Hii Extend Label OpCode as the end opcode\r
//\r
- EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
- EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
- EndLabel->Number = LABEL_END;\r
+ EndGuidLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ EndGuidLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ EndGuidLabel->Number = LABEL_FORM_MAIN_END;\r
\r
//\r
- // Get all the Hii handles\r
- //\r
- HiiHandles = HiiGetHiiHandles (NULL);\r
- ASSERT (HiiHandles != NULL);\r
-\r
+ //Updata Front Page form\r
//\r
- // Search for formset of each class type\r
- //\r
- for (Index = 0; HiiHandles[Index] != NULL; Index++) {\r
- Status = HiiGetFormSetFromHiiHandle(HiiHandles[Index], &Buffer,&BufferSize);\r
- if (EFI_ERROR (Status)) {\r
- continue;\r
- }\r
-\r
- Ptr = (UINT8 *)Buffer;\r
- while(TempSize < BufferSize) {\r
- TempSize += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
-\r
- if (((EFI_IFR_OP_HEADER *) Ptr)->Length <= OFFSET_OF (EFI_IFR_FORM_SET, Flags)){\r
- Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
- continue;\r
- }\r
-\r
- //\r
- // Find FormSet OpCode\r
- //\r
- ClassGuidNum = (UINT8) (((EFI_IFR_FORM_SET *)Ptr)->Flags & 0x3);\r
- ClassGuid = (EFI_GUID *) (VOID *)(Ptr + sizeof (EFI_IFR_FORM_SET));\r
- while (ClassGuidNum-- > 0) {\r
- if (CompareGuid (&gEfiIfrBootMaintenanceGuid, ClassGuid) == 0){\r
- ClassGuid ++;\r
- continue;\r
- }\r
-\r
- String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET *)Ptr)->FormSetTitle, NULL);\r
- if (String == NULL) {\r
- String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
- ASSERT (String != NULL);\r
- }\r
- Token = HiiSetString (HiiHandle, 0, String, NULL);\r
- FreePool (String);\r
-\r
- String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET *)Ptr)->Help, NULL);\r
- if (String == NULL) {\r
- String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
- ASSERT (String != NULL);\r
- }\r
- TokenHelp = HiiSetString (HiiHandle, 0, String, NULL);\r
- FreePool (String);\r
-\r
- FormSetGuid = ((EFI_IFR_FORM_SET *)Ptr)->Guid;\r
-\r
- DevicePathStr = BmmExtractDevicePathFromHiiHandle(HiiHandles[Index]);\r
- DevicePathId = 0;\r
- if (DevicePathStr != NULL){\r
- DevicePathId = HiiSetString (HiiHandle, 0, DevicePathStr, NULL);\r
- FreePool (DevicePathStr);\r
- }\r
- HiiCreateGotoExOpCode (\r
- StartOpCodeHandle,\r
- 0,\r
- Token,\r
- TokenHelp,\r
- 0,\r
- (EFI_QUESTION_ID) (Index + FRONT_PAGE_KEY_OFFSET),\r
- 0,\r
- &FormSetGuid,\r
- DevicePathId\r
- );\r
- break;\r
- }\r
- Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;\r
- }\r
+ UiCustomizeBMMPage (\r
+ mBmmCallbackInfo->BmmHiiHandle,\r
+ StartOpCodeHandle\r
+ );\r
\r
- FreePool(Buffer);\r
- Buffer = NULL;\r
- TempSize = 0;\r
- BufferSize = 0;\r
- } \r
- \r
HiiUpdateForm (\r
- HiiHandle,\r
+ mBmmCallbackInfo->BmmHiiHandle,\r
&mBootMaintGuid,\r
FORM_MAIN_ID,\r
StartOpCodeHandle,\r
);\r
\r
HiiFreeOpCodeHandle (StartOpCodeHandle);\r
- HiiFreeOpCodeHandle (EndOpCodeHandle); \r
- FreePool (HiiHandles);\r
+ HiiFreeOpCodeHandle (EndOpCodeHandle);\r
}\r
\r
/**\r
\r
ASSERT (CallbackData != NULL);\r
\r
- InitializeDrivers (CallbackData);\r
-\r
//\r
// Initialize data which located in BMM main page\r
//\r
\r
CallbackData->BmmFakeNvData.ForceReconnect = TRUE;\r
\r
+ //\r
+ // Update the menus.\r
+ //\r
+ CustomizeMenus ();\r
+\r
//\r
// Backup Initialize BMM configuartion data to BmmOldFakeNVData\r
//\r