]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Library/DeviceManagerUiLib/DeviceManager.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Library / DeviceManagerUiLib / DeviceManager.h
1 /** @file
2 The device manager reference implement
3
4 Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #ifndef _DEVICE_MANAGER_H_
10 #define _DEVICE_MANAGER_H_
11
12 #include <Guid/MdeModuleHii.h>
13 #include <Guid/HiiPlatformSetupFormset.h>
14
15 #include <Protocol/HiiConfigAccess.h>
16 #include <Protocol/PciIo.h>
17
18 #include <Library/PrintLib.h>
19 #include <Library/DebugLib.h>
20 #include <Library/BaseMemoryLib.h>
21 #include <Library/UefiBootServicesTableLib.h>
22 #include <Library/MemoryAllocationLib.h>
23 #include <Library/BaseLib.h>
24 #include <Library/HiiLib.h>
25 #include <Library/DevicePathLib.h>
26 #include <Library/UefiHiiServicesLib.h>
27
28 //
29 // These are defined as the same with vfr file
30 //
31 #define DEVICE_MANAGER_FORMSET_GUID \
32 { \
33 0x3ebfa8e6, 0x511d, 0x4b5b, {0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27} \
34 }
35
36 #define LABEL_END 0xffff
37 #define LABEL_FORM_ID_OFFSET 0x0100
38
39 #define DEVICE_MANAGER_FORM_ID 0x1000
40 #define NETWORK_DEVICE_LIST_FORM_ID 0x1001
41 #define NETWORK_DEVICE_FORM_ID 0x1002
42 #define DEVICE_KEY_OFFSET 0x4000
43 #define NETWORK_DEVICE_LIST_KEY_OFFSET 0x2000
44
45 #define MAX_KEY_SECTION_LEN 0x1000
46
47 #define QUESTION_NETWORK_DEVICE_ID 0x3FFF
48 //
49 // These are the VFR compiler generated data representing our VFR data.
50 //
51 extern UINT8 DeviceManagerVfrBin[];
52
53 #define DEVICE_MANAGER_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('D', 'M', 'C', 'B')
54
55 ///
56 /// HII specific Vendor Device Path definition.
57 ///
58 typedef struct {
59 VENDOR_DEVICE_PATH VendorDevicePath;
60 EFI_DEVICE_PATH_PROTOCOL End;
61 } HII_VENDOR_DEVICE_PATH;
62
63 typedef struct {
64 UINTN Signature;
65
66 ///
67 /// Device Manager HII relative handles
68 ///
69 EFI_HII_HANDLE HiiHandle;
70
71 EFI_HANDLE DriverHandle;
72
73 ///
74 /// Device Manager Produced protocols
75 ///
76 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
77
78 ///
79 /// Configuration data
80 ///
81 UINT8 VideoBios;
82 } DEVICE_MANAGER_CALLBACK_DATA;
83
84 typedef struct {
85 EFI_STRING_ID PromptId;
86 EFI_QUESTION_ID QuestionId;
87 }MENU_INFO_ITEM;
88
89 typedef struct {
90 UINTN CurListLen;
91 UINTN MaxListLen;
92 MENU_INFO_ITEM *NodeList;
93 } MAC_ADDRESS_NODE_LIST;
94
95 #define DEVICE_MANAGER_CALLBACK_DATA_FROM_THIS(a) \
96 CR (a, \
97 DEVICE_MANAGER_CALLBACK_DATA, \
98 ConfigAccess, \
99 DEVICE_MANAGER_CALLBACK_DATA_SIGNATURE \
100 )
101 typedef struct {
102 EFI_STRING_ID StringId;
103 UINT16 Class;
104 } DEVICE_MANAGER_MENU_ITEM;
105
106 /**
107 This function allows a caller to extract the current configuration for one
108 or more named elements from the target driver.
109
110
111 @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
112 @param Request A null-terminated Unicode string in <ConfigRequest> format.
113 @param Progress On return, points to a character in the Request string.
114 Points to the string's null terminator if request was successful.
115 Points to the most recent '&' before the first failing name/value
116 pair (or the beginning of the string if the failure is in the
117 first name/value pair) if the request was not successful.
118 @param Results A null-terminated Unicode string in <ConfigAltResp> format which
119 has all values filled in for the names in the Request string.
120 String to be allocated by the called function.
121
122 @retval EFI_SUCCESS The Results is filled with the requested values.
123 @retval EFI_OUT_OF_RESOURCES Not enough memory to store the results.
124 @retval EFI_INVALID_PARAMETER Request is illegal syntax, or unknown name.
125 @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
126
127 **/
128 EFI_STATUS
129 EFIAPI
130 DeviceManagerExtractConfig (
131 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
132 IN CONST EFI_STRING Request,
133 OUT EFI_STRING *Progress,
134 OUT EFI_STRING *Results
135 );
136
137 /**
138 This function processes the results of changes in configuration.
139
140
141 @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
142 @param Configuration A null-terminated Unicode string in <ConfigResp> format.
143 @param Progress A pointer to a string filled in with the offset of the most
144 recent '&' before the first failing name/value pair (or the
145 beginning of the string if the failure is in the first
146 name/value pair) or the terminating NULL if all was successful.
147
148 @retval EFI_SUCCESS The Results is processed successfully.
149 @retval EFI_INVALID_PARAMETER Configuration is NULL.
150 @retval EFI_NOT_FOUND Routing data doesn't match any storage in this driver.
151
152 **/
153 EFI_STATUS
154 EFIAPI
155 DeviceManagerRouteConfig (
156 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
157 IN CONST EFI_STRING Configuration,
158 OUT EFI_STRING *Progress
159 );
160
161 /**
162 This function is invoked if user selected a interactive opcode from Device Manager's
163 Formset. If user set VBIOS, the new value is saved to EFI variable.
164
165 @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
166 @param Action Specifies the type of action taken by the browser.
167 @param QuestionId A unique value which is sent to the original exporting driver
168 so that it can identify the type of data to expect.
169 @param Type The type of value for the question.
170 @param Value A pointer to the data being sent to the original exporting driver.
171 @param ActionRequest On return, points to the action requested by the callback function.
172
173 @retval EFI_SUCCESS The callback successfully handled the action.
174 @retval EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
175
176 **/
177 EFI_STATUS
178 EFIAPI
179 DeviceManagerCallback (
180 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
181 IN EFI_BROWSER_ACTION Action,
182 IN EFI_QUESTION_ID QuestionId,
183 IN UINT8 Type,
184 IN EFI_IFR_TYPE_VALUE *Value,
185 OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
186 );
187
188 #endif