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