]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/UefiIfrDefault.h
e06b2829c3a923042f442598059eb8ea5fa175ee
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiOnUefiHiiThunk / UefiIfrDefault.h
1 /** @file
2 Header file for Function and Macro defintions for to extract default values from UEFI Form package.
3
4 Copyright (c) 2008, Intel Corporation
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _HII_THUNK_UEFI_IFR_DEFAULT_
16 #define _HII_THUNK_UEFI_IFR_DEFAULT_
17
18 #define UEFI_IFR_BUFFER_STORAGE_NODE_FROM_LIST(a) CR(a, UEFI_IFR_BUFFER_STORAGE_NODE, List, UEFI_IFR_BUFFER_STORAGE_NODE_SIGNATURE)
19 #define UEFI_IFR_BUFFER_STORAGE_NODE_SIGNATURE SIGNATURE_32 ('I', 'b', 'S', 'n')
20 typedef struct {
21 LIST_ENTRY List;
22 UINT32 Signature;
23
24 EFI_GUID Guid;
25 CHAR16 *Name;
26 UINT16 DefaultId;
27 UINT16 StoreId;
28 UINTN Size;
29 UINT8 *Buffer;
30
31 } UEFI_IFR_BUFFER_STORAGE_NODE;
32
33 /**
34 Get the default value for Buffer Type storage from the first FormSet
35 in the Package List specified by a EFI_HII_HANDLE.
36
37 The results can be multiple instances of UEFI_IFR_BUFFER_STORAGE_NODE.
38 They are inserted to the link list.
39
40 @param UefiHiiHandle The handle for the package list.
41 @param UefiDefaultsListHead The head of link list for the output.
42
43 @retval EFI_SUCCESS Successful.
44
45 **/
46 EFI_STATUS
47 UefiIfrGetBufferTypeDefaults (
48 IN HII_THUNK_CONTEXT *ThunkContext,
49 OUT LIST_ENTRY **UefiDefaults
50 );
51
52 /**
53 Convert the UEFI Buffer Type default values to a Framework HII default
54 values specified by a EFI_HII_VARIABLE_PACK_LIST structure.
55
56 @param ListHead The link list of UEFI_IFR_BUFFER_STORAGE_NODE
57 which contains the default values retrived from
58 a UEFI form set.
59 @param DefaultMask The default mask.
60 The valid values are FRAMEWORK_EFI_IFR_FLAG_DEFAULT
61 and FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING.
62 UEFI spec only map FRAMEWORK_EFI_IFR_FLAG_DEFAULT and FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING
63 from specification to valid default class.
64 @param VariablePackList The output default value in a format defined in Framework.
65
66
67 @retval EFI_SUCCESS Successful.
68 @retval EFI_INVALID_PARAMETER The default mask is not FRAMEWORK_EFI_IFR_FLAG_DEFAULT or
69 FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING.
70 **/
71
72 EFI_STATUS
73 UefiDefaultsToFwDefaults (
74 IN LIST_ENTRY *UefiIfrDefaults,
75 IN UINTN DefaultMask,
76 IN EFI_VARSTORE_ID UefiFormSetDefaultVarStoreId,
77 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList
78 );
79
80 /**
81 Free up all buffer allocated for the link list of UEFI_IFR_BUFFER_STORAGE_NODE.
82
83 @param ListHead The link list of UEFI_IFR_BUFFER_STORAGE_NODE
84 which contains the default values retrived from
85 a UEFI form set.
86
87
88 @retval EFI_SUCCESS Successful.
89 @retval EFI_INVALID_PARAMETER The default mask is not FRAMEWORK_EFI_IFR_FLAG_DEFAULT or
90 FRAMEWORK_EFI_IFR_FLAG_MANUFACTURING.
91 **/
92 VOID
93 FreeDefaultList (
94 IN LIST_ENTRY *UefiIfrDefaults
95 );
96
97 #endif
98
99