b.liu | d440f9f | 2025-04-18 10:44:31 +0800 | [diff] [blame^] | 1 | /*-----------------------------------------------------------------------------------------------*/ |
| 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 |
| 27 | extern "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 | |
| 38 | typedef 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 | |
| 47 | typedef 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 | |
| 55 | typedef 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 | |
| 90 | typedef 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 | |
| 162 | typedef 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 | |
| 173 | typedef 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 | |
| 184 | typedef 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 | |
| 199 | typedef 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 | |
| 209 | typedef 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 | |
| 216 | typedef 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 | |
| 226 | typedef 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 | |
| 237 | typedef 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 | |
| 247 | typedef 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 | |
| 254 | typedef 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; */ |
| 268 | typedef 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 */ |
| 277 | typedef 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 | |
| 291 | typedef 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 | |
| 297 | typedef 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 | |
| 306 | typedef 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 | |
| 312 | typedef 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 | |
| 318 | typedef 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 | |
| 340 | typedef 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 | |
| 360 | typedef 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 | |
| 365 | typedef 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 | |
| 371 | typedef 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 | |
| 377 | typedef 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 | |
| 384 | typedef 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 | |
| 391 | typedef 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 | |
| 401 | typedef 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 | |
| 409 | typedef struct |
| 410 | { |
| 411 | char macaddr[18]; /**< MAC address of peer P2P device */ |
| 412 | }ql_wifi_p2p_req_peer_dev_info_t; |
| 413 | |
| 414 | typedef 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 | |