\r
subtitle text = STRING_TOKEN(STR_NULL_STRING);\r
\r
- goto FORM_CON_MAIN_ID,\r
+ goto FORM_BOOT_FROM_FILE_ID,\r
prompt = STRING_TOKEN(STR_BOOT_FROM_FILE),\r
help = STRING_TOKEN(STR_BOOT_FROM_FILE_HELP),\r
flags = INTERACTIVE,\r
key = FORM_DRV_CHG_ID;\r
endform;\r
\r
- form formid = FORM_BOOT_ADD_ID,\r
- title = STRING_TOKEN(STR_FORM_BOOT_ADD_TITLE);\r
-\r
- label FORM_BOOT_ADD_ID;\r
- label LABEL_END;\r
- endform;\r
-\r
form formid = FORM_BOOT_DEL_ID,\r
title = STRING_TOKEN(STR_FORM_BOOT_DEL_TITLE);\r
\r
label LABEL_END;\r
endform;\r
\r
- form formid = FORM_DRV_ADD_FILE_ID,\r
- title = STRING_TOKEN(STR_FORM_DRV_ADD_FILE_TITLE);\r
-\r
- label FORM_DRV_ADD_FILE_ID;\r
- label LABEL_END;\r
- endform;\r
-\r
form formid = FORM_DRV_ADD_HANDLE_ID,\r
title = STRING_TOKEN(STR_FORM_DRV_ADD_HANDLE_TITLE);\r
\r
UINT8 *NewLegacyDev;\r
UINT8 *DisMap;\r
EFI_FORM_ID FormId;\r
- Status = EFI_SUCCESS;\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
+ Status = EFI_SUCCESS;\r
+ OldValue = 0;\r
+ NewValue = 0;\r
+ Number = 0;\r
+ OldLegacyDev = NULL;\r
+ NewLegacyDev = NULL;\r
+ NewValuePos = 0;\r
+ DisMap = NULL;\r
+\r
+ Private = BMM_CALLBACK_DATA_FROM_THIS (This);\r
+ //\r
+ // Retrive uncommitted data from Form Browser\r
+ //\r
+ CurrentFakeNVMap = &Private->BmmFakeNvData;\r
+ HiiGetBrowserData (&gBootMaintFormSetGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap);\r
if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
- if ((Value == NULL) || (ActionRequest == NULL)) {\r
+ if (Value == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
-\r
- OldValue = 0;\r
- NewValue = 0;\r
- Number = 0;\r
- OldLegacyDev = NULL;\r
- NewLegacyDev = NULL;\r
- NewValuePos = 0;\r
- DisMap = NULL;\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;\r
-\r
- Private = BMM_CALLBACK_DATA_FROM_THIS (This);\r
+ \r
UpdatePageId (Private, QuestionId);\r
\r
- //\r
- // Retrive uncommitted data from Form Browser\r
- //\r
- CurrentFakeNVMap = &Private->BmmFakeNvData;\r
- HiiGetBrowserData (&gBootMaintFormSetGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap);\r
-\r
//\r
// need to be subtituded.\r
//\r
switch (QuestionId) {\r
case KEY_VALUE_BOOT_FROM_FILE:\r
Private->FeCurrentState = FileExplorerStateBootFromFile;\r
-\r
- //\r
- // Exit Bmm main formset to send File Explorer formset.\r
- //\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
break;\r
\r
case FORM_BOOT_ADD_ID:\r
Private->FeCurrentState = FileExplorerStateAddBootOption;\r
-\r
- //\r
- // Exit Bmm main formset to send File Explorer formset.\r
- //\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
break;\r
\r
case FORM_DRV_ADD_FILE_ID:\r
Private->FeCurrentState = FileExplorerStateAddDriverOptionState;\r
-\r
- //\r
- // Exit Bmm main formset to send File Explorer formset.\r
- //\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
break;\r
\r
case FORM_DRV_ADD_HANDLE_ID:\r
UpdateTimeOutPage (Private);\r
break;\r
\r
- case FORM_RESET:\r
- gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
- return EFI_UNSUPPORTED;\r
-\r
case FORM_CON_IN_ID:\r
case FORM_CON_OUT_ID:\r
case FORM_CON_ERR_ID:\r
UpdateSetLegacyDeviceOrderPage (QuestionId, Private);\r
break;\r
\r
- case KEY_VALUE_SAVE_AND_EXIT:\r
- case KEY_VALUE_NO_SAVE_AND_EXIT:\r
-\r
- if (QuestionId == KEY_VALUE_SAVE_AND_EXIT) {\r
- Status = ApplyChangeHandler (Private, CurrentFakeNVMap, Private->BmmPreviousPageId);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
- } else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT) {\r
- DiscardChangeHandler (Private, CurrentFakeNVMap);\r
- }\r
-\r
- //\r
- // Tell browser not to ask for confirmation of changes,\r
- // since we have already applied or discarded.\r
- //\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;\r
- break;\r
-\r
default:\r
break;\r
}\r
UpdateDriverAddHandleDescPage (Private);\r
}\r
}\r
+ } else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+ if ((Value == NULL) || (ActionRequest == NULL)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
+ switch (QuestionId) {\r
+ case KEY_VALUE_SAVE_AND_EXIT:\r
+ case KEY_VALUE_NO_SAVE_AND_EXIT:\r
+ if (QuestionId == KEY_VALUE_SAVE_AND_EXIT) {\r
+ Status = ApplyChangeHandler (Private, CurrentFakeNVMap, Private->BmmPreviousPageId);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+ } else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT) {\r
+ DiscardChangeHandler (Private, CurrentFakeNVMap);\r
+ }\r
\r
- //\r
- // Pass changed uncommitted data back to Form Browser\r
- //\r
- Status = HiiSetBrowserData (&gBootMaintFormSetGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap, NULL);\r
- return Status;\r
+ //\r
+ // Tell browser not to ask for confirmation of changes,\r
+ // since we have already applied or discarded.\r
+ //\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;\r
+ break; \r
+\r
+ case FORM_RESET:\r
+ gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);\r
+ return EFI_UNSUPPORTED;\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 (&gBootMaintFormSetGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap, NULL);\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
FILE_EXPLORER_NV_DATA *NvRamMap;\r
EFI_STATUS Status;\r
\r
- if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
- if ((Value == NULL) || (ActionRequest == NULL)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- Status = EFI_SUCCESS;\r
- Private = FE_CALLBACK_DATA_FROM_THIS (This);\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;\r
-\r
+ if (Action != EFI_BROWSER_ACTION_CHANGING && Action != EFI_BROWSER_ACTION_CHANGED) {\r
//\r
- // Retrieve uncommitted data from Form Browser\r
+ // All other action return unsupported.\r
//\r
- NvRamMap = &Private->FeFakeNvData;\r
- HiiGetBrowserData (&gFileExploreFormSetGuid, mFileExplorerStorageName, sizeof (FILE_EXPLORER_NV_DATA), (UINT8 *) NvRamMap);\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+ \r
+ Status = EFI_SUCCESS;\r
+ Private = FE_CALLBACK_DATA_FROM_THIS (This);\r
\r
+ //\r
+ // Retrieve uncommitted data from Form Browser\r
+ //\r
+ NvRamMap = &Private->FeFakeNvData;\r
+ HiiGetBrowserData (&gFileExploreFormSetGuid, mFileExplorerStorageName, sizeof (FILE_EXPLORER_NV_DATA), (UINT8 *) NvRamMap);\r
+\r
+ if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
+ if ((Value == NULL) || (ActionRequest == NULL)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
if (QuestionId == KEY_VALUE_SAVE_AND_EXIT_BOOT || QuestionId == KEY_VALUE_SAVE_AND_EXIT_DRIVER) {\r
//\r
// Apply changes and exit formset\r
// Exit File Explorer formset\r
//\r
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
- } else {\r
- if (UpdateFileExplorer (Private, QuestionId)) {\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
- }\r
}\r
-\r
- return Status;\r
+ } else if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+ if (Value == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+ \r
+ if (QuestionId >= FILE_OPTION_OFFSET) {\r
+ UpdateFileExplorer (Private, QuestionId);\r
+ }\r
}\r
- //\r
- // All other action return unsupported.\r
- //\r
- return EFI_UNSUPPORTED;\r
+\r
+ return Status;\r
}\r
#define FORM_BOOT_ADD_DESCRIPTION_ID 0x101F\r
#define FORM_DRIVER_ADD_FILE_DESCRIPTION_ID 0x1020\r
#define FORM_CON_MODE_ID 0x1021\r
+#define FORM_BOOT_FROM_FILE_ID 0x1022\r
\r
#define MAXIMUM_FORM_ID 0x10FF\r
\r
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
&gEfiGlobalVariableGuid,\r
&DriverOrderListSize\r
);\r
- ASSERT (DriverOrderList != NULL);\r
NewDriverOrderList = AllocateZeroPool (DriverOrderListSize + sizeof (UINT16));\r
ASSERT (NewDriverOrderList != NULL);\r
- CopyMem (NewDriverOrderList, DriverOrderList, DriverOrderListSize);\r
- NewDriverOrderList[DriverOrderListSize / sizeof (UINT16)] = Index;\r
if (DriverOrderList != NULL) {\r
+ CopyMem (NewDriverOrderList, DriverOrderList, DriverOrderListSize);\r
EfiLibDeleteVariable (L"DriverOrder", &gEfiGlobalVariableGuid);\r
}\r
+ NewDriverOrderList[DriverOrderListSize / sizeof (UINT16)] = Index;\r
\r
Status = gRT->SetVariable (\r
L"DriverOrder",\r
LIST_ENTRY *Link;\r
UINT16 KeyCount;\r
\r
- if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+ if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
if ((Value == NULL) || (ActionRequest == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
{\r
UINTN CurIndex;\r
\r
- if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
- if ((Value == NULL) || (ActionRequest == NULL)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- gCallbackKey = QuestionId;\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
- //\r
- for (CurIndex = 0; CurIndex < mMacDeviceList.CurListLen; CurIndex ++) {\r
- if (mMacDeviceList.NodeList[CurIndex].QuestionId == QuestionId) {\r
- mSelectedMacAddrString = HiiGetString (gDeviceManagerPrivate.HiiHandle, mMacDeviceList.NodeList[CurIndex].PromptId, NULL);\r
- }\r
- }\r
- }\r
- \r
+ if (Action != EFI_BROWSER_ACTION_CHANGING) {\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
+ return EFI_UNSUPPORTED;\r
+ }\r
\r
- return EFI_SUCCESS;\r
+ if (Value == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
}\r
\r
- //\r
- // All other action return unsupported.\r
- //\r
- return EFI_UNSUPPORTED;\r
+ gCallbackKey = QuestionId;\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
+ //\r
+ for (CurIndex = 0; CurIndex < mMacDeviceList.CurListLen; CurIndex ++) {\r
+ if (mMacDeviceList.NodeList[CurIndex].QuestionId == QuestionId) {\r
+ mSelectedMacAddrString = HiiGetString (gDeviceManagerPrivate.HiiHandle, mMacDeviceList.NodeList[CurIndex].PromptId, NULL);\r
+ }\r
+ }\r
+ }\r
+\r
+ return EFI_SUCCESS;\r
}\r
\r
/**\r
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
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
//\r
HiiCreateGotoOpCode (\r
StartOpCodeHandle,\r
- NETWORK_DEVICE_FORM_ID,\r
+ INVALID_FORM_ID,\r
Token,\r
TokenHelp,\r
EFI_IFR_FLAG_CALLBACK,\r
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
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest\r
)\r
{\r
- if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+ if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
if ((Value == NULL) || (ActionRequest == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
#define LABEL_VBIOS 0x0040\r
\r
+#define INVALID_FORM_ID 0x0FFF\r
#define DEVICE_MANAGER_FORM_ID 0x1000\r
#define NETWORK_DEVICE_LIST_FORM_ID 0x1001\r
#define NETWORK_DEVICE_FORM_ID 0x1002\r
CHAR8 *PlatformSupportedLanguages;\r
CHAR8 *BestLanguage;\r
\r
- if (Action == EFI_BROWSER_ACTION_CHANGING) {\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
+ gCallbackKey = QuestionId;\r
+\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
- // The first 4 entries in the Front Page are to be GUARANTEED to remain constant so IHV's can\r
- // describe to their customers in documentation how to find their setup information (namely\r
- // under the device manager and specific buckets)\r
- //\r
switch (QuestionId) {\r
case FRONT_PAGE_KEY_CONTINUE:\r
//\r
// This is the continue - clear the screen and return an error to get out of FrontPage loop\r
//\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
break;\r
\r
case FRONT_PAGE_KEY_LANGUAGE:\r
ASSERT (FALSE);\r
}\r
\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
+\r
FreePool (PlatformSupportedLanguages);\r
FreePool (Lang);\r
FreePool (LanguageString);\r
break;\r
\r
+ default:\r
+ break;\r
+ }\r
+ } else if (Action == EFI_BROWSER_ACTION_CHANGING) {\r
+ if (Value == NULL) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ //\r
+ // The first 4 entries in the Front Page are to be GUARANTEED to remain constant so IHV's can\r
+ // describe to their customers in documentation how to find their setup information (namely\r
+ // under the device manager and specific buckets)\r
+ //\r
+ switch (QuestionId) {\r
case FRONT_PAGE_KEY_BOOT_MANAGER:\r
//\r
// Boot Manager\r
gCallbackKey = 0;\r
break;\r
}\r
-\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
-\r
- return EFI_SUCCESS;\r
}\r
\r
- //\r
- // All other action return unsupported.\r
- //\r
- return EFI_UNSUPPORTED;\r
+ return EFI_SUCCESS; \r
}\r
\r
/**\r
BootLogo->SetBootLogo (BootLogo, NULL, 0, 0, 0, 0);\r
}\r
\r
+ Status = EFI_SUCCESS;\r
do {\r
//\r
// Set proper video resolution and text mode for setup\r
UpdateFrontPageStrings ();\r
\r
gCallbackKey = 0;\r
- Status = CallFrontPage ();\r
+ CallFrontPage ();\r
\r
//\r
// If gCallbackKey is greater than 1 and less or equal to 5,\r