summaryrefslogtreecommitdiff
path: root/EDK/MiniSetup/uefi2.1/TseUefiHii.h
diff options
context:
space:
mode:
Diffstat (limited to 'EDK/MiniSetup/uefi2.1/TseUefiHii.h')
-rw-r--r--EDK/MiniSetup/uefi2.1/TseUefiHii.h951
1 files changed, 951 insertions, 0 deletions
diff --git a/EDK/MiniSetup/uefi2.1/TseUefiHii.h b/EDK/MiniSetup/uefi2.1/TseUefiHii.h
new file mode 100644
index 0000000..6bbc3a8
--- /dev/null
+++ b/EDK/MiniSetup/uefi2.1/TseUefiHii.h
@@ -0,0 +1,951 @@
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+//** **//
+//** (C)Copyright 2013, American Megatrends, Inc. **//
+//** **//
+//** All Rights Reserved. **//
+//** **//
+//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 **//
+//** **//
+//** Phone (770)-246-8600 **//
+//** **//
+//*****************************************************************//
+//*****************************************************************//
+//*****************************************************************//
+// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Uefi2.1/TseUefiHii.h $
+//
+// $Author: Arunsb $
+//
+// $Revision: 39 $
+//
+// $Date: 2/11/14 8:55p $
+//
+//*****************************************************************//
+//*****************************************************************//
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Uefi2.1/TseUefiHii.h $
+//
+// 39 2/11/14 8:55p Arunsb
+// EFI_IFR_EQ_ID_LIST_OP entry added
+//
+// 38 12/04/13 2:57a Premkumara
+// [TAG] EIP139099
+// [Category] New Feature
+// [Description] Supress formset other than
+// EFI_HII_PLATFORM_SETUP_FORMSET_GUID and
+// EFI_HII_DRIVER_HEALTH_FORMSET_GUID through elink based on token
+// [Files] AMITSE.sdl, AMITSE.mak, CommonOem.c, Hii.c, Parse.c,
+// TseUefiHii.h
+//
+// 37 6/10/13 12:23p Arunsb
+// EIP122907 GetDefaultValue function argument added for
+// EFI_IFR_TYPE_OTHER support.
+//
+// 36 5/22/13 11:12a Arunsb
+// Build error rectified
+//
+// 35 4/18/13 9:37a Arunsb
+// Opcodes added to avoid build error in 2.0 build.
+//
+// 34 4/17/13 2:12p Arunsb
+// [TAG] EIP109812, 107774
+// [Category] Improvement
+// [Description] Provide support for EFI_IFR_TYPE_REF and EFI_IFR_REF5
+// [Files] Hii.c, HiiCallback.c, Parse.c and TseUefiHii.h
+//
+// 33 4/16/13 9:49a Arunsb
+// Missed out Hii headers and structures added.
+//
+// 32 3/29/13 12:26p Premkumara
+// [TAG] EIP97611
+// [Category] New Feature
+// [Description] PrintScreen Support in TSE
+// [Files] AMITSE.sdl, CommonHelper.c, HotKeyBin.h, AddBootOption.c,
+// Page.c, TseUefiHii.h, Uefi21Wapper.c
+//
+// 31 3/29/13 8:21a Arunsb
+// [TAG] EIP111061
+// [Category] Improvement
+// [Description] Provide support for efivarstore opcode
+// [Files] Parse.c and tseuefihii.h
+//
+// 30 2/25/13 10:57a Blaines
+// [TAG] - EIP 104273
+// [Category] - Action Item
+// [Description] - Provide ability to dump the Hii Pack from the Setup as
+// part TSE debug Infrastructure. It should dump the Pack updates on Hii
+// notification also.
+// So it can be used to debug the issue.
+// [Files] - ForBrowser2.c, Hii.c, HiiNotificationHandler.c,
+// UefiWapper.c, TseUefiHii.h
+//
+// 29 10/18/12 6:04a Arunsb
+// Updated for 2.16.1235 QA submission
+//
+// 10 10/10/12 12:41p Arunsb
+// Synched the source for v2.16.1232, backup with Aptio
+//
+// 27 2/02/12 3:05a Premkumara
+// [TAG] EIP75066
+// [Category] Improvement
+// [Description] Support loading defaults for Ordelist controls
+// [Files] Ordlistbox.c, Uefi21Wapper.c, CtrlCond.c, HiiCallback.c,
+// Parse.c, Uefi20Wapper.c, TseUefihiil.h
+//
+// 26 12/07/11 2:50p Arunsb
+// [TAG] EIP75588
+// [Category] New Feature
+// [Description] Support for queuing UpdatePack notifications
+// [Files] frame.c, page.c, formbrowser2.c, hii.c, hiicallback.c,
+// hiinotificationhandler.c, tseuefihii.h and uefi21wapper.c
+//
+// 25 12/01/11 7:27a Arunsb
+// UefiGetValidOptionSize declaration removed. To resolce build error in
+// 2.0
+//
+// 24 11/28/11 5:13a Rajashakerg
+// [TAG] EIP73231
+// [Category] Improvement
+// [Description] Callback handling :For interactive controls updating
+// the currnet vaule in cache even when hii callback returns error status.
+// [Files] Date.c, SubMenu.c, ordlistbox.c, time.c, UefiAction.c,
+// hii.h, uefi20Wapper.c, HiiCallback.c, TseUefiHii.h, Uefi21Wapper.c
+//
+// 23 11/23/11 5:17a Rajashakerg
+// [TAG] EIP75473
+// [Category] Improvement
+// [Description] System Time is not updated every second
+// [Files] variable.h, variable.c, FormBrowser2.c, TseUefiHii.h,
+// Uefi21Wapper.c, hii.h, uefi20Wapper.c
+//
+// 22 11/14/11 2:43p Blaines
+// [TAG] - EIP 75481
+// [Category]- Function Request
+// [Synopsis]- TSE debug print infrastructure.
+// [Description]- Add TSE debug print info for basic functions such as
+// Hiiparsing, HiiNotifications, HiiCallbacks. Variables, and Ifrforms
+// data.
+// [Files]
+// AMITSE.sdl, AmiTSEStr.uni, CommonHelper.c, commonoem.c, FakeTokens.c
+// Globals.c, Minisetup.cif, Minisetup.h, print.c, FormBrowser2.c, Hii.c,
+// HiiCallback.c, HiiNotificationHandler.c, Parse.c, TseUefiHii.h,
+// Uefi21Wrapper.c, setupdbg.h
+//
+// 21 11/03/11 4:44a Premkumara
+// [TAG] EIP70966
+// [Category] Improvement
+// [Description] Hii orderlist item can't update priority from value in
+// Setup menu for both enable and disable TSE_MULTILINE_CONTROLS token
+// [Files] Ordlistbox.c, ordlistbox.h, TseUefiHii.h, Uefi21Wrapper.c
+//
+// 20 10/20/11 12:25p Blaines
+// Correct the comments.
+//
+// 19 10/20/11 11:48a Blaines
+// [TAG] EIP 72333
+// [Category] Sighting
+// [Symptom] Some SAS controller card HII Screen Titles are displaying
+// the wrong information
+// [RootCause] Menu tab always displays the root page title when
+// navigating submenu pages. TSE did not support the display of Formset
+// Help.
+//
+// [Solution] Display Formset Help for Dynamic page, Display page title of
+// submenu pages in the menu tab.
+//
+// [Files Changed]
+// - AMITSE.sdl, CommonHelper.c, special.c, Menu.c, minisetupext.h,
+// TseUefiHii.h, Uefi21Wapper.c
+//
+// 18 9/29/11 7:02p Blaines
+// [TAG] - EIP 66860
+// [Category]- Function Request
+// [Synopsis]- AmiPostManager interface for text entry.
+// [Files] - LogoLib.h, AMIPostMgr.h, protocol.c, protocol.h,
+// TseAdvanced.c, TseLitehelper.c, TseUefiHii.h, Uefi21Wapper.c
+//
+// 17 6/20/11 12:20p Rajashakerg
+// [TAG] EIP57402
+// [Category] New Feature
+// [Description] Support for EFI_IFR_DEFAULT_2 opcode.
+// [Files] Hii.c, TseUefiHii.h
+//
+// 16 4/04/11 10:34a Arunsb
+// Added macros compatible UEFI 2.3
+//
+// 15 3/28/11 9:44p Premkumara
+// [TAG] EIP52562
+// [Category] Improvement
+// [Description] Need to have the Fixed Limit in AMITSE module for
+// Controls, Pages and Variable etc.
+//
+// [Files] TSEUefiiHii.h, Parse.c, Hii.c, hii.c
+//
+// 14 3/28/11 5:10p Rajashakerg
+// [TAG] EIP56413
+// [Category] Improvement
+// [Description] TSE: Support for EFI_IFR_RESET_BUTTON opcode
+// [Files] ezport.c, minisetupext.h, ResetButton.c, ResetButton.h,
+// Hii.c, TseUefiHii.h, Uefi21Wapper.c, hii.h, Uefi20Wapper.c
+//
+// 13 3/21/11 1:00a Rajashakerg
+// [TAG] EIP53480
+// [Category] Improvement
+// [Description] FormBrowser extended actions support
+// [Files] callback.c, minisetupext.c, minisetupext.h, numeric.c,
+// PopupSel.c, PopupString.c, SubMenu.c, TseLiteCommon.c, UefiAction.c,
+// Hiicallback.c, TseUefiHii.h, Uefi21Wapper.c, HiiCallback.c
+//
+// 12 3/18/11 2:52a Rajashakerg
+// [TAG] EIP56124
+// [Category] New Feature
+// [Description] TSE: Support for EFI_IFR_DEFAULT opcode
+// [Files] Parse.c, TseUefiHii.h
+//
+// 11 3/09/11 7:26p Madhans
+// [TAG] EIPEIP48615
+// [Category] Improvement
+// [Description] To support UEFI 2.1 RefreshOp. Based in Refersh Rate
+// Controls are refershed periodically.
+// [Files] minisetupext.h
+// SubMenu.h
+// SubMenu.c
+// Memo.c
+// Memo.h
+// numeric.c
+// numeric.h
+// time.c
+// Date.c
+// PopupSel.c
+// PopupSel.h
+// PopupString.c
+// PopupString.h
+// ordlistbox.c
+// minisetupext.c
+// UefiAction.c
+// hii.h
+// Uefi20wapper.c
+// hiicallback.c
+// Parse.c
+// tseuefihii.h
+// Uefi21wapper.c
+//
+// 10 2/01/11 7:38p Madhans
+// [TAG] - EIP 50737
+// [Category]- Defect
+// [Severity]- Mordarate
+// [Symptom] - Suppressing the Interactive control does not work
+// correctly.
+// [RootCause] - The control conditional pointer if not set correctly.
+// [Solution]- To fix the Control condition pointer. And identify the
+// suppress if related to UEFI action control
+// [Files] - UefiAction.c TseLiteHelper.c hii.h uefi20wapper.c
+// uefi21wapper.c
+//
+// 9 12/28/10 12:31p Madhans
+// To update the Tag of EIp 46998. UEFI option ROM menus disappear in
+// Setup when certain options are selected.
+// No file changed but Comment updated right
+//
+// 8 12/02/10 6:09p Madhans
+// [TAG] - EIP49562
+// [Category]- Improvment.
+// [Severity]- Mordarate
+// [Symptom]- Need to support UEFI 2.2 requirements related to Calling
+// Formcallback with
+// EFI_BROWSER_ACTION_CHANGING and EFI_BROWSER_ACTION_CHANGED action.
+// [Solution]- Implemented the support.
+// [Files] - submenu.c, numeric.c, popupsel.c, popupString.c,
+// uefi20\hii.h, uefi20\uefi20wrapper.c
+// uefi21\hiicalback.c, uefi21\tseuefihii.h
+//
+// 7 10/27/10 4:25p Madhans
+// [TAG] EIP46998
+// [Category] Defect
+// [Symptom] Some user action on PCIx with UEFI Hii Pages causes Setup
+// screen pages and menu disappers.
+// [RootCause] UEFI 2.1 parsing code is not handling the Removepack and
+// New pack sequance properly. Normally UpdatePack
+// does the removepack and AddPack.
+// [Solution] UEFI 2.1 parsing code fixed to handle above case correctly.
+// [Files] hii.c HiiNotificationHandler.c Parse.c TseUefiHii.h
+// uefi21wapper.c
+//
+// 6 9/16/10 8:38p Madhans
+// Update for TSE 2.10. Refer Changelog.log for more details.
+//
+// 6 7/07/10 7:45p Madhans
+// Changes to Support Adding Conditions to Suppress or Grayout the Special
+// controls.
+//
+// 5 6/14/10 7:14p Madhans
+// Dynamic parsing support
+//
+// 4 3/11/10 5:44p Madhans
+// Coding Standards Update
+//
+// 3 2/26/10 7:01p Madhans
+// To build with EDK
+//
+// 1 11/19/09 5:26p Presannar
+//
+// 2 8/11/09 3:00p Presannar
+// Added Fn signature FixSetupData, HandleNewIFRPack, HandleRemoveIFRPack,
+// HandleAddIFRPack, GetFormByFormID, HiiGetForm, GetDefaultValue,
+// IFRChangeHandler, RegisterFormNotification, UnRegisterFormNotification
+// and VarUpdateFormSetVariable
+//
+// 1 7/24/09 6:54p Presannar
+//
+// 2 4/14/09 12:39p Presannar
+// Added Fn prototype FormCallBack, CallFormCallBack and
+// SpecialActionCallBack
+//
+// 1 3/31/09 4:15p Madhans
+//
+// 2 1/29/09 6:09p Presannar
+// Added Function Prototypes for GetControlConditionVariable and
+// HiiRemoveString
+//
+// 1 1/09/09 2:38p Presannar
+// UEFI 2.1 Hii Related Code - Initial Drop
+//
+// 30 9/17/08 7:44p Madhans
+// For Boot only Driver file split changes.
+//
+// 29 3/19/08 5:39p Madhans
+// Get Max line length of multiline string support for Message box
+//
+// 28 10/24/07 11:23a Arunkumars
+// - Moved IDE security code to binary
+// - Fixed build errors under UGA draw support
+// - Added EFI key password support
+// - Added modifier hot key support
+// - Added popup support in From browser protocol
+//
+// 27 7/18/07 8:04a Arunkumars
+// added hook for password encode and colour
+//
+// 26 7/09/07 1:27p Arunkumars
+// - Added elink hooks for Logo, Password management and Control Keys
+// customizations
+//
+// 25 5/22/07 9:21a Arunkumars
+// Added support to dynamically parse forms that have been updated using
+// UpdateForm; under SDL token for Run time Hii support
+//
+// 24 3/12/07 7:25p Arunkumars
+// Added support to store EFI_KEYs for password.
+//
+// 23 8/14/06 12:38p Arunkumars
+// Wide glyph support added
+//
+// 22 7/06/06 6:37p Arunkumars
+// Include tiano.h instead of efi.h
+//
+// 21 6/15/06 9:34a Arunkumars
+// Support to show new pages added at runtime
+//
+// 20 6/06/06 11:19a Madhans
+// HII_VERSION Sdl Added. the token should be
+// 0 - hii version older then aptio 3 version
+// 1 - Aptio 3, 4 and 4.5 and Tiano 8
+// 2 - tiano 8.5 and later
+//
+// 19 5/26/06 12:23p Madhans
+// HiiGetLinkIndex modified to check for Class, subclass and guid though
+// page variable.
+//
+// 18 10/04/05 11:29a Stefanor
+// add string & language
+// started fix for fixup data on mulitple reentry
+// started dynamic IFR support
+//
+// 17 9/02/05 1:24p Jerryp
+// Added skeleton for runtime IFR processing
+//
+// 16 8/10/05 5:10p Franklynd
+// Fixing callback protocol issue.
+//
+// 15 8/10/05 4:01p Franklynd
+// Fixes for ading and getting new strings from HII. using a specific
+// language instead of all available languages.
+//
+// 14 8/05/05 4:47p Jerryp
+// Added form browser callback when exploding a multiple variable
+// Updated to version 1.12.1027
+//
+// 13 7/22/05 11:02a Jerryp
+// Added code to OPTIONALLY use HII->GetDefaultImage instead of BCP
+// compatible defaults
+//
+// 12 7/19/05 3:45p Jerryp
+// Added function to change string for all languages or individual
+// languages
+//
+// 11 5/19/05 10:29a Jerryp
+// Added new HiiChangeString function
+//
+// 10 5/01/05 11:23a Jerryp
+// Modifed HiiGetFormSet to accept a parameter
+//
+// 9 4/29/05 1:11p Franklynd
+// Adding support for formcallback protocol to update nvram setup
+// variables
+//
+// 8 2/07/05 2:32p Jerryp
+// Removed HPK data
+//
+// 7 2/06/05 11:15a Jerryp
+// Full hotkey support
+//
+// 6 2/04/05 10:30a Jerryp
+// Added ability to get strings in ANY language
+//
+// 5 2/02/05 4:20p Jerryp
+// **WORK IN PROGRESS **
+// Latest changes for Label/Index.
+// Not completely tested
+//
+// 4 1/31/05 2:32p Jerryp
+// Added HiiGetStringLength function
+//
+// 3 1/14/05 7:09p Jerryp
+// First integration code with boot to shell.
+// Still a bug in booting to shell from FV
+//
+// 2 1/10/05 5:16p Jerryp
+// Finished sync with HII
+//
+// 1 1/07/05 4:30p Jerryp
+// Initial checkin
+// useful debugging functions and HII header
+//
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TseUefiHii.h
+//
+// Description:
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+
+//---------------------------------------------------------------------------
+#ifndef _AMI_UEFI_HII_H_ // DO NOT CHANGE THIS TO _HII_H_ !! That is used by the HII Protocol header
+#define _AMI_UEFI_HII_H_
+//---------------------------------------------------------------------------
+
+//---------------------------------------------------------------------------
+#include "Minisetup.h"
+#include "FormBrowser2.h"
+#include EFI_PROTOCOL_DEFINITION(HiiDatabase)
+#include EFI_PROTOCOL_DEFINITION(HiiFont)
+#include EFI_PROTOCOL_DEFINITION(HiiString)
+#include EFI_PROTOCOL_DEFINITION(HiiConfigRouting)
+#include EFI_PROTOCOL_DEFINITION(HiiConfigAccess)
+//---------------------------------------------------------------------------
+
+//---------------------------------------------------------------------------
+#if TSE_USE_EDK_LIBRARY
+#include "TianoHii.h"
+#else
+#include "UefiTianoHii.h" // Internal file used then EDKsupport is OFF
+#endif
+//---------------------------------------------------------------------------
+
+//---------------------------------------------------------------------------
+#define AMI_TIME_HOUR 1
+#define AMI_TIME_MIN 2
+#define AMI_TIME_SEC 3
+#define AMI_DATE_YEAR 4
+#define AMI_DATE_MONTH 5
+#define AMI_DATE_DAY 6
+//---------------------------------------------------------------------------
+#define TSE_REFRESH_GRANURALITY 5
+//---------------------------------------------------------------------------
+// Maximum supported page, variables, controls.
+#define MAX_PAGE 246
+#define MAX_CONTROLS 0xFFFE
+#define MAX_VARIABLE 300
+
+#ifndef _EFI_IFR_TYPE_BUFFER
+#define EFI_IFR_TYPE_BUFFER 0x0B
+#endif
+//---------------------------------------------------------------------------
+
+//---------------------------------------------------------------------------
+extern EFI_HII_DATABASE_PROTOCOL *gHiiDatabase;
+extern EFI_HII_FONT_PROTOCOL *gHiiFont;
+extern EFI_HII_STRING_PROTOCOL *gHiiString;
+extern EFI_HII_CONFIG_ROUTING_PROTOCOL *gHiiConfigRouting;
+
+extern /*EFI_HII_HANDLE*/VOID* gHiiHandle;
+extern UINTN gTitle;
+extern UINTN gHelp;
+extern UINTN gSubTitle;
+extern UINTN gHelpTitle;
+extern UINTN gNavStrings;
+extern BOOLEAN gIFRChangeNotify;
+extern EFI_HII_HANDLE gRemovedHandle;
+//---------------------------------------------------------------------------
+
+
+//<AMI_SHDR_START>
+//----------------------------------------------------------------------------
+// Name: EFI_HII_VALUE
+//
+// Description:
+//
+// Fields: Name Type Description
+//----------------------------------------------------------------------------
+// Type UINT8
+// Value EFI_IFR_TYPE_VALUE
+//----------------------------------------------------------------------------
+//<AMI_SHDR_END>
+typedef struct _EFI_HII_VALUE
+{
+ UINT8 Type;
+ EFI_IFR_TYPE_VALUE Value;
+}EFI_HII_VALUE;
+
+
+//<AMI_SHDR_START>
+//----------------------------------------------------------------------------
+// Name: SETUP_LINK
+//
+// Description:
+//
+// Fields: Name Type Description
+//----------------------------------------------------------------------------
+// FormSet UINT8*
+// Handle VOID*
+// ClassID UINT16
+// FormSetLength UINTN
+// Added UINT8
+// SubClassID UINT16
+// ClassGuidCount UINT16
+// ClassGuid EFI_GUID*
+//----------------------------------------------------------------------------
+//<AMI_SHDR_END>
+typedef struct
+{
+ UINT8* FormSet;
+ VOID* Handle;
+ UINT16 ClassID;
+ UINTN FormSetLength;
+ UINT8 Added; //To know if this page was present in the tool data
+ UINT16 SubClassID;
+ UINT16 ClassGuidCount;
+ EFI_GUID* ClassGuid;
+}SETUP_LINK;
+
+//EIP111061
+typedef struct AMI_EFI_IFR_VARSTORE_EFI {
+ EFI_IFR_OP_HEADER Header;
+ EFI_VARSTORE_ID VarStoreId;
+ EFI_GUID Guid;
+ UINT32 Attributes;
+ UINT16 Size;
+ UINT8 Name[1];
+} AMI_EFI_IFR_VARSTORE_EFI; //as per UEFI spec 2.3.1
+
+//---------------------------------------------------------------------------
+EFI_IFR_FORM_SET *HiiGetFormSetFromHandle( /*EFI_HII_HANDLE*/VOID* handle );
+EFI_IFR_FORM_SET *HiiGetFormSet( UINTN index );
+//---------------------------------------------------------------------------
+
+//---------------------------------------------------------------------------
+extern VOID RTIfrProcessAddVarListAndPageIDListWrapper(VOID);
+extern VOID RTIfrProcessExitWrapper(VOID);
+extern VOID RTIfrProcessRunTimeFormsWrapper(EFI_IFR_REF **ref);
+extern BOOLEAN RTIfrUpdateVariableInfoWrapper(UINT32 ControlVariable, EFI_HANDLE Handle);
+extern BOOLEAN RTIfrProcessFormIfUpdatedWrapper(UINT16 link);
+extern INTN EfiStrnCmp(IN CHAR16 *String, IN CHAR16 *String2, IN UINTN Length);
+extern EFI_STATUS GetHexStringAsBuffer(UINT8 **Buffer, CHAR16 *HexStringBuffer);
+extern EFI_STATUS BufferToHexString(IN OUT CHAR16 *Str, IN UINT8 *Buffer, IN UINTN BufferSize);
+extern EFI_STATUS UnicodeToConfigString(IN OUT CHAR16 *ConfigString, IN OUT UINTN *StrBufferLen, IN CHAR16 *UnicodeString);
+//---------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// Hii.c
+// ----------------------------------------------------------------------------
+EFI_STATUS HiiExit(VOID);
+EFI_STATUS HiiFixupData();
+EFI_STATUS HiiLoadDefaults( VOID **varList, UINT32 Mask );
+EFI_STATUS FixSetupData();
+EFI_STATUS HandleNewIFRPack(EFI_HANDLE Handle, UINT8 *PackData); //EIP 75588
+EFI_STATUS HandleRemoveIFRPack(EFI_HANDLE Handle);
+EFI_STATUS HandleAddIFRPack(EFI_HANDLE Handle, UINT8 *PackData);
+VOID* HiiFindHandle( EFI_GUID *guid, UINT16 *index );
+UINT16 HiiChangeString(VOID* handle, UINT16 token, CHAR16 *string);
+
+VOID *GetFormByFormID(EFI_HII_PACKAGE_HEADER *IFRData, UINT16 FormID, UINTN *Length);
+VOID *HiiGetForm( EFI_HII_HANDLE Handle, UINT16 form, UINTN *Length );
+
+PAGE_ID_INFO *GetPageIdInfoByIndex(PAGE_ID_INFO *PageIdInfo, UINT16 PgIndex);
+//EIP:56413 Function to update the Resetbutton Defaults to the control
+EFI_STATUS UefiupdateResetButtonDefault(CONTROL_INFO ControlData, UINT16 DefaultId);
+ //EIP: 57402 Evaluating the Control Default
+UINT16 EvaluateControlDefault(CONTROL_INFO *CtrlInfo, UINT64 *Defaults);
+
+// ----------------------------------------------------------------------------
+// Uefi21Wrapper.c
+// ----------------------------------------------------------------------------
+EFI_STATUS GetConfigHeader(VARIABLE_INFO *VariableInfo, EFI_STRING *Configuration, UINTN *Length);
+EFI_STATUS ProcessActionQuestionConfiguration(CONTROL_INFO *control);
+EFI_STATUS UefiGetOneOfOptions(CONTROL_INFO *CtrlInfo, VOID **Handle, UINT16 **OptionPtrTokens,
+ UINT64 **ValuePtrTokens, UINT16 *ItemCount,
+ UINT16 *Interactive, UINT16 *CallBackKey);
+VOID UefiGetValidOptionType(CONTROL_INFO *CtrlInfo, UINTN *Type, UINT32 *SizeOfData);
+EFI_STATUS UefiVarGetNvram(VARIABLE_INFO *VariableInfo, VOID **Buffer, UINTN Offset, UINTN Size);
+EFI_STATUS UefiVarSetNvram(VARIABLE_INFO *VariableInfo, VOID *Buffer, UINTN Offset, UINTN Size);
+
+BOOLEAN IsPasswordEncodeEnabled(VOID *PwDataPtr);
+BOOLEAN UefiIsEfiVariable(UINT32 variable, VARIABLE_INFO *varInfo);
+BOOLEAN UefiIsInteractive(CONTROL_INFO *ControlData);
+
+UINT8 UefiGetBaseValue(VOID *IfrPtr);
+UINT8 UefiGetIfrLength(VOID *IfrPtr);
+UINT8 UefiGetMaxEntries(VOID *IfrPtr);
+
+UINT16 UefiGetControlKey(CONTROL_INFO *ControlData);
+UINT16 UefiGetHelpField(VOID *IfrPtr);
+UINT16 UefiGetPromptField(VOID *IfrPtr);
+UINT16 UefiGetQuestionOffset(VOID *IfrPtr);
+UINT16 UefiGetTextField(VOID *IfrPtr);
+UINT16 UefiGetTextTwoField(VOID *IfrPtr);
+UINT16 UefiGetTitleField(VOID *IfrPtr);
+UINT16 UefiGetWidth(VOID *IfrPtr);
+UINT8 UefiGetFlagsField(VOID *IfrPtr);
+
+UINT16 UefiTseLiteGetAmiCallbackIndex(VOID * Ptr,VOID * CtrlPtr);
+UINT16 UefiTseLiteGetBootOverRideIndex(VOID *IfrPtr);
+
+UINTN HiiGetDefaultMask(VOID);
+UINTN HiiGetManufactuingMask(VOID);
+UINTN HiiMyGetMultiLineStringLength( /*EFI_HII_HANDLE*/VOID* handle, UINT16 token );
+UINTN HiiMyGetStringLength( /*EFI_HII_HANDLE*/VOID* handle, UINT16 token );
+
+UINT64 UefiGetMaxValue(VOID *IfrPtr);
+UINT64 UefiGetMinValue(VOID *IfrPtr);
+UINT64 UefiGetStepValue(VOID *IfrPtr);
+
+VOID EfiLibSafeFreePool(IN VOID *Buffer);
+VOID HiiRemoveString(EFI_HII_HANDLE Handle, UINT16 Token);
+VOID UefiGetDateTimeDetails(VOID *IfrPtr,UINT8 Type,UINT16 * Help,UINT16 * Min,UINT16 * Max);
+VOID UefiSetPromptField(VOID *IfrPtr,UINT16 Token);
+VOID UefiSetHelpField(VOID *IfrPtr,UINT16 Token);
+VOID UefiSetSubTitleField(VOID *IfrPtr,UINT16 Token);
+
+VOID *UefiCreateSubTitleTemplate(UINT16 Token);
+VOID *UefiCreateStringTemplate(UINT16 Token);
+EFI_STATUS UefiRefershQuestionValueNvRAM(CONTROL_INFO *ControlData);
+UINT16 UefiGetResetButtonDefaultid(VOID *IfrPtr);//EIP:56413 Function decleration to get the Default ID
+BOOLEAN CheckTimeFlags(UINT8 Flags);
+BOOLEAN CheckDateFlags(UINT8 Flags);
+
+// ----------------------------------------------------------------------------
+// TSE Advanced
+// ----------------------------------------------------------------------------
+VOID UefiAddEndOp(VOID *IfrPtr);
+VOID BBSUpdateControlOffset(CONTROL_INFO *control);
+VOID UefiCreateDynamicControlCondition(CONTROL_INFO *control,UINT16 VarId, UINT16 PrevControlQuestionID,UINT16 Value);
+VOID UefiSetEqIDValue(VOID *IfrPtr, UINT16 Value);
+VOID UefiSetEqIDQuestionID(VOID *IfrPtr, UINT16 Value);
+VOID UefiSetOneOfOption(VOID *IfrPtr, UINT64 Value, UINT32 Size, UINT8 Flag, UINT16 Option);
+VOID UefiSetWidth(VOID *IfrPtr,UINT8 Width);
+VOID UefiSpecialGuidCallback(VOID * HiiHandle, UINT16 Key, EFI_GUID *pGUID);
+VOID UefiUpdateControlVarOffset(VOID *IfrPtr, UINT16 Value);
+
+VOID* UefiCreateOneOfWithOptionsTemplate(UINTN OptionCount, CONTROL_INFO *CtrlInfo);
+VOID* UefiGetSpecialEqIDIfrPtr(CONTROL_INFO *ControlInfo, UINT32 * Variable, GUID_INFO **GuidInfo);
+
+BOOLEAN UefiIsOneOfControl(VOID *IfrPtr);
+
+UINT16 UefiGetEqIDQuestionID(VOID *IfrPtr);
+UINT16 UefiGetQuestionID(CONTROL_INFO *Control);
+UINT16 UefiGetSpecialEqIDValue(CONTROL_INFO *ControlInfo, GUID_INFO **GuidInfo);
+
+UINT32 GetControlConditionVarId(CONTROL_INFO *controlInfo);
+UINTN GetControlDataLength(CONTROL_INFO *controlInfo);
+
+// ----------------------------------------------------------------------------
+// Expression.c
+// ----------------------------------------------------------------------------
+EFI_STATUS EvaluateExpression(IN CONTROL_INFO *ControlInfo,
+ IN OUT EFI_HII_VALUE *ExpressionResult,
+ OUT UINTN *Offset);
+VOID ResetScopeStack(VOID);
+EFI_STATUS PushScope(IN UINT8 Operand);
+EFI_STATUS PopScope(OUT UINT8 *Operand);
+BOOLEAN IsScopeStackEmpty();
+UINTN _SkipExpression(UINT8 *ControlCondPtr);
+// ----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// Parse.c
+// ----------------------------------------------------------------------------
+EFI_STATUS AddPageIdToList(PAGE_ID_INFO *NewPageIdInfo);
+EFI_STATUS AddPageToList(PAGE_INFO *NewPageInfo, UINT32 PageSize);
+EFI_STATUS AddVariableToList(VARIABLE_INFO *NewVariableInfo);
+EFI_STATUS CreatePage(PAGE_INFO **PageInfo, UINT32 *AllocatedSize, UINT32 *Offset, VOID *Buff, UINT32 BuffSize);
+EFI_STATUS ParseForm(SETUP_LINK *Setup_Link);
+UINT32 AddControlToList(CONTROL_INFO *ControlInfo, UINT32 ControlSize);
+VOID GetDefaultValue(UINT8 Type, EFI_IFR_TYPE_VALUE *Value, UINT16 *Size, VOID *DefValue, UINT8 *TempData);
+// ----------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// HiiCallBack.c
+// ----------------------------------------------------------------------------
+#if TSE_DEBUG_MESSAGES
+#define SETUPDATAFILENAME L"SETUPDATA_0x%x_%03d.hpk"
+EFI_STATUS WritePackToFile(CHAR16 *filenameFormat, EFI_HANDLE Handle, UINT8 *PackData, UINTN length);
+EFI_STATUS WriteDataToFile(CHAR16 *filename, VOID *Data, UINTN length, UINT32 index);
+VOID *HiiGetPackList( EFI_HII_HANDLE Handle, UINT16 form, UINTN *Length );
+VOID ProcessPackToFile(EFI_HII_DATABASE_NOTIFY_TYPE NotifyType, EFI_HANDLE Handle);
+VOID DebugShowBufferContent(UINTN bufSize, VOID *buffer) ;
+#endif //End of TSE_DEBUG_MESSAGES
+EFI_STATUS FormCallBack(EFI_HII_HANDLE Handle, EFI_QUESTION_ID QuestionID, UINT8 Type, EFI_IFR_TYPE_VALUE *Value,EFI_BROWSER_ACTION action);
+EFI_STATUS CallFormCallBack(CONTROL_INFO * ControlData, UINT16 Key ,UINT8 Flags,UINTN Action);//EIP-53480: Implementation of FormBrowser with actions support
+EFI_STATUS SpecialActionCallBack(CONTROL_INFO * ControlData, UINT16 Key);
+EFI_STATUS CallTextCallBack(TEXT_DATA *text, ACTION_DATA *Data);
+VOID UefiPreControlUpdate(CONTROL_INFO *ControlData);
+EFI_STATUS UefiIsProceedWithPageChange(EFI_STATUS Status);
+VOID UEFICallSetupFormCallBack(UINTN Action );//EIP-53480: Decleration of the Wrapper function which calls the CallFormCallBack()
+EFI_BROWSER_ACTION UefiGetActionWapper(UINTN Action);//EIP-53480 The Wrapper function to get the actual action for the driver
+// ----------------------------------------------------------------------------
+
+//HiiNotificationHandler.c
+// ----------------------------------------------------------------------------
+EFI_STATUS
+IFRChangeNotifyFn (IN UINT8 PackageType, IN CONST EFI_GUID *PackageGuid,
+ IN CONST EFI_HII_PACKAGE_HEADER *Package, IN EFI_HII_HANDLE Handle,
+ IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType);
+EFI_STATUS RegisterFormNotification(EFI_HII_DATABASE_NOTIFY PackageNotifyFn,
+ EFI_HII_DATABASE_NOTIFY_TYPE NotifyType,
+ EFI_HANDLE *NotifyHandle);
+EFI_STATUS UnRegisterFormNotification(EFI_HANDLE NotifyHandle);
+VOID VarUpdateFormSetVariable();
+EFI_STATUS _DisplayErrorMessage(); // EIP : 52562 To display Error message when TSE limits exceeds
+// ----------------------------------------------------------------------------
+
+#define AMI_FLAG_MANUFACTURING EFI_IFR_OPTION_DEFAULT_MFG
+#define AMI_FLAG_DEFAULT EFI_IFR_OPTION_DEFAULT
+EFI_STATUS GetBlockName(EFI_STRING *Configuration, UINTN *Length, UINTN Offset, UINTN Size);
+
+// ----------------------------------------------------------------------------
+// To Be removed
+#define EfiCopyMem(_Destination, _Source, _Length) gBS->CopyMem ((_Destination), (_Source), (_Length))
+#define EfiZeroMem(_Destination, _Length) gBS->SetMem ((_Destination), (_Length), 0)
+
+//EIP:56124 Defining the Default value linked list
+typedef struct _DEFAULT_VALUE
+{
+ UINT16 DefaultId;
+ UINT64 Value;
+ struct _DEFAULT_VALUE *Next;
+}DEFAULT_VALUE;
+//EIP:56124 END
+
+//Added for UEFI spec. 2.3 compatibility- Start
+#ifndef EFI_BROWSER_ACTION_RETRIEVE
+#define EFI_BROWSER_ACTION_RETRIEVE 2
+#endif
+#ifndef EFI_BROWSER_ACTION_FORM_OPEN
+#define EFI_BROWSER_ACTION_FORM_OPEN 3
+#endif
+#ifndef EFI_BROWSER_ACTION_FORM_CLOSE
+#define EFI_BROWSER_ACTION_FORM_CLOSE 4
+#endif
+
+#pragma pack (1)
+typedef struct _AMI_EFI_IFR_REFRESH_ID {
+ EFI_IFR_OP_HEADER Header;
+ EFI_GUID RefreshEventGroupId;
+} AMI_EFI_IFR_REFRESH_ID;
+
+#ifndef EFI_IFR_EQ_ID_LIST_OP
+#define EFI_IFR_EQ_ID_LIST_OP 0x14
+#endif
+
+#ifndef EFI_IFR_ANIMATION_OP
+#define EFI_IFR_ANIMATION_OP 0x1F
+#endif
+
+#ifndef EFI_IFR_MAP_OP
+#define EFI_IFR_MAP_OP 0x22
+#endif
+
+#ifndef EFI_IFR_GET_OP
+#define EFI_IFR_GET_OP 0x2B
+#endif
+
+#ifndef EFI_IFR_SET_OP
+#define EFI_IFR_SET_OP 0x2C
+#endif
+
+#ifndef EFI_IFR_READ_OP
+#define EFI_IFR_READ_OP 0x2D
+#endif
+
+#ifndef EFI_IFR_WRITE_OP
+#define EFI_IFR_WRITE_OP 0x2E
+#endif
+
+#ifndef EFI_IFR_FORM_MAP_OP
+#define EFI_IFR_FORM_MAP_OP 0x5D
+#endif
+
+#ifndef EFI_IFR_MODAL_TAG_OP
+#define EFI_IFR_MODAL_TAG_OP 0x61
+#endif
+
+#ifndef EFI_IFR_REFRESH_ID_OP
+#define EFI_IFR_REFRESH_ID_OP 0x62
+#endif
+
+#ifndef EFI_IFR_TYPE_UNDEFINED
+#define EFI_IFR_TYPE_UNDEFINED 0x09
+#endif
+
+#ifndef EFI_IFR_TYPE_ACTION
+#define EFI_IFR_TYPE_ACTION 0x0A
+#endif
+
+#ifndef EFI_IFR_TYPE_REF
+#define EFI_IFR_TYPE_REF 0x0C
+#endif
+
+typedef struct _AMI_EFI_IFR_FORM_MAP_METHOD {
+ ///
+ /// The string identifier which provides the human-readable name of
+ /// the configuration method for this standards map form.
+ ///
+ EFI_STRING_ID MethodTitle;
+ ///
+ /// Identifier which uniquely specifies the configuration methods
+ /// associated with this standards map form.
+ ///
+ EFI_GUID MethodIdentifier;
+} AMI_EFI_IFR_FORM_MAP_METHOD;
+
+typedef struct _AMI_EFI_IFR_FORM_MAP {
+ ///
+ /// The sequence that defines the type of opcode as well as the length
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.
+ ///
+ EFI_IFR_OP_HEADER Header;
+ ///
+ /// The unique identifier for this particular form.
+ ///
+ EFI_FORM_ID FormId;
+ ///
+ /// One or more configuration method's name and unique identifier.
+ ///
+ // EFI_IFR_FORM_MAP_METHOD Methods[];
+} AMI_EFI_IFR_FORM_MAP;
+
+typedef struct _AMI_EFI_IFR_SET {
+ ///
+ /// The sequence that defines the type of opcode as well as the length
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.
+ ///
+ EFI_IFR_OP_HEADER Header;
+ ///
+ /// Specifies the identifier of a previously declared variable store to
+ /// use when storing the question's value.
+ ///
+ EFI_VARSTORE_ID VarStoreId;
+ union {
+ ///
+ /// A 16-bit Buffer Storage offset.
+ ///
+ EFI_STRING_ID VarName;
+ ///
+ /// A Name Value or EFI Variable name (VarName).
+ ///
+ UINT16 VarOffset;
+ } VarStoreInfo;
+ ///
+ /// Specifies the type used for storage.
+ ///
+ UINT8 VarStoreType;
+} AMI_EFI_IFR_SET;
+
+typedef struct _AMI_EFI_IFR_GET {
+ ///
+ /// The sequence that defines the type of opcode as well as the length
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.
+ ///
+ EFI_IFR_OP_HEADER Header;
+ ///
+ /// Specifies the identifier of a previously declared variable store to
+ /// use when retrieving the value.
+ ///
+ EFI_VARSTORE_ID VarStoreId;
+ union {
+ ///
+ /// A 16-bit Buffer Storage offset.
+ ///
+ EFI_STRING_ID VarName;
+ ///
+ /// A Name Value or EFI Variable name (VarName).
+ ///
+ UINT16 VarOffset;
+ } VarStoreInfo;
+ ///
+ /// Specifies the type used for storage.
+ ///
+ UINT8 VarStoreType;
+} AMI_EFI_IFR_GET;
+
+//EIP109812, 107774
+typedef struct _AMI_EFI_HII_REF {
+ EFI_QUESTION_ID QuestionId;
+ EFI_FORM_ID FormId;
+ EFI_GUID FormSetGuid;
+ EFI_STRING_ID DevicePath;
+} AMI_EFI_HII_REF;
+
+typedef struct _AMI_EFI_IFR_REF5 {
+ EFI_IFR_OP_HEADER Header;
+ EFI_IFR_QUESTION_HEADER Question;
+} AMI_EFI_IFR_REF5;
+
+/////////////////////////////////////////////////////////////////////////////////
+//
+//Declaring the struct which are not present in core (UefiHii.h)
+//
+///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+#ifndef _TSE_EFI_IFR_FORM_SET
+#define _TSE_EFI_IFR_FORM_SET
+typedef struct _TSE_EFI_IFR_FORM_SET {
+ EFI_IFR_OP_HEADER Header;
+ EFI_GUID Guid;
+ EFI_STRING_ID FormSetTitle;
+ EFI_STRING_ID Help;
+ UINT8 Flags;
+ EFI_GUID ClassGuid[1];
+} TSE_EFI_IFR_FORM_SET;
+#endif
+#pragma pack ()
+
+//End for UEFI spec. 2.3 compatibility
+#endif /* _AMI_UEFI_HII_H_ */
+// ----------------------------------------------------------------------------
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2013, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Building 200,Norcross, Georgia 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//********************************************************************** \ No newline at end of file