Zephyr Project API  3.4.0
A Scalable Open Source RTOS
wifi.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018 Texas Instruments, Incorporated
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12#ifndef ZEPHYR_INCLUDE_NET_WIFI_H_
13#define ZEPHYR_INCLUDE_NET_WIFI_H_
14
15#include <zephyr/sys/util.h> /* for ARRAY_SIZE */
16
17#define WIFI_COUNTRY_CODE_LEN 2
18
19#define WIFI_LISTEN_INTERVAL_MIN 0
20#define WIFI_LISTEN_INTERVAL_MAX 65535
21
22/* Not having support for legacy types is deliberate to enforce
23 * higher security.
24 */
34
35 __WIFI_SECURITY_TYPE_AFTER_LAST,
36 WIFI_SECURITY_TYPE_MAX = __WIFI_SECURITY_TYPE_AFTER_LAST - 1,
38};
39
43static inline const char *wifi_security_txt(enum wifi_security_type security)
44{
45 switch (security) {
47 return "OPEN";
49 return "WEP";
51 return "WPA-PSK";
53 return "WPA2-PSK";
55 return "WPA2-PSK-SHA256";
57 return "WPA3-SAE";
59 return "WAPI";
61 return "EAP";
63 default:
64 return "UNKNOWN";
65 }
66}
67
68/* Management frame protection (IEEE 802.11w) options */
73
74 __WIFI_MFP_AFTER_LAST,
75 WIFI_MFP_MAX = __WIFI_MFP_AFTER_LAST - 1,
77};
78
82static inline const char *wifi_mfp_txt(enum wifi_mfp_options mfp)
83{
84 switch (mfp) {
86 return "Disable";
88 return "Optional";
90 return "Required";
92 default:
93 return "UNKNOWN";
94 }
95}
96
101
102 __WIFI_FREQ_BAND_AFTER_LAST,
103 WIFI_FREQ_BAND_MAX = __WIFI_FREQ_BAND_AFTER_LAST - 1,
106
110static inline const char *wifi_band_txt(enum wifi_frequency_bands band)
111{
112 switch (band) {
114 return "2.4GHz";
116 return "5GHz";
118 return "6GHz";
120 default:
121 return "UNKNOWN";
122 }
123}
124
125#define WIFI_SSID_MAX_LEN 32
126#define WIFI_PSK_MAX_LEN 64
127#define WIFI_MAC_ADDR_LEN 6
128
129#define WIFI_CHANNEL_MAX 233
130#define WIFI_CHANNEL_ANY 255
131
132/* Based on https://w1.fi/wpa_supplicant/devel/defs_8h.html#a4aeb27c1e4abd046df3064ea9756f0bc */
144
145 __WIFI_STATE_AFTER_LAST,
146 WIFI_STATE_MAX = __WIFI_STATE_AFTER_LAST - 1,
149
153static inline const char *wifi_state_txt(enum wifi_iface_state state)
154{
155 switch (state) {
157 return "DISCONNECTED";
159 return "INACTIVE";
161 return "INTERFACE_DISABLED";
163 return "SCANNING";
165 return "AUTHENTICATING";
167 return "ASSOCIATING";
169 return "ASSOCIATED";
171 return "4WAY_HANDSHAKE";
173 return "GROUP_HANDSHAKE";
175 return "COMPLETED";
177 default:
178 return "UNKNOWN";
179 }
180}
181
182/* Based on https://w1.fi/wpa_supplicant/devel/structwpa__ssid.html#a625821e2acfc9014f3b3de6e6593ffb7 */
190
191 __WIFI_MODE_AFTER_LAST,
192 WIFI_MODE_MAX = __WIFI_MODE_AFTER_LAST - 1,
195
199static inline const char *wifi_mode_txt(enum wifi_iface_mode mode)
200{
201 switch (mode) {
202 case WIFI_MODE_INFRA:
203 return "STATION";
204 case WIFI_MODE_IBSS:
205 return "ADHOC";
206 case WIFI_MODE_AP:
207 return "ACCESS POINT";
208 case WIFI_MODE_P2P_GO:
209 return "P2P GROUP OWNER";
211 return "P2P GROUP FORMATION";
212 case WIFI_MODE_MESH:
213 return "MESH";
215 default:
216 return "UNKNOWN";
217 }
218}
219
220/* As per https://en.wikipedia.org/wiki/Wi-Fi#Versions_and_generations */
231
232 __WIFI_LINK_MODE_AFTER_LAST,
233 WIFI_LINK_MODE_MAX = __WIFI_LINK_MODE_AFTER_LAST - 1,
236
240static inline const char *wifi_link_mode_txt(enum wifi_link_mode link_mode)
241{
242 switch (link_mode) {
243 case WIFI_0:
244 return "WIFI 0 (802.11)";
245 case WIFI_1:
246 return "WIFI 1 (802.11b)";
247 case WIFI_2:
248 return "WIFI 2 (802.11a)";
249 case WIFI_3:
250 return "WIFI 3 (802.11g)";
251 case WIFI_4:
252 return "WIFI 4 (802.11n/HT)";
253 case WIFI_5:
254 return "WIFI 5 (802.11ac/VHT)";
255 case WIFI_6:
256 return "WIFI 6 (802.11ax/HE)";
257 case WIFI_6E:
258 return "WIFI 6E (802.11ax 6GHz/HE)";
259 case WIFI_7:
260 return "WIFI 7 (802.11be/EHT)";
262 default:
263 return "UNKNOWN";
264 }
265}
266
270};
271
272static const char * const wifi_ps2str[] = {
273 [WIFI_PS_DISABLED] = "Power save disabled",
274 [WIFI_PS_ENABLED] = "Power save enabled",
275};
276
279 /* This has to be configured before connecting to the AP,
280 * as support for ADDTS action frames is not available.
281 */
283};
284
285static const char * const wifi_ps_mode2str[] = {
286 [WIFI_PS_MODE_LEGACY] = "Legacy power save",
287 [WIFI_PS_MODE_WMM] = "WMM power save",
288};
289
293};
294
295static const char * const wifi_twt_operation2str[] = {
296 [WIFI_TWT_SETUP] = "TWT setup",
297 [WIFI_TWT_TEARDOWN] = "TWT teardown",
298};
299
305
306static const char * const wifi_twt_negotiation_type2str[] = {
307 [WIFI_TWT_INDIVIDUAL] = "TWT individual negotiation",
308 [WIFI_TWT_BROADCAST] = "TWT broadcast negotiation",
309 [WIFI_TWT_WAKE_TBTT] = "TWT wake TBTT negotiation",
310};
311
313 /* TWT Requests */
317 /* TWT Responses */
323};
324
325static const char * const wifi_twt_setup_cmd2str[] = {
326 /* TWT Requests */
327 [WIFI_TWT_SETUP_CMD_REQUEST] = "TWT request",
328 [WIFI_TWT_SETUP_CMD_SUGGEST] = "TWT suggest",
329 [WIFI_TWT_SETUP_CMD_DEMAND] = "TWT demand",
330 /* TWT Responses */
331 [WIFI_TWT_SETUP_CMD_GROUPING] = "TWT grouping",
332 [WIFI_TWT_SETUP_CMD_ACCEPT] = "TWT accept",
333 [WIFI_TWT_SETUP_CMD_ALTERNATE] = "TWT alternate",
334 [WIFI_TWT_SETUP_CMD_DICTATE] = "TWT dictate",
335 [WIFI_TWT_SETUP_CMD_REJECT] = "TWT reject",
336};
337
339 /* TWT Setup response status */
342};
343
354};
355
356static const char * const twt_err_code_tbl[] = {
357 [WIFI_TWT_FAIL_UNSPECIFIED] = "Unspecfied",
358 [WIFI_TWT_FAIL_CMD_EXEC_FAIL] = "Command Execution failed",
360 "Operation not supported",
362 "Unable to get iface status",
364 "Device not connected",
365 [WIFI_TWT_FAIL_PEER_NOT_HE_CAPAB] = "Peer not HE capable",
366 [WIFI_TWT_FAIL_PEER_NOT_TWT_CAPAB] = "Peer not TWT capable",
368 "Operation already in progress",
370 "Invalid negotiated flow id",
371};
372
373static inline const char *get_twt_err_code_str(int16_t err_no)
374{
375 if ((err_no) < (int16_t)ARRAY_SIZE(twt_err_code_tbl)) {
376 return twt_err_code_tbl[err_no];
377 }
378
379 return "<unknown>";
380}
381
388};
389
393};
394
395static const char * const wifi_ps_wakeup_mode2str[] = {
396 [WIFI_PS_WAKEUP_MODE_DTIM] = "PS wakeup mode DTIM",
397 [WIFI_PS_WAKEUP_MODE_LISTEN_INTERVAL] = "PS wakeup mode listen interval",
398};
399
408};
409
410static const char * const ps_param_config_err_code_tbl[] = {
411 [WIFI_PS_PARAM_FAIL_UNSPECIFIED] = "Unspecfied",
412 [WIFI_PS_PARAM_FAIL_CMD_EXEC_FAIL] = "Command Execution failed",
414 "Operation not supported",
416 "Unable to get iface status",
418 "Can not set while device not connected",
420 "Can not set while device already connected",
422 "Can not set due to invalid range",
423};
424
425static inline const char *get_ps_config_err_code_str(int16_t err_no)
426{
428 return ps_param_config_err_code_tbl[err_no];
429 }
430
431 return "<unknown>";
432}
433#endif /* ZEPHYR_INCLUDE_NET_WIFI_H_ */
#define ARRAY_SIZE(array)
Number of elements in the given array.
Definition: util.h:122
state
Definition: parser_state.h:29
__INT16_TYPE__ int16_t
Definition: stdint.h:73
Misc utilities.
static const char *const wifi_twt_negotiation_type2str[]
Definition: wifi.h:306
wifi_ps
Definition: wifi.h:267
@ WIFI_PS_ENABLED
Definition: wifi.h:269
@ WIFI_PS_DISABLED
Definition: wifi.h:268
wifi_frequency_bands
Definition: wifi.h:97
@ WIFI_FREQ_BAND_6_GHZ
Definition: wifi.h:100
@ WIFI_FREQ_BAND_2_4_GHZ
Definition: wifi.h:98
@ WIFI_FREQ_BAND_UNKNOWN
Definition: wifi.h:104
@ WIFI_FREQ_BAND_5_GHZ
Definition: wifi.h:99
@ WIFI_FREQ_BAND_MAX
Definition: wifi.h:103
wifi_mfp_options
Definition: wifi.h:69
@ WIFI_MFP_DISABLE
Definition: wifi.h:70
@ WIFI_MFP_OPTIONAL
Definition: wifi.h:71
@ WIFI_MFP_MAX
Definition: wifi.h:75
@ WIFI_MFP_UNKNOWN
Definition: wifi.h:76
@ WIFI_MFP_REQUIRED
Definition: wifi.h:72
wifi_twt_setup_cmd
Definition: wifi.h:312
@ WIFI_TWT_SETUP_CMD_DEMAND
Definition: wifi.h:316
@ WIFI_TWT_SETUP_CMD_REQUEST
Definition: wifi.h:314
@ WIFI_TWT_SETUP_CMD_ALTERNATE
Definition: wifi.h:320
@ WIFI_TWT_SETUP_CMD_GROUPING
Definition: wifi.h:318
@ WIFI_TWT_SETUP_CMD_DICTATE
Definition: wifi.h:321
@ WIFI_TWT_SETUP_CMD_SUGGEST
Definition: wifi.h:315
@ WIFI_TWT_SETUP_CMD_REJECT
Definition: wifi.h:322
@ WIFI_TWT_SETUP_CMD_ACCEPT
Definition: wifi.h:319
static const char * wifi_link_mode_txt(enum wifi_link_mode link_mode)
Definition: wifi.h:240
static const char * wifi_mfp_txt(enum wifi_mfp_options mfp)
Definition: wifi.h:82
static const char *const wifi_ps_wakeup_mode2str[]
Definition: wifi.h:395
static const char *const twt_err_code_tbl[]
Definition: wifi.h:356
static const char * wifi_security_txt(enum wifi_security_type security)
Definition: wifi.h:43
static const char * wifi_state_txt(enum wifi_iface_state state)
Definition: wifi.h:153
wifi_twt_setup_resp_status
Definition: wifi.h:338
@ WIFI_TWT_RESP_RECEIVED
Definition: wifi.h:340
@ WIFI_TWT_RESP_NOT_RECEIVED
Definition: wifi.h:341
wifi_iface_mode
Definition: wifi.h:183
@ WIFI_MODE_AP
Definition: wifi.h:186
@ WIFI_MODE_IBSS
Definition: wifi.h:185
@ WIFI_MODE_P2P_GO
Definition: wifi.h:187
@ WIFI_MODE_MAX
Definition: wifi.h:192
@ WIFI_MODE_P2P_GROUP_FORMATION
Definition: wifi.h:188
@ WIFI_MODE_INFRA
Definition: wifi.h:184
@ WIFI_MODE_MESH
Definition: wifi.h:189
@ WIFI_MODE_UNKNOWN
Definition: wifi.h:193
static const char * get_twt_err_code_str(int16_t err_no)
Definition: wifi.h:373
static const char * wifi_mode_txt(enum wifi_iface_mode mode)
Definition: wifi.h:199
static const char *const wifi_twt_operation2str[]
Definition: wifi.h:295
wifi_twt_negotiation_type
Definition: wifi.h:300
@ WIFI_TWT_BROADCAST
Definition: wifi.h:302
@ WIFI_TWT_WAKE_TBTT
Definition: wifi.h:303
@ WIFI_TWT_INDIVIDUAL
Definition: wifi.h:301
static const char *const wifi_ps_mode2str[]
Definition: wifi.h:285
static const char * get_ps_config_err_code_str(int16_t err_no)
Definition: wifi.h:425
ps_param_type
Definition: wifi.h:382
@ WIFI_PS_PARAM_LISTEN_INTERVAL
Definition: wifi.h:384
@ WIFI_PS_PARAM_STATE
Definition: wifi.h:383
@ WIFI_PS_PARAM_WAKEUP_MODE
Definition: wifi.h:385
@ WIFI_PS_PARAM_MODE
Definition: wifi.h:386
@ WIFI_PS_PARAM_TIMEOUT
Definition: wifi.h:387
wifi_twt_fail_reason
Definition: wifi.h:344
@ WIFI_TWT_FAIL_INVALID_FLOW_ID
Definition: wifi.h:353
@ WIFI_TWT_FAIL_CMD_EXEC_FAIL
Definition: wifi.h:346
@ WIFI_TWT_FAIL_OPERATION_NOT_SUPPORTED
Definition: wifi.h:347
@ WIFI_TWT_FAIL_UNABLE_TO_GET_IFACE_STATUS
Definition: wifi.h:348
@ WIFI_TWT_FAIL_PEER_NOT_HE_CAPAB
Definition: wifi.h:350
@ WIFI_TWT_FAIL_DEVICE_NOT_CONNECTED
Definition: wifi.h:349
@ WIFI_TWT_FAIL_OPERATION_IN_PROGRESS
Definition: wifi.h:352
@ WIFI_TWT_FAIL_PEER_NOT_TWT_CAPAB
Definition: wifi.h:351
@ WIFI_TWT_FAIL_UNSPECIFIED
Definition: wifi.h:345
wifi_iface_state
Definition: wifi.h:133
@ WIFI_STATE_UNKNOWN
Definition: wifi.h:147
@ WIFI_STATE_DISCONNECTED
Definition: wifi.h:134
@ WIFI_STATE_GROUP_HANDSHAKE
Definition: wifi.h:142
@ WIFI_STATE_INTERFACE_DISABLED
Definition: wifi.h:135
@ WIFI_STATE_4WAY_HANDSHAKE
Definition: wifi.h:141
@ WIFI_STATE_MAX
Definition: wifi.h:146
@ WIFI_STATE_ASSOCIATED
Definition: wifi.h:140
@ WIFI_STATE_SCANNING
Definition: wifi.h:137
@ WIFI_STATE_AUTHENTICATING
Definition: wifi.h:138
@ WIFI_STATE_COMPLETED
Definition: wifi.h:143
@ WIFI_STATE_ASSOCIATING
Definition: wifi.h:139
@ WIFI_STATE_INACTIVE
Definition: wifi.h:136
static const char *const wifi_twt_setup_cmd2str[]
Definition: wifi.h:325
wifi_link_mode
Definition: wifi.h:221
@ WIFI_6E
Definition: wifi.h:229
@ WIFI_LINK_MODE_MAX
Definition: wifi.h:233
@ WIFI_5
Definition: wifi.h:227
@ WIFI_0
Definition: wifi.h:222
@ WIFI_7
Definition: wifi.h:230
@ WIFI_4
Definition: wifi.h:226
@ WIFI_2
Definition: wifi.h:224
@ WIFI_6
Definition: wifi.h:228
@ WIFI_1
Definition: wifi.h:223
@ WIFI_LINK_MODE_UNKNOWN
Definition: wifi.h:234
@ WIFI_3
Definition: wifi.h:225
static const char *const wifi_ps2str[]
Definition: wifi.h:272
wifi_ps_wakeup_mode
Definition: wifi.h:390
@ WIFI_PS_WAKEUP_MODE_LISTEN_INTERVAL
Definition: wifi.h:392
@ WIFI_PS_WAKEUP_MODE_DTIM
Definition: wifi.h:391
wifi_twt_operation
Definition: wifi.h:290
@ WIFI_TWT_SETUP
Definition: wifi.h:291
@ WIFI_TWT_TEARDOWN
Definition: wifi.h:292
static const char * wifi_band_txt(enum wifi_frequency_bands band)
Definition: wifi.h:110
wifi_config_ps_param_fail_reason
Definition: wifi.h:400
@ WIFI_PS_PARAM_FAIL_UNABLE_TO_GET_IFACE_STATUS
Definition: wifi.h:404
@ WIFI_PS_PARAM_FAIL_UNSPECIFIED
Definition: wifi.h:401
@ WIFI_PS_PARAM_FAIL_CMD_EXEC_FAIL
Definition: wifi.h:402
@ WIFI_PS_PARAM_FAIL_DEVICE_NOT_CONNECTED
Definition: wifi.h:405
@ WIFI_PS_PARAM_LISTEN_INTERVAL_RANGE_INVALID
Definition: wifi.h:407
@ WIFI_PS_PARAM_FAIL_OPERATION_NOT_SUPPORTED
Definition: wifi.h:403
@ WIFI_PS_PARAM_FAIL_DEVICE_CONNECTED
Definition: wifi.h:406
wifi_security_type
Definition: wifi.h:25
@ WIFI_SECURITY_TYPE_SAE
Definition: wifi.h:29
@ WIFI_SECURITY_TYPE_PSK_SHA256
Definition: wifi.h:28
@ WIFI_SECURITY_TYPE_PSK
Definition: wifi.h:27
@ WIFI_SECURITY_TYPE_WAPI
Definition: wifi.h:30
@ WIFI_SECURITY_TYPE_WEP
Definition: wifi.h:32
@ WIFI_SECURITY_TYPE_NONE
Definition: wifi.h:26
@ WIFI_SECURITY_TYPE_WPA_PSK
Definition: wifi.h:33
@ WIFI_SECURITY_TYPE_UNKNOWN
Definition: wifi.h:37
@ WIFI_SECURITY_TYPE_EAP
Definition: wifi.h:31
@ WIFI_SECURITY_TYPE_MAX
Definition: wifi.h:36
static const char *const ps_param_config_err_code_tbl[]
Definition: wifi.h:410
wifi_ps_mode
Definition: wifi.h:277
@ WIFI_PS_MODE_WMM
Definition: wifi.h:282
@ WIFI_PS_MODE_LEGACY
Definition: wifi.h:278