/** @file Internal include file for H2O Formbrowser ;****************************************************************************** ;* Copyright (c) 2013 - 2021, Insyde Software Corp. All Rights Reserved. ;* ;* You may not reproduce, distribute, publish, display, perform, modify, adapt, ;* transmit, broadcast, present, recite, release, license or otherwise exploit ;* any part of this publication in any form, by any means, without the prior ;* written permission of Insyde Software Corporation. ;* ;****************************************************************************** */ #ifndef _INTERNALH2O_FORM_BROWSER_H_ #define _INTERNALH2O_FORM_BROWSER_H_ #include #include #include #include #include #include #include #include #include #include #include #include "Setup.h" #include "Timer.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "FBDialog.h" #include "FBHotPlug.h" #include #include #include "FBHotPlug.h" #include "FBProcessVfcf.h" #include #include #include #include #define SET_MASK(array, number) array[number/8] |= (1 << (number % 8)) #define IS_MASK(array, number) (array[number/8] & (1 << (number % 8))) #define H2O_QUESTION_ID_INVALID 0x0000 #define H2O_QUESTION_ID_MAX 0xFFFF #define MAX_ATTACHED_CONSOLE 10 extern UI_MENU_SELECTION *gCurrentSelection; extern BOOLEAN mRefreshFormSet; extern BOOLEAN mRefreshForm; typedef struct _UI_MENU_SELECTION UI_MENU_SELECTION; typedef struct _H2O_INPUT_EVENT_DESCRIPTION H2O_INPUT_EVENT_DESCRIPTION; typedef struct _FORM_BROWSER_STATEMENT FORM_BROWSER_STATEMENT; typedef struct _STATEMENT_REFRESH_ENTRY { LIST_ENTRY Link; FORM_BROWSER_STATEMENT *Statement; //Refresh statement H2O_PAGE_ID PageId; //Refresh page ID } STATEMENT_REFRESH_ENTRY; typedef struct _HII_HANDLE_ENTRY { LIST_ENTRY Link; EFI_HII_HANDLE HiiHandle; } HII_HANDLE_ENTRY; typedef struct _DISPLAY_ENGINE_LIST_ENTRY { H2O_DISPLAY_ENGINE_PROTOCOL *DisplayEngine; UINTN AttachedConsoleCount; H2O_FORM_BROWSER_CONSOLE_DEV *AttachedConsoleList[MAX_ATTACHED_CONSOLE]; } DISPLAY_ENGINE_LIST_ENTRY; #define H2O_FORM_BROWSER_SIGNATURE SIGNATURE_32 ('F', 'B', 'P', 'D') typedef struct _H2O_FORM_BROWSER_PRIVATE_DATA { UINT32 Signature; EFI_HANDLE ImageHandle; H2O_FORM_BROWSER_PROTOCOL FB; EFI_FORM_BROWSER2_PROTOCOL FormBrowser2; EFI_FORM_BROWSER_EXTENSION_PROTOCOL FormBrowserEx; EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL FormBrowserEx2; DISPLAY_ENGINE_LIST_ENTRY *EngineList; UINT32 EngineListCount; INT32 ActivatedEngine; INT32 SetupMouseConsoleId; LIST_ENTRY TimerList; // // Setup Mouse // EFI_SETUP_MOUSE_PROTOCOL *SetupMouse; // // edk2 private data // LIST_ENTRY FormSetList; EFI_HANDLE PackageNotifyHandle; // // H2O FormBrowser data // BOOLEAN ConsoleInitComplete; UINT32 PageCount; H2O_PAGE_ID *PageIdList; // // For H2O Setup // EFI_HII_HANDLE *HiiHandleList; UINT32 HiiHandleCount; UINT32 HiiHandleIndex; SETUP_MENU_INFO *SetupMenuInfo; UINT32 NumberOfSetupMenus; HOT_KEY_INFO *HotKeyInfo; UINT32 NumberOfHotKeys; BOOLEAN Repaint; LIST_ENTRY NeedAddHiiHandleList; BOOLEAN IsBdsHotKeyDisabled; BOOLEAN OrgBdsHotKeyState; LIST_ENTRY TargetInfoList; } H2O_FORM_BROWSER_PRIVATE_DATA; extern H2O_DISPLAY_ENGINE_EVT_OPEN_D *mOpenD; extern H2O_FORM_BROWSER_PRIVATE_DATA mFBPrivate; extern EFI_GUID mScuFormSetGuid; extern EFI_GUID mSecureBootMgrFormSetGuid; extern FORM_BROWSER_FORMSET *mSystemLevelFormSet; extern BOOLEAN mHiiPackageListUpdated; #define H2O_FORM_BROWSER_DATA_FROM_PROTOCOL(a) CR (a, H2O_FORM_BROWSER_PRIVATE_DATA, FB, H2O_FORM_BROWSER_SIGNATURE) #define FORM_BROWSER2_DATA_FROM_PROTOCOL(a) CR (a, H2O_FORM_BROWSER_PRIVATE_DATA, FormBrowser2, H2O_FORM_BROWSER_SIGNATURE) #define H2O_DISPLAY_ENGINE_EVENT_NODE_SIGNATURE SIGNATURE_32 ('D', 'E', 'E', 'N') typedef struct _H2O_DISPLAY_ENGINE_EVENT_NODE { UINT32 Signature; ///