| /**@file | |
| This file contains global defines and prototype definitions | |
| for the HII database. | |
| Copyright (c) 2006, Intel Corporation | |
| All rights reserved. This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef _HIIDATABASE_H | |
| #define _HIIDATABASE_H | |
| #include <PiDxe.h> | |
| #include <Guid/GlobalVariable.h> | |
| #include <Protocol/FormCallbackFramework.h> | |
| #include <Protocol/HiiFramework.h> | |
| #include <Library/BaseLib.h> | |
| #include <Library/DebugLib.h> | |
| #include <Library/UefiDriverEntryPoint.h> | |
| #include <Library/MemoryAllocationLib.h> | |
| #include <Library/BaseMemoryLib.h> | |
| #include <Library/UefiBootServicesTableLib.h> | |
| #include <Library/UefiRuntimeServicesTableLib.h> | |
| #include <Library/IfrSupportLibFramework.h> | |
| // | |
| // HII Database Global data | |
| // | |
| #define EFI_HII_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'i', 'P') | |
| #define MAX_GLYPH_COUNT 65535 | |
| #define NARROW_GLYPH_ARRAY_SIZE 19 | |
| #define WIDE_GLYPH_ARRAY_SIZE 38 | |
| #define SETUP_MAP_NAME L"Setup" | |
| #define HII_VARIABLE_SUFFIX_USER_DATA L"UserSavedData" | |
| #define HII_VARIABLE_SUFFIX_DEFAULT_OVERRIDE L"DefaultOverride" | |
| #define HII_VARIABLE_SUFFIX_MANUFACTURING_OVERRIDE L"ManufacturingOverride" | |
| typedef struct _EFI_HII_HANDLE_DATABASE { | |
| VOID *Buffer; // Actual buffer pointer | |
| EFI_HII_HANDLE Handle; // Monotonically increasing value to signify the value returned to caller | |
| UINT32 NumberOfTokens; // The initial number of tokens when first registered | |
| struct _EFI_HII_HANDLE_DATABASE *NextHandleDatabase; | |
| } EFI_HII_HANDLE_DATABASE; | |
| typedef struct { | |
| EFI_NARROW_GLYPH NarrowGlyphs[MAX_GLYPH_COUNT]; | |
| EFI_WIDE_GLYPH WideGlyphs[MAX_GLYPH_COUNT]; | |
| EFI_KEY_DESCRIPTOR SystemKeyboardLayout[106]; | |
| EFI_KEY_DESCRIPTOR OverrideKeyboardLayout[106]; | |
| BOOLEAN SystemKeyboardUpdate; // Has the SystemKeyboard been updated? | |
| } EFI_HII_GLOBAL_DATA; | |
| typedef struct { | |
| UINTN Signature; | |
| EFI_HII_GLOBAL_DATA *GlobalData; | |
| EFI_HII_HANDLE_DATABASE *DatabaseHead; // Head of the Null-terminated singly-linked list of handles. | |
| EFI_HII_PROTOCOL Hii; | |
| } EFI_HII_DATA; | |
| typedef struct { | |
| EFI_HII_HANDLE Handle; | |
| EFI_GUID Guid; | |
| EFI_HII_HANDLE_PACK HandlePack; | |
| UINTN IfrSize; | |
| UINTN StringSize; | |
| EFI_HII_IFR_PACK *IfrData; // All the IFR data stored here | |
| EFI_HII_STRING_PACK *StringData; // All the String data stored at &IfrData + IfrSize (StringData is just a label - never referenced) | |
| } EFI_HII_PACKAGE_INSTANCE; | |
| typedef struct { | |
| EFI_HII_PACK_HEADER Header; | |
| EFI_IFR_FORM_SET FormSet; | |
| EFI_IFR_END_FORM_SET EndFormSet; | |
| } EFI_FORM_SET_STUB; | |
| #define EFI_HII_DATA_FROM_THIS(a) CR (a, EFI_HII_DATA, Hii, EFI_HII_DATA_SIGNATURE) | |
| #define NARROW_WIDTH 8 | |
| #define WIDE_WIDTH 16 | |
| extern UINT8 mUnknownGlyph[38]; | |
| // | |
| // Prototypes | |
| // | |
| EFI_STATUS | |
| GetPackSize ( | |
| IN VOID *Pack, | |
| OUT UINTN *PackSize, | |
| OUT UINT32 *NumberOfTokens | |
| ) | |
| ; | |
| EFI_STATUS | |
| ValidatePack ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_PACKAGE_INSTANCE *PackageInstance, | |
| OUT EFI_HII_PACKAGE_INSTANCE **StringPackageInstance, | |
| OUT UINT32 *TotalStringCount | |
| ) | |
| ; | |
| // | |
| // Public Interface Prototypes | |
| // | |
| EFI_STATUS | |
| EFIAPI | |
| InitializeHiiDatabase ( | |
| IN EFI_HANDLE ImageHandle, | |
| IN EFI_SYSTEM_TABLE *SystemTable | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiNewPack ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_PACKAGES *PackageList, | |
| OUT EFI_HII_HANDLE *Handle | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiRemovePack ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiFindHandles ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN OUT UINT16 *HandleBufferLength, | |
| OUT EFI_HII_HANDLE *Handle | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiExportDatabase ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| IN OUT UINTN *BufferSize, | |
| OUT VOID *Buffer | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetGlyph ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN CHAR16 *Source, | |
| IN OUT UINT16 *Index, | |
| OUT UINT8 **GlyphBuffer, | |
| OUT UINT16 *BitWidth, | |
| IN OUT UINT32 *InternalStatus | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGlyphToBlt ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN UINT8 *GlyphBuffer, | |
| IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground, | |
| IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background, | |
| IN UINTN Count, | |
| IN UINTN Width, | |
| IN UINTN Height, | |
| IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiNewString ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN CHAR16 *Language, | |
| IN EFI_HII_HANDLE Handle, | |
| IN OUT STRING_REF *Reference, | |
| IN CHAR16 *NewString | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetString ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| IN STRING_REF Token, | |
| IN BOOLEAN Raw, | |
| IN CHAR16 *LanguageString, | |
| IN OUT UINTN *BufferLength, | |
| OUT EFI_STRING StringBuffer | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiResetStrings ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiTestString ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN CHAR16 *StringToTest, | |
| IN OUT UINT32 *FirstMissing, | |
| OUT UINT32 *GlyphBufferSize | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetPrimaryLanguages ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| OUT EFI_STRING *LanguageString | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetSecondaryLanguages ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| IN CHAR16 *PrimaryLanguage, | |
| OUT EFI_STRING *LanguageString | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetLine ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| IN STRING_REF Token, | |
| IN OUT UINT16 *Index, | |
| IN UINT16 LineWidth, | |
| IN CHAR16 *LanguageString, | |
| IN OUT UINT16 *BufferLength, | |
| OUT EFI_STRING StringBuffer | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetForms ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| IN EFI_FORM_ID FormId, | |
| IN OUT UINTN *BufferLength, | |
| OUT UINT8 *Buffer | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetDefaultImage ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| IN UINTN DefaultMask, | |
| OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiUpdateForm ( | |
| IN EFI_HII_PROTOCOL *This, | |
| IN EFI_HII_HANDLE Handle, | |
| IN EFI_FORM_LABEL Label, | |
| IN BOOLEAN AddData, | |
| IN EFI_HII_UPDATE_DATA *Data | |
| ) | |
| ; | |
| EFI_STATUS | |
| EFIAPI | |
| HiiGetKeyboardLayout ( | |
| IN EFI_HII_PROTOCOL *This, | |
| OUT UINT16 *DescriptorCount, | |
| OUT EFI_KEY_DESCRIPTOR *Descriptor | |
| ) | |
| ; | |
| EFI_STATUS | |
| HiiCompareLanguage ( | |
| IN CHAR16 *LanguageStringLocation, | |
| IN CHAR16 *Language | |
| ) | |
| ; | |
| #endif |