--- /dev/null
+/** @file\r
+ Header file for Function and Macro defintions for to extract default values from UEFI Form package.\r
+\r
+ Copyright (c) 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 _HII_THUNK_UEFI_IFR_DEFAULT_\r
+#define _HII_THUNK_UEFI_IFR_DEFAULT_\r
+\r
+#define UEFI_IFR_BUFFER_STORAGE_NODE_FROM_LIST(a) CR(a, UEFI_IFR_BUFFER_STORAGE_NODE, List, UEFI_IFR_BUFFER_STORAGE_NODE_SIGNATURE)\r
+#define UEFI_IFR_BUFFER_STORAGE_NODE_SIGNATURE SIGNATURE_32 ('I', 'b', 'S', 'n')\r
+typedef struct {\r
+ LIST_ENTRY List;\r
+ UINT32 Signature;\r
+\r
+ EFI_GUID Guid;\r
+ CHAR16 *Name;\r
+ UINT16 DefaultId;\r
+ UINT16 StoreId;\r
+ UINTN Size;\r
+ UINT8 *Buffer;\r
+ \r
+} UEFI_IFR_BUFFER_STORAGE_NODE;\r
+\r
+/**\r
+ Get the default value for Buffer Type storage from the first FormSet\r
+ in the Package List specified by a EFI_HII_HANDLE.\r
+ \r
+ The results can be multiple instances of UEFI_IFR_BUFFER_STORAGE_NODE. \r
+ They are inserted to the link list.\r
+ \r
+ @param UefiHiiHandle The handle for the package list.\r
+ @param UefiDefaultsListHead The head of link list for the output.\r
+\r
+ @retval EFI_SUCCESS Successful.\r
+ \r
+**/\r
+EFI_STATUS\r
+UefiIfrGetBufferTypeDefaults (\r
+ IN HII_THUNK_CONTEXT *ThunkContext,\r
+ OUT LIST_ENTRY **UefiDefaults\r
+);\r
+\r
+/**\r
+ Convert the UEFI Buffer Type default values to a Framework HII default\r
+ values specified by a EFI_HII_VARIABLE_PACK_LIST structure.\r
+ \r
+ @param ListHead The link list of UEFI_IFR_BUFFER_STORAGE_NODE\r
+ which contains the default values retrived from\r
+ a UEFI form set.\r
+ @param DefaultMask The default mask.\r
+ The valid values are FRAMEWORK_EFI_IFR_FLAG_DEFAULT\r
+ and FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING.\r
+ UEFI spec only map FRAMEWORK_EFI_IFR_FLAG_DEFAULT and FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING \r
+ from specification to valid default class.\r
+ @param VariablePackList The output default value in a format defined in Framework.\r
+ \r
+\r
+ @retval EFI_SUCCESS Successful.\r
+ @retval EFI_INVALID_PARAMETER The default mask is not FRAMEWORK_EFI_IFR_FLAG_DEFAULT or \r
+ FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING.\r
+**/\r
+\r
+EFI_STATUS\r
+UefiDefaultsToFwDefaults (\r
+ IN LIST_ENTRY *UefiIfrDefaults,\r
+ IN UINTN DefaultMask,\r
+ IN EFI_VARSTORE_ID UefiFormSetDefaultVarStoreId,\r
+ OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
+ );\r
+\r
+/**\r
+ Free up all buffer allocated for the link list of UEFI_IFR_BUFFER_STORAGE_NODE.\r
+ \r
+ @param ListHead The link list of UEFI_IFR_BUFFER_STORAGE_NODE\r
+ which contains the default values retrived from\r
+ a UEFI form set.\r
+ \r
+\r
+ @retval EFI_SUCCESS Successful.\r
+ @retval EFI_INVALID_PARAMETER The default mask is not FRAMEWORK_EFI_IFR_FLAG_DEFAULT or \r
+ FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING.\r
+**/\r
+VOID\r
+FreeDefaultList (\r
+ IN LIST_ENTRY *UefiIfrDefaults\r
+ );\r
+\r
+#endif\r
+\r
+\r