diff options
author | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
---|---|---|
committer | raywu <raywu0301@gmail.com> | 2018-06-15 00:00:50 +0800 |
commit | b7c51c9cf4864df6aabb99a1ae843becd577237c (patch) | |
tree | eebe9b0d0ca03062955223097e57da84dd618b9a /Include/HIIDB.h | |
download | zprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz |
Diffstat (limited to 'Include/HIIDB.h')
-rw-r--r-- | Include/HIIDB.h | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/Include/HIIDB.h b/Include/HIIDB.h new file mode 100644 index 0000000..373808f --- /dev/null +++ b/Include/HIIDB.h @@ -0,0 +1,225 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2004, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 6145-F Northbelt Pkwy, Norcross, GA 30071 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** + +//********************************************************************** +// $Header: /Alaska/BIN/Core/Include/HIIDB.h 9 12/29/09 1:16p Yakovlevs $Revision: 14 $ +// +// $Date: 12/29/09 1:16p $ +//********************************************************************** +// Revision History +// ---------------- +//$Log: /Alaska/BIN/Core/Include/HIIDB.h $ +// +// 9 12/29/09 1:16p Yakovlevs +// Added Log +// +//********************************************************************** + +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: HiiDb.h +// +// Description: Human Interface Infrastructure Driver Internal definitions +// +//<AMI_FHDR_END> +//********************************************************************** + + +#ifndef _HII_DRIVER_ +#define _HII_DRIVER_ + +#ifdef __cplusplus +extern "C" { +#endif +#if EFI_SPECIFICATION_VERSION>0x20000 +#pragma message("The HiiDb.h header contains UEFI 2.0 definitions") +#pragma message("UEFI 2.1 projects must use UefiHii.h instead") +#pragma message("The supported version of the UEFI specification is defined by the EFI_SPECIFICATION_VERSION SDL token") +#error the header is depricated +#else +#include <Efi.h> +#include <AmiDxeLib.h> +#include <Protocol\ExtHii.h> + +//===================================================================== +//Initial Counts for the database +//TODO//TODO//TODO//TODO//TODO//TODO//TODO//TODO//TODO + //Define SDL tokens for that +#define FONT_DB_MAX_COUNT 0x10000 +#define KEYB_DB_MAX_COUNT 107 +#define STRING_DB_MAX_COUNT 0x200 +#define FORM_DB_MAX_COUNT 0x50 + +//===================================================================== +#define NG_SIZE 19 +#define WG_SIZE 38 + +typedef enum { + lNone=0, + lDel, + lAdd +} LBL_ACTION; + + +#pragma pack(push,1) +//===================================================================== + +//typedef UINT8 HII_GL_COL[GLYPH_H]; +//for internal storage we don't need to store UNICODE weight it will be +//an index in FontDB array +typedef struct _HII_N_FONT { + UINT8 Attr; //Font Glyph Attributes + UINT8 GlData[NG_SIZE]; +} HII_N_FONT; + +typedef struct _HII_W_FONT { + UINT8 Attr; //Font Glyph Attributes + UINT8 GlData[WG_SIZE]; +} HII_W_FONT; + +typedef struct _HII_HANDLE{ + EFI_HII_HANDLE Handle; + UINT32 PriLang; //Primary Language Index + EFI_GUID Guid; //GUID asociated with this Handle + T_ITEM_LIST SecLang; + STRING_REF StrCount; + STRING_REF NextStrToken; //on that handle + BOOLEAN HasStr; + VOID *Ifr; +}HII_HANDLE; + +typedef struct _HII_LANG { + UINT16 sName[4]; //ISO 639-2 3 char + 0 terminator + UINT16 *lName; + UINT32 Attr; +} HII_LANG; + + +typedef struct _HII_STORE { + EFI_IFR_VARSTORE *VarStore; + UINT8 *VarData; + BOOLEAN Updated; +}HII_STORE; + +//Order is very importand for this srtructure +typedef struct _HII_STR { +//--Fields Used For DBE Key -------- + STRING_REF Token; //size16 LSW + UINT32 LangIdx;//size32 + EFI_HII_HANDLE Handle; //size16 total = 8 bytes -> UINT64 MSW +//---------------------------------- + EXT_STR_INFO String; + EXT_STR_INFO NewStr; +} HII_STR; + +typedef struct _HII_STRKEY { + STRING_REF Token; //size16 LSW + UINT32 LangIdx;//size32 + EFI_HII_HANDLE Handle; //size16 total = 8 bytes -> UINT64 MSW +}HII_STRKEY; + +typedef struct _HII_LABEL { + EFI_FORM_LABEL LabelId; + EFI_IFR_LABEL *Label; //Points to a label in initial Package + EFI_IFR_OP_HEADER *LabelData; + UINTN DataCount; //number of OPCodes excluding label + UINTN DataLength; //in bytes + HII_FORM *OwnerForm; + BOOLEAN Updated; //flag to know free *LabelData or not... initialy it is part of a + //Form Data buffer but after first update it is independent buffer + T_ITEM_LIST Objects; //Points on list of HII_OBJECT Structure + T_ITEM_LIST Conditions; //Indpendent Conditions the ones which don't have an object; + HII_LABEL_UPDATE_CALLBACK UpdateCallBack; +} HII_LABEL; + +//typedef struct _HII_COND { +// EFI_IFR_OP_HEADER *Action; //EFI_IFR_INCONSISTENT_IF_OP or EFI_IFR_GRAYOUT_IF_OP or EFI_IFR_SUPPRESS_IF_OP; +// EFI_IFR_OP_HEADER *Compare; //EFI_IFR_EQ_ID_VAL_OP or EFI_IFR_EQ_ID_ID_OP or EFI_IFR_EQ_ID_LIST_OP or EFI_IFR_EQ_VAR_VAL_OP +// EFI_IFR_OP_HEADER *Logic; //EFI_IFR_OR_OP or EFI_IFR_AND_OP or EFI_IFR_OR_OP with nexrt condition in the list +// BOOLEAN Result; //to what logical value (TRUE or FALSE) condition Evaluates +// BOOLEAN Updated; //Signifies wethe Result reflects Current conditio of the Object; +//} HII_COND; + +typedef struct _HII_OBJECT { + EFI_IFR_OP_HEADER *ObjectCode; + T_ITEM_LIST Options; //for composite opcodes like ORDERED_LIST or ONE_OF + HII_STORE *Store1; //Default NvStore + HII_STORE *Store2; //when EFI_IFR_VARSTORE_SELECT_PAIR_OP and EFI_IFR_EQ_ID_ID + T_ITEM_LIST Conditions; //just pointers to logical opcodes they must be following in right order + //including starting conditions as INCONSISTENT_IF_OP or GRAYOUT_IF_OP or + //SUPPRESS_IF_OP, Storage Compare options as EQ_xxx.. Logical AND OR NOT + //operators and END_IF OpCode. + T_ITEM_LIST SuppressStores; // varstores used for suppress conditions + BOOLEAN Supress; //TRUE if any conditions exicts which changes Suppress property of an Object + BOOLEAN GrayOut; //TRUE if any conditions exicts which changes GrayOut property of an Object + UINT16 Incons; //TRUE if any conditions exicts which changes Inconsistant property of an Object +} HII_OBJECT; + + +#pragma pack(pop) + +typedef struct _HII_KB_LAYOUT_DATA { + UINTN HandleIndex; + UINT8 KeyDscCount; + EFI_KEY_DESCRIPTOR *KeyDsc; + //Here will be following the actual key descriprors +} HII_KB_LAYOUT_DATA; + +typedef struct _HII_KB_DATA { + UINTN ActiveLayout; + //Like T_ITEM_LIST + UINTN KblInitCount; + UINTN KblCount; + HII_KB_LAYOUT_DATA **KbLayout; +} HII_KB_DATA; + + + +//===================================================================== +//Definitions of Hii Databases +typedef struct _HII_DB { + EFI_HII_PROTOCOL_OLD HiiProtocolOld; + EFI_HII_PROTOCOL HiiProtocolNew; + EXT_HII_PROTOCOL HiiExtProtocol; + EFI_HANDLE HiiHandle; + EFI_HANDLE ImageHandle; + EFI_HII_HANDLE NextHiiHandle; + T_ITEM_LIST HandleDb; + T_ITEM_LIST LangDb; + HII_N_FONT *FontDb[FONT_DB_MAX_COUNT]; + T_ITEM_LIST IfrDb; + DBE_DATABASE StringDb; + HII_KB_DATA KeybdDb; +}HII_DB; +#endif // #if EFI_SPECIFICATION_VERSION>0x20000 +/****** DO NOT WRITE BELOW THIS LINE *******/ +#ifdef __cplusplus +} +#endif + +#endif +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2004, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 6145-F Northbelt Pkwy, Norcross, GA 30071 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** |