]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/Utility.c
Add in some features for the thunk layer:
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / Utility.c
1 /**@file
2
3 This file contains the keyboard processing code to the HII database.
4
5 Copyright (c) 2006 - 2008, Intel Corporation
6 All rights reserved. This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
10
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14 **/
15
16
17 #include "HiiDatabase.h"
18
19 EFI_GUID *
20 GetGuidOfFirstFormset (
21 CONST EFI_HII_FORM_PACKAGE * FormPackage
22 )
23 {
24 UINT8 *StartOfNextPackage;
25 EFI_IFR_OP_HEADER *OpCodeData;
26
27 StartOfNextPackage = (UINT8 *) FormPackage + FormPackage->Header.Length;
28 OpCodeData = (EFI_IFR_OP_HEADER *) (FormPackage + 1);
29
30 while ((UINT8 *) OpCodeData < StartOfNextPackage) {
31 if (OpCodeData->OpCode == EFI_IFR_FORM_SET_OP) {
32 return &(((EFI_IFR_FORM_SET *) OpCodeData)->Guid);
33 }
34 OpCodeData = (EFI_IFR_OP_HEADER *) ((UINT8 *) OpCodeData + OpCodeData->Length);
35 }
36
37 ASSERT (FALSE);
38
39 return NULL;
40 }
41
42 EFI_HII_HANDLE
43 FrameworkHiiHandleToUefiHiiHandle (
44 IN CONST EFI_HII_THUNK_PRIVATE_DATA *Private,
45 IN FRAMEWORK_EFI_HII_HANDLE FrameworkHiiHandle
46 )
47 {
48 LIST_ENTRY *ListEntry;
49 HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry;
50
51 ASSERT (FrameworkHiiHandle != (FRAMEWORK_EFI_HII_HANDLE) 0);
52 ASSERT (Private != NULL);
53
54 for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink;
55 ListEntry != &Private->HiiThunkHandleMappingDBListHead;
56 ListEntry = ListEntry->ForwardLink
57 ) {
58
59 HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry);
60
61 if (FrameworkHiiHandle == HandleMapEntry->FrameworkHiiHandle) {
62 return HandleMapEntry->UefiHiiHandle;
63 }
64 }
65
66 return (EFI_HII_HANDLE) NULL;
67 }
68
69
70 HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *
71 FrameworkHiiHandleToMapDatabaseEntry (
72 IN CONST EFI_HII_THUNK_PRIVATE_DATA *Private,
73 IN FRAMEWORK_EFI_HII_HANDLE FrameworkHiiHandle
74 )
75 {
76 LIST_ENTRY *ListEntry;
77 HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *HandleMapEntry;
78
79 for (ListEntry = Private->HiiThunkHandleMappingDBListHead.ForwardLink;
80 ListEntry != &Private->HiiThunkHandleMappingDBListHead;
81 ListEntry = ListEntry->ForwardLink
82 ) {
83 HandleMapEntry = HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY (ListEntry);
84
85 if (FrameworkHiiHandle == HandleMapEntry->FrameworkHiiHandle) {
86 return HandleMapEntry;
87 }
88 }
89
90 return (HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *) NULL;
91 }
92