1 /** @file
2   Internal structure for Var Check Hii.
3 
4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
5 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 _VAR_CHECK_STRUCTURE_H_
16 #define _VAR_CHECK_STRUCTURE_H_
17 
18 //
19 // Alignment for Hii Variable and Question header.
20 //
21 #define HEADER_ALIGNMENT  4
22 #define HEADER_ALIGN(Header)  (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1)))
23 
24 #pragma pack (1)
25 
26 #define VAR_CHECK_HII_REVISION  0x0001
27 
28 typedef struct {
29   UINT16            Revision;
30   UINT16            HeaderLength;
31   UINT32            Length; // Length include this header
32   UINT8             OpCode;
33   UINT8             Reserved;
34   UINT16            Size;
35   UINT32            Attributes;
36   EFI_GUID          Guid;
37 //CHAR16              Name[];
38 } VAR_CHECK_HII_VARIABLE_HEADER;
39 
40 typedef struct {
41   UINT8             OpCode;
42   UINT8             Length; // Length include this header
43   UINT16            VarOffset;
44   UINT8             StorageWidth;
45 } VAR_CHECK_HII_QUESTION_HEADER;
46 
47 typedef struct {
48   UINT8             OpCode;
49   UINT8             Length; // Length include this header
50   UINT16            VarOffset;
51   UINT8             StorageWidth;
52 //UINTx               Data[]; // x = UINT8/UINT16/UINT32/UINT64;
53 } VAR_CHECK_HII_QUESTION_ONEOF;
54 
55 typedef struct {
56   UINT8             OpCode;
57   UINT8             Length; // Length include this header
58   UINT16            VarOffset;
59   UINT8             StorageWidth;
60 } VAR_CHECK_HII_QUESTION_CHECKBOX;
61 
62 typedef struct {
63   UINT8             OpCode;
64   UINT8             Length; // Length include this header
65   UINT16            VarOffset;
66   UINT8             StorageWidth;
67 //UINTx               Minimum; // x = UINT8/UINT16/UINT32/UINT64;
68 //UINTx               Maximum; // x = UINT8/UINT16/UINT32/UINT64;
69 } VAR_CHECK_HII_QUESTION_NUMERIC;
70 
71 typedef struct {
72   UINT8             OpCode;
73   UINT8             Length; // Length include this header
74   UINT16            VarOffset;
75   UINT8             StorageWidth;
76   UINT8             MaxContainers;
77 //UINTx               Data[]; // x = UINT8/UINT16/UINT32/UINT64;
78 } VAR_CHECK_HII_QUESTION_ORDEREDLIST;
79 
80 #pragma pack ()
81 
82 #endif
83