/** @file\r
-Private MACRO, structure and function definitions for Setup Browser module. \r
+Private MACRO, structure and function definitions for Setup Browser module.\r
\r
-Copyright (c) 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2007 - 2010, 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
http://opensource.org/licenses/bsd-license.php\r
\r
#include <PiDxe.h>\r
\r
-#include <Protocol/Print.h>\r
#include <Protocol/SimpleTextOut.h>\r
#include <Protocol/SimpleTextIn.h>\r
#include <Protocol/FormBrowser2.h>\r
#include <Protocol/HiiConfigRouting.h>\r
#include <Protocol/HiiDatabase.h>\r
#include <Protocol/HiiString.h>\r
+#include <Protocol/UserManager.h>\r
\r
-#include <MdeModuleHii.h>\r
+#include <Guid/MdeModuleHii.h>\r
+#include <Guid/HiiPlatformSetupFormset.h>\r
+#include <Guid/HiiFormMapMethodGuid.h>\r
\r
-#include <Library/GraphicsLib.h>\r
#include <Library/PrintLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/BaseLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
-#include <Library/IfrSupportLib.h>\r
-#include <Library/ExtendedIfrSupportLib.h>\r
#include <Library/HiiLib.h>\r
-#include <Library/ExtendedHiiLib.h>\r
#include <Library/PcdLib.h>\r
+#include <Library/DevicePathLib.h>\r
\r
#include "Colors.h"\r
\r
// Definition for function key setting\r
//\r
#define NONE_FUNCTION_KEY_SETTING 0\r
-#define DEFAULT_FUNCTION_KEY_SETTING (FUNCTION_ONE | FUNCTION_TWO | FUNCTION_NINE | FUNCTION_TEN)\r
+#define DEFAULT_FUNCTION_KEY_SETTING (FUNCTION_NINE | FUNCTION_TEN)\r
\r
-#define FUNCTION_ONE (1 << 0)\r
-#define FUNCTION_TWO (1 << 1)\r
#define FUNCTION_NINE (1 << 2)\r
#define FUNCTION_TEN (1 << 3)\r
\r
//\r
#define EXPRESSION_STACK_SIZE_INCREMENT 0x100\r
\r
+#define EFI_SPECIFICATION_MAJOR_VERSION 0x2\r
+#define EFI_SPECIFICATION_MINOR_VERSION 0x1\r
+#define EFI_SPECIFICATION_ERRATA_VERSION 0x0\r
+#define EFI_IFR_SPECIFICATION_VERSION (UINT16)((EFI_SPECIFICATION_MAJOR_VERSION << 8) | (EFI_SPECIFICATION_MINOR_VERSION << 4) | EFI_SPECIFICATION_ERRATA_VERSION)\r
\r
-#define EFI_SPECIFICATION_ERRATA_VERSION 0\r
\r
-#define EFI_IFR_SPECIFICATION_VERSION \\r
- ((((EFI_SPECIFICATION_VERSION) >> 8) & 0xff00) | \\r
- (((EFI_SPECIFICATION_VERSION) & 0xf) << 4) | \\r
- ((EFI_SPECIFICATION_ERRATA_VERSION) & 0xf))\r
-\r
-#define SETUP_DRIVER_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'D', 'V')\r
+#define SETUP_DRIVER_SIGNATURE SIGNATURE_32 ('F', 'B', 'D', 'V')\r
typedef struct {\r
UINT32 Signature;\r
\r
// Produced protocol\r
//\r
EFI_FORM_BROWSER2_PROTOCOL FormBrowser2;\r
- EFI_PRINT_PROTOCOL Print;\r
\r
} SETUP_DRIVER_PRIVATE_DATA;\r
\r
#define EFI_HII_EXPRESSION_DISABLE_IF 4\r
#define EFI_HII_EXPRESSION_VALUE 5\r
#define EFI_HII_EXPRESSION_RULE 6\r
+#define EFI_HII_EXPRESSION_READ 7\r
+#define EFI_HII_EXPRESSION_WRITE 8\r
\r
#define EFI_HII_VARSTORE_BUFFER 0\r
#define EFI_HII_VARSTORE_NAME_VALUE 1\r
#define FORM_INCONSISTENT_VALIDATION 0\r
#define FORM_NO_SUBMIT_VALIDATION 1\r
\r
+#define FORMSET_CLASS_PLATFORM_SETUP 0x0001\r
+#define FORMSET_CLASS_FRONT_PAGE 0x0002\r
+\r
typedef struct {\r
UINT8 Type;\r
EFI_IFR_TYPE_VALUE Value;\r
} EFI_HII_VALUE;\r
\r
-#define NAME_VALUE_NODE_SIGNATURE EFI_SIGNATURE_32 ('N', 'V', 'S', 'T')\r
+#define NAME_VALUE_NODE_SIGNATURE SIGNATURE_32 ('N', 'V', 'S', 'T')\r
\r
typedef struct {\r
UINTN Signature;\r
\r
#define NAME_VALUE_NODE_FROM_LINK(a) CR (a, NAME_VALUE_NODE, Link, NAME_VALUE_NODE_SIGNATURE)\r
\r
-#define FORMSET_STORAGE_SIGNATURE EFI_SIGNATURE_32 ('F', 'S', 'T', 'G')\r
+#define FORMSET_STORAGE_SIGNATURE SIGNATURE_32 ('F', 'S', 'T', 'G')\r
\r
typedef struct {\r
UINTN Signature;\r
\r
#define FORMSET_STORAGE_FROM_LINK(a) CR (a, FORMSET_STORAGE, Link, FORMSET_STORAGE_SIGNATURE)\r
\r
-#define EXPRESSION_OPCODE_SIGNATURE EFI_SIGNATURE_32 ('E', 'X', 'O', 'P')\r
+typedef union {\r
+ EFI_STRING_ID VarName;\r
+ UINT16 VarOffset;\r
+} VAR_STORE_INFO;\r
+\r
+#define EXPRESSION_OPCODE_SIGNATURE SIGNATURE_32 ('E', 'X', 'O', 'P')\r
\r
typedef struct {\r
UINTN Signature;\r
\r
EFI_HII_VALUE Value; // For EFI_IFR_EQ_ID_VAL, EFI_IFR_UINT64, EFI_IFR_UINT32, EFI_IFR_UINT16, EFI_IFR_UINT8, EFI_IFR_STRING_REF1\r
\r
- EFI_QUESTION_ID QuestionId; // For EFI_IFR_EQ_ID_ID, EFI_IFR_EQ_ID_LIST, EFI_IFR_QUESTION_REF1\r
+ EFI_QUESTION_ID QuestionId; // For EFI_IFR_EQ_ID_ID, EFI_IFR_EQ_ID_VAL_LIST, EFI_IFR_QUESTION_REF1\r
EFI_QUESTION_ID QuestionId2;\r
\r
- UINT16 ListLength; // For EFI_IFR_EQ_ID_LIST\r
+ UINT16 ListLength; // For EFI_IFR_EQ_ID_VAL_LIST\r
UINT16 *ValueList;\r
\r
EFI_STRING_ID DevicePath; // For EFI_IFR_QUESTION_REF3_2, EFI_IFR_QUESTION_REF3_3\r
EFI_GUID Guid;\r
+\r
+ FORMSET_STORAGE *VarStorage; // For EFI_IFR_SET, EFI_IFR_GET\r
+ VAR_STORE_INFO VarStoreInfo;// For EFI_IFR_SET, EFI_IFR_GET\r
+ UINT8 ValueType; // For EFI_IFR_SET, EFI_IFR_GET\r
+ UINT8 ValueWidth; // For EFI_IFR_SET, EFI_IFR_GET\r
+ CHAR16 *ValueName; // For EFI_IFR_SET, EFI_IFR_GET\r
+ LIST_ENTRY MapExpressionList; // nested expressions inside of Map opcode.\r
} EXPRESSION_OPCODE;\r
\r
#define EXPRESSION_OPCODE_FROM_LINK(a) CR (a, EXPRESSION_OPCODE, Link, EXPRESSION_OPCODE_SIGNATURE)\r
\r
-#define FORM_EXPRESSION_SIGNATURE EFI_SIGNATURE_32 ('F', 'E', 'X', 'P')\r
+#define FORM_EXPRESSION_SIGNATURE SIGNATURE_32 ('F', 'E', 'X', 'P')\r
\r
typedef struct {\r
UINTN Signature;\r
\r
#define FORM_EXPRESSION_FROM_LINK(a) CR (a, FORM_EXPRESSION, Link, FORM_EXPRESSION_SIGNATURE)\r
\r
-#define QUESTION_DEFAULT_SIGNATURE EFI_SIGNATURE_32 ('Q', 'D', 'F', 'T')\r
+#define QUESTION_DEFAULT_SIGNATURE SIGNATURE_32 ('Q', 'D', 'F', 'T')\r
\r
typedef struct {\r
UINTN Signature;\r
\r
#define QUESTION_DEFAULT_FROM_LINK(a) CR (a, QUESTION_DEFAULT, Link, QUESTION_DEFAULT_SIGNATURE)\r
\r
-#define QUESTION_OPTION_SIGNATURE EFI_SIGNATURE_32 ('Q', 'O', 'P', 'T')\r
+#define QUESTION_OPTION_SIGNATURE SIGNATURE_32 ('Q', 'O', 'P', 'T')\r
\r
typedef struct {\r
UINTN Signature;\r
\r
#define QUESTION_OPTION_FROM_LINK(a) CR (a, QUESTION_OPTION, Link, QUESTION_OPTION_SIGNATURE)\r
\r
-#define FORM_BROWSER_STATEMENT_SIGNATURE EFI_SIGNATURE_32 ('F', 'S', 'T', 'A')\r
+#define FORM_BROWSER_STATEMENT_SIGNATURE SIGNATURE_32 ('F', 'S', 'T', 'A')\r
+\r
typedef struct {\r
UINTN Signature;\r
LIST_ENTRY Link;\r
EFI_QUESTION_ID QuestionId; // The value of zero is reserved\r
EFI_VARSTORE_ID VarStoreId; // A value of zero indicates no variable storage\r
FORMSET_STORAGE *Storage;\r
- union {\r
- EFI_STRING_ID VarName;\r
- UINT16 VarOffset;\r
- } VarStoreInfo;\r
+ VAR_STORE_INFO VarStoreInfo;\r
UINT16 StorageWidth;\r
UINT8 QuestionFlags;\r
CHAR16 *VariableName; // Name/Value or EFI Variable name\r
\r
EFI_HII_VALUE HiiValue; // Edit copy for checkbox, numberic, oneof\r
UINT8 *BufferValue; // Edit copy for string, password, orderedlist\r
+ UINT8 ValueType; // Data type for orderedlist value array\r
\r
//\r
// OpCode specific members\r
LIST_ENTRY NoSubmitListHead; // nested nosubmit expression list (FORM_EXPRESSION)\r
FORM_EXPRESSION *GrayOutExpression; // nesting inside of GrayOutIf\r
FORM_EXPRESSION *SuppressExpression; // nesting inside of SuppressIf\r
+ FORM_EXPRESSION *DisableExpression; // nesting inside of DisableIf\r
\r
+ FORM_EXPRESSION *ReadExpression; // nested EFI_IFR_READ, provide this question value by read expression.\r
+ FORM_EXPRESSION *WriteExpression; // nested EFI_IFR_WRITE, evaluate write expression after this question value is set.\r
} FORM_BROWSER_STATEMENT;\r
\r
#define FORM_BROWSER_STATEMENT_FROM_LINK(a) CR (a, FORM_BROWSER_STATEMENT, Link, FORM_BROWSER_STATEMENT_SIGNATURE)\r
\r
-#define FORM_BROWSER_FORM_SIGNATURE EFI_SIGNATURE_32 ('F', 'F', 'R', 'M')\r
+#define FORM_BROWSER_FORM_SIGNATURE SIGNATURE_32 ('F', 'F', 'R', 'M')\r
+#define STANDARD_MAP_FORM_TYPE 0x01\r
\r
typedef struct {\r
UINTN Signature;\r
LIST_ENTRY Link;\r
\r
- UINT16 FormId;\r
- EFI_STRING_ID FormTitle;\r
+ UINT16 FormId; // FormId of normal form or formmap form.\r
+ EFI_STRING_ID FormTitle; // FormTile of normal form, or FormMapMethod title of formmap form.\r
+ UINT16 FormType; // Specific form type for the different form.\r
\r
EFI_IMAGE_ID ImageId;\r
\r
LIST_ENTRY ExpressionListHead; // List of Expressions (FORM_EXPRESSION)\r
LIST_ENTRY StatementListHead; // List of Statements and Questions (FORM_BROWSER_STATEMENT)\r
+ FORM_EXPRESSION *SuppressExpression; // nesting inside of SuppressIf\r
} FORM_BROWSER_FORM;\r
\r
#define FORM_BROWSER_FORM_FROM_LINK(a) CR (a, FORM_BROWSER_FORM, Link, FORM_BROWSER_FORM_SIGNATURE)\r
\r
-#define FORMSET_DEFAULTSTORE_SIGNATURE EFI_SIGNATURE_32 ('F', 'D', 'F', 'S')\r
+#define FORMSET_DEFAULTSTORE_SIGNATURE SIGNATURE_32 ('F', 'D', 'F', 'S')\r
\r
typedef struct {\r
UINTN Signature;\r
EFI_GUID Guid;\r
EFI_STRING_ID FormSetTitle;\r
EFI_STRING_ID Help;\r
- UINT16 Class;\r
- UINT16 SubClass;\r
+ UINT8 NumberOfClassGuid;\r
+ EFI_GUID ClassGuid[3]; // Up to three ClassGuid\r
+ UINT16 Class; // Tiano extended Class code\r
+ UINT16 SubClass; // Tiano extended Subclass code\r
EFI_IMAGE_ID ImageId;\r
\r
FORM_BROWSER_STATEMENT *StatementBuffer; // Buffer for all Statements and Questions\r
LIST_ENTRY StorageListHead; // Storage list (FORMSET_STORAGE)\r
LIST_ENTRY DefaultStoreListHead; // DefaultStore list (FORMSET_DEFAULTSTORE)\r
LIST_ENTRY FormListHead; // Form list (FORM_BROWSER_FORM)\r
+ LIST_ENTRY ExpressionListHead; // List of Expressions (FORM_EXPRESSION)\r
} FORM_BROWSER_FORMSET;\r
\r
+#define BROWSER_CONTEXT_SIGNATURE SIGNATURE_32 ('B', 'C', 'T', 'X')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ LIST_ENTRY Link;\r
+\r
+ //\r
+ // Globals defined in Setup.c\r
+ //\r
+ BANNER_DATA *BannerData;\r
+ UINTN ClassOfVfr;\r
+ UINTN FunctionKeySetting;\r
+ BOOLEAN ResetRequired;\r
+ BOOLEAN NvUpdateRequired;\r
+ UINT16 Direction;\r
+ EFI_SCREEN_DESCRIPTOR ScreenDimensions;\r
+ CHAR16 *FunctionNineString;\r
+ CHAR16 *FunctionTenString;\r
+ CHAR16 *EnterString;\r
+ CHAR16 *EnterCommitString;\r
+ CHAR16 *EnterEscapeString;\r
+ CHAR16 *EscapeString;\r
+ CHAR16 *SaveFailed;\r
+ CHAR16 *MoveHighlight;\r
+ CHAR16 *MakeSelection;\r
+ CHAR16 *DecNumericInput;\r
+ CHAR16 *HexNumericInput;\r
+ CHAR16 *ToggleCheckBox;\r
+ CHAR16 *PromptForData;\r
+ CHAR16 *PromptForPassword;\r
+ CHAR16 *PromptForNewPassword;\r
+ CHAR16 *ConfirmPassword;\r
+ CHAR16 *ConfirmError;\r
+ CHAR16 *PassowordInvalid;\r
+ CHAR16 *PressEnter;\r
+ CHAR16 *EmptyString;\r
+ CHAR16 *AreYouSure;\r
+ CHAR16 *YesResponse;\r
+ CHAR16 *NoResponse;\r
+ CHAR16 *MiniString;\r
+ CHAR16 *PlusString;\r
+ CHAR16 *MinusString;\r
+ CHAR16 *AdjustNumber;\r
+ CHAR16 *SaveChanges;\r
+ CHAR16 *OptionMismatch;\r
+ CHAR16 *FormSuppress;\r
+ CHAR16 PromptBlockWidth;\r
+ CHAR16 OptionBlockWidth;\r
+ CHAR16 HelpBlockWidth;\r
+ FORM_BROWSER_FORMSET *OldFormSet;\r
+\r
+ //\r
+ // Globals defined in Ui.c\r
+ //\r
+ LIST_ENTRY MenuOption;\r
+ VOID *MenuRefreshHead;\r
+} BROWSER_CONTEXT;\r
+\r
+#define BROWSER_CONTEXT_FROM_LINK(a) CR (a, BROWSER_CONTEXT, Link, BROWSER_CONTEXT_SIGNATURE)\r
\r
extern EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
extern EFI_HII_STRING_PROTOCOL *mHiiString;\r
extern EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRouting;\r
\r
-extern BANNER_DATA *BannerData;\r
-extern EFI_HII_HANDLE FrontPageHandle;\r
+extern BANNER_DATA *gBannerData;\r
+extern EFI_HII_HANDLE gFrontPageHandle;\r
extern UINTN gClassOfVfr;\r
extern UINTN gFunctionKeySetting;\r
extern BOOLEAN gResetRequired;\r
extern BOOLEAN gNvUpdateRequired;\r
extern EFI_HII_HANDLE gHiiHandle;\r
-extern BOOLEAN gFirstIn;\r
extern UINT16 gDirection;\r
extern EFI_SCREEN_DESCRIPTOR gScreenDimensions;\r
-extern BOOLEAN gUpArrow;\r
-extern BOOLEAN gDownArrow;\r
+\r
+extern FORM_BROWSER_FORMSET *gOldFormSet;\r
\r
//\r
// Browser Global Strings\r
//\r
-extern CHAR16 *gFunctionOneString;\r
-extern CHAR16 *gFunctionTwoString;\r
extern CHAR16 *gFunctionNineString;\r
extern CHAR16 *gFunctionTenString;\r
extern CHAR16 *gEnterString;\r
extern CHAR16 *gEnterCommitString;\r
+extern CHAR16 *gEnterEscapeString;\r
extern CHAR16 *gEscapeString;\r
extern CHAR16 *gSaveFailed;\r
extern CHAR16 *gMoveHighlight;\r
extern CHAR16 *gPlusString;\r
extern CHAR16 *gMinusString;\r
extern CHAR16 *gAdjustNumber;\r
+extern CHAR16 *gSaveChanges;\r
+extern CHAR16 *gOptionMismatch;\r
+extern CHAR16 *gFormSuppress;\r
\r
extern CHAR16 gPromptBlockWidth;\r
extern CHAR16 gOptionBlockWidth;\r
extern EFI_GUID gZeroGuid;\r
extern EFI_GUID gTianoHiiIfrGuid;\r
\r
+#include "Ui.h"\r
//\r
// Global Procedure Defines\r
//\r
VOID\r
InitializeBrowserStrings (\r
VOID\r
- )\r
-;\r
+ );\r
\r
/**\r
Prints a unicode string to the default console,\r
UINTN\r
PrintString (\r
IN CHAR16 *String\r
- )\r
-;\r
+ );\r
\r
/**\r
Prints a chracter to the default console,\r
UINTN\r
PrintChar (\r
CHAR16 Character\r
- )\r
-;\r
+ );\r
\r
/**\r
Prints a formatted unicode string to the default console, at\r
IN UINTN Row,\r
IN CHAR16 *Fmt,\r
...\r
- )\r
-;\r
+ );\r
\r
/**\r
Prints a unicode string to the default console, at\r
IN UINTN Column,\r
IN UINTN Row,\r
IN CHAR16 *String\r
- )\r
-;\r
+ );\r
\r
/**\r
Prints a chracter to the default console, at\r
IN UINTN Column,\r
IN UINTN Row,\r
CHAR16 Character\r
- )\r
-;\r
+ );\r
\r
/**\r
Parse opcodes in the formset IFR binary.\r
EFI_STATUS\r
ParseOpCodes (\r
IN FORM_BROWSER_FORMSET *FormSet\r
- )\r
-;\r
+ );\r
\r
/**\r
Free resources allocated for a FormSet.\r
VOID\r
DestroyFormSet (\r
IN OUT FORM_BROWSER_FORMSET *FormSet\r
- )\r
-;\r
+ );\r
\r
/**\r
This function displays the page frame.\r
VOID\r
DisplayPageFrame (\r
VOID\r
- )\r
-;\r
+ );\r
\r
/**\r
Create a new string in HII Package List.\r
NewString (\r
IN CHAR16 *String,\r
IN EFI_HII_HANDLE HiiHandle\r
- )\r
-;\r
+ );\r
\r
/**\r
Delete a string from HII Package List.\r
DeleteString (\r
IN EFI_STRING_ID StringId,\r
IN EFI_HII_HANDLE HiiHandle\r
- )\r
-;\r
+ );\r
\r
/**\r
Get the string based on the StringId and HII Package List Handle.\r
GetToken (\r
IN EFI_STRING_ID Token,\r
IN EFI_HII_HANDLE HiiHandle\r
- )\r
-;\r
+ );\r
\r
/**\r
Draw a pop up windows based on the dimension, number of lines and\r
IN UINTN RequestedWidth,\r
IN UINTN NumberOfLines,\r
IN VA_LIST Marker\r
- )\r
-;\r
+ );\r
\r
/**\r
Routine used to abstract a generic dialog interface and return the selected key or string\r
@param StringBuffer The passed in pointer to the buffer which will\r
hold the typed in string if HotKey is FALSE\r
@param KeyValue The EFI_KEY value returned if HotKey is TRUE..\r
- @param String Pointer to the first string in the list\r
@param ... A series of (quantity == NumberOfLines) text\r
strings which will be used to construct the dialog\r
box\r
OUT CHAR16 *StringBuffer,\r
OUT EFI_INPUT_KEY *KeyValue,\r
...\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ Get Value for given Name from a NameValue Storage.\r
+\r
+ @param Storage The NameValue Storage.\r
+ @param Name The Name.\r
+ @param Value The retured Value.\r
+\r
+ @retval EFI_SUCCESS Value found for given Name.\r
+ @retval EFI_NOT_FOUND No such Name found in NameValue storage.\r
+\r
+**/\r
+EFI_STATUS\r
+GetValueByName (\r
+ IN FORMSET_STORAGE *Storage,\r
+ IN CHAR16 *Name,\r
+ IN OUT CHAR16 **Value\r
+ );\r
+\r
+/**\r
+ Set Value of given Name in a NameValue Storage.\r
+\r
+ @param Storage The NameValue Storage.\r
+ @param Name The Name.\r
+ @param Value The Value to set.\r
+\r
+ @retval EFI_SUCCESS Value found for given Name.\r
+ @retval EFI_NOT_FOUND No such Name found in NameValue storage.\r
+\r
+**/\r
+EFI_STATUS\r
+SetValueByName (\r
+ IN FORMSET_STORAGE *Storage,\r
+ IN CHAR16 *Name,\r
+ IN CHAR16 *Value\r
+ );\r
\r
/**\r
Get Question's current Value.\r
IN FORM_BROWSER_FORM *Form,\r
IN OUT FORM_BROWSER_STATEMENT *Question,\r
IN BOOLEAN Cached\r
- )\r
-;\r
+ );\r
\r
/**\r
Save Question Value to edit copy(cached) or Storage(uncached).\r
IN FORM_BROWSER_FORM *Form,\r
IN OUT FORM_BROWSER_STATEMENT *Question,\r
IN BOOLEAN Cached\r
- )\r
-;\r
+ );\r
\r
/**\r
Perform inconsistent check for a Form.\r
IN FORM_BROWSER_FORM *Form,\r
IN FORM_BROWSER_STATEMENT *Question,\r
IN UINTN Type\r
- )\r
-;\r
+ );\r
\r
/**\r
Submit a Form.\r
SubmitForm (\r
IN FORM_BROWSER_FORMSET *FormSet,\r
IN FORM_BROWSER_FORM *Form\r
- )\r
-;\r
+ );\r
\r
/**\r
Reset Question to its default value.\r
IN FORM_BROWSER_FORM *Form,\r
IN FORM_BROWSER_STATEMENT *Question,\r
IN UINT16 DefaultId\r
- )\r
-;\r
+ );\r
\r
/**\r
Get current setting of Questions.\r
EFI_STATUS\r
InitializeCurrentSetting (\r
IN OUT FORM_BROWSER_FORMSET *FormSet\r
- )\r
-;\r
+ );\r
\r
/**\r
Initialize the internal data structure of a FormSet.\r
IN EFI_HII_HANDLE Handle,\r
IN OUT EFI_GUID *FormSetGuid,\r
OUT FORM_BROWSER_FORMSET *FormSet\r
- )\r
-;\r
+ );\r
\r
/**\r
Reset Questions in a Form to their default value.\r
IN FORM_BROWSER_FORMSET *FormSet,\r
IN FORM_BROWSER_FORM *Form,\r
IN UINT16 DefaultId\r
- )\r
-;\r
+ );\r
\r
/**\r
Initialize Question's Edit copy from Storage.\r
\r
+ @param Selection Selection contains the information about \r
+ the Selection, form and formset to be displayed.\r
+ Selection action may be updated in retrieve callback.\r
@param FormSet FormSet data structure.\r
@param Form Form data structure.\r
\r
**/\r
EFI_STATUS\r
LoadFormConfig (\r
- IN FORM_BROWSER_FORMSET *FormSet,\r
- IN FORM_BROWSER_FORM *Form\r
- )\r
-;\r
+ IN OUT UI_MENU_SELECTION *Selection,\r
+ IN FORM_BROWSER_FORMSET *FormSet,\r
+ IN FORM_BROWSER_FORM *Form\r
+ );\r
+\r
+/**\r
+ Initialize Question's Edit copy from Storage for the whole Formset.\r
+\r
+ @param Selection Selection contains the information about \r
+ the Selection, form and formset to be displayed.\r
+ Selection action may be updated in retrieve callback.\r
+ @param FormSet FormSet data structure.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+LoadFormSetConfig (\r
+ IN OUT UI_MENU_SELECTION *Selection,\r
+ IN FORM_BROWSER_FORMSET *FormSet\r
+ );\r
\r
/**\r
Convert setting of Buffer Storage or NameValue Storage to <ConfigResp>.\r
StorageToConfigResp (\r
IN FORMSET_STORAGE *Storage,\r
IN CHAR16 **ConfigResp\r
- )\r
-;\r
+ );\r
\r
/**\r
Convert <ConfigResp> to settings in Buffer Storage or NameValue Storage.\r
ConfigRespToStorage (\r
IN FORMSET_STORAGE *Storage,\r
IN CHAR16 *ConfigResp\r
- )\r
-;\r
+ );\r
\r
/**\r
Fill storage's edit copy with settings requested from Configuration Driver.\r
LoadStorage (\r
IN FORM_BROWSER_FORMSET *FormSet,\r
IN FORMSET_STORAGE *Storage\r
- )\r
-;\r
+ );\r
\r
/**\r
Fetch the Ifr binary data of a FormSet.\r
IN OUT EFI_GUID *FormSetGuid,\r
OUT UINTN *BinaryLength,\r
OUT UINT8 **BinaryData\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ Save globals used by previous call to SendForm(). SendForm() may be called from \r
+ HiiConfigAccess.Callback(), this will cause SendForm() be reentried.\r
+ So, save globals of previous call to SendForm() and restore them upon exit.\r
+\r
+**/\r
+VOID\r
+SaveBrowserContext (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Restore globals used by previous call to SendForm().\r
+\r
+**/\r
+VOID\r
+RestoreBrowserContext (\r
+ VOID\r
+ );\r
\r
/**\r
This is the routine which an external caller uses to direct the browser\r
ScreenDimenions - This allows the browser to be called so that it occupies a\r
portion of the physical screen instead of dynamically determining the screen dimensions.\r
ActionRequest - Points to the action recommended by the form.\r
- @param ScreenDimensions Points to recommended form dimensions, including any non-content area, in \r
+ @param ScreenDimensions Points to recommended form dimensions, including any non-content area, in\r
characters.\r
@param ActionRequest Points to the action recommended by the form.\r
\r
IN UINT16 FormId, OPTIONAL\r
IN CONST EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest OPTIONAL\r
- )\r
-;\r
+ );\r
\r
/**\r
This function is called by a callback handler to retrieve uncommitted state\r
IN BOOLEAN RetrieveData,\r
IN CONST EFI_GUID *VariableGuid, OPTIONAL\r
IN CONST CHAR16 *VariableName OPTIONAL\r
- )\r
-;\r
+ );\r
\r
#endif\r