EFI_INPUT_KEY Key;\r
DRIVER_SAMPLE_CONFIGURATION *Configuration;\r
UINTN MyVarSize;\r
+ \r
+ if (((Value == NULL) && (Action != EFI_BROWSER_ACTION_FORM_OPEN) && (Action != EFI_BROWSER_ACTION_FORM_CLOSE))||\r
+ (ActionRequest == NULL)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
\r
- if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {\r
- if (QuestionId == 0x1234) {\r
- //\r
- // Sample CallBack for UEFI FORM_OPEN action:\r
- // Add Save action into Form 3 when Form 1 is opened.\r
- // This will be done only in FORM_OPEN CallBack of question with ID 0x1234 from Form 1.\r
- //\r
- PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);\r
\r
+ Status = EFI_SUCCESS;\r
+ PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);\r
+\r
+ switch (Action) {\r
+ case EFI_BROWSER_ACTION_FORM_OPEN:\r
+ {\r
+ if (QuestionId == 0x1234) {\r
+ //\r
+ // Sample CallBack for UEFI FORM_OPEN action:\r
+ // Add Save action into Form 3 when Form 1 is opened.\r
+ // This will be done only in FORM_OPEN CallBack of question with ID 0x1234 from Form 1.\r
+ //\r
+ PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);\r
+\r
+ //\r
+ // Initialize the container for dynamic opcodes\r
+ //\r
+ StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (StartOpCodeHandle != 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_UPDATE2;\r
+\r
+ HiiCreateActionOpCode (\r
+ StartOpCodeHandle, // Container for dynamic created opcodes\r
+ 0x1238, // Question ID\r
+ STRING_TOKEN(STR_SAVE_TEXT), // Prompt text\r
+ STRING_TOKEN(STR_SAVE_TEXT), // Help text\r
+ EFI_IFR_FLAG_CALLBACK, // Question flag\r
+ 0 // Action String ID\r
+ );\r
+\r
+ HiiUpdateForm (\r
+ PrivateData->HiiHandle[0], // HII handle\r
+ &mFormSetGuid, // Formset GUID\r
+ 0x3, // Form ID\r
+ StartOpCodeHandle, // Label for where to insert opcodes\r
+ NULL // Insert data\r
+ );\r
+\r
+ HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+ }\r
+ }\r
+ break;\r
+\r
+ case EFI_BROWSER_ACTION_FORM_CLOSE:\r
+ {\r
+ if (QuestionId == 0x5678) {\r
+ //\r
+ // Sample CallBack for UEFI FORM_CLOSE action:\r
+ // Show up a pop-up to specify Form 3 will be closed when exit Form 3.\r
+ //\r
+ do {\r
+ CreatePopUp (\r
+ EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
+ &Key,\r
+ L"",\r
+ L"You are going to leave third Form!",\r
+ L"Press ESC or ENTER to continue ...",\r
+ L"",\r
+ NULL\r
+ );\r
+ } while ((Key.ScanCode != SCAN_ESC) && (Key.UnicodeChar != CHAR_CARRIAGE_RETURN));\r
+ }\r
+ }\r
+ break;\r
+ \r
+ case EFI_BROWSER_ACTION_RETRIEVE:\r
+ {\r
+ if (QuestionId == 0x1111) {\r
+ //\r
+ // EfiVarstore question takes sample action (print value as debug information) \r
+ // after read/write question.\r
+ //\r
+ MyVarSize = 1;\r
+ Status = gRT->GetVariable(\r
+ L"MyVar",\r
+ &mFormSetGuid,\r
+ NULL,\r
+ &MyVarSize,\r
+ &MyVar\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ DEBUG ((DEBUG_INFO, "EfiVarstore question: Tall value is %d with value width %d\n", MyVar, MyVarSize));\r
+ }\r
+ }\r
+ break;\r
+\r
+ case EFI_BROWSER_ACTION_CHANGING:\r
+ {\r
+ switch (QuestionId) {\r
+ case 0x1234:\r
//\r
// Initialize the container for dynamic opcodes\r
//\r
StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (StartOpCodeHandle != NULL);\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_UPDATE2;\r
+ StartLabel->Number = LABEL_UPDATE1;\r
+\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
\r
HiiCreateActionOpCode (\r
StartOpCodeHandle, // Container for dynamic created opcodes\r
- 0x1238, // Question ID\r
- STRING_TOKEN(STR_SAVE_TEXT), // Prompt text\r
- STRING_TOKEN(STR_SAVE_TEXT), // Help text\r
+ 0x1237, // Question ID\r
+ STRING_TOKEN(STR_EXIT_TEXT), // Prompt text\r
+ STRING_TOKEN(STR_EXIT_TEXT), // Help text\r
EFI_IFR_FLAG_CALLBACK, // Question flag\r
0 // Action String ID\r
);\r
\r
- HiiUpdateForm (\r
- PrivateData->HiiHandle[0], // HII handle\r
- &mFormSetGuid, // Formset GUID\r
- 0x3, // Form ID\r
- StartOpCodeHandle, // Label for where to insert opcodes\r
- NULL // Insert data\r
+ //\r
+ // Create Option OpCode\r
+ //\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
+\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ STRING_TOKEN (STR_BOOT_OPTION1),\r
+ 0,\r
+ EFI_IFR_NUMERIC_SIZE_1,\r
+ 1\r
);\r
\r
- HiiFreeOpCodeHandle (StartOpCodeHandle);\r
- }\r
- return EFI_SUCCESS;\r
- }\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ STRING_TOKEN (STR_BOOT_OPTION2),\r
+ 0,\r
+ EFI_IFR_NUMERIC_SIZE_1,\r
+ 2\r
+ );\r
\r
- if (Action == EFI_BROWSER_ACTION_FORM_CLOSE) {\r
- if (QuestionId == 0x5678) {\r
//\r
- // Sample CallBack for UEFI FORM_CLOSE action:\r
- // Show up a pop-up to specify Form 3 will be closed when exit Form 3.\r
+ // Prepare initial value for the dynamic created oneof Question\r
+ //\r
+ PrivateData->Configuration.DynamicOneof = 2;\r
+ Status = gRT->SetVariable(\r
+ VariableName,\r
+ &mFormSetGuid,\r
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
+ sizeof (DRIVER_SAMPLE_CONFIGURATION),\r
+ &PrivateData->Configuration\r
+ );\r
+\r
//\r
- do {\r
- CreatePopUp (\r
- EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,\r
- &Key,\r
- L"",\r
- L"You are going to leave third Form!",\r
- L"Press ESC or ENTER to continue ...",\r
- L"",\r
+ // Set initial vlaue of dynamic created oneof Question in Form Browser\r
+ //\r
+ Configuration = AllocateZeroPool (sizeof (DRIVER_SAMPLE_CONFIGURATION));\r
+ ASSERT (Configuration != NULL);\r
+ if (HiiGetBrowserData (&mFormSetGuid, VariableName, sizeof (DRIVER_SAMPLE_CONFIGURATION), (UINT8 *) Configuration)) {\r
+ Configuration->DynamicOneof = 2;\r
+\r
+ //\r
+ // Update uncommitted data of Browser\r
+ //\r
+ HiiSetBrowserData (\r
+ &mFormSetGuid,\r
+ VariableName,\r
+ sizeof (DRIVER_SAMPLE_CONFIGURATION),\r
+ (UINT8 *) Configuration,\r
NULL\r
);\r
- } while ((Key.ScanCode != SCAN_ESC) && (Key.UnicodeChar != CHAR_CARRIAGE_RETURN));\r
- }\r
- return EFI_SUCCESS;\r
- }\r
-\r
- if ((Value == NULL) || (ActionRequest == NULL)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
-\r
- Status = EFI_SUCCESS;\r
- PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);\r
-\r
- switch (QuestionId) {\r
- case 0x1234:\r
- //\r
- // Initialize the container for dynamic opcodes\r
- //\r
- StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
- ASSERT (StartOpCodeHandle != NULL);\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_UPDATE1;\r
+ }\r
+ FreePool (Configuration);\r
+\r
+ HiiCreateOneOfOpCode (\r
+ StartOpCodeHandle, // Container for dynamic created opcodes\r
+ 0x8001, // Question ID (or call it "key")\r
+ CONFIGURATION_VARSTORE_ID, // VarStore ID\r
+ (UINT16) DYNAMIC_ONE_OF_VAR_OFFSET, // Offset in Buffer Storage\r
+ STRING_TOKEN (STR_ONE_OF_PROMPT), // Question prompt text\r
+ STRING_TOKEN (STR_ONE_OF_HELP), // Question help text\r
+ EFI_IFR_FLAG_CALLBACK, // Question flag\r
+ EFI_IFR_NUMERIC_SIZE_1, // Data type of Question Value\r
+ OptionsOpCodeHandle, // Option Opcode list\r
+ NULL // Default Opcode is NULl\r
+ );\r
\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
-\r
- HiiCreateActionOpCode (\r
- StartOpCodeHandle, // Container for dynamic created opcodes\r
- 0x1237, // Question ID\r
- STRING_TOKEN(STR_EXIT_TEXT), // Prompt text\r
- STRING_TOKEN(STR_EXIT_TEXT), // Help text\r
- EFI_IFR_FLAG_CALLBACK, // Question flag\r
- 0 // Action String ID\r
- );\r
+ HiiCreateOrderedListOpCode (\r
+ StartOpCodeHandle, // Container for dynamic created opcodes\r
+ 0x8002, // Question ID\r
+ CONFIGURATION_VARSTORE_ID, // VarStore ID\r
+ (UINT16) DYNAMIC_ORDERED_LIST_VAR_OFFSET, // Offset in Buffer Storage\r
+ STRING_TOKEN (STR_BOOT_OPTIONS), // Question prompt text\r
+ STRING_TOKEN (STR_BOOT_OPTIONS), // Question help text\r
+ EFI_IFR_FLAG_RESET_REQUIRED, // 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
+ 5, // Maximum container\r
+ OptionsOpCodeHandle, // Option Opcode list\r
+ NULL // Default Opcode is NULl\r
+ );\r
\r
- //\r
- // Create Option OpCode\r
- //\r
- OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
- ASSERT (OptionsOpCodeHandle != NULL);\r
-\r
- HiiCreateOneOfOptionOpCode (\r
- OptionsOpCodeHandle,\r
- STRING_TOKEN (STR_BOOT_OPTION1),\r
- 0,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
- 1\r
+ HiiCreateTextOpCode (\r
+ StartOpCodeHandle,\r
+ STRING_TOKEN(STR_TEXT_SAMPLE_HELP),\r
+ STRING_TOKEN(STR_TEXT_SAMPLE_HELP),\r
+ STRING_TOKEN(STR_TEXT_SAMPLE_STRING)\r
);\r
\r
- HiiCreateOneOfOptionOpCode (\r
- OptionsOpCodeHandle,\r
- STRING_TOKEN (STR_BOOT_OPTION2),\r
- 0,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
- 2\r
- );\r
+ HiiCreateDateOpCode (\r
+ StartOpCodeHandle,\r
+ 0x8004,\r
+ 0x0,\r
+ 0x0,\r
+ STRING_TOKEN(STR_DATE_SAMPLE_HELP),\r
+ STRING_TOKEN(STR_DATE_SAMPLE_HELP),\r
+ 0,\r
+ QF_DATE_STORAGE_TIME,\r
+ NULL\r
+ );\r
\r
- //\r
- // Prepare initial value for the dynamic created oneof Question\r
- //\r
- PrivateData->Configuration.DynamicOneof = 2;\r
- Status = gRT->SetVariable(\r
- VariableName,\r
- &mFormSetGuid,\r
- EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
- sizeof (DRIVER_SAMPLE_CONFIGURATION),\r
- &PrivateData->Configuration\r
- );\r
+ HiiCreateTimeOpCode (\r
+ StartOpCodeHandle,\r
+ 0x8005,\r
+ 0x0,\r
+ 0x0,\r
+ STRING_TOKEN(STR_TIME_SAMPLE_HELP),\r
+ STRING_TOKEN(STR_TIME_SAMPLE_HELP),\r
+ 0,\r
+ QF_TIME_STORAGE_TIME,\r
+ NULL\r
+ );\r
\r
- //\r
- // Set initial vlaue of dynamic created oneof Question in Form Browser\r
- //\r
- Configuration = AllocateZeroPool (sizeof (DRIVER_SAMPLE_CONFIGURATION));\r
- ASSERT (Configuration != NULL);\r
- if (HiiGetBrowserData (&mFormSetGuid, VariableName, sizeof (DRIVER_SAMPLE_CONFIGURATION), (UINT8 *) Configuration)) {\r
- Configuration->DynamicOneof = 2;\r
+ HiiCreateGotoOpCode (\r
+ StartOpCodeHandle, // Container for dynamic created opcodes\r
+ 1, // Target Form ID\r
+ STRING_TOKEN (STR_GOTO_FORM1), // Prompt text\r
+ STRING_TOKEN (STR_GOTO_HELP), // Help text\r
+ 0, // Question flag\r
+ 0x8003 // Question ID\r
+ );\r
\r
- //\r
- // Update uncommitted data of Browser\r
- //\r
- HiiSetBrowserData (\r
- &mFormSetGuid,\r
- VariableName,\r
- sizeof (DRIVER_SAMPLE_CONFIGURATION),\r
- (UINT8 *) Configuration,\r
- NULL\r
+ HiiUpdateForm (\r
+ PrivateData->HiiHandle[0], // HII handle\r
+ &mFormSetGuid, // Formset GUID\r
+ 0x1234, // Form ID\r
+ StartOpCodeHandle, // Label for where to insert opcodes\r
+ EndOpCodeHandle // Replace data\r
);\r
- }\r
- FreePool (Configuration);\r
-\r
- HiiCreateOneOfOpCode (\r
- StartOpCodeHandle, // Container for dynamic created opcodes\r
- 0x8001, // Question ID (or call it "key")\r
- CONFIGURATION_VARSTORE_ID, // VarStore ID\r
- (UINT16) DYNAMIC_ONE_OF_VAR_OFFSET, // Offset in Buffer Storage\r
- STRING_TOKEN (STR_ONE_OF_PROMPT), // Question prompt text\r
- STRING_TOKEN (STR_ONE_OF_HELP), // Question help text\r
- EFI_IFR_FLAG_CALLBACK, // Question flag\r
- EFI_IFR_NUMERIC_SIZE_1, // Data type of Question Value\r
- OptionsOpCodeHandle, // Option Opcode list\r
- NULL // Default Opcode is NULl\r
- );\r
\r
- HiiCreateOrderedListOpCode (\r
- StartOpCodeHandle, // Container for dynamic created opcodes\r
- 0x8002, // Question ID\r
- CONFIGURATION_VARSTORE_ID, // VarStore ID\r
- (UINT16) DYNAMIC_ORDERED_LIST_VAR_OFFSET, // Offset in Buffer Storage\r
- STRING_TOKEN (STR_BOOT_OPTIONS), // Question prompt text\r
- STRING_TOKEN (STR_BOOT_OPTIONS), // Question help text\r
- EFI_IFR_FLAG_RESET_REQUIRED, // 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
- 5, // Maximum container\r
- OptionsOpCodeHandle, // Option Opcode list\r
- NULL // Default Opcode is NULl\r
- );\r
+ HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+ HiiFreeOpCodeHandle (EndOpCodeHandle);\r
+ break;\r
\r
- HiiCreateTextOpCode (\r
- StartOpCodeHandle,\r
- STRING_TOKEN(STR_TEXT_SAMPLE_HELP),\r
- STRING_TOKEN(STR_TEXT_SAMPLE_HELP),\r
- STRING_TOKEN(STR_TEXT_SAMPLE_STRING)\r
- );\r
-\r
- HiiCreateDateOpCode (\r
- StartOpCodeHandle,\r
- 0x8004,\r
- 0x0,\r
- 0x0,\r
- STRING_TOKEN(STR_DATE_SAMPLE_HELP),\r
- STRING_TOKEN(STR_DATE_SAMPLE_HELP),\r
- 0,\r
- QF_DATE_STORAGE_TIME,\r
- NULL\r
- );\r
+ case 0x5678:\r
+ //\r
+ // We will reach here once the Question is refreshed\r
+ //\r
\r
- HiiCreateTimeOpCode (\r
- StartOpCodeHandle,\r
- 0x8005,\r
- 0x0,\r
- 0x0,\r
- STRING_TOKEN(STR_TIME_SAMPLE_HELP),\r
- STRING_TOKEN(STR_TIME_SAMPLE_HELP),\r
- 0,\r
- QF_TIME_STORAGE_TIME,\r
- NULL\r
- );\r
+ //\r
+ // Initialize the container for dynamic opcodes\r
+ //\r
+ StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (StartOpCodeHandle != NULL);\r
\r
- HiiCreateGotoOpCode (\r
- StartOpCodeHandle, // Container for dynamic created opcodes\r
- 1, // Target Form ID\r
- STRING_TOKEN (STR_GOTO_FORM1), // Prompt text\r
- STRING_TOKEN (STR_GOTO_HELP), // Help text\r
- 0, // Question flag\r
- 0x8003 // Question ID\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_UPDATE2;\r
\r
- HiiUpdateForm (\r
- PrivateData->HiiHandle[0], // HII handle\r
- &mFormSetGuid, // Formset GUID\r
- 0x1234, // Form ID\r
- StartOpCodeHandle, // Label for where to insert opcodes\r
- EndOpCodeHandle // Replace data\r
+ HiiCreateActionOpCode (\r
+ StartOpCodeHandle, // Container for dynamic created opcodes\r
+ 0x1237, // Question ID\r
+ STRING_TOKEN(STR_EXIT_TEXT), // Prompt text\r
+ STRING_TOKEN(STR_EXIT_TEXT), // Help text\r
+ EFI_IFR_FLAG_CALLBACK, // Question flag\r
+ 0 // Action String ID\r
);\r
\r
- HiiFreeOpCodeHandle (StartOpCodeHandle);\r
- HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
- HiiFreeOpCodeHandle (EndOpCodeHandle);\r
- break;\r
-\r
- case 0x5678:\r
- //\r
- // We will reach here once the Question is refreshed\r
- //\r
+ HiiUpdateForm (\r
+ PrivateData->HiiHandle[0], // HII handle\r
+ &mFormSetGuid, // Formset GUID\r
+ 0x3, // Form ID\r
+ StartOpCodeHandle, // Label for where to insert opcodes\r
+ NULL // Insert data\r
+ );\r
\r
- //\r
- // Initialize the container for dynamic opcodes\r
- //\r
- StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
- ASSERT (StartOpCodeHandle != NULL);\r
+ HiiFreeOpCodeHandle (StartOpCodeHandle);\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_UPDATE2;\r
-\r
- HiiCreateActionOpCode (\r
- StartOpCodeHandle, // Container for dynamic created opcodes\r
- 0x1237, // Question ID\r
- STRING_TOKEN(STR_EXIT_TEXT), // Prompt text\r
- STRING_TOKEN(STR_EXIT_TEXT), // Help text\r
- EFI_IFR_FLAG_CALLBACK, // Question flag\r
- 0 // Action String ID\r
- );\r
-\r
- HiiUpdateForm (\r
- PrivateData->HiiHandle[0], // HII handle\r
- &mFormSetGuid, // Formset GUID\r
- 0x3, // Form ID\r
- StartOpCodeHandle, // Label for where to insert opcodes\r
- NULL // Insert data\r
- );\r
+ //\r
+ // Refresh the Question value\r
+ //\r
+ PrivateData->Configuration.DynamicRefresh++;\r
+ Status = gRT->SetVariable(\r
+ VariableName,\r
+ &mFormSetGuid,\r
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
+ sizeof (DRIVER_SAMPLE_CONFIGURATION),\r
+ &PrivateData->Configuration\r
+ );\r
\r
- HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+ //\r
+ // Change an EFI Variable storage (MyEfiVar) asynchronous, this will cause\r
+ // the first statement in Form 3 be suppressed\r
+ //\r
+ MyVarSize = 1;\r
+ MyVar = 111;\r
+ Status = gRT->SetVariable(\r
+ L"MyVar",\r
+ &mFormSetGuid,\r
+ EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
+ MyVarSize,\r
+ &MyVar\r
+ );\r
+ break;\r
\r
- //\r
- // Refresh the Question value\r
- //\r
- PrivateData->Configuration.DynamicRefresh++;\r
- Status = gRT->SetVariable(\r
- VariableName,\r
- &mFormSetGuid,\r
- EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
- sizeof (DRIVER_SAMPLE_CONFIGURATION),\r
- &PrivateData->Configuration\r
- );\r
+ case 0x1237:\r
+ //\r
+ // User press "Exit now", request Browser to exit\r
+ //\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
+ break;\r
\r
- //\r
- // Change an EFI Variable storage (MyEfiVar) asynchronous, this will cause\r
- // the first statement in Form 3 be suppressed\r
- //\r
- MyVarSize = 1;\r
- MyVar = 111;\r
- Status = gRT->SetVariable(\r
- L"MyVar",\r
- &mFormSetGuid,\r
- EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
- MyVarSize,\r
- &MyVar\r
- );\r
- break;\r
+ case 0x1238:\r
+ //\r
+ // User press "Save now", request Browser to save the uncommitted data.\r
+ //\r
+ *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
+ break;\r
\r
- case 0x1237:\r
- //\r
- // User press "Exit now", request Browser to exit\r
- //\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
- break;\r
+ case 0x2000:\r
+ //\r
+ // Only used to update the state.\r
+ //\r
+ if ((Type == EFI_IFR_TYPE_STRING) && (Value->string == 0) && \r
+ (PrivateData->PasswordState == BROWSER_STATE_SET_PASSWORD)) {\r
+ PrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD;\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
\r
- case 0x1238:\r
- //\r
- // User press "Save now", request Browser to save the uncommitted data.\r
- //\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
- break;\r
+ //\r
+ // When try to set a new password, user will be chanlleged with old password.\r
+ // The Callback is responsible for validating old password input by user,\r
+ // If Callback return EFI_SUCCESS, it indicates validation pass.\r
+ //\r
+ switch (PrivateData->PasswordState) {\r
+ case BROWSER_STATE_VALIDATE_PASSWORD:\r
+ Status = ValidatePassword (PrivateData, Value->string);\r
+ if (Status == EFI_SUCCESS) {\r
+ PrivateData->PasswordState = BROWSER_STATE_SET_PASSWORD;\r
+ }\r
+ break;\r
\r
- case 0x2000:\r
- //\r
- // Only used to update the state.\r
- //\r
- if ((Type == EFI_IFR_TYPE_STRING) && (Value->string == 0) && \r
- (PrivateData->PasswordState == BROWSER_STATE_SET_PASSWORD)) {\r
- PrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD;\r
- return EFI_INVALID_PARAMETER;\r
- }\r
+ case BROWSER_STATE_SET_PASSWORD:\r
+ Status = SetPassword (PrivateData, Value->string);\r
+ PrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD;\r
+ break;\r
\r
- //\r
- // When try to set a new password, user will be chanlleged with old password.\r
- // The Callback is responsible for validating old password input by user,\r
- // If Callback return EFI_SUCCESS, it indicates validation pass.\r
- //\r
- switch (PrivateData->PasswordState) {\r
- case BROWSER_STATE_VALIDATE_PASSWORD:\r
- Status = ValidatePassword (PrivateData, Value->string);\r
- if (Status == EFI_SUCCESS) {\r
- PrivateData->PasswordState = BROWSER_STATE_SET_PASSWORD;\r
+ default:\r
+ break;\r
}\r
- break;\r
\r
- case BROWSER_STATE_SET_PASSWORD:\r
- Status = SetPassword (PrivateData, Value->string);\r
- PrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD;\r
break;\r
\r
+ case 0x1111:\r
+ //\r
+ // EfiVarstore question takes sample action (print value as debug information) \r
+ // after read/write question.\r
+ //\r
+ MyVarSize = 1;\r
+ Status = gRT->GetVariable(\r
+ L"MyVar",\r
+ &mFormSetGuid,\r
+ NULL,\r
+ &MyVarSize,\r
+ &MyVar\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+ DEBUG ((DEBUG_INFO, "EfiVarstore question: Tall value is %d with value width %d\n", MyVar, MyVarSize));\r
default:\r
break;\r
}\r
+ }\r
+ break;\r
\r
- break;\r
-\r
- case 0x1111:\r
- //\r
- // EfiVarstore question takes sample action (print value as debug information) \r
- // after read/write question.\r
- //\r
- MyVarSize = 1;\r
- Status = gRT->GetVariable(\r
- L"MyVar",\r
- &mFormSetGuid,\r
- NULL,\r
- &MyVarSize,\r
- &MyVar\r
- );\r
- ASSERT_EFI_ERROR (Status);\r
- DEBUG ((DEBUG_INFO, "EfiVarstore question: Tall value is %d with value width %d\n", MyVar, MyVarSize));\r
default:\r
+ Status = EFI_UNSUPPORTED;\r
break;\r
}\r
\r