]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h
NetworkPkg: Apply uncrustify changes
[mirror_edk2.git] / NetworkPkg / WifiConnectionManagerDxe / WifiConnectionMgrDxe.h
CommitLineData
90b24889
WF
1/** @file\r
2 The miscellaneous structure definitions for WiFi connection driver.\r
3\r
4 Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
5\r
ecf98fbc 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
90b24889
WF
7\r
8**/\r
9\r
10#ifndef __EFI_WIFI_MGR_DXE_H__\r
11#define __EFI_WIFI_MGR_DXE_H__\r
12\r
13#include <Uefi.h>\r
14\r
15//\r
16// Libraries\r
17//\r
18#include <Library/UefiBootServicesTableLib.h>\r
19#include <Library/UefiRuntimeServicesTableLib.h>\r
20#include <Library/MemoryAllocationLib.h>\r
21#include <Library/BaseMemoryLib.h>\r
22#include <Library/BaseLib.h>\r
23#include <Library/UefiLib.h>\r
24#include <Library/DevicePathLib.h>\r
25#include <Library/DebugLib.h>\r
26#include <Library/HiiLib.h>\r
27#include <Library/NetLib.h>\r
28#include <Library/PrintLib.h>\r
29#include <Library/UefiHiiServicesLib.h>\r
30#include <Library/FileExplorerLib.h>\r
31\r
32//\r
33// UEFI Driver Model Protocols\r
34//\r
35#include <Protocol/DriverBinding.h>\r
36#include <Protocol/HiiDatabase.h>\r
37#include <Protocol/HiiPackageList.h>\r
38#include <Protocol/ComponentName2.h>\r
39#include <Protocol/ComponentName.h>\r
40\r
41//\r
42// Consumed Protocols\r
43//\r
44#include <Protocol/WiFi2.h>\r
45#include <Protocol/AdapterInformation.h>\r
46#include <Protocol/Supplicant.h>\r
47#include <Protocol/SimpleNetwork.h>\r
48#include <Protocol/SimpleFileSystem.h>\r
49#include <Protocol/EapConfiguration.h>\r
50\r
51//\r
52// Produced Protocols\r
53//\r
54#include <Protocol/HiiConfigAccess.h>\r
55\r
56//\r
57// Guids\r
58//\r
59#include <Guid/ImageAuthentication.h>\r
60#include <Guid/MdeModuleHii.h>\r
61#include <Guid/WifiConnectionManagerConfigHii.h>\r
62\r
63//\r
64// NvData struct definition\r
65//\r
66#include "WifiConnectionMgrConfigNVDataStruct.h"\r
67#include "WifiConnectionMgrConfig.h"\r
68#include "EapContext.h"\r
69#include "WifiConnectionMgrConfigHii.h"\r
70\r
71//\r
72// Driver Version\r
73//\r
74#define WIFI_MGR_DXE_VERSION 0xb\r
75\r
d1050b9d 76#define OUI_IEEE_80211I 0xAC0F00\r
90b24889
WF
77\r
78typedef enum {\r
79 Ieee80211PairwiseCipherSuiteUseGroupCipherSuite = 0,\r
d1050b9d
MK
80 Ieee80211PairwiseCipherSuiteWEP40 = 1,\r
81 Ieee80211PairwiseCipherSuiteTKIP = 2,\r
82 Ieee80211PairwiseCipherSuiteCCMP = 4,\r
83 Ieee80211PairwiseCipherSuiteWEP104 = 5,\r
84 Ieee80211PairwiseCipherSuiteBIP = 6,\r
85 // ...\r
90b24889
WF
86} IEEE_80211_PAIRWISE_CIPHER_SUITE;\r
87\r
d1050b9d
MK
88#define IEEE_80211_PAIRWISE_CIPHER_SUITE_USE_GROUP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteUseGroupCipherSuite << 24))\r
89#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP40 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP40 << 24))\r
90#define IEEE_80211_PAIRWISE_CIPHER_SUITE_TKIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteTKIP << 24))\r
91#define IEEE_80211_PAIRWISE_CIPHER_SUITE_CCMP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteCCMP << 24))\r
92#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP104 << 24))\r
93#define IEEE_80211_PAIRWISE_CIPHER_SUITE_BIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteBIP << 24))\r
90b24889
WF
94\r
95typedef enum {\r
96 Ieee80211AkmSuite8021XOrPMKSA = 1,\r
97 Ieee80211AkmSuitePSK = 2,\r
98 Ieee80211AkmSuite8021XOrPMKSASHA256 = 5,\r
99 Ieee80211AkmSuitePSKSHA256 = 6\r
d1050b9d 100 // ...\r
90b24889
WF
101} IEEE_80211_AKM_SUITE;\r
102\r
103#define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSA << 24))\r
104#define IEEE_80211_AKM_SUITE_PSK (OUI_IEEE_80211I | (Ieee80211AkmSuitePSK << 24))\r
105#define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256 (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSASHA256 << 24))\r
106#define IEEE_80211_AKM_SUITE_PSK_SHA256 (OUI_IEEE_80211I | (Ieee80211AkmSuitePSKSHA256 << 24))\r
107\r
108//\r
109// Protocol instances\r
110//\r
d1050b9d
MK
111extern EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding;\r
112extern EFI_COMPONENT_NAME2_PROTOCOL gWifiMgrDxeComponentName2;\r
113extern EFI_COMPONENT_NAME_PROTOCOL gWifiMgrDxeComponentName;\r
114extern EFI_HII_CONFIG_ACCESS_PROTOCOL gWifiMgrDxeHiiConfigAccess;\r
90b24889
WF
115\r
116//\r
117// Private Context Data Structure\r
118//\r
119typedef enum {\r
120 WifiMgrDisconnected,\r
121 WifiMgrConnectingToAp,\r
122 WifiMgrConnectedToAp,\r
123 WifiMgrDisconnectingToAp,\r
124 WifiMgrConnectStateMaximum\r
125} WIFI_MGR_CONNECT_STATE;\r
126\r
127typedef enum {\r
128 WifiMgrScanFinished,\r
129 WifiMgrScanning,\r
130 WifiMgrScanStateMaximum\r
131} WIFI_MGR_SCAN_STATE;\r
132\r
d1050b9d 133#define WIFI_SCAN_FREQUENCY 30\r
90b24889
WF
134\r
135typedef struct _WIFI_MGR_SUPPORTED_SUITES {\r
d1050b9d
MK
136 EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites;\r
137 EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites;\r
138 EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites;\r
90b24889
WF
139} WIFI_MGR_SUPPORTED_SUITES;\r
140\r
141#define EFI_WIFIMGR_PRIVATE_GUID \\r
142 { \\r
143 0x99b7c019, 0x4789, 0x4829, { 0xa7, 0xbd, 0x0d, 0x4b, 0xaa, 0x62, 0x28, 0x72 } \\r
144 }\r
145\r
d1050b9d 146typedef struct _WIFI_MGR_PRIVATE_DATA WIFI_MGR_PRIVATE_DATA;\r
90b24889
WF
147\r
148typedef struct _WIFI_MGR_PRIVATE_PROTOCOL {\r
d1050b9d 149 UINT32 Reserved;\r
90b24889
WF
150} WIFI_MGR_PRIVATE_PROTOCOL;\r
151\r
152typedef struct _WIFI_MGR_FILE_CONTEXT {\r
d1050b9d
MK
153 EFI_FILE_HANDLE FHandle;\r
154 UINT16 *FileName;\r
90b24889
WF
155} WIFI_MGR_FILE_CONTEXT;\r
156\r
157typedef enum {\r
158 FileTypeCACert,\r
159 FileTypeClientCert,\r
160 FileTypeMax\r
161} WIFI_MGR_FILE_TYPE;\r
162\r
163typedef struct {\r
164 UINT32 Signature;\r
165 EFI_HANDLE DriverHandle;\r
166 EFI_HANDLE ControllerHandle;\r
167 EFI_EVENT TickTimer;\r
168 WIFI_MGR_PRIVATE_DATA *Private;\r
169\r
170 //\r
171 // Pointers to consumed protocols\r
172 //\r
173 EFI_WIRELESS_MAC_CONNECTION_II_PROTOCOL *Wmp;\r
174 EFI_SUPPLICANT_PROTOCOL *Supplicant;\r
175 EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig;\r
176\r
177 //\r
178 // Produced protocols\r
179 //\r
d1050b9d 180 WIFI_MGR_PRIVATE_PROTOCOL WifiMgrIdentifier;\r
90b24889
WF
181\r
182 //\r
183 // Private functions and data fields\r
184 //\r
d1050b9d
MK
185 LIST_ENTRY Link; // Link to the NicList in global private data structure.\r
186 UINT32 NicIndex;\r
187 EFI_80211_MAC_ADDRESS MacAddress;\r
188 WIFI_MGR_SUPPORTED_SUITES SupportedSuites;\r
189 EFI_ADAPTER_INFO_MEDIA_STATE LastLinkState;\r
90b24889
WF
190\r
191 //\r
192 // The network is currently connected, connecting or disconnecting.\r
193 // Only one network can be operated at one time.\r
194 //\r
d1050b9d
MK
195 WIFI_MGR_NETWORK_PROFILE *CurrentOperateNetwork;\r
196 WIFI_MGR_NETWORK_PROFILE *ConnectPendingNetwork;\r
197 BOOLEAN HasDisconnectPendingNetwork;\r
90b24889
WF
198\r
199 //\r
d1050b9d 200 // Profile related data fields\r
90b24889 201 //\r
d1050b9d
MK
202 LIST_ENTRY ProfileList; // List of WIFI_MGR_NETWORK_PROFILE\r
203 UINT32 AvailableCount;\r
204 UINT32 MaxProfileIndex;\r
205 WIFI_MGR_NETWORK_PROFILE *UserSelectedProfile;\r
90b24889
WF
206\r
207 //\r
208 // Data fields for Hii functionlity\r
209 //\r
d1050b9d
MK
210 BOOLEAN OneTimeScanRequest;\r
211 BOOLEAN OneTimeConnectRequest;\r
212 BOOLEAN OneTimeDisconnectRequest;\r
213 WIFI_MGR_SCAN_STATE ScanState;\r
214 UINTN ScanTickTime;\r
215 WIFI_MGR_CONNECT_STATE ConnectState;\r
216 BOOLEAN ConnectStateChanged;\r
90b24889
WF
217} WIFI_MGR_DEVICE_DATA;\r
218\r
219#define WIFI_MGR_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('W','M','D','D')\r
220\r
221#define WIFI_MGR_DEVICE_DATA_FROM_IDENTIFIER(Identifier) \\r
222 CR ( \\r
223 Identifier, \\r
224 WIFI_MGR_DEVICE_DATA, \\r
225 WifiMgrIdentifier, \\r
226 WIFI_MGR_DEVICE_DATA_SIGNATURE \\r
227 )\r
228\r
229typedef struct {\r
d1050b9d
MK
230 UINT32 Signature;\r
231 LIST_ENTRY Link;\r
232 CHAR16 SSId[SSID_STORAGE_SIZE];\r
90b24889
WF
233} WIFI_HIDDEN_NETWORK_DATA;\r
234\r
235#define WIFI_MGR_HIDDEN_NETWORK_SIGNATURE SIGNATURE_32 ('W','M','H','N')\r
236\r
237#define WIFI_MGR_HIDDEN_NETWORK_FROM_IDENTIFIER(Identifier) \\r
238 CR ( \\r
239 Identifier, \\r
240 WIFI_HIDDEN_NETWORK_DATA, \\r
241 WifiMgrIdentifier, \\r
242 WIFI_MGR_HIDDEN_NETWORK_SIGNATURE \\r
243 )\r
244\r
245//\r
246// Global private data struct\r
247//\r
248struct _WIFI_MGR_PRIVATE_DATA {\r
90b24889
WF
249 UINT32 Signature;\r
250 EFI_HANDLE DriverHandle;\r
251 EFI_HII_HANDLE RegisteredHandle;\r
252 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;\r
253\r
254 UINT32 NicCount;\r
255 LIST_ENTRY NicList;\r
256 WIFI_MGR_DEVICE_DATA *CurrentNic;\r
257\r
258 //\r
259 // Data fields for Hii functionlity\r
260 //\r
261 EFI_EVENT NetworkListRefreshEvent; // Event to refresh the network list form\r
262 EFI_EVENT ConnectFormRefreshEvent; // Event to refresh the connect form\r
263 EFI_EVENT MainPageRefreshEvent; // Event to refresh the main page\r
264\r
265 //\r
d1050b9d 266 // User Input Record\r
90b24889
WF
267 //\r
268 UINT8 SecurityType;\r
269 UINT8 EapAuthMethod;\r
270 UINT8 EapSecondAuthMethod;\r
271 CHAR16 EapIdentity[EAP_IDENTITY_SIZE];\r
272\r
273 WIFI_MGR_FILE_CONTEXT *FileContext;\r
274 WIFI_MGR_FILE_TYPE FileType;\r
275\r
276 UINT32 HiddenNetworkCount;\r
277 LIST_ENTRY HiddenNetworkList;\r
278};\r
279\r
280#define WIFI_MGR_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('W','M','P','D')\r
281\r
282#define WIFI_MGR_PRIVATE_DATA_FROM_CONFIG_ACCESS(This) \\r
283 CR ( \\r
284 This, \\r
285 WIFI_MGR_PRIVATE_DATA, \\r
286 ConfigAccess, \\r
287 WIFI_MGR_PRIVATE_DATA_SIGNATURE \\r
288 )\r
d1050b9d 289extern WIFI_MGR_PRIVATE_DATA *mPrivate;\r
90b24889
WF
290\r
291typedef enum {\r
292 TokenTypeGetNetworksToken,\r
293 TokenTypeConnectNetworkToken,\r
294 TokenTypeDisconnectNetworkToken,\r
295 TokenTypeMax,\r
296} WIFI_MGR_MAC_CONFIG_TOKEN_TYPE;\r
297\r
298typedef union {\r
d1050b9d
MK
299 EFI_80211_GET_NETWORKS_TOKEN *GetNetworksToken;\r
300 EFI_80211_CONNECT_NETWORK_TOKEN *ConnectNetworkToken;\r
301 EFI_80211_DISCONNECT_NETWORK_TOKEN *DisconnectNetworkToken;\r
90b24889
WF
302} MAC_CONNECTION2_ADAPTER_TOKEN;\r
303\r
304typedef struct {\r
d1050b9d
MK
305 WIFI_MGR_DEVICE_DATA *Nic;\r
306 WIFI_MGR_MAC_CONFIG_TOKEN_TYPE Type;\r
307 MAC_CONNECTION2_ADAPTER_TOKEN Token;\r
90b24889
WF
308} WIFI_MGR_MAC_CONFIG_TOKEN;\r
309\r
310//\r
311// Include files with function prototypes\r
312//\r
313#include "WifiConnectionMgrDriverBinding.h"\r
314#include "WifiConnectionMgrImpl.h"\r
315#include "WifiConnectionMgrComponentName.h"\r
316#include "WifiConnectionMgrHiiConfigAccess.h"\r
317#include "WifiConnectionMgrMisc.h"\r
318#include "WifiConnectionMgrFileUtil.h"\r
319\r
320#endif\r