#ifndef _WIFI_AT_H_ #define _WIFI_AT_H_ #include "atsvr_core.h" #include "../../../include/os/os.h" #include "wifi_types.h" //AT WIFI related macros are defined in "AT_WLAN_XXX" format #ifndef AT_WLAN_STATION_UP #define AT_WLAN_STATION_UP 1 #endif #ifndef AT_WLAN_STATION_DOWN #define AT_WLAN_STATION_DOWN 0 #endif #ifndef AT_WLAN_SOFTAP_UP #define AT_WLAN_SOFTAP_UP 1 #endif #ifndef AT_WLAN_SOFTAP_DOWN #define AT_WLAN_SOFTAP_DOWN 0 #endif #ifndef AT_WLAN_STA_DHCP_GET #define AT_WLAN_STA_DHCP_GET 1 #endif #ifndef AT_WLAN_STA_DHCP_NOT_GET #define AT_WLAN_STA_DHCP_NOT_GET 0 #endif #define AT_WLAN_RESERVED 0 #define AT_WLAN_MAX_SSID_LEN 32 #define AT_WLAN_DEFAULT_IP "192.168.19.1" #define AT_WLAN_DEFAULT_GW "192.168.19.1" #define AT_WLAN_DEFAULT_MASK "255.255.255.0" #define AT_WLAN_DEFAULT_DNS "192.168.19.1" #define AT_WLAN_STA_DEFAULT_IP "192.168.0.19" #define AT_WLAN_STA_DEFAULT_GW "192.168.0.19" #define AT_WLAN_STA_DEFAULT_MASK "255.255.255.0" #define AT_WLAN_STA_DEFAULT_DNS "192.168.0.1" #ifndef AT_WLAN_EVT_SCAN_DONE #define AT_WLAN_EVT_SCAN_DONE "EVT:WLAN STA SCAN_DONE\r\n" #endif #ifndef AT_WLAN_EVT_CONNECTED #define AT_WLAN_EVT_CONNECTED "EVT:WLAN STA CONNECTED\r\n" #endif #ifndef AT_WLAN_EVT_DISCONNECTED #define AT_WLAN_EVT_DISCONNECTED "EVT:WLAN STA DISCONNECTED\r\n" #endif #ifndef AT_WLAN_EVT_SAP_CONNECTED #define AT_WLAN_EVT_SAP_CONNECTED "EVT:WLAN SAP CONNECTED\r\n" #endif #ifndef AT_WLAN_EVT_SAP_DISCONNECTED #define AT_WLAN_EVT_SAP_DISCONNECTED "EVT:WLAN SAP DISCONNECTED\r\n" #endif #ifndef AT_WLAN_EVT_STA_GOT_IP #define AT_WLAN_EVT_STA_GOT_IP "EVT:BK STA GOT IP\r\n" #endif #ifndef AT_WLAN_EVT_STA_LOSS_DHCP #define AT_WLAN_EVT_STA_LOSS_DHCP "EVT:BK STA LOSS DHCP\r\n" #endif #ifndef AT_WLAN_EVT_GOT_IP #define AT_WLAN_EVT_GOT_IP "EVT:BK STA GOT IP\r\n" #endif #ifndef AT_WLAN_EVT_TCP_DISCONNECTED #define AT_WLAN_EVT_TCP_DISCONNECTED "EVT:TCP DISCONNECTED,%d\r\n" #endif #ifndef AT_WLAN_EVT_TCP_CONNECTED #define AT_WLAN_EVT_TCP_CONNECTED "CMDRSP:TCP CONNECTED,%d\r\n" #endif #define AT_WLAN_SCAN_TIMEOUT_MS (5000) #define AT_WLAN_STA_TIMEOUT_MS (20000) #define AT_WLAN_SAP_TIMEOUT_MS (4000) #define AT_WLAN_MAX_SSID_LEN 32 #define BK_AT_WLAN_ERROR_CASE(x) case x: return(#x+12) typedef enum{ AT_WLAN_STA_SCAN_DONE, AT_WLAN_STA_DISCONNECT, AT_WLAN_STA_CONNECTED, AT_WLAN_STA_GOT_IP, AT_WLAN_LOSS_DHCP, AT_WLAN_SAP_DISCONNECT, AT_WLAN_SAP_CONNECTED, AT_WLAN_MAX, }AT_WLAN_EVT_T; typedef enum { AT_WLAN_SCAN_NO_USE = 0, AT_WLAN_SCAN_DUR = 1, AT_WLAN_SCAN_TYPE, AT_WLAN_SCAN_CNT, AT_WLAN_SCAN_MAX, }AT_WLAN_SCAN_ATTR_T; static inline const char *at_wlan_error_code_string(wifi_err_reason_t type) { switch(type){ BK_AT_WLAN_ERROR_CASE(WIFI_REASON_RESERVED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_UNSPECIFIED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_PREV_AUTH_NOT_VALID); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_DEAUTH_LEAVING); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_DISASSOC_DUE_TO_INACTIVITY) ; BK_AT_WLAN_ERROR_CASE(WIFI_REASON_DISASSOC_AP_BUSY); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_CLASS2_FRAME_FROM_NONAUTH_STA); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_CLASS3_FRAME_FROM_NONASSOC_STA); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_DISASSOC_STA_HAS_LEFT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_STA_REQ_ASSOC_WITHOUT_AUTH); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_PWR_CAPABILITY_NOT_VALID); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_SUPPORTED_CHANNEL_NOT_VALID); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_BSS_TRANSITION_DISASSOC); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_INVALID_IE); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MICHAEL_MIC_FAILURE); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_IE_IN_4WAY_DIFFERS); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_GROUP_CIPHER_NOT_VALID); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_PAIRWISE_CIPHER_NOT_VALID); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_AKMP_NOT_VALID); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_UNSUPPORTED_RSN_IE_VERSION); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_INVALID_RSN_IE_CAPAB); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_IEEE_802_1X_AUTH_FAILED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_CIPHER_SUITE_REJECTED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_TDLS_TEARDOWN_UNREACHABLE); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_TDLS_TEARDOWN_UNSPECIFIED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_SSP_REQUESTED_DISASSOC); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_NO_SSP_ROAMING_AGREEMENT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_BAD_CIPHER_OR_AKM); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_NOT_AUTHORIZED_THIS_LOCATION); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_SERVICE_CHANGE_PRECLUDES_TS); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_UNSPECIFIED_QOS_REASON); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_NOT_ENOUGH_BANDWIDTH); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_DISASSOC_LOW_ACK); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_EXCEEDED_TXOP); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_STA_LEAVING); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_END_TS_BA_DLS); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_UNKNOWN_TS_BA); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_TIMEOUT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_PEERKEY_MISMATCH); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_AUTHORIZED_ACCESS_LIMIT_REACHED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_EXTERNAL_SERVICE_REQUIREMENTS); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_INVALID_FT_ACTION_FRAME_COUNT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_INVALID_PMKID); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_INVALID_MDE); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_INVALID_FTE); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_PEERING_CANCELLED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_MAX_PEERS); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_CONFIG_POLICY_VIOLATION); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_CLOSE_RCVD); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_MAX_RETRIES); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_CONFIRM_TIMEOUT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_INVALID_GTK); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_INCONSISTENT_PARAMS); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_INVALID_SECURITY_CAP); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_PATH_ERROR_NO_PROXY_INFO); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_PATH_ERROR_NO_FORWARDING_INFO); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_PATH_ERROR_DEST_UNREACHABLE); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_CHANNEL_SWITCH_REGULATORY_REQ); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MESH_CHANNEL_SWITCH_UNSPECIFIED); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_BEACON_LOST); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_NO_AP_FOUND); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_WRONG_PASSWORD); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_DISCONNECT_BY_APP); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_DHCP_TIMEOUT); BK_AT_WLAN_ERROR_CASE(WIFI_REASON_MAX); } return "Unsupported Reason\r\n"; } typedef struct{ int scan_time; //use for 120ms scan unsigned dhcp : 1; unsigned station_status : 1; unsigned reserved1 : 1; unsigned reserved2 : 1; unsigned scan_start : 1; unsigned scan_done : 1; unsigned reserved3 : 1; unsigned reserved4 : 1; int disconenct_reason; bool local_generated; int hpad_sta_cnt; unsigned softap_status : 1; unsigned reserved5 : 1; unsigned reserved6 : 1; unsigned reserved7 : 1; unsigned char static_ip[16]; unsigned char static_maks[16]; unsigned char static_gate[16]; unsigned char static_dns1[16]; unsigned char static_dns2[16]; unsigned char softap_ip[16]; unsigned char softap_mask[16]; unsigned char softap_gate[16]; unsigned char softap_dns[16]; }at_wlan_status_t; typedef struct { bool sta_use_sema; bool sap_use_sema; bool scan_use_sema; beken_semaphore_t at_wlan_scan_print_sema; beken_semaphore_t at_wlan_scan_sema; beken_semaphore_t sta_protection;//test beken_semaphore_t sap_protection;//test }at_wlan_cfg_t; extern void wifi_at_cmd_init(void); extern int at_wlan_event_handler(atsvr_msg_t *msg); #endif