1 /*
2  * Copyright (C) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef OHOS_HDI_DEFINE_H
17 #define OHOS_HDI_DEFINE_H
18 
19 #include <stddef.h>
20 #include <stdint.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 #ifndef ETH_ALEN
27 #define ETH_ALEN 6
28 #endif
29 
30 #define HDI_UUID_LEN 16
31 #define HDI_PIN_LEN 9
32 #define HDI_MAC_SUB_LEN 2
33 
34 #define HDI_PROTO_DEFAULT HDI_BIT(0)
35 #define HDI_PROTO_ONE HDI_BIT(1)
36 #define HDI_PROTO_THREE HDI_BIT(3)
37 
38 #define HDI_MAX__VENDOR_EXT 10
39 
40 #define HDI_MAX_IES_SUPPORTED 5
41 
42 #define HDI_P2P_CARD_SSID "DIRECT-"
43 #define HDI_P2P_CARD_SSID_LEN 7
44 
45 #define HDI_IE_VENDOR_TYPE 0x0050f201
46 #define HDI_P2P_IE_VENDOR_TYPE 0x506f9a09
47 #define HDI_WFD_TYPE 10
48 #define HDI_HS20_IE_VENDOR_TYPE 0x506f9a10
49 #define HDI_OSEN_IE_VENDOR_TYPE 0x506f9a12
50 #define HDI_MBO_OUI_TYPE 22
51 #define HDI_OWE_VENDOR_TYPE 0x506f9a1c
52 #define HDI_OWE_OUI_TYPE 28
53 #define HDI_AP_OUI_TYPE 0x1B
54 
55 #define HDI_WMM_OUI_TYPE 2
56 #define HDI_WMM_OUI_SUBTYPE_INFORMATION 0
57 #define HDI_WMM_OUI_SUBTYPE_PARAMETER 1
58 #define HDI_WMM_OUI_SUBTYPE_ELEMENT 2
59 
60 
61 #define HDI_SELECTOR_LEN 4
62 #define HDI_VERSION 1
63 
64 #define HDI_CIPHER_NONE HDI_BIT(0)
65 #define HDI_CIPHER_TKIP HDI_BIT(3)
66 #define HDI_CIPHER_CCMP HDI_BIT(4)
67 #define HDI_CIPHER_AES_128_CMAC HDI_BIT(5)
68 #define HDI_CIPHER_GCMP HDI_BIT(6)
69 #define HDI_CIPHER_GCMP_256 HDI_BIT(8)
70 #define HDI_CIPHER_CCMP_256 HDI_BIT(9)
71 #define HDI_CIPHER_BIP_GMAC_128 HDI_BIT(11)
72 #define HDI_CIPHER_BIP_GMAC_256 HDI_BIT(12)
73 #define HDI_CIPHER_BIP_CMAC_256 HDI_BIT(13)
74 #define HDI_CIPHER_GTK_NOT_USED HDI_BIT(14)
75 
76 #define HDI_KEY_MGMT HDI_BIT(0)
77 #define HDI_KEY_MGMT_PSK HDI_BIT(1)
78 #define HDI_KEY_MGMT_HDI_NONE HDI_BIT(4)
79 #define HDI_KEY_MGMT_FT_IEEE8021X HDI_BIT(5)
80 #define HDI_KEY_MGMT_FT_PSK HDI_BIT(6)
81 #define HDI_KEY_MGMT_IEEE8021X_SHA256 HDI_BIT(7)
82 #define HDI_KEY_MGMT_PSK_SHA256 HDI_BIT(8)
83 #define HDI_KEY_MGMT_SAE HDI_BIT(10)
84 #define HDI_KEY_MGMT_FT_SAE HDI_BIT(11)
85 #define HDI_KEY_MGMT_OSEN HDI_BIT(15)
86 #define HDI_KEY_MGMT_SUITE_B HDI_BIT(16)
87 #define HDI_KEY_MGMT_SUITE_B_192 HDI_BIT(17)
88 #define HDI_KEY_MGMT_FILS_SHA256 HDI_BIT(18)
89 #define HDI_KEY_MGMT_FILS_SHA384 HDI_BIT(19)
90 #define HDI_KEY_MGMT_FT_FILS_SHA256 HDI_BIT(20)
91 #define HDI_KEY_MGMT_FT_FILS_SHA384 HDI_BIT(21)
92 #define HDI_KEY_MGMT_OWE HDI_BIT(22)
93 #define HDI_KEY_MGMT_DPP HDI_BIT(23)
94 #define HDI_KEY_MGMT_FT_SHA384 HDI_BIT(24)
95 
96 #define HDI_PMKID_LEN 16
97 
98 #define HDI_EID_RSNX 244
99 #define HDI_RSNX_CAPAB_SAE_H2E 5
100 #define HDI_RSNX_CAPAB_SAE_PK 6
101 
102 #define HDI_CAPABILITY_PREAUTH HDI_BIT(0)
103 
104 #define HDI_AUTH_KEY_MGMT_NONE HDI_BIT_MULTI(0x00, 0x50, 0xf2, 0)
105 #define HDI_AUTH_KEY_MGMT_UNSPEC HDI_BIT_MULTI(0x00, 0x50, 0xf2, 1)
106 #define HDI_AUTH_KEY_MGMT_PSK_OVER HDI_BIT_MULTI(0x00, 0x50, 0xf2, 2)
107 #define HDI_CIPHER_SUITE_NONE HDI_BIT_MULTI(0x00, 0x50, 0xf2, 0)
108 #define HDI_CIPHER_SUITE_TKIP HDI_BIT_MULTI(0x00, 0x50, 0xf2, 2)
109 #define HDI_CIPHER_SUITE_CCMP HDI_BIT_MULTI(0x00, 0x50, 0xf2, 4)
110 
111 #define HDI_RSN_AUTH_KEY_MGMT_UNSPEC HDI_BIT_MULTI(0x00, 0x0f, 0xac, 1)
112 #define HDI_RSN_AUTH_KEY_MGMT_PSK_OVER HDI_BIT_MULTI(0x00, 0x0f, 0xac, 2)
113 #define HDI_RSN_AUTH_KEY_MGMT_FT HDI_BIT_MULTI(0x00, 0x0f, 0xac, 3)
114 #define HDI_RSN_AUTH_KEY_MGMT_FT_PSK HDI_BIT_MULTI(0x00, 0x0f, 0xac, 4)
115 #define HDI_RSN_AUTH_KEY_MGMT_SHA256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 5)
116 #define HDI_RSN_AUTH_KEY_MGMT_PSK_SHA256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 6)
117 #define HDI_RSN_AUTH_KEY_MGMT_SAE HDI_BIT_MULTI(0x00, 0x0f, 0xac, 8)
118 #define HDI_RSN_AUTH_KEY_MGMT_FT_SAE HDI_BIT_MULTI(0x00, 0x0f, 0xac, 9)
119 #define HDI_RSN_AUTH_KEY_MGMT_SUITE_B HDI_BIT_MULTI(0x00, 0x0f, 0xac, 11)
120 #define HDI_RSN_AUTH_KEY_MGMT_SUITE_B_192 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 12)
121 #define HDI_RSN_AUTH_KEY_MGMT_FT_SHA384 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 13)
122 #define HDI_RSN_AUTH_KEY_MGMT_FILS_SHA256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 14)
123 #define HDI_RSN_AUTH_KEY_MGMT_FILS_SHA384 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 15)
124 #define HDI_RSN_AUTH_KEY_MGMT_FT_FILS_SHA256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 16)
125 #define HDI_RSN_AUTH_KEY_MGMT_FT_FILS_SHA384 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 17)
126 #define HDI_RSN_AUTH_KEY_MGMT_OWE HDI_BIT_MULTI(0x00, 0x0f, 0xac, 18)
127 #define HDI_RSN_AUTH_KEY_MGMT_OSEN HDI_BIT_MULTI(0x50, 0x6f, 0x9a, 0x01)
128 #define HDI_RSN_AUTH_KEY_MGMT_DPP HDI_BIT_MULTI(0x50, 0x6f, 0x9a, 0x02)
129 
130 #define HDI_RSN_CIPHER_SUITE_NONE HDI_BIT_MULTI(0x00, 0x0f, 0xac, 0)
131 #define HDI_RSN_CIPHER_SUITE_TKIP HDI_BIT_MULTI(0x00, 0x0f, 0xac, 2)
132 
133 #define HDI_RSN_CIPHER_SUITE_CCMP HDI_BIT_MULTI(0x00, 0x0f, 0xac, 4)
134 #define HDI_RSN_CIPHER_SUITE_AES_128_CMAC HDI_BIT_MULTI(0x00, 0x0f, 0xac, 6)
135 #define HDI_RSN_CIPHER_SUITE_NO_GROUP_ADDRESSED HDI_BIT_MULTI(0x00, 0x0f, 0xac, 7)
136 #define HDI_RSN_CIPHER_SUITE_GCMP HDI_BIT_MULTI(0x00, 0x0f, 0xac, 8)
137 #define HDI_RSN_CIPHER_SUITE_GCMP_256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 9)
138 #define HDI_RSN_CIPHER_SUITE_CCMP_256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 10)
139 #define HDI_RSN_CIPHER_SUITE_BIP_GMAC_128 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 11)
140 #define HDI_RSN_CIPHER_SUITE_BIP_GMAC_256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 12)
141 #define HDI_RSN_CIPHER_SUITE_BIP_CMAC_256 HDI_BIT_MULTI(0x00, 0x0f, 0xac, 13)
142 
143 #define HDI_OUI_TYPE HDI_BIT_MULTI(0x00, 0x50, 0xf2, 1)
144 
145 #define SSID_MAX_LEN 32
146 
147 #define HDI_EID_SSID 0
148 #define HDI_EID_SUPP_RATES 1
149 #define HDI_EID_DS_PARAMS 3
150 #define HDI_EID_CF_PARAMS 4
151 #define HDI_EID_TIM 5
152 #define HDI_EID_COUNTRY 7
153 #define HDI_EID_CHALLENGE 16
154 #define HDI_EID_PWR_CAPABILITY 33
155 #define HDI_EID_SUPPORTED_CHANNELS 36
156 #define HDI_EID_ERP_INFO 42
157 #define HDI_EID_HT_CAP 45
158 #define HDI_EID_RSN 48
159 #define HDI_EID_EXT_SUPP_RATES 50
160 #define HDI_EID_MOBILITY_DOMAIN 54
161 #define HDI_EID_FAST_BSS_TRANSITION 55
162 #define HDI_EID_TIMEOUT_INTERVAL 56
163 #define HDI_EID_SUPPORTED_OPERATING_CLASSES 59
164 #define HDI_EID_HT_OPERATION 61
165 #define HDI_EID_WAPI 68
166 #define HDI_EID_RRM_ENABLED_CAPABILITIES 70
167 #define HDI_EID_SSID_LIST 84
168 #define HDI_EID_BSS_MAX_IDLE_PERIOD 90
169 #define HDI_EID_LINK_ID 101
170 #define HDI_EID_INTERWORKING 107
171 #define HDI_EID_QOS_MAP_SET 110
172 #define HDI_EID_MESH_CONFIG 113
173 #define HDI_EID_MESH_ID 114
174 #define HDI_EID_PEER_MGMT 117
175 #define HDI_EID_EXT_CAPAB 127
176 #define HDI_EID_AMPE 139
177 #define HDI_EID_MIC 140
178 #define HDI_EID_MULTI_BAND 158
179 #define HDI_EID_VHT_CAP 191
180 #define HDI_EID_VHT_OPERATION 192
181 #define HDI_EID_VHT_OPERATING_MODE_NOTIFICATION 199
182 #define HDI_EID_VENDOR_SPECIFIC 221
183 #define HDI_EID_CAG_NUMBER 237
184 #define HDI_EID_AP_CSN 239
185 #define HDI_EID_FILS_INDICATION 240
186 #define HDI_EID_DILS 241
187 #define HDI_EID_FRAGMENT 242
188 #define HDI_EID_EXTENSION 255
189 
190 /* Element ID Extension (EID 255) values */
191 #define HDI_EID_EXT_ASSOC_DELAY_INFO 1
192 #define HDI_EID_EXT_FILS_REQ_PARAMS 2
193 #define HDI_EID_EXT_FILS_KEY_CONFIRM 3
194 #define HDI_EID_EXT_FILS_SESSION 4
195 #define HDI_EID_EXT_FILS_HLP_CONTAINER 5
196 #define HDI_EID_EXT_FILS_IP_ADDR_ASSIGN 6
197 #define HDI_EID_EXT_KEY_DELIVERY 7
198 #define HDI_EID_EXT_FILS_WRAPPED_DATA 8
199 #define HDI_EID_EXT_FILS_PUBLIC_KEY 12
200 #define HDI_EID_EXT_FILS_NONCE 13
201 #define HDI_EID_EXT_OWE_DH_PARAM 32
202 #define HDI_EID_EXT_PASSWORD_IDENTIFIER 33
203 #define HDI_EID_EXT_HE_CAPABILITIES 35
204 #define HDI_EID_EXT_HE_OPERATION 36
205 #define HDI_EID_EXT_OCV_OCI 54
206 #define HDI_EID_EXT_EHT_CAPABILITIES_80211BE 108
207 
208 #define HDI_EID_EXT_EDMG_OPERATION 62
209 #define HDI_EXT_CAPAB_UTF_8_SSID 48
210 
211 #define HDI_CAP_ESS    0x0001
212 #define HDI_CAP_IBSS    0x0002
213 #define HDI_CAP_PRIVACY    0x0010
214 
215 #define HDI_CAP_DMG_MASK    0x0003
216 #define HDI_CAP_DMG_IBSS    0x0001
217 #define HDI_CAP_DMG_PBSS    0x0002
218 #define HDI_CAP_DMG_AP    0x0003
219 
220 #define HDI_OUI_MICROSOFT 0x0050f2
221 #define HDI_OUI_WFA 0x506f9a
222 #define HDI_P2P_OUI_TYPE 9
223 #define HDI_HT_CAPAB_OUI_TYPE 0x33
224 #define HDI_OUI_BROADCOM 0x00904c
225 
226 #define HDI_VHT_TYPE        0x04
227 #define HDI_VHT_SUBTYPE    0x08
228 #define HDI_VHT_SUBTYPE2    0x00
229 
230 #define HDI_HS20_INDICATION_OUI_TYPE 16
231 #define HDI_HS20_OSEN_OUI_TYPE 18
232 #define HDI_HS20_ROAMING_CONS_SEL_OUI_TYPE 29
233 
234 #define HDI_OUI_QCA 0x001374
235 
236 #define HDI_MOBILITY_DOMAIN_ID_LEN 2
237 
238 #define HDI_FILS_NONCE_LEN 16
239 #define HDI_FILS_SESSION_LEN 8
240 
241 #define HDI_KEY_RSC_LEN 8
242 
243 #define HDI_NONCE_LEN 32
244 
245 #define HDI_MAX_CRED_COUNT 10
246 #define HDI_MAX_REQ_DEV_TYPE_COUNT 10
247 
248 #define HDI_POS_ZERO 0
249 #define HDI_POS_FIRST 1
250 #define HDI_POS_SECOND 2
251 #define HDI_POS_THIRD 3
252 #define HDI_POS_FOURTH 4
253 #define HDI_POS_FIVE 5
254 #define HDI_POS_SIX 6
255 #define HDI_POS_EIGHT 8
256 #define HDI_POS_TEN 10
257 #define HDI_POS_OT 16
258 #define HDI_POS_ET 18
259 #define HDI_POS_TT 32
260 #define HDI_POS_OTX 126
261 #define HDI_POS_DMG 45000
262 
263 #define HDI_MOVE_EIGHT 8
264 #define HDI_MOVE_SIXTEEN 16
265 #define HDI_MOVE_TF 24
266 
267 #define HDI_BSSID_LENGTH 18
268 #define HDI_SSID_LENGTH 132
269 #define HDI_SCAN_INFO_CAPABILITY_LENGTH 256
270 #define HDI_GET_MAX_SCAN_INFO 256 /* Maximum number of scan infos obtained at a time */
271 #define HDI_COUNTRY_CODE_LENGTH 2
272 #define HDI_MAC_LENGTH 17
273 
274 #define HDI_STA_CB_SCAN_FAILED 1
275 #define HDI_STA_CB_SCAN_OVER_OK 2
276 
277 #define WIFI_CAPABILITY_DEFAULT 0
278 #define CMD_GET_FEATURE_CAPAB 101
279 #define CMD_GET_WIFI_CATEGORY 127
280 #define HDI_SCAN_RESULTS_MAX_LEN 1024
281 
282 #define HDI_CAP_WAPI_BIT_OFFSET 9
283 #define HDI_KEY_MGMT_WAPI_CERT_AKM 0X01
284 #define HDI_KEY_MGMT_WAPI_PSK_AKM 0X02
285 
286 typedef long os_time_t;
287 
288 enum HDIVendorElementId {
289     HDI_VENDOR_ELEM_P2P_PREF_CHAN_LIST = 0,
290     HDI_VENDOR_ELEM_HE_CAPAB = 1,
291     HDI_VENDOR_ELEM_HE_OPER = 2,
292     HDI_VENDOR_ELEM_RAPS = 3,
293     HDI_VENDOR_ELEM_MU_EDCA_PARAMS = 4,
294     HDI_VENDOR_ELEM_BSS_COLOR_CHANGE = 5,
295 };
296 
297 typedef enum HdiPortType {
298     HDI_PORT_TYPE_STATION    = 0,
299     HDI_PORT_TYPE_AP         = 1,
300     HDI_PORT_TYPE_P2P_CLIENT = 2,
301     HDI_PORT_TYPE_P2P_GO     = 3,
302     HDI_PORT_TYPE_P2P_DEVICE = 4,
303     HDI_PORT_TYPE_BUTT            // invalid type
304 } HdiPortType;
305 
306 typedef enum {
307     PROTOCOL_80211_IFTYPE_UNSPECIFIED,
308     PROTOCOL_80211_IFTYPE_ADHOC,
309     PROTOCOL_80211_IFTYPE_STATION,
310     PROTOCOL_80211_IFTYPE_AP,
311     PROTOCOL_80211_IFTYPE_AP_VLAN,
312     PROTOCOL_80211_IFTYPE_WDS,
313     PROTOCOL_80211_IFTYPE_MONITOR,
314     PROTOCOL_80211_IFTYPE_MESH_POINT,
315     PROTOCOL_80211_IFTYPE_P2P_CLIENT,
316     PROTOCOL_80211_IFTYPE_P2P_GO,
317     PROTOCOL_80211_IFTYPE_P2P_DEVICE,
318     PROTOCOL_80211_IFTYPE_NUM,
319 } FeatureType;
320 #ifdef __cplusplus
321 }
322 #endif
323 #endif