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