blob: 1a67e609397eb4e7289c8ba69d073455ecb7dafd [file] [log] [blame]
b.liud440f9f2025-04-18 10:44:31 +08001/*-----------------------------------------------------------------------------------------------*/
2/**
3 @file ql_wifi_common.h
4 @brief Wi-Fi common data struct
5
6 @detailes
7 Quectel series module Wi-Fi service.
8
9 @htmlonly
10 <span style="font-weight: bold">History</span>
11 @endhtmlonly
12
13 when | who | what, where, why
14 -------- | --- | ----------------------------------------------------------
15 2020-04-03 | ewen.li | Created .
16 2021-11-08 | ewen.li | Add Wi-Fi P2P data structure .
17
18 Copyright (c) 2019 Quectel Wireless Solution, Co., Ltd. All Rights Reserved.
19 Quectel Wireless Solution Proprietary and Confidential.
20-------------------------------------------------------------------------------------------------*/
21#ifndef __QL_WIFI_COMMON_H__
22#define __QL_WIFI_COMMON_H__
23
24#include "ql_net_common.h"
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30#define QL_WIFI_MAX_STA_NUM (32) /**< Maximum number of external STA device that can be connected in AP mode */
31#define QL_WIFI_MAX_ACL_MAC_CNT (32) /**< Maximum number of MAC address that can be set by access rule */
32#define QL_WIFI_MAX_SCAN_INFO_CNT (60) /**< Maximum number of AP information that can be scanned in STA mode */
33#define QL_WIFI_MAX_LONG_MSG_LEN_V01 4096
34#define IS_VALID_QL_WIFI_SSID_HIDDEN(hidden) ((0 == hidden) || (1 == hidden))
35#define IS_VALID_QL_WIFI_ISOLATE(isolate) ((0 == isolate) || (1 == isolate))
36#define IS_VALID_QL_WIFI_MAX_STA_NUM(max_sta) ((1 <= max_sta) && (QL_WIFI_MAX_STA_NUM >= max_sta))
37
38typedef enum QL_WIFI_WORK_MODE_ENUM
39{
40 QL_WIFI_WORK_MODE_MIN = -1,
41 QL_WIFI_WORK_MODE_STA = 0, /**< STA mode */
42 QL_WIFI_WORK_MODE_AP0, /**< Single AP mode */
43 QL_WIFI_WORK_MODE_MAX
44} QL_WIFI_WORK_MODE_E;
45#define IS_VALID_QL_WIFI_WORK_MODE(mode) ((mode>QL_WIFI_WORK_MODE_MIN) && (mode<QL_WIFI_WORK_MODE_MAX))
46
47typedef enum QL_WIFI_INDEX_ENUM
48{
49 QL_WIFI_AP_INDEX_MIN = -1,
50 QL_WIFI_AP_INDEX_AP0 = 0, /**< Index of hotspot 0 */
51 QL_WIFI_AP_INDEX_MAX
52} QL_WIFI_AP_INDEX_E;
53#define IS_VALID_QL_WIFI_INDEX(idx) ((idx>QL_WIFI_AP_INDEX_MIN) && (idx<QL_WIFI_AP_INDEX_MAX))
54
55typedef enum
56{
57 QL_WIFI_SUB_REASON_NONE = 0,
58 QL_WIFI_SUB_REASON_WRONG_KEY = 1,
59 QL_WIFI_SUB_REASON_AUTH_FAILED = 2,
60 QL_WIFI_SUB_REASON_NO_PSK_AVAILABLE = 3,
61 QL_WIFI_SUB_REASON_CONN_FAILED = 4,
62
63 QL_WIFI_SUB_REASON_P2P_GRP_REM_SILENT = 5,
64 QL_WIFI_SUB_REASON_P2P_GRP_REM_FORMATION_FAILED = 6,
65 QL_WIFI_SUB_REASON_P2P_GRP_REM_REQUESTED = 7,
66 QL_WIFI_SUB_REASON_P2P_GRP_REM_IDLE_TIMEOUT= 8,
67 QL_WIFI_SUB_REASON_P2P_GRP_REM_UNAVAILABLE = 9,
68 QL_WIFI_SUB_REASON_P2P_GRP_REM_GO_ENDING_SESSION = 10,
69 QL_WIFI_SUB_REASON_P2P_GRP_REM_PSK_FAILURE = 11,
70 QL_WIFI_SUB_REASON_P2P_GRP_REM_FREQ_CONFLICT = 12,
71 QL_WIFI_SUB_REASON_P2P_GRP_REM_GO_LEAVE_CHANNEL = 13,
72
73 QL_WIFI_SUB_REASON_P2P_FAIL_BASE = 15,
74 QL_WIFI_SUB_REASON_P2P_FAIL_INFO_CURRENTLY_UNAVAILABLE = 16,
75 QL_WIFI_SUB_REASON_P2P_FAIL_INCOMPATIBLE_PARAMS = 17,
76 QL_WIFI_SUB_REASON_P2P_FAIL_LIMIT_REACHED = 18,
77 QL_WIFI_SUB_REASON_P2P_FAIL_INVALID_PARAMS = 19,
78 QL_WIFI_SUB_REASON_P2P_FAIL_UNABLE_TO_ACCOMMODATE = 20,
79 QL_WIFI_SUB_REASON_P2P_FAIL_PREV_PROTOCOL_ERROR = 21,
80 QL_WIFI_SUB_REASON_P2P_FAIL_NO_COMMON_CHANNELS = 22,
81 QL_WIFI_SUB_REASON_P2P_FAIL_UNKNOWN_GROUP = 23,
82 QL_WIFI_SUB_REASON_P2P_FAIL_BOTH_GO_INTENT_15 = 24,
83 QL_WIFI_SUB_REASON_P2P_FAIL_INCOMPATIBLE_PROV_METHOD = 25,
84 QL_WIFI_SUB_REASON_P2P_FAIL_REJECTED_BY_USER = 26,
85 QL_WIFI_SUB_REASON_P2P_FAIL_TIMEOUT = 27,
86
87 QL_WIFI_SUB_REASON_UNKNOW
88} QL_WIFI_SUB_REASON_CODE_E;
89
90typedef enum
91{
92 /**< Reason codes (IEEE Std 802.11-2016, 9.4.1.7, Table 9-45) */
93 QL_WIFI_REASON_SUCCEED = 0,
94 QL_WIFI_REASON_UNSPECIFIED = 1,
95 QL_WIFI_REASON_PREV_AUTH_NOT_VALID = 2,
96 QL_WIFI_REASON_DEAUTH_LEAVING = 3,
97 QL_WIFI_REASON_DISASSOC_DUE_TO_INACTIVITY = 4,
98 QL_WIFI_REASON_DISASSOC_AP_BUSY = 5,
99 QL_WIFI_REASON_CLASS2_FRAME_FROM_NONAUTH_STA = 6,
100 QL_WIFI_REASON_CLASS3_FRAME_FROM_NONASSOC_STA = 7,
101 QL_WIFI_REASON_DISASSOC_STA_HAS_LEFT = 8,
102 QL_WIFI_REASON_STA_REQ_ASSOC_WITHOUT_AUTH = 9,
103 QL_WIFI_REASON_PWR_CAPABILITY_NOT_VALID = 10,
104 QL_WIFI_REASON_SUPPORTED_CHANNEL_NOT_VALID = 11,
105 QL_WIFI_REASON_BSS_TRANSITION_DISASSOC = 12,
106 QL_WIFI_REASON_INVALID_IE = 13,
107 QL_WIFI_REASON_MICHAEL_MIC_FAILURE = 14,
108 QL_WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT = 15,
109 QL_WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT = 16,
110 QL_WIFI_REASON_IE_IN_4WAY_DIFFERS = 17,
111 QL_WIFI_REASON_GROUP_CIPHER_NOT_VALID = 18,
112 QL_WIFI_REASON_PAIRWISE_CIPHER_NOT_VALID = 19,
113 QL_WIFI_REASON_AKMP_NOT_VALID = 20,
114 QL_WIFI_REASON_UNSUPPORTED_RSN_IE_VERSION = 21,
115 QL_WIFI_REASON_INVALID_RSN_IE_CAPAB = 22,
116 QL_WIFI_REASON_IEEE_802_1X_AUTH_FAILED = 23,
117 QL_WIFI_REASON_CIPHER_SUITE_REJECTED = 24,
118 QL_WIFI_REASON_TDLS_TEARDOWN_UNREACHABLE = 25,
119 QL_WIFI_REASON_TDLS_TEARDOWN_UNSPECIFIED = 26,
120 QL_WIFI_REASON_SSP_REQUESTED_DISASSOC = 27,
121 QL_WIFI_REASON_NO_SSP_ROAMING_AGREEMENT = 28,
122 QL_WIFI_REASON_BAD_CIPHER_OR_AKM = 29,
123 QL_WIFI_REASON_NOT_AUTHORIZED_THIS_LOCATION = 30,
124 QL_WIFI_REASON_SERVICE_CHANGE_PRECLUDES_TS = 31,
125 QL_WIFI_REASON_UNSPECIFIED_QOS_REASON = 32,
126 QL_WIFI_REASON_NOT_ENOUGH_BANDWIDTH = 33,
127 QL_WIFI_REASON_DISASSOC_LOW_ACK = 34,
128 QL_WIFI_REASON_EXCEEDED_TXOP = 35,
129 QL_WIFI_REASON_STA_LEAVING = 36,
130 QL_WIFI_REASON_END_TS_BA_DLS = 37,
131 QL_WIFI_REASON_UNKNOWN_TS_BA = 38,
132 QL_WIFI_REASON_TIMEOUT = 39,
133 QL_WIFI_REASON_PEERKEY_MISMATCH = 45,
134 QL_WIFI_REASON_AUTHORIZED_ACCESS_LIMIT_REACHED = 46,
135 QL_WIFI_REASON_EXTERNAL_SERVICE_REQUIREMENTS = 47,
136 QL_WIFI_REASON_INVALID_FT_ACTION_FRAME_COUNT = 48,
137 QL_WIFI_REASON_INVALID_PMKID = 49,
138 QL_WIFI_REASON_INVALID_MDE = 50,
139 QL_WIFI_REASON_INVALID_FTE = 51,
140 QL_WIFI_REASON_MESH_PEERING_CANCELLED = 52,
141 QL_WIFI_REASON_MESH_MAX_PEERS = 53,
142 QL_WIFI_REASON_MESH_CONFIG_POLICY_VIOLATION = 54,
143 QL_WIFI_REASON_MESH_CLOSE_RCVD = 55,
144 QL_WIFI_REASON_MESH_MAX_RETRIES = 56,
145 QL_WIFI_REASON_MESH_CONFIRM_TIMEOUT = 57,
146 QL_WIFI_REASON_MESH_INVALID_GTK = 58,
147 QL_WIFI_REASON_MESH_INCONSISTENT_PARAMS = 59,
148 QL_WIFI_REASON_MESH_INVALID_SECURITY_CAP = 60,
149 QL_WIFI_REASON_MESH_PATH_ERROR_NO_PROXY_INFO = 61,
150 QL_WIFI_REASON_MESH_PATH_ERROR_NO_FORWARDING_INFO = 62,
151 QL_WIFI_REASON_MESH_PATH_ERROR_DEST_UNREACHABLE = 63,
152 QL_WIFI_REASON_MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64,
153 QL_WIFI_REASON_MESH_CHANNEL_SWITCH_REGULATORY_REQ = 65,
154 QL_WIFI_REASON_MESH_CHANNEL_SWITCH_UNSPECIFIED = 66,
155
156 /**< Reason codes (Quectel extentions) */
157 QL_WIFI_REASON_SSID_NOT_FOUND = 10000,
158 QL_WIFI_REASON_P2P_GO_NEG_FAILURE = 10001,
159 QL_WIFI_REASON_P2P_GROUP_REMOVED = 10002
160} QL_WIFI_REASON_CODE_E;
161
162typedef enum QL_WIFI_AP_MODE_TYPE_ENUM
163{
164 QL_WIFI_AP_MODE_MIN = -1,
165 QL_WIFI_AP_MODE_80211B = 0, /**< IEEE 802.11b (2.4 GHz) */
166 QL_WIFI_AP_MODE_80211BG, /**< IEEE 802.11bg (2.4 GHz) */
167 QL_WIFI_AP_MODE_80211BGN, /**< IEEE 802.11bgn (2.4 GHz) */
168 QL_WIFI_AP_MODE_80211AX_2G, /**< IEEE 802.11ax (2.4 GHz) */
169 QL_WIFI_AP_MODE_MAX
170} QL_WIFI_AP_MODE_TYPE_E;
171#define IS_VALID_QL_WIFI_AP_MODE(mode) ((mode > QL_WIFI_AP_MODE_MIN) && (mode < QL_WIFI_AP_MODE_MAX))
172
173typedef enum QL_WIFI_BANDWIDTH_ENUM
174{
175 QL_WIFI_BANDWIDTH_MIN = -1,
176 QL_WIFI_BANDWIDTH_20MHZ = 0, /**< 20MHZ */
177 QL_WIFI_BANDWIDTH_40MHZ, /**< 40MHZ */
178 QL_WIFI_BANDWIDTH_80MHZ, /**< 80MHZ */
179 QL_WIFI_BANDWIDTH_160MHZ, /**< 160MHZ */
180 QL_WIFI_BANDWIDTH_MAX
181} QL_WIFI_BANDWIDTH_E;
182#define IS_VALID_QL_WIFI_BANDWIDTH(bandwidth) ((bandwidth > QL_WIFI_BANDWIDTH_MIN) && (bandwidth < QL_WIFI_BANDWIDTH_MAX))
183
184typedef enum QL_WIFI_AUTH_ENUM
185{
186 QL_WIFI_AUTH_MIN = -1,
187 QL_WIFI_AUTH_OPEN = 0, /**< OPEN */
188 QL_WIFI_AUTH_WEP, /**< WEP */
189 QL_WIFI_AUTH_WPA_PSK, /**< WPA Personal */
190 QL_WIFI_AUTH_WPA2_PSK, /**< WPA2 Personal */
191 QL_WIFI_AUTH_WPA3_PSK, /**< WPA3 Personal */
192 QL_WIFI_AUTH_WPA_WPA2_PSK_BOTH, /**< WPA&WPA2 Personal */
193 QL_WIFI_AUTH_WPA2_WPA3_PSK_BOTH, /**< WPA2&WPA3 Personal */
194 QL_WIFI_AUTH_WPA_WPA2_WPA3_PSK_ALL, /**< WPA&WPA2&WPA3 Personal */
195 QL_WIFI_AUTH_MAX
196} QL_WIFI_AUTH_E;
197#define IS_VALID_QL_WIFI_AUTH(auth) ((auth > QL_WIFI_AUTH_MIN) && (auth < QL_WIFI_AUTH_MAX))
198
199typedef enum QL_WIFI_AUTH_WPA_PSK_ENUM
200{
201 QL_WIFI_AUTH_WPA_PAIRWISE_MIN = -1,
202 QL_WIFI_AUTH_WPA_PAIRWISE_AUTO = 0, /**< TKIP and AES */
203 QL_WIFI_AUTH_WPA_PAIRWISE_TKIP, /**< TKIP */
204 QL_WIFI_AUTH_WPA_PAIRWISE_AES, /**< AES */
205 QL_WIFI_AUTH_WPA_PAIRWISE_MAX
206} QL_WIFI_AUTH_WPA_PSK_E;
207#define IS_VALID_QL_WIFI_AUTH_WPA_PSK(pairwise) ((pairwise > QL_WIFI_AUTH_WPA_PAIRWISE_MIN) && (pairwise < QL_WIFI_AUTH_WPA_PAIRWISE_MAX))
208
209typedef enum QL_WIFI_STATUS_ENUM
210{
211 QL_WIFI_STATUS_DISABLED = 0, /**< Wi-Fi is disabled */
212 QL_WIFI_STATUS_ENABLED, /**< Wi-Fi is enabled */
213 QL_WIFI_STATUS_ERROR /**< An error occurs in enabling Wi-Fi */
214} QL_WIFI_ENABLE_STATUS_E;
215
216typedef enum QL_WIFI_MAC_RULE_ENUM
217{
218 QL_WIFI_MAC_ACL_RULE_MIN = -1,
219 QL_WIFI_MAC_ACL_RULE_NONE = 0, /**< No rules */
220 QL_WIFI_MAC_ACL_RULE_BLACK, /**< Blacklist */
221 QL_WIFI_MAC_ACL_RULE_WHITE, /**< Whitelist */
222 QL_WIFI_MAC_ACL_RULE_MAX
223} QL_WIFI_MAC_ACL_RULE_E;
224#define IS_VALID_QL_WIFI_ACL_RULE(acl_rule) ((acl_rule > QL_WIFI_MAC_ACL_RULE_MIN) && (acl_rule < QL_WIFI_MAC_ACL_RULE_MAX))
225
226typedef enum QL_WIFI_STA_STATUS_ENUM
227{
228 QL_WIFI_STA_STATUS_NONE, /**< The corresponding Wi-Fi working mode is not set */
229 QL_WIFI_STA_STATUS_IDLE, /**< The corresponding Wi-Fi working mode is set, but the STA function is not enabled */
230 QL_WIFI_STA_STATUS_CONNECTING, /**< Connecting to AP */
231 QL_WIFI_STA_STATUS_ASSOCIATED, /**< Connected to AP, but no IP address is assigned */
232 QL_WIFI_STA_STATUS_CONNECTED, /**< Connected to the AP and an IP address is assigned */
233 QL_WIFI_STA_STATUS_DISCONNECTED, /**< Disconnected from AP */
234 QL_WIFI_STA_STATUS_ERROR /**< Error status */
235} QL_WIFI_STA_STATUS_E;
236
237typedef enum QL_WIFI_AP_STATUS_ENUM
238{
239 QL_WIFI_AP_STATUS_NONE, /**< The corresponding Wi-Fi working mode is not set */
240 QL_WIFI_AP_STATUS_IDLE, /**< The corresponding Wi-Fi working mode is set, but the AP function is not enabled */
241 QL_WIFI_AP_STATUS_ENABLING, /**< This status indication is not currently supported */
242 QL_WIFI_AP_STATUS_ENABLED, /**< After the AP function is successfully enabled, this status indication will be activated */
243 QL_WIFI_AP_STATUS_DISABLING, /**< This status indication is not currently supported */
244 QL_WIFI_AP_STATUS_ERROR /**< Error status */
245} QL_WIFI_AP_STATUS_E;
246
247typedef struct ql_wifi_ind_ap_status_struct
248{
249 QL_WIFI_AP_STATUS_E status; /**< The status of AP mode */
250 char ifname[32]; /**< Linux network interface name, such as wlan0, wlan1, etc */
251 char bssid[18]; /**< BSSID, basic service set identifier */
252}ql_wifi_ap_status_t;
253
254typedef struct {
255
256 /* Mandatory */
257 int32_t msg_id;
258
259 /* Mandatory */
260 int32_t result;
261
262 /* Mandatory */
263 uint32_t msg_data_len; /**< Must be set to # of elements in msg_data */
264 uint8_t msg_data[4096];
265}ql_ipc_wifi_rsp_msg_v01; /* Message */
266
267/** Message; */
268typedef struct {
269
270 /* Mandatory */
271 int32_t msg_id;
272
273 /* Mandatory */
274 uint32_t msg_data_len; /**< Must be set to # of elements in msg_data */
275 uint8_t msg_data[];
276}ql_ipc_wifi_req_msg_v01; /* Message */
277typedef struct ql_wifi_sta_status_struct
278{
279 QL_WIFI_STA_STATUS_E status; /**< The status of STA mode */
280 char ifname[32]; /**< Linux network interface name, such as wlan0, wlan1, etc */
281 char ap_bssid[18]; /**< BSSID, basic service set identifier */
282 int rssi; /**< The signal strength when the STA device is connected to the hotspot. Unit: dBm. -9999 indicates the invalid value */
283 uint8_t has_addr; /**< Whether it is an IPv4 address or not */
284 ql_net_addr_t addr; /**< IPv4 address. ql_net_addr_t is defined in the header file ql_net_common.h */
285 uint8_t has_addr6; /**< Whether it is an IPv6 address or not */
286 ql_net_addr6_t addr6; /**< IPv6 address. ql_net_addr6_t is defined in the header file ql_net_common.h */
287 QL_WIFI_REASON_CODE_E reason_code; /**< STA error reason code */
288 QL_WIFI_SUB_REASON_CODE_E sub_reason_code; /**< STA error sub-reason code */
289} ql_wifi_sta_status_t;
290
291typedef struct
292{
293 int is_connected; /**< Connection status. 1 means connected; 0 means disconnected */
294 char macaddr[18]; /**< MAC address of STA device */
295}ql_wifi_sta_connect_status_t;
296
297typedef struct ql_wifi_sta_scan_info_struct
298{
299 char bssid[18]; /**< BSSID, basic service set identifier */
300 char essid[33]; /**< ESSID, extended service set identifier */
301 int signal; /**< Signal strength. Unit: dBm */
302 int frequency; /**< The current operating frequency. Unit: Hz */
303 QL_WIFI_AUTH_E auth;
304} ql_wifi_sta_scan_info_t;
305
306typedef struct ql_wifi_sta_scan_list_struct
307{
308 int cnt; /**< Number of external hotspots scanned */
309 ql_wifi_sta_scan_info_t info[QL_WIFI_MAX_SCAN_INFO_CNT]; /**< Information of scanned external hotspots */
310}ql_wifi_sta_scan_list_t;
311
312typedef struct ql_wifi_sta_scan_result_struct
313{
314 int scan_is_busy;/**< Whether scan is busy, 1 means busy, 0 means idle */
315 ql_wifi_sta_scan_list_t scan_list; /**< The list of scan result */
316}ql_wifi_sta_scan_result_t;
317
318typedef struct
319{
320 QL_WIFI_AUTH_E auth; /**< Authentication type */
321 union
322 {
323 /**< wep authentication information */
324 struct
325 {
326 int default_index; /**< WEP configuration index */
327 char passwd[4][64]; /**< WEP password */
328 } wep;
329
330 /**< wpa_psk authentication information */
331 struct
332 {
333 QL_WIFI_AUTH_WPA_PSK_E pairwise; /**< Encryption type */
334 char passwd[64]; /**< WPA_PSK password */
335 int group_rekey; /**< Group key update period */
336 } wpa_psk;
337 }info;
338} ql_wifi_ap_auth_t;
339
340typedef struct
341{
342 QL_WIFI_AUTH_E auth; /**< Authentication type */
343 union
344 {
345 /**< wep authentication information */
346 struct
347 {
348 char passwd[64]; /**< WEP password */
349 } wep;
350
351 /**< wpa_psk authentication information */
352 struct
353 {
354 QL_WIFI_AUTH_WPA_PSK_E pairwise; /**< Encryption type */
355 char passwd[64]; /**< WPA_PSK password */
356 } wpa_psk;
357 }info;
358} ql_wifi_sta_auth_t;
359
360typedef struct
361{
362 char macaddr[18]; /**< MAC address. The format is: %02X:%02X:%02X:%02X:%02X:%02X. For example: 2F:3F:4F:5F:6F:7F */
363}ql_wifi_mac_addr_t;
364
365typedef struct
366{
367 int cnt; /**< Number of MAC addresses, the maximum value is 32 */
368 ql_wifi_mac_addr_t addr[QL_WIFI_MAX_ACL_MAC_CNT]; /**< MAC address list */
369}ql_wifi_acl_mac_list_t;
370
371typedef enum
372{
373 QL_WIFI_ACL_MAC_CMD_DEL = 0, /**< Delete the MAC address */
374 QL_WIFI_ACL_MAC_CMD_ADD /**< Add the MAC address */
375}QL_WIFI_ACL_MAC_CMD_E;
376
377typedef enum
378{
379 QL_WIFI_P2P_ROLE_NONE = 0, /**< No role */
380 QL_WIFI_P2P_ROLE_CLI, /**< client role */
381 QL_WIFI_P2P_ROLE_GO /**< group owner role */
382}QL_WIFI_P2P_ROLE_E;
383
384typedef enum
385{
386 QL_WIFI_P2P_EN_STATUS_DISABLED = 0, /**< Wi-Fi P2P is disabled */
387 QL_WIFI_P2P_EN_STATUS_ENABLED, /**< Wi-Fi P2P is enabled */
388 QL_WIFI_P2P_EN_STATUS_ERROR /**< An error occurs in enabling Wi-Fi P2P */
389}QL_WIFI_P2P_ENABLE_STATUS_E;
390
391typedef enum
392{
393 QL_WIFI_P2P_STATUS_IDLE = 0, /**< Initial status */
394 QL_WIFI_P2P_STATUS_CONNECTING, /**< P2P is connecting peer p2p device, including p2p role negotiation */
395 QL_WIFI_P2P_STATUS_ASSOCIATED, /**< P2P client connected with peer P2P device but no IP address is assigned */
396 QL_WIFI_P2P_STATUS_CONNECTED, /**< P2P GO or client connected with peer P2P device, and an IP address is assigned */
397 QL_WIFI_P2P_STATUS_DISCONNECTED, /**< P2P disconnected */
398 QL_WIFI_P2P_STATUS_ERROR, /**< Error status */
399}QL_WIFI_P2P_STATUS_E;
400
401typedef struct
402{
403 int is_found; /**< Found or Lost, 1 means P2P deivce found; 0 means P2P device lost */
404 char macaddr[18]; /**< MAC address of P2P device */
405 char dev_type[32]; /**< Type of P2P device */
406 char dev_name[32]; /**< Name of P2P device */
407}ql_wifi_p2p_found_dev_info_t;
408
409typedef struct
410{
411 char macaddr[18]; /**< MAC address of peer P2P device */
412}ql_wifi_p2p_req_peer_dev_info_t;
413
414typedef struct
415{
416 QL_WIFI_P2P_STATUS_E status; /**< The status of P2P */
417 QL_WIFI_P2P_ROLE_E role; /**< The role of P2P */
418 int freq; /**< The frequency of P2P */
419 char ssid[33]; /**< The ssid of GO */
420 char passwd[64]; /**< The passwd of ssid */
421 char pin_code[9]; /**< Dynamically generated random from local display */
422 char ifname[32]; /**< Linux network interface name, such as p2p0 */
423 uint8_t has_addr; /**< Whether it is an IPv4 address or not */
424 ql_net_addr_t addr; /**< IPv4 address. ql_net_addr_t is defined in the header file ql_net_common.h */
425 uint8_t has_addr6; /**< Whether it is an IPv6 address or not */
426 ql_net_addr6_t addr6; /**< IPv6 address. ql_net_addr6_t is defined in the header file ql_net_common.h */
427 QL_WIFI_REASON_CODE_E reason_code; /**< reason code */
428 QL_WIFI_SUB_REASON_CODE_E sub_reason_code; /**< sub-reason code */
429} ql_wifi_p2p_status_t;
430
431#ifdef __cplusplus
432}
433#endif
434#endif
435