]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1) Fix a bug of DefaultVarStoreId of the Form Set should be used when Framework IfrSu...
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 1 Dec 2008 07:16:55 +0000 (07:16 +0000)
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Mon, 1 Dec 2008 07:16:55 +0000 (07:16 +0000)
2) Remove the unnecessary OpcodeCreation.h
3) Update the doxygen function header.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6787 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/Forms.c
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/FrameworkHiiToUefiHiiThunk.inf
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/Keyboard.c
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/OpcodeCreation.c
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/OpcodeCreation.h [deleted file]
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/ThunkIfrSupportLib.h [deleted file]
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/UefiIfrDefault.c
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/UefiIfrParser.h
EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/Utility.c

index 0078082b7d09fd42e973220c201ebf01e436b898..efc205e919c9ec7d94bdf097b08ebc8d8cc1c559 100644 (file)
@@ -15,7 +15,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
 #include "HiiDatabase.h"\r
 #include "UefiIfrDefault.h"\r
-#include "OpcodeCreation.h"\r
 \r
 //\r
 // This structure is only intended to be used in this file.\r
index fcdcabfc562bf4e00b9454d749da4f71018a0536..b79a98459e3e80abd5a9a1d0ea5932e0169b2262 100644 (file)
@@ -42,7 +42,6 @@
   ConfigAccess.c\r
   ConfigAccess.h\r
   OpcodeCreation.c\r
-  OpcodeCreation.h\r
   UefiIfrParser.c\r
   UefiIfrParser.h\r
   UefiIfrParserExpression.c\r
index 6b7810eb9236ef16517f17fa5c480b886ec0795c..b2f35eb69a2f0e577b2d8432f0281f5f6f13f4ff 100644 (file)
@@ -422,6 +422,25 @@ NewOrAddPackNotify (
   IN EFI_HII_DATABASE_NOTIFY_TYPE       NotifyType\r
   );\r
 \r
+/**\r
+  Create a EFI_HII_UPDATE_DATA structure used to call IfrLibUpdateForm.\r
+\r
+  @param ThunkContext   The HII Thunk Context.\r
+  @param FwUpdateData   The Framework Update Data.\r
+  @param UefiUpdateData The UEFI Update Data.\r
+\r
+  @retval EFI_SUCCESS       The UEFI Update Data is created successfully.\r
+  @retval EFI_UNSUPPORTED   There is unsupported opcode in FwUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCES There is not enough resource.\r
+**/\r
+EFI_STATUS\r
+FwUpdateDataToUefiUpdateData (\r
+  IN       HII_THUNK_CONTEXT                *ThunkContext,\r
+  IN CONST FRAMEWORK_EFI_HII_UPDATE_DATA    *FwUpdateData,\r
+  OUT      EFI_HII_UPDATE_DATA              **UefiUpdateData\r
+  )\r
+;\r
+\r
 #include "Utility.h"\r
 #include "ConfigAccess.h"\r
 \r
index 087cd7aedbf6e5a52cf2d458def06f5a1a52946c..32e4f93345e2b501ed077c8ad87baab926a2a4df 100644 (file)
@@ -22,7 +22,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \r
   @param This             A pointer to the EFI_HII_PROTOCOL instance. \r
   @param DescriptorCount  A pointer to the number of Descriptor entries being described in the keyboard layout being retrieved.\r
-  @param Descriptor       A pointer to a buffer containing an array of EFI_KEY_DESCRIPTOR entries. Each entry will reflect the definition of a specific physical key. Type EFI_KEY_DESCRIPTOR is defined in "Related Definitions" below.\r
+  @param Descriptor       A pointer to a buffer containing an array of EFI_KEY_DESCRIPTOR entries. Each entry will reflect the \r
+                          definition of a specific physical key. Type EFI_KEY_DESCRIPTOR is defined in "Related Definitions" below.\r
 \r
   @retval  EFI_SUCCESS   The keyboard layout was retrieved successfully.\r
  \r
index b010885de304ef3a5cf6bb07b8741ae57c368372..5b6fb7655aab6f35ba98619b66318e1395c97f50 100644 (file)
@@ -12,8 +12,8 @@ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
 **/\r
+\r
 #include "HiiDatabase.h"\r
-#include "OpcodeCreation.h"\r
 #include "UefiIfrDefault.h"\r
 \r
 EFI_GUID  mTianoExtendedOpcodeGuid = EFI_IFR_TIANO_GUID;\r
@@ -28,11 +28,16 @@ EFI_IFR_GUID_OPTIONKEY mOptionKeyTemplate = {
    0\r
 };\r
 \r
+/**\r
+  The dynamic creation of these opcodes is supported in Framework HII modules.\r
+  Therefore, Framework HII Thunk module only map these opcode between Framework\r
+  HII's definitions to UEFI HII's.\r
+**/\r
 typedef struct { \r
   UINT8 FrameworkIfrOp;\r
   UINT8 UefiIfrOp;\r
 } IFR_OPCODE_MAP;\r
-\r
+  \r
 IFR_OPCODE_MAP mQuestionOpcodeMap [] = {\r
   { FRAMEWORK_EFI_IFR_ONE_OF_OP,        EFI_IFR_ONE_OF_OP},\r
   { FRAMEWORK_EFI_IFR_CHECKBOX_OP,      EFI_IFR_CHECKBOX_OP},\r
@@ -41,6 +46,15 @@ IFR_OPCODE_MAP mQuestionOpcodeMap [] = {
   { FRAMEWORK_EFI_IFR_ORDERED_LIST_OP,  EFI_IFR_ORDERED_LIST_OP}\r
 };\r
 \r
+/**\r
+  Translate a Framework Question Opcode to UEFI Question Opcode.\r
+\r
+  @param FwOp     Framework Opcode.\r
+  @param UefiOp   UEFI Opcode.\r
+\r
+  @retval     EFI_SUCCESS     The UEFI opcode is found and returned.\r
+  @retval     EFI_NOT_FOUND   The UEFI opcode is not found.\r
+**/\r
 EFI_STATUS\r
 QuestionOpFwToUefi (\r
   IN            UINT8   FwOp,\r
@@ -60,11 +74,18 @@ QuestionOpFwToUefi (
   return EFI_NOT_FOUND;\r
 }\r
 \r
+/**\r
+  Translate a Framework Question Opcode to UEFI Question Opcode.\r
+\r
+  @param FwOp     Framework Opcode.\r
+  @param UefiOp   UEFI Opcode.\r
 \r
+  @retval     EFI_SUCCESS     The UEFI opcode is found and returned.\r
+  @retval     EFI_NOT_FOUND   The UEFI opcode is not found.\r
+**/\r
 EFI_STATUS\r
 FwQIdToUefiQId (\r
   IN  CONST FORM_BROWSER_FORMSET *FormSet,\r
-  IN  UINT16                     VarStoreId,\r
   IN  UINT8                      FwOpCode,\r
   IN  UINT16                     FwQId,\r
   OUT UINT16                     *UefiQId\r
@@ -74,10 +95,13 @@ FwQIdToUefiQId (
   LIST_ENTRY             *StatementList;\r
   FORM_BROWSER_FORM      *Form;\r
   FORM_BROWSER_STATEMENT *Statement;\r
+  FORM_BROWSER_STATEMENT *StatementFound;\r
   EFI_STATUS             Status;\r
   UINT8                  UefiOp;\r
+  \r
 \r
   *UefiQId = 0;\r
+  StatementFound = NULL;\r
 \r
   FormList = GetFirstNode (&FormSet->FormListHead);\r
 \r
@@ -93,19 +117,24 @@ FwQIdToUefiQId (
           Status = QuestionOpFwToUefi (FwOpCode, &UefiOp);\r
           ASSERT_EFI_ERROR (Status);\r
 \r
-          if (UefiOp == Statement->Operand) {\r
+          if ((UefiOp == Statement->Operand) && (FormSet->DefaultVarStoreId == Statement->VarStoreId)) {\r
             //\r
-            // If ASSERT here, the Framework VFR file has two IFR Question with the Same Type refering to the \r
-            // same field in NvMap. This is ambigurity, we don't handle it for now.\r
+            // If ASSERT here, the Framework VFR file has two Questions with all three attibutes the same:\r
+            // 1) Same Question Type, \r
+            // 2) Same Variable Storage\r
+            // 3) Refering to the Same offset in Variable Map (NvMap). \r
+            // This is ambigurity as FwQIdToUefiQId () can't find which UEFI Question \r
+            // ID to return. \r
             //\r
+            // One possible solution is to remove the one of the duplicated questions in this Form Set.\r
             //\r
-            // UEFI Question ID is unique in a FormSet.\r
-            //\r
-            ASSERT (VarStoreId == Statement->VarStoreId);\r
-            *UefiQId = Statement->QuestionId;\r
+            ASSERT (StatementFound == NULL);\r
+            StatementFound= Statement;\r
 \r
-            return EFI_SUCCESS;\r
-            \r
+            //\r
+            // Continue the search to check if the Form Set contains more than one questins that has the 3 attributes\r
+            // with same value.\r
+            //\r
           }\r
         }\r
       }\r
@@ -115,6 +144,11 @@ FwQIdToUefiQId (
 \r
     FormList = GetNextNode (&FormSet->FormListHead, FormList);\r
   }\r
+\r
+  if (StatementFound != NULL) {\r
+    *UefiQId = StatementFound->QuestionId;\r
+    return EFI_SUCCESS;\r
+  }\r
   \r
   return EFI_NOT_FOUND;\r
 }\r
@@ -122,31 +156,56 @@ FwQIdToUefiQId (
 \r
 \r
 #define LOCAL_UPDATE_DATA_BUFFER_INCREMENTAL   0x1000\r
+/**\r
+  Append the newly created OpCode buffer to EFI_HII_UPDATE_DATA buffer.\r
+  Increase the Data buffer in EFI_HII_UPDATE_DATA if the EFI_HII_UPDATE_DATA \r
+  buffer's Data Buffer does not have space left for the newly created\r
+  OpCode.\r
+\r
+  @param OpCodeBuf      The newly created OpCode Buffer to be appended to \r
+                        EFI_HII_UPDATE_DATA buffer.\r
+  @param OpCodeBufSize  The size of OpCodeBuf.\r
+  @param UefiUpdateData The EFI_HII_UPDATE_DATA to be appended.\r
+\r
+  @retval EFI_SUCCESS   The OpCode buffer is appended to EFI_HII_UPDATE_DATA successfull.\r
+  @retval EFI_OUT_OF_RESOURCES There is not enough memory.\r
+**/\r
 EFI_STATUS\r
 AppendToUpdateBuffer (\r
   IN CONST  UINT8                *OpCodeBuf,\r
-  IN        UINTN                BufSize,\r
-  OUT       EFI_HII_UPDATE_DATA  *UefiData\r
+  IN        UINTN                OpCodeBufSize,\r
+  IN OUT    EFI_HII_UPDATE_DATA  *UefiUpdateData\r
   )\r
 {\r
   UINT8 * NewBuff;\r
   \r
-  if (UefiData->Offset + BufSize > UefiData->BufferSize) {\r
-    NewBuff = AllocateCopyPool (UefiData->BufferSize + LOCAL_UPDATE_DATA_BUFFER_INCREMENTAL, UefiData->Data);\r
+  if (UefiUpdateData->Offset + OpCodeBufSize > UefiUpdateData->BufferSize) {\r
+    NewBuff = AllocateCopyPool (UefiUpdateData->BufferSize + LOCAL_UPDATE_DATA_BUFFER_INCREMENTAL, UefiUpdateData->Data);\r
     if (NewBuff == NULL) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
-    UefiData->BufferSize += LOCAL_UPDATE_DATA_BUFFER_INCREMENTAL;\r
-    FreePool (UefiData->Data);\r
-    UefiData->Data = NewBuff;\r
+    UefiUpdateData->BufferSize += LOCAL_UPDATE_DATA_BUFFER_INCREMENTAL;\r
+    FreePool (UefiUpdateData->Data);\r
+    UefiUpdateData->Data = NewBuff;\r
   }\r
   \r
-  CopyMem (UefiData->Data + UefiData->Offset, OpCodeBuf, BufSize);\r
-  UefiData->Offset += (UINT32) BufSize;\r
+  CopyMem (UefiUpdateData->Data + UefiUpdateData->Offset, OpCodeBuf, OpCodeBufSize);\r
+  UefiUpdateData->Offset += (UINT32) OpCodeBufSize;\r
 \r
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Assign a Question ID.\r
+\r
+  If FwQuestionId is 0, then assign a new question ID. The new question ID\r
+  is MaxQuestionId incremented by 1. The MaxQuestionId of FormSet is also\r
+  incremented by 1.\r
+\r
+  If FwQuestionId is not 0, then it is used as the Framework Question ID.\r
+\r
+  @return The Framework Question ID.\r
+**/\r
 EFI_QUESTION_ID\r
 AssignQuestionId (\r
   IN  UINT16                      FwQuestionId,\r
@@ -161,9 +220,18 @@ AssignQuestionId (
   }\r
 }\r
 \r
+/**\r
+  Create UEFI HII "End Of" Opcode and append it to UefiUpdateData buffer.\r
+\r
+  @param UefiUpdateData     The newly created UEFI HII opcode is appended to UefiUpdateData.\r
+\r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 UCreateEndOfOpcode (\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN OUT      EFI_HII_UPDATE_DATA         *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_END UOpcode;\r
@@ -173,13 +241,23 @@ UCreateEndOfOpcode (
   UOpcode.Header.OpCode = EFI_IFR_END_OP;\r
   UOpcode.Header.Length = sizeof (UOpcode);\r
 \r
-  return AppendToUpdateBuffer ((UINT8 *)&UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *)&UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
+/**\r
+  Create UEFI HII Subtitle Opcode from a Framework HII Subtitle Opcode.\r
+\r
+  @param FwOpcode         The input Framework Opcode.\r
+  @param UefiUpdateData   The newly created UEFI HII opcode is appended to UefiUpdateData.\r
+\r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateSubtitleOpCode (\r
-  IN CONST FRAMEWORK_EFI_IFR_SUBTITLE  *FwSubTitle,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN CONST FRAMEWORK_EFI_IFR_SUBTITLE  *FwOpcode,\r
+  IN OUT   EFI_HII_UPDATE_DATA         *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_SUBTITLE UOpcode;\r
@@ -189,32 +267,42 @@ F2UCreateSubtitleOpCode (
   UOpcode.Header.OpCode = EFI_IFR_SUBTITLE_OP;\r
   UOpcode.Header.Length = sizeof (EFI_IFR_SUBTITLE);\r
 \r
-  UOpcode.Statement.Prompt = FwSubTitle->SubTitle;\r
+  UOpcode.Statement.Prompt = FwOpcode->SubTitle;\r
 \r
-  return AppendToUpdateBuffer ((UINT8 *)&UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *)&UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
+/**\r
+  Create UEFI HII Text Opcode from a Framework HII Text Opcode.\r
+\r
+  @param FwOpcode        The input Framework Opcode.\r
+  @param UefiUpdateData  The newly created UEFI HII opcode is appended to UefiUpdateData.\r
+\r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateTextOpCode (\r
-  IN CONST FRAMEWORK_EFI_IFR_TEXT      *FwText,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN CONST FRAMEWORK_EFI_IFR_TEXT      *FwOpcode,\r
+  IN OUT   EFI_HII_UPDATE_DATA         *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_TEXT      UTextOpCode;\r
   EFI_IFR_ACTION    UActionOpCode;\r
 \r
-  if ((FwText->Flags & FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE) == 0) {\r
+  if ((FwOpcode->Flags & FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE) == 0) {\r
     ZeroMem (&UTextOpCode, sizeof(UTextOpCode));\r
     \r
     UTextOpCode.Header.OpCode = EFI_IFR_TEXT_OP;\r
     UTextOpCode.Header.Length = sizeof (EFI_IFR_TEXT);\r
 \r
-    UTextOpCode.Statement.Help   = FwText->Help;\r
+    UTextOpCode.Statement.Help   = FwOpcode->Help;\r
 \r
-    UTextOpCode.Statement.Prompt = FwText->Text;\r
-    UTextOpCode.TextTwo          = FwText->TextTwo;\r
+    UTextOpCode.Statement.Prompt = FwOpcode->Text;\r
+    UTextOpCode.TextTwo          = FwOpcode->TextTwo;\r
     \r
-    return AppendToUpdateBuffer ((UINT8 *) &UTextOpCode, sizeof(UTextOpCode), UefiData);\r
+    return AppendToUpdateBuffer ((UINT8 *) &UTextOpCode, sizeof(UTextOpCode), UefiUpdateData);\r
   } else {\r
     //\r
     // Iteractive Text Opcode is EFI_IFR_ACTION\r
@@ -225,31 +313,30 @@ F2UCreateTextOpCode (
     UActionOpCode.Header.OpCode = EFI_IFR_ACTION_OP;\r
     UActionOpCode.Header.Length = sizeof (EFI_IFR_ACTION);\r
 \r
-    UActionOpCode.Question.Header.Prompt = FwText->Text;\r
-    UActionOpCode.Question.Header.Help  = FwText->Help;\r
+    UActionOpCode.Question.Header.Prompt = FwOpcode->Text;\r
+    UActionOpCode.Question.Header.Help  = FwOpcode->Help;\r
     UActionOpCode.Question.Flags      = EFI_IFR_FLAG_CALLBACK;\r
-    UActionOpCode.Question.QuestionId = FwText->Key;\r
+    UActionOpCode.Question.QuestionId = FwOpcode->Key;\r
 \r
-    return AppendToUpdateBuffer ((UINT8 *) &UActionOpCode, sizeof(UActionOpCode), UefiData);\r
+    return AppendToUpdateBuffer ((UINT8 *) &UActionOpCode, sizeof(UActionOpCode), UefiUpdateData);\r
     \r
   }\r
 }\r
 \r
-/*\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  UINT16            FormId;\r
-  STRING_REF        Prompt;\r
-  STRING_REF        Help;   // The string Token for the context-help\r
-  UINT8             Flags;  // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;    // Value to be passed to caller to identify this particular op-code\r
-} FRAMEWORK_EFI_IFR_REF;\r
-\r
-*/\r
+/**\r
+  Create UEFI HII Reference Opcode from a Framework HII Reference Opcode.\r
+\r
+  @param FwOpcode           The input Framework Opcode.\r
+  @param UefiUpdateData     The newly created UEFI HII opcode is appended to UefiUpdateData.\r
+\r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
-F2UCreateGotoOpCode (\r
+F2UCreateReferenceOpCode (\r
   IN CONST FRAMEWORK_EFI_IFR_REF       *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN OUT    EFI_HII_UPDATE_DATA        *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_REF UOpcode;\r
@@ -272,44 +359,26 @@ F2UCreateGotoOpCode (
   UOpcode.Question.Flags  = (UINT8) (FwOpcode->Flags & (FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE | FRAMEWORK_EFI_IFR_FLAG_RESET_REQUIRED));\r
   \r
 \r
-  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
 \r
-/*\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        Option;     // The string token describing the option\r
-  UINT16            Value;      // The value associated with this option that is stored in the NVRAM if chosen\r
-  UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely above\r
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code\r
-} FRAMEWORK_EFI_IFR_ONE_OF_OPTION;\r
-\r
-typedef union {\r
-  UINT8           u8;\r
-  UINT16          u16;\r
-  UINT32          u32;\r
-  UINT64          u64;\r
-  BOOLEAN         b;\r
-  EFI_HII_TIME    time;\r
-  EFI_HII_DATE    date;\r
-  EFI_STRING_ID   string;\r
-} EFI_IFR_TYPE_VALUE;\r
-\r
-typedef struct _EFI_IFR_ONE_OF_OPTION {\r
-  EFI_IFR_OP_HEADER        Header;\r
-  EFI_STRING_ID            Option;\r
-  UINT8                    Flags;\r
-  UINT8                    Type;\r
-  EFI_IFR_TYPE_VALUE       Value;\r
-} EFI_IFR_ONE_OF_OPTION;\r
-\r
-*/\r
+/**\r
+  Create UEFI HII "One Of Option" Opcode from a Framework HII "One Of Option" Opcode.\r
+\r
+  @param FwOpcode        The input Framework Opcode.\r
+  @param Width           The size of the One Of Option. 1 bytes or 2 bytes.\r
+  @param UefiUpdateData  The newly created UEFI HII opcode is appended to UefiUpdateData.\r
+\r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateOneOfOptionOpCode (\r
   IN CONST FRAMEWORK_EFI_IFR_ONE_OF_OPTION    *FwOpcode,\r
   IN       UINTN                              Width,\r
-  OUT      EFI_HII_UPDATE_DATA                *UefiData\r
+  IN OUT   EFI_HII_UPDATE_DATA                *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_ONE_OF_OPTION UOpcode;\r
@@ -323,11 +392,10 @@ F2UCreateOneOfOptionOpCode (
   CopyMem (&UOpcode.Value.u8, &FwOpcode->Value, Width);\r
 \r
   //\r
-  \r
-  // #define FRAMEWORK_EFI_IFR_FLAG_DEFAULT                    0x01\r
-  // #define FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING        0x02\r
-  // #define EFI_IFR_OPTION_DEFAULT 0x10\r
-  // #define EFI_IFR_OPTION_DEFAULT_MFG 0x20\r
+  // #define FRAMEWORK_EFI_IFR_FLAG_DEFAULT           0x01\r
+  // #define FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING     0x02\r
+  // #define EFI_IFR_OPTION_DEFAULT                   0x10\r
+  // #define EFI_IFR_OPTION_DEFAULT_MFG               0x20\r
   //\r
   UOpcode.Flags = (UINT8) (UOpcode.Flags  | (FwOpcode->Flags & (FRAMEWORK_EFI_IFR_FLAG_DEFAULT | FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING)) << 4);\r
 \r
@@ -345,15 +413,29 @@ F2UCreateOneOfOptionOpCode (
       return EFI_UNSUPPORTED;\r
   }\r
 \r
-  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
+/**\r
+  Create a GUID Opcode EFI_IFR_GUID_OPTIONKEY to map the Framework One Of Option callback key\r
+  to a UEFI Question ID. This information is used to invoke the Framework HII Browser Callback\r
+  function. The opcode is appened to UefiUpdateData.\r
+\r
+  @param    QuestionId      The UEFI Question ID.\r
+  @param    OptionValue     The value of the "One Of Option".\r
+  @param    KeyValue        The Framework "One Of Option" callback key.\r
+  @param    UefiDat         The UEFI Update Data buffer.\r
+\r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+**/\r
+\r
 EFI_STATUS\r
 CreateGuidOptionKeyOpCode (\r
   IN EFI_QUESTION_ID                   QuestionId,\r
   IN UINT16                            OptionValue,\r
   IN EFI_QUESTION_ID                   KeyValue,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN OUT    EFI_HII_UPDATE_DATA        *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_GUID_OPTIONKEY              UOpcode;\r
@@ -364,70 +446,30 @@ CreateGuidOptionKeyOpCode (
   CopyMem (&UOpcode.OptionValue, &OptionValue, sizeof (OptionValue)); \r
   UOpcode.KeyValue = KeyValue;\r
   \r
-  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
-/*\r
-typedef struct _EFI_IFR_QUESTION_HEADER {\r
-  EFI_IFR_STATEMENT_HEADER Header;\r
-  EFI_QUESTION_ID          QuestionId;\r
-  EFI_VARSTORE_ID          VarStoreId;\r
-  union {\r
-    EFI_STRING_ID          VarName;\r
-    UINT16                 VarOffset;\r
-  }                        VarStoreInfo;\r
-  UINT8                    Flags;\r
-} EFI_IFR_QUESTION_HEADER;\r
-\r
-typedef union {\r
-  struct {\r
-    UINT8 MinValue;\r
-    UINT8 MaxValue;\r
-    UINT8 Step;\r
-  } u8;\r
-  struct {\r
-    UINT16 MinValue;\r
-    UINT16 MaxValue;\r
-    UINT16 Step;\r
-  } u16;\r
-  struct {\r
-    UINT32 MinValue;\r
-    UINT32 MaxValue;\r
-    UINT32 Step;\r
-  } u32;\r
-  struct {\r
-    UINT64 MinValue;\r
-    UINT64 MaxValue;\r
-    UINT64 Step;\r
-  } u64;\r
-} MINMAXSTEP_DATA;\r
-\r
-typedef struct _EFI_IFR_ONE_OF {\r
-  EFI_IFR_OP_HEADER        Header;\r
-  EFI_IFR_QUESTION_HEADER  Question;\r
-  UINT8                    Flags;\r
-  MINMAXSTEP_DATA          data;\r
-} EFI_IFR_ONE_OF;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;      // The Size of the Data being saved\r
-  STRING_REF        Prompt;     // The String Token for the Prompt\r
-  STRING_REF        Help;       // The string Token for the context-help\r
-} FRAMEWORK_EFI_IFR_ONE_OF;\r
-\r
-\r
-*/\r
-\r
+/**\r
+  Create UEFI HII "One Of" Opcode from a Framework HII "One Of" Opcode.\r
+\r
+  @param ThunkContext The HII Thunk Context.\r
+  @param FwOpcode     The input Framework Opcode.\r
+  @param UefiUpdateData     The newly created UEFI HII opcode is appended to UefiUpdateData.\r
+  @param NextFwOpcode Returns the position of the next Framework Opcode after FRAMEWORK_EFI_IFR_END_ONE_OF_OP of\r
+                      the "One Of Option".\r
+  @param OpcodeCount  The number of Opcode for the complete Framework "One Of" Opcode.\r
+                      \r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateOneOfOpCode (\r
   IN       HII_THUNK_CONTEXT           *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
   IN CONST FRAMEWORK_EFI_IFR_ONE_OF    *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData,\r
+  IN OUT   EFI_HII_UPDATE_DATA         *UefiUpdateData,\r
   OUT      FRAMEWORK_EFI_IFR_OP_HEADER **NextFwOpcode,\r
-  OUT      UINTN                       *DataCount\r
+  OUT      UINTN                       *OpcodeCount\r
   )\r
 {\r
   EFI_STATUS                          Status;\r
@@ -436,10 +478,10 @@ F2UCreateOneOfOpCode (
   FRAMEWORK_EFI_IFR_ONE_OF_OPTION     *FwOneOfOp;\r
 \r
   ASSERT (NextFwOpcode != NULL);\r
-  ASSERT (DataCount != NULL);\r
+  ASSERT (OpcodeCount != NULL);\r
 \r
   ZeroMem (&UOpcode, sizeof(UOpcode));\r
-  *DataCount = 0;\r
+  *OpcodeCount = 0;\r
 \r
   UOpcode.Header.Length = sizeof(UOpcode);\r
   UOpcode.Header.OpCode = EFI_IFR_ONE_OF_OP;\r
@@ -447,7 +489,7 @@ F2UCreateOneOfOpCode (
 \r
   UOpcode.Question.Header.Prompt = FwOpcode->Prompt;\r
   UOpcode.Question.Header.Help = FwOpcode->Help;\r
-  UOpcode.Question.VarStoreId  = VarStoreId;\r
+  UOpcode.Question.VarStoreId  = ThunkContext->FormSet->DefaultVarStoreId;\r
   UOpcode.Question.VarStoreInfo.VarOffset = FwOpcode->QuestionId;\r
   \r
   //\r
@@ -462,7 +504,7 @@ F2UCreateOneOfOpCode (
       UOpcode.Question.Flags |= EFI_IFR_FLAG_CALLBACK;\r
       \r
       if (UOpcode.Question.QuestionId == 0) {\r
-        Status = FwQIdToUefiQId (ThunkContext->FormSet, VarStoreId, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+        Status = FwQIdToUefiQId (ThunkContext->FormSet, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
         if (EFI_ERROR (Status)) {\r
           UOpcode.Question.QuestionId = AssignQuestionId (FwOneOfOp->Key, ThunkContext->FormSet);\r
         }\r
@@ -482,17 +524,17 @@ F2UCreateOneOfOpCode (
     //\r
     // Assign QuestionId if still not assigned.\r
     //\r
-    Status = FwQIdToUefiQId (ThunkContext->FormSet, VarStoreId, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+    Status = FwQIdToUefiQId (ThunkContext->FormSet, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
     if (EFI_ERROR (Status)) {\r
       UOpcode.Question.QuestionId = AssignQuestionId (FwOpcode->QuestionId, ThunkContext->FormSet);\r
     }\r
   }\r
   \r
-  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof (UOpcode), UefiData);\r
+  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof (UOpcode), UefiUpdateData);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
-  *DataCount += 1;\r
+  *OpcodeCount += 1;\r
 \r
   //\r
   // Go over again the Framework IFR binary to build the UEFI One Of Option opcodes.\r
@@ -502,64 +544,49 @@ F2UCreateOneOfOpCode (
 \r
     FwOneOfOp = (FRAMEWORK_EFI_IFR_ONE_OF_OPTION *) FwOpHeader;\r
       \r
-    Status = F2UCreateOneOfOptionOpCode ((FRAMEWORK_EFI_IFR_ONE_OF_OPTION *) FwOpHeader, FwOpcode->Width, UefiData);\r
+    Status = F2UCreateOneOfOptionOpCode ((FRAMEWORK_EFI_IFR_ONE_OF_OPTION *) FwOpHeader, FwOpcode->Width, UefiUpdateData);\r
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
 \r
-    Status = CreateGuidOptionKeyOpCode (UOpcode.Question.QuestionId, FwOneOfOp->Value, FwOneOfOp->Key, UefiData);\r
+    Status = CreateGuidOptionKeyOpCode (UOpcode.Question.QuestionId, FwOneOfOp->Value, FwOneOfOp->Key, UefiUpdateData);\r
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
     FwOpHeader = (FRAMEWORK_EFI_IFR_OP_HEADER *) ((UINT8 *) FwOpHeader + FwOpHeader->Length);\r
-    *DataCount += 1;\r
+    *OpcodeCount += 1;\r
   }\r
 \r
-  Status = UCreateEndOfOpcode (UefiData);\r
+  Status = UCreateEndOfOpcode (UefiUpdateData);\r
   if (!EFI_ERROR (Status)) {\r
     *NextFwOpcode = (FRAMEWORK_EFI_IFR_OP_HEADER *)((UINT8 *) FwOpHeader + FwOpHeader->Length);\r
-    *DataCount += 1;\r
+    *OpcodeCount += 1;\r
   }\r
 \r
   return Status;\r
 }\r
 \r
-/*\r
-typedef struct _EFI_IFR_QUESTION_HEADER {\r
-  EFI_IFR_STATEMENT_HEADER Header;\r
-  EFI_QUESTION_ID          QuestionId;\r
-  EFI_VARSTORE_ID          VarStoreId;\r
-  union {\r
-    EFI_STRING_ID          VarName;\r
-    UINT16                 VarOffset;\r
-  }                        VarStoreInfo;\r
-  UINT8                    Flags;\r
-} EFI_IFR_QUESTION_HEADER;\r
-\r
-typedef struct _EFI_IFR_ORDERED_LIST {\r
-  EFI_IFR_OP_HEADER        Header;\r
-  EFI_IFR_QUESTION_HEADER  Question;\r
-  UINT8                    MaxContainers;\r
-  UINT8                    Flags;\r
-} EFI_IFR_ORDERED_LIST;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The offset in NV for storage of the data\r
-  UINT8             MaxEntries; // The maximum number of options in the ordered list (=size of NVStore)\r
-  STRING_REF        Prompt;     // The string token for the prompt\r
-  STRING_REF        Help;       // The string token for the context-help\r
-} FRAMEWORK_EFI_IFR_ORDERED_LIST;\r
-\r
-*/\r
+/**\r
+  Create UEFI HII "Ordered List" Opcode from a Framework HII "Ordered List" Opcode.\r
+\r
+  @param ThunkContext The HII Thunk Context.\r
+  @param FwOpcode     The input Framework Opcode.\r
+  @param UefiUpdateData The newly created UEFI HII opcode is appended to UefiUpdateData.\r
+  @param NextFwOpcode Returns the position of the next Framework Opcode after FRAMEWORK_EFI_IFR_END_ONE_OF_OP of\r
+                      the "Ordered List".\r
+  @param OpcodeCount  The number of Opcode for the complete Framework "Ordered List" Opcode.\r
+                      \r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateOrderedListOpCode (\r
-  IN       HII_THUNK_CONTEXT               *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
+  IN       HII_THUNK_CONTEXT              *ThunkContext,\r
   IN CONST FRAMEWORK_EFI_IFR_ORDERED_LIST *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData,\r
-  OUT      FRAMEWORK_EFI_IFR_OP_HEADER **NextFwOpcode,\r
-  OUT      UINTN                       *DataCount\r
+  IN OUT    EFI_HII_UPDATE_DATA           *UefiUpdateData,\r
+  OUT      FRAMEWORK_EFI_IFR_OP_HEADER    **NextFwOpcode,\r
+  OUT      UINTN                          *OpcodeCount\r
   )\r
 {\r
   EFI_IFR_ORDERED_LIST              UOpcode;\r
@@ -568,7 +595,7 @@ F2UCreateOrderedListOpCode (
   FRAMEWORK_EFI_IFR_ONE_OF_OPTION     *FwOneOfOp;\r
 \r
   ZeroMem (&UOpcode, sizeof(UOpcode));\r
-  *DataCount = 0;\r
+  *OpcodeCount = 0;\r
 \r
   UOpcode.Header.Length = sizeof(UOpcode);\r
   UOpcode.Header.OpCode = EFI_IFR_ORDERED_LIST_OP;\r
@@ -576,7 +603,7 @@ F2UCreateOrderedListOpCode (
 \r
   UOpcode.Question.Header.Prompt = FwOpcode->Prompt;\r
   UOpcode.Question.Header.Help = FwOpcode->Help;\r
-  UOpcode.Question.VarStoreId  = VarStoreId;\r
+  UOpcode.Question.VarStoreId  = ThunkContext->FormSet->DefaultVarStoreId;\r
   UOpcode.Question.VarStoreInfo.VarOffset = FwOpcode->QuestionId;\r
 \r
   UOpcode.MaxContainers = FwOpcode->MaxEntries;\r
@@ -593,7 +620,7 @@ F2UCreateOrderedListOpCode (
       UOpcode.Question.Flags |= EFI_IFR_FLAG_CALLBACK;\r
       \r
       if (UOpcode.Question.QuestionId == 0) {\r
-        Status = FwQIdToUefiQId (ThunkContext->FormSet, VarStoreId, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+        Status = FwQIdToUefiQId (ThunkContext->FormSet, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
         if (EFI_ERROR (Status)) {\r
           UOpcode.Question.QuestionId = AssignQuestionId (FwOneOfOp->Key, ThunkContext->FormSet);\r
         }\r
@@ -609,80 +636,56 @@ F2UCreateOrderedListOpCode (
   }\r
 \r
   if (UOpcode.Question.QuestionId == 0) {\r
-    Status = FwQIdToUefiQId (ThunkContext->FormSet, VarStoreId, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+    Status = FwQIdToUefiQId (ThunkContext->FormSet, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
     if (EFI_ERROR (Status)) {\r
       UOpcode.Question.QuestionId = AssignQuestionId (FwOpcode->QuestionId, ThunkContext->FormSet);\r
     }\r
   }\r
  \r
-  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
-  *DataCount += 1;\r
+  *OpcodeCount += 1;\r
 \r
   FwOpHeader = (FRAMEWORK_EFI_IFR_OP_HEADER *) ((UINT8 *) FwOpcode + FwOpcode->Header.Length);\r
   while (FwOpHeader->OpCode != FRAMEWORK_EFI_IFR_END_ONE_OF_OP) {\r
     //\r
     // Each entry of Order List in Framework HII is always 1 byte in size\r
     //\r
-    Status = F2UCreateOneOfOptionOpCode ((CONST FRAMEWORK_EFI_IFR_ONE_OF_OPTION *) FwOpHeader, 1, UefiData);\r
+    Status = F2UCreateOneOfOptionOpCode ((CONST FRAMEWORK_EFI_IFR_ONE_OF_OPTION *) FwOpHeader, 1, UefiUpdateData);\r
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
     FwOpHeader = (FRAMEWORK_EFI_IFR_OP_HEADER *) ((UINT8 *) FwOpHeader + FwOpHeader->Length);\r
-    *DataCount += 1;\r
+    *OpcodeCount += 1;\r
   }\r
 \r
-  Status = UCreateEndOfOpcode (UefiData);\r
+  Status = UCreateEndOfOpcode (UefiUpdateData);\r
   if (!EFI_ERROR (Status)) {\r
     *NextFwOpcode = (FRAMEWORK_EFI_IFR_OP_HEADER *)((UINT8 *) FwOpHeader + FwOpHeader->Length);\r
-    *DataCount += 1;\r
+    *OpcodeCount += 1;\r
   }\r
 \r
   return Status;\r
 }\r
 \r
-/*\r
-typedef struct _EFI_IFR_QUESTION_HEADER {\r
-  EFI_IFR_STATEMENT_HEADER Header;\r
-  EFI_QUESTION_ID          QuestionId;\r
-  EFI_VARSTORE_ID          VarStoreId;\r
-  union {\r
-    EFI_STRING_ID          VarName;\r
-    UINT16                 VarOffset;\r
-  }                        VarStoreInfo;\r
-  UINT8                    Flags;\r
-} EFI_IFR_QUESTION_HEADER;\r
-*/\r
-\r
-/*\r
-typedef struct _EFI_IFR_CHECKBOX {\r
-  EFI_IFR_OP_HEADER        Header;\r
-  EFI_IFR_QUESTION_HEADER  Question;\r
-  UINT8                    Flags;\r
-} EFI_IFR_CHECKBOX;\r
-*/\r
-\r
-/*\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;      // The Size of the Data being saved\r
-  STRING_REF        Prompt;     // The String Token for the Prompt\r
-  STRING_REF        Help;       // The string Token for the context-help\r
-  UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely\r
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code\r
-} FRAMEWORK_EFI_IFR_CHECKBOX, FRAMEWORK_EFI_IFR_CHECK_BOX;\r
-*/\r
+/**\r
+  Create UEFI HII CheckBox Opcode from a Framework HII Checkbox Opcode.\r
 \r
+  @param ThunkContext    The HII Thunk Context.\r
+  @param FwOpcode        The input Framework Opcode.\r
+  @param UefiUpdateData  The newly created UEFI HII opcode is appended to UefiUpdateData.\r
 \r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateCheckBoxOpCode (\r
   IN       HII_THUNK_CONTEXT           *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
   IN CONST FRAMEWORK_EFI_IFR_CHECKBOX  *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN OUT   EFI_HII_UPDATE_DATA         *UefiUpdateData\r
   )\r
 {\r
   EFI_STATUS       Status;\r
@@ -697,7 +700,7 @@ F2UCreateCheckBoxOpCode (
   UOpcode.Question.Header.Help = FwOpcode->Help;\r
 \r
   if (FwOpcode->Key == 0) {\r
-    Status = FwQIdToUefiQId (ThunkContext->FormSet, VarStoreId, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+    Status = FwQIdToUefiQId (ThunkContext->FormSet, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
     if (EFI_ERROR (Status)) {\r
       //\r
       // Add a new opcode and it will not trigger call back. So we just reuse the FW QuestionId.\r
@@ -708,95 +711,46 @@ F2UCreateCheckBoxOpCode (
     UOpcode.Question.QuestionId    = FwOpcode->Key;\r
   }\r
 \r
-  UOpcode.Question.VarStoreId    = FRAMEWORK_RESERVED_VARSTORE_ID;\r
-  UOpcode.Question.VarStoreInfo.VarOffset = FwOpcode->QuestionId;\r
-\r
   //\r
-  // We only  map 2 flags:\r
+  // We map 2 flags:\r
   //      FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE, \r
   //      FRAMEWORK_EFI_IFR_FLAG_RESET_REQUIRED,\r
   // to UEFI IFR Opcode Question flags. The rest flags are obsolete.\r
   //\r
   UOpcode.Question.Flags  = (UINT8) (FwOpcode->Flags & (FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE | FRAMEWORK_EFI_IFR_FLAG_RESET_REQUIRED));\r
 \r
+\r
+  UOpcode.Question.VarStoreId    = ThunkContext->FormSet->DefaultVarStoreId;\r
+  UOpcode.Question.VarStoreInfo.VarOffset = FwOpcode->QuestionId;\r
+\r
   //\r
-  // We also map 2 flags:\r
+  // We also map these 2 flags:\r
   //      FRAMEWORK_EFI_IFR_FLAG_DEFAULT, \r
   //      FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING,\r
   // to UEFI IFR CheckBox Opcode default flags.\r
   //\r
   UOpcode.Flags           = (UINT8) (FwOpcode->Flags & (FRAMEWORK_EFI_IFR_FLAG_DEFAULT | FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING));\r
 \r
-  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
 \r
-/*\r
-typedef struct _EFI_IFR_QUESTION_HEADER {\r
-  EFI_IFR_STATEMENT_HEADER Header;\r
-  EFI_QUESTION_ID          QuestionId;\r
-  EFI_VARSTORE_ID          VarStoreId;\r
-  union {\r
-    EFI_STRING_ID          VarName;\r
-    UINT16                 VarOffset;\r
-  }                        VarStoreInfo;\r
-  UINT8                    Flags;\r
-} EFI_IFR_QUESTION_HEADER;\r
-\r
-typedef union {\r
-  struct {\r
-    UINT8 MinValue;\r
-    UINT8 MaxValue;\r
-    UINT8 Step;\r
-  } u8;\r
-  struct {\r
-    UINT16 MinValue;\r
-    UINT16 MaxValue;\r
-    UINT16 Step;\r
-  } u16;\r
-  struct {\r
-    UINT32 MinValue;\r
-    UINT32 MaxValue;\r
-    UINT32 Step;\r
-  } u32;\r
-  struct {\r
-    UINT64 MinValue;\r
-    UINT64 MaxValue;\r
-    UINT64 Step;\r
-  } u64;\r
-} MINMAXSTEP_DATA;\r
-\r
-typedef struct _EFI_IFR_NUMERIC {\r
-  EFI_IFR_OP_HEADER        Header;\r
-  EFI_IFR_QUESTION_HEADER  Question;\r
-  UINT8                    Flags;\r
-  MINMAXSTEP_DATA          data;\r
-} EFI_IFR_NUMERIC;\r
-\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;      // The Size of the Data being saved\r
-  STRING_REF        Prompt;     // The String Token for the Prompt\r
-  STRING_REF        Help;       // The string Token for the context-help\r
-  UINT8             Flags;      // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;        // Value to be passed to caller to identify this particular op-code\r
-  UINT16            Minimum;\r
-  UINT16            Maximum;\r
-  UINT16            Step;       // If step is 0, then manual input is specified, otherwise, left/right arrow selection is called for\r
-  UINT16            Default;\r
-} FRAMEWORK_EFI_IFR_NUMERIC;\r
-\r
-*/\r
+/**\r
+  Create UEFI HII Numeric Opcode from a Framework HII Numeric Opcode.\r
 \r
+  @param ThunkContext The HII Thunk Context.\r
+  @param FwOpcode     The input Framework Opcode.\r
+  @param UefiUpdateData     The newly created UEFI HII opcode is appended to UefiUpdateData.\r
 \r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateNumericOpCode (\r
   IN       HII_THUNK_CONTEXT           *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
   IN CONST FRAMEWORK_EFI_IFR_NUMERIC   *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN OUT    EFI_HII_UPDATE_DATA        *UefiUpdateData\r
   )\r
 {\r
   EFI_STATUS      Status;\r
@@ -806,7 +760,7 @@ F2UCreateNumericOpCode (
   ZeroMem (&UOpcode, sizeof(UOpcode));\r
 \r
   if (FwOpcode->Key == 0) {\r
-    Status = FwQIdToUefiQId (ThunkContext->FormSet, VarStoreId, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+    Status = FwQIdToUefiQId (ThunkContext->FormSet, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
     if (EFI_ERROR (Status)) {\r
       //\r
       // Add a new opcode and it will not trigger call back. So we just reuse the FW QuestionId.\r
@@ -828,7 +782,7 @@ F2UCreateNumericOpCode (
   UOpcode.Question.Header.Prompt = FwOpcode->Prompt;\r
   UOpcode.Question.Header.Help = FwOpcode->Help;\r
 \r
-  UOpcode.Question.VarStoreId    = VarStoreId;\r
+  UOpcode.Question.VarStoreId    = ThunkContext->FormSet->DefaultVarStoreId;\r
   UOpcode.Question.VarStoreInfo.VarOffset = FwOpcode->QuestionId;\r
 \r
   UOpcode.Question.Flags  = (UINT8) (FwOpcode->Flags & (FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE | FRAMEWORK_EFI_IFR_FLAG_RESET_REQUIRED));\r
@@ -858,7 +812,7 @@ F2UCreateNumericOpCode (
     }\r
   }\r
   \r
-  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
@@ -887,59 +841,32 @@ F2UCreateNumericOpCode (
 \r
   CopyMem (&UOpcodeDefault.Value.u8, &FwOpcode->Default, FwOpcode->Width);\r
 \r
-  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcodeDefault, sizeof(UOpcodeDefault), UefiData);\r
+  Status = AppendToUpdateBuffer ((UINT8 *) &UOpcodeDefault, sizeof(UOpcodeDefault), UefiUpdateData);\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
-  Status = UCreateEndOfOpcode (UefiData);\r
+  Status = UCreateEndOfOpcode (UefiUpdateData);\r
 \r
   return Status;\r
 }\r
 \r
 \r
-/*\r
+/**\r
+  Create UEFI HII String Opcode from a Framework HII String Opcode.\r
 \r
-typedef struct _EFI_IFR_QUESTION_HEADER {\r
-  EFI_IFR_STATEMENT_HEADER Header;\r
-  EFI_QUESTION_ID          QuestionId;\r
-  EFI_VARSTORE_ID          VarStoreId;\r
-  union {\r
-    EFI_STRING_ID          VarName;\r
-    UINT16                 VarOffset;\r
-  }                        VarStoreInfo;\r
-  UINT8                    Flags;\r
-} EFI_IFR_QUESTION_HEADER;\r
-\r
-typedef struct _EFI_IFR_STRING {\r
-  EFI_IFR_OP_HEADER        Header;\r
-  EFI_IFR_QUESTION_HEADER  Question;\r
-  UINT8                    MinSize;\r
-  UINT8                    MaxSize;\r
-  UINT8                    Flags;\r
-} EFI_IFR_STRING;\r
-\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  UINT16            QuestionId;   // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name\r
-  UINT8             Width;        // The Size of the Data being saved -- BUGBUG -- remove someday\r
-  STRING_REF        Prompt;       // The String Token for the Prompt\r
-  STRING_REF        Help;         // The string Token for the context-help\r
-  UINT8             Flags;        // This is included solely for purposes of interactive/dynamic support.\r
-  UINT16            Key;          // Value to be passed to caller to identify this particular op-code\r
-  UINT8             MinSize;      // Minimum allowable sized password\r
-  UINT8             MaxSize;      // Maximum allowable sized password\r
-} FRAMEWORK_EFI_IFR_STRING;\r
-\r
-\r
-*/\r
+  @param ThunkContext The HII Thunk Context.\r
+  @param FwOpcode     The input Framework Opcode.\r
+  @param UefiUpdateData     The newly created UEFI HII opcode is appended to UefiUpdateData.\r
 \r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateStringOpCode (\r
-  IN       HII_THUNK_CONTEXT               *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
+  IN       HII_THUNK_CONTEXT           *ThunkContext,\r
   IN CONST FRAMEWORK_EFI_IFR_STRING    *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN OUT    EFI_HII_UPDATE_DATA        *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_STRING UOpcode;\r
@@ -947,7 +874,7 @@ F2UCreateStringOpCode (
   ZeroMem (&UOpcode, sizeof(UOpcode));\r
 \r
   if (FwOpcode->Key == 0) {\r
-    FwQIdToUefiQId (ThunkContext->FormSet, VarStoreId, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
+    FwQIdToUefiQId (ThunkContext->FormSet, FwOpcode->Header.OpCode, FwOpcode->QuestionId, &UOpcode.Question.QuestionId);\r
   } else {\r
     UOpcode.Question.QuestionId    = FwOpcode->Key;\r
   }\r
@@ -959,41 +886,32 @@ F2UCreateStringOpCode (
   UOpcode.Question.Header.Help = FwOpcode->Help;\r
 \r
   UOpcode.Question.QuestionId    = FwOpcode->Key;\r
-  UOpcode.Question.VarStoreId    = FRAMEWORK_RESERVED_VARSTORE_ID;\r
-  UOpcode.Question.VarStoreInfo.VarOffset = FwOpcode->QuestionId;\r
-\r
   UOpcode.Question.Flags  = (UINT8) (FwOpcode->Flags & (FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE | FRAMEWORK_EFI_IFR_FLAG_RESET_REQUIRED));\r
 \r
+  UOpcode.Question.VarStoreId    = ThunkContext->FormSet->DefaultVarStoreId;\r
+  UOpcode.Question.VarStoreInfo.VarOffset = FwOpcode->QuestionId;\r
+\r
   UOpcode.MinSize = FwOpcode->MinSize;\r
   UOpcode.MaxSize = FwOpcode->MaxSize;\r
   UOpcode.Flags   = EFI_IFR_STRING_MULTI_LINE;\r
 \r
-  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
-/*\r
-typedef struct _EFI_IFR_GUID_BANNER {\r
-  EFI_IFR_OP_HEADER   Header;\r
-  EFI_GUID            Guid;\r
-  UINT8               ExtendOpCode; // Extended opcode is EFI_IFR_EXTEND_OP_BANNER\r
-  EFI_STRING_ID       Title;        // The string token for the banner title\r
-  UINT16              LineNumber;   // 1-based line number\r
-  UINT8               Alignment;    // left, center, or right-aligned\r
-} EFI_IFR_GUID_BANNER;\r
-\r
-typedef struct {\r
-  FRAMEWORK_EFI_IFR_OP_HEADER Header;\r
-  STRING_REF        Title;        // The string token for the banner title\r
-  UINT16            LineNumber;   // 1-based line number\r
-  UINT8             Alignment;    // left, center, or right-aligned\r
-} FRAMEWORK_EFI_IFR_BANNER;\r
-\r
-*/\r
+/**\r
+  Create UEFI HII Banner Opcode from a Framework HII Banner Opcode.\r
+\r
+  @param FwOpcode     The input Framework Opcode.\r
+  @param UefiUpdateData     The newly created UEFI HII opcode is appended to UefiUpdateData.\r
 \r
+  @retval EFI_SUCCESS           The UEFI HII opcode is created successfully and appended to UefiUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCE   There is not enough resource.\r
+  \r
+**/\r
 EFI_STATUS\r
 F2UCreateBannerOpCode (\r
   IN CONST FRAMEWORK_EFI_IFR_BANNER    *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
+  IN OUT    EFI_HII_UPDATE_DATA        *UefiUpdateData\r
   )\r
 {\r
   EFI_IFR_GUID_BANNER UOpcode;\r
@@ -1009,15 +927,25 @@ F2UCreateBannerOpCode (
   UOpcode.LineNumber     = FwOpcode->LineNumber;\r
   UOpcode.Alignment      = FwOpcode->Alignment;\r
 \r
-  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiData);\r
+  return AppendToUpdateBuffer ((UINT8 *) &UOpcode, sizeof(UOpcode), UefiUpdateData);\r
 }\r
 \r
+/**\r
+  Create a EFI_HII_UPDATE_DATA structure used to call IfrLibUpdateForm.\r
 \r
+  @param ThunkContext   The HII Thunk Context.\r
+  @param FwUpdateData   The Framework Update Data.\r
+  @param UefiUpdateData The UEFI Update Data.\r
+\r
+  @retval EFI_SUCCESS       The UEFI Update Data is created successfully.\r
+  @retval EFI_UNSUPPORTED   There is unsupported opcode in FwUpdateData.\r
+  @retval EFI_OUT_OF_RESOURCES There is not enough resource.\r
+**/\r
 EFI_STATUS\r
 FwUpdateDataToUefiUpdateData (\r
-  IN       HII_THUNK_CONTEXT                 *ThunkContext,\r
-  IN CONST FRAMEWORK_EFI_HII_UPDATE_DATA    *Data,\r
-  OUT      EFI_HII_UPDATE_DATA              **UefiData\r
+  IN       HII_THUNK_CONTEXT                *ThunkContext,\r
+  IN CONST FRAMEWORK_EFI_HII_UPDATE_DATA    *FwUpdateData,\r
+  OUT      EFI_HII_UPDATE_DATA              **UefiUpdateData\r
   )\r
 {\r
   FRAMEWORK_EFI_IFR_OP_HEADER          *FwOpCode;\r
@@ -1026,12 +954,6 @@ FwUpdateDataToUefiUpdateData (
   UINTN                                Index;\r
   EFI_STATUS                           Status;\r
   UINTN                                DataCount;\r
-  UINT16                               VarStoreId;\r
-\r
-  //\r
-  // Assume all dynamic opcode created is using active variable with VarStoreId of 1.\r
-  //\r
-  VarStoreId = 1;\r
 \r
   UefiOpCode = AllocateZeroPool (sizeof (EFI_HII_UPDATE_DATA));\r
   if (UefiOpCode == NULL) {\r
@@ -1046,9 +968,9 @@ FwUpdateDataToUefiUpdateData (
   UefiOpCode->BufferSize = LOCAL_UPDATE_DATA_BUFFER_INCREMENTAL;\r
   UefiOpCode->Offset = 0;\r
 \r
-  FwOpCode = (FRAMEWORK_EFI_IFR_OP_HEADER *) &Data->Data;\r
+  FwOpCode = (FRAMEWORK_EFI_IFR_OP_HEADER *) &FwUpdateData->Data;\r
 \r
-  for (Index = 0; Index < Data->DataCount; Index += DataCount) {\r
+  for (Index = 0; Index < FwUpdateData->DataCount; Index += DataCount) {\r
     switch (FwOpCode->OpCode) {\r
       case FRAMEWORK_EFI_IFR_SUBTITLE_OP:\r
         Status = F2UCreateSubtitleOpCode ((FRAMEWORK_EFI_IFR_SUBTITLE  *) FwOpCode, UefiOpCode);\r
@@ -1061,12 +983,12 @@ FwUpdateDataToUefiUpdateData (
         break;\r
 \r
       case FRAMEWORK_EFI_IFR_REF_OP:\r
-        Status = F2UCreateGotoOpCode ((FRAMEWORK_EFI_IFR_REF *) FwOpCode, UefiOpCode);  \r
+        Status = F2UCreateReferenceOpCode ((FRAMEWORK_EFI_IFR_REF *) FwOpCode, UefiOpCode);  \r
         DataCount = 1;\r
         break;\r
         \r
       case FRAMEWORK_EFI_IFR_ONE_OF_OP:\r
-        Status = F2UCreateOneOfOpCode (ThunkContext, VarStoreId, (FRAMEWORK_EFI_IFR_ONE_OF *) FwOpCode, UefiOpCode, &NextFwOpCode, &DataCount);\r
+        Status = F2UCreateOneOfOpCode (ThunkContext, (FRAMEWORK_EFI_IFR_ONE_OF *) FwOpCode, UefiOpCode, &NextFwOpCode, &DataCount);\r
         if (!EFI_ERROR (Status)) {\r
           FwOpCode = NextFwOpCode;\r
           //\r
@@ -1077,7 +999,7 @@ FwUpdateDataToUefiUpdateData (
         break;\r
 \r
       case FRAMEWORK_EFI_IFR_ORDERED_LIST_OP:\r
-        Status = F2UCreateOrderedListOpCode (ThunkContext, VarStoreId, (FRAMEWORK_EFI_IFR_ORDERED_LIST *) FwOpCode, UefiOpCode, &NextFwOpCode, &DataCount);\r
+        Status = F2UCreateOrderedListOpCode (ThunkContext, (FRAMEWORK_EFI_IFR_ORDERED_LIST *) FwOpCode, UefiOpCode, &NextFwOpCode, &DataCount);\r
         if (!EFI_ERROR (Status)) {\r
           FwOpCode = NextFwOpCode;\r
           //\r
@@ -1088,12 +1010,12 @@ FwUpdateDataToUefiUpdateData (
         break;\r
         \r
       case FRAMEWORK_EFI_IFR_CHECKBOX_OP:\r
-        Status = F2UCreateCheckBoxOpCode (ThunkContext, VarStoreId, (FRAMEWORK_EFI_IFR_CHECKBOX *) FwOpCode, UefiOpCode);  \r
+        Status = F2UCreateCheckBoxOpCode (ThunkContext, (FRAMEWORK_EFI_IFR_CHECKBOX *) FwOpCode, UefiOpCode);  \r
         DataCount = 1;\r
         break;\r
 \r
       case FRAMEWORK_EFI_IFR_STRING_OP:\r
-        Status = F2UCreateStringOpCode (ThunkContext, VarStoreId, (FRAMEWORK_EFI_IFR_STRING *) FwOpCode, UefiOpCode);  \r
+        Status = F2UCreateStringOpCode (ThunkContext, (FRAMEWORK_EFI_IFR_STRING *) FwOpCode, UefiOpCode);  \r
         DataCount = 1;\r
         break;\r
 \r
@@ -1108,7 +1030,7 @@ FwUpdateDataToUefiUpdateData (
         break;\r
 \r
       case FRAMEWORK_EFI_IFR_NUMERIC_OP:\r
-        Status = F2UCreateNumericOpCode (ThunkContext, VarStoreId, (FRAMEWORK_EFI_IFR_NUMERIC *) FwOpCode, UefiOpCode);\r
+        Status = F2UCreateNumericOpCode (ThunkContext, (FRAMEWORK_EFI_IFR_NUMERIC *) FwOpCode, UefiOpCode);\r
         DataCount = 1;\r
         break;\r
 \r
@@ -1126,7 +1048,7 @@ FwUpdateDataToUefiUpdateData (
     FwOpCode = (FRAMEWORK_EFI_IFR_OP_HEADER *)((UINT8 *) FwOpCode + FwOpCode->Length);\r
   }\r
 \r
-  *UefiData = UefiOpCode;\r
+  *UefiUpdateData = UefiOpCode;\r
   \r
   return EFI_SUCCESS;\r
 }\r
diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/OpcodeCreation.h b/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/OpcodeCreation.h
deleted file mode 100644 (file)
index 3cdc33a..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/** @file\r
-Implement Functions to convert IFR Opcode in format defined in Framework HII specification to\r
-format defined in UEFI HII Specification.\r
-\r
-Copyright (c) 2007, Intel Corporation\r
-All rights reserved. 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
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef _HII_THUNK_OPCODE_CREATION_H\r
-#define _HII_THUNK_OPCODE_CREATION_H\r
-\r
-EFI_STATUS\r
-UCreateEndOfOpcode (\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-EFI_STATUS\r
-F2UCreateSubtitleOpCode (\r
-  IN CONST FRAMEWORK_EFI_IFR_SUBTITLE  *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-EFI_STATUS\r
-F2UCreateTextOpCode (\r
-  IN CONST FRAMEWORK_EFI_IFR_TEXT      *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-\r
-EFI_STATUS\r
-F2UCreateGotoOpCode (\r
-  IN CONST FRAMEWORK_EFI_IFR_REF       *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-EFI_STATUS\r
-F2UCreateOneOfOptionOpCode (\r
-  IN CONST FRAMEWORK_EFI_IFR_ONE_OF_OPTION    *FwOpcode,\r
-  IN       UINTN                              Width,\r
-  OUT      EFI_HII_UPDATE_DATA                *UefiData\r
-  );\r
-\r
-EFI_STATUS\r
-F2UCreateOneOfOpCode (\r
-  IN       HII_THUNK_CONTEXT               *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
-  IN CONST FRAMEWORK_EFI_IFR_ONE_OF    *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData,\r
-  OUT      FRAMEWORK_EFI_IFR_OP_HEADER **NextFwOpcode,\r
-  OUT      UINTN                       *DataCount\r
-  );\r
-\r
-EFI_STATUS\r
-F2UCreateOrderedListOpCode (\r
-  IN       HII_THUNK_CONTEXT               *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
-  IN CONST FRAMEWORK_EFI_IFR_ORDERED_LIST *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData,\r
-  OUT      FRAMEWORK_EFI_IFR_OP_HEADER **NextFwOpcode,\r
-  OUT      UINTN                       *DataCount\r
-  );\r
-\r
-\r
-EFI_STATUS\r
-F2UCreateCheckBoxOpCode (\r
-  IN       HII_THUNK_CONTEXT               *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
-  IN CONST FRAMEWORK_EFI_IFR_CHECKBOX  *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-\r
-EFI_STATUS\r
-F2UCreateNumericOpCode (\r
-  IN       HII_THUNK_CONTEXT               *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
-  IN CONST FRAMEWORK_EFI_IFR_NUMERIC   *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-\r
-EFI_STATUS\r
-F2UCreateStringOpCode (\r
-  IN       HII_THUNK_CONTEXT               *ThunkContext,\r
-  IN       UINT16                      VarStoreId,\r
-  IN CONST FRAMEWORK_EFI_IFR_STRING    *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-\r
-EFI_STATUS\r
-F2UCreateBannerOpCode (\r
-  IN CONST FRAMEWORK_EFI_IFR_BANNER    *FwOpcode,\r
-  OUT      EFI_HII_UPDATE_DATA         *UefiData\r
-  );\r
-\r
-EFI_STATUS\r
-FwUpdateDataToUefiUpdateData (\r
-  IN       HII_THUNK_CONTEXT                 *ThunkContext,\r
-  IN CONST FRAMEWORK_EFI_HII_UPDATE_DATA    *Data,\r
-  OUT      EFI_HII_UPDATE_DATA              **UefiData\r
-  );\r
-#endif\r
-\r
diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/ThunkIfrSupportLib.h b/EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/ThunkIfrSupportLib.h
deleted file mode 100644 (file)
index bd74331..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/**@file\r
-\r
-  This file contains utility functions by HII Thunk Modules.\r
-  \r
-Copyright (c) 2006 - 2008, Intel Corporation\r
-All rights reserved. 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
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef _THUNK_IFR_SUPPORTLIB_H\r
-#define _THUNK_IFR_SUPPORTLIB_H\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-#endif\r
index c8262f6adbabdccb5b06a08c91a73861f61ef124..34d6cba6f878aab9176130596574e7ae7d4aa43e 100644 (file)
@@ -487,7 +487,7 @@ UefiDefaultsToFwDefaults (
       //\r
       // In UEFI, 0 is defined to be invalid for EFI_IFR_VARSTORE.VarStoreId.\r
       // So the default storage of Var Store in VFR from a Framework module \r
-      // should be translated to 0x0001 (FRAMEWORK_RESERVED_VARSTORE_ID).\r
+      // should be translated to the default Varstore ID.\r
       //\r
       if (Node->StoreId == UefiFormSetDefaultVarStoreId) {\r
         Pack->VariableId = 0;\r
index 7ca232c6e6c74352d708dcda12555dd20ad1bb05..4ca4c5e3bd6fd9f268ac65bca0ce296413da02b0 100644 (file)
@@ -317,6 +317,11 @@ typedef struct {
 \r
   UINT16                          MaxQuestionId;\r
 \r
+  //\r
+  // Added for Framework HII Thunk. \r
+  // Default Variable Storage built from a Framework VFR file using UEFI VFR Compiler in Compatibility mode is determined \r
+  // by priority rules defined in GetFormsetDefaultVarstoreId (). See the function description for details.\r
+  //\r
   EFI_VARSTORE_ID                 DefaultVarStoreId;\r
 \r
   UINTN                           NumberOfStatement;\r
index ca870990e18a286eac72010e1db2989367bdf218..ca5ecbf0b6134178c54fce3a8e915bd414712af0 100644 (file)
@@ -392,10 +392,11 @@ DestroyThunkContext (
 /**\r
   Get the FormSet's Default Varstore ID based on the rule (Descending Priority):\r
 \r
-  1) Var Store ID of FRAMEWORK_RESERVED_VARSTORE_ID (0x01).\r
-  2) First Var Store ID.\r
+  1) If VarStore ID of FRAMEWORK_RESERVED_VARSTORE_ID (0x01) is found, Var Store ID is used.\r
+  2) If VarStore ID of FRAMEWORK_RESERVED_VARSTORE_ID is not found, First Var Store ID is used \r
+     as the default Var Store ID.\r
 \r
-  @param FormSet The Form Set.\r
+  @param FormSet The Form Set. The Default Varstore ID is updated if found.\r
   \r
 **/\r
 VOID\r