[Feature][T108][WIFI][task-view-1467]The addition of 13 interfaces with a priority of 1 for wifi, as well as the optimization of wifi tools
Only Configure: No
Affected branch: GSW_V1453
Affected module: WIFI
Is it affected on IC: only ASR
Self-test: yes
Doc Update: no
Change-Id: Ib4eaf56143294f2ebb7897954dec7f6390f6cec0
diff --git a/mbtk/include/gsw/gsw_wifi_interface_sdk.h b/mbtk/include/gsw/gsw_wifi_interface_sdk.h
new file mode 100644
index 0000000..110f5c0
--- /dev/null
+++ b/mbtk/include/gsw/gsw_wifi_interface_sdk.h
@@ -0,0 +1,590 @@
+/**
+* @file : gsw_wifi_interface_sdk.h
+* @brief : wifi abstract_sdk
+* @date : 2022-08-14
+* @author : zhaohua
+* @version : v1.0
+* @copyright Copyright (c) 2022 www.gosuncn.com
+*/
+#ifndef __GSW_WIFI_INTERFACE_SDK_H__
+#define __GSW_WIFI_INTERFACE_SDK_H__
+
+#include "gsw_hal_errcode.h"
+
+#define GSW_WIFI_AP_DEVICE_NUM 8 /**< ap device max num */
+#define GSW_WIFI_STA_REMEMBER_HOST_NUM 50 /**< sta save ap max num */
+#define GSW_WIFI_STA_SCANLIST_NUM 100 /**< sta scan list max num */
+
+/**
+ * @brief ap callback event type
+ */
+typedef enum {
+ GSW_WIFI_STATUS_DISCONNECT = 0, /**< sta disconnect */
+ GSW_WIFI_STATUS_CONNECT, /**< sta connect */
+} gsw_wifi_ap_status_e;
+
+/**
+ * @brief sta callback event type
+ */
+typedef enum {
+ GSW_WIFI_STA_STATUS_DISCONNECT = 0, /**< sta disconnect */
+ GSW_WIFI_STA_STATUS_CONNECT, /**< sta connect */
+ GSW_WIFI_STA_STATUS_SCAN_RESULT, /**< sta scan finish */
+} gsw_wifi_sta_status_e;
+
+/**
+ * @brief wifi ability type
+ */
+typedef enum {
+ WIFI_MODE_ABILITY_NOWLAN = 1, /**< no wlan */
+ WIFI_MODE_ABILITY_STA_ONLY = 2, /**< sta only */
+ WIFI_MODE_ABILITY_AP_ONLY = 3, /**< ap only */
+ WIFI_MODE_ABILITY_APANDSTA = 4, /**< ap and sta */
+} wifi_mode_ability_e;
+
+/**
+ * @brief ap bandwidth type
+ */
+typedef enum {
+ GSW_WIFI_BANDWIDTH_HT10 = 0, /**< 10Mhz */
+ GSW_WIFI_BANDWIDTH_HT20, /**< 20Mhz */
+ GSW_WIFI_BANDWIDTH_HT40, /**< 40Mhz */
+ GSW_WIFI_BANDWIDTH_HT80, /**< 80Mhz */
+} gsw_wifi_bandwidth_type_e;
+
+/**
+ * @brief authentication type
+ */
+typedef enum {
+ GSW_WIFI_AUTH_OPEN = 0, /**< OPEN */
+ GSW_WIFI_AUTH_WEP, /**< WEP */
+ GSW_WIFI_AUTH_WPA_PSK, /**< WPA_PSK */
+ GSW_WIFI_AUTH_WPA2_PSK, /**< WPA2_PSK */
+ GSW_WIFI_AUTH_WPA3_PSK, /**< WPA3_PSK */
+} gsw_wifi_auth_e;
+
+/**
+ * @brief ap state
+ */
+typedef enum {
+ GSW_WIFI_AP_STATUS_DISABLE = 0, /**< not running */
+ GSW_WIFI_AP_STATUS_ENABLE, /**< running */
+} gsw_wifi_ap_run_status_e;
+
+/**
+ * @brief sta state
+ */
+typedef enum {
+ GSW_WIFI_STA_STATUS_DISABLE = 0, /**< not running */
+ GSW_WIFI_STA_STATUS_ENABLE, /**< running */
+} gsw_wifi_sta_run_status_e;
+
+/**
+ * @brief wifi interface idx
+ */
+typedef enum {
+ GSW_WIFI_INTERFACE_0 = 0, /**< STA */
+ GSW_WIFI_INTERFACE_1, /**< AP */
+}gsw_wifi_index_e;
+
+/**
+ * @brief band type
+ */
+typedef enum {
+ GSW_WIFI_2G_band = 1, /**< 2.4G */
+ GSW_WIFI_5G_band, /**< 5G */
+ GSW_WIFI_2_and_5G_band, /**< 2.4G and 5G */
+} gsw_wifi_band_e;
+
+/**
+ * @brief sta mode dns info
+ */
+typedef struct gsw_sta_dns_info
+{
+ char dnsp[46]; //Primary DNS server address
+ char dnss[46]; //Secondary DNS server address
+} gsw_sta_dns_info_s;
+
+/**
+ * @brief ap info
+ */
+typedef struct gsw_ap_info
+{
+ char ap_ip[32]; /**< IP Addr */
+ char ap_mac[32]; /**< IP Addr */
+ char ap_ssid[32]; /**< ssid */
+ char psw[64]; /**< password */
+ gsw_wifi_auth_e auth; /**< authentication */
+ gsw_wifi_band_e band; /**< band */
+} gsw_ap_info_s;
+
+typedef struct gsw_ap_detail_info
+{
+ struct gsw_ap_info base_info; /**< ap info */
+ gsw_wifi_ap_run_status_e status; /**< ap run state */
+ int rssi; /**< rssi[0~199] */
+} gsw_ap_detail_info_s;
+
+/**
+ * @brief device info
+ */
+typedef struct gsw_device_info
+{
+ char sta_ip[32]; /**< IP Addr */
+ char sta_mac[32]; /**< IP Addr */
+ char hostname[32]; /**< device name */
+ gsw_wifi_ap_status_e status; /**< connect state */
+} gsw_device_info_s;
+
+typedef struct gsw_saved_ap_info
+{
+ struct gsw_ap_info base_info;
+} gsw_saved_ap_info_s;
+
+/**
+ * @brief error code of sta connect fail
+ * current only support errcode 1,2
+ */
+typedef enum
+{
+ GSW_REASON_IP_NOT_ACCESS = 0, /**< IP connect not access */
+ GSW_REASON_UNSPECIFIED = 1, /**< Unspecified reason */
+ GSW_REASON_PREV_AUTH_NOT_VALID = 2, /**< Previous authentication no longer valid */
+ GSW_REASON_DEAUTH_LEAVING = 3, /**< Deauthenticated because sending STA is leaving (or has left) IBSS or ESS */
+ GSW_REASON_DISASSOC_DUE_TO_INACTIVITY = 4, /**< Disassociated due to inactivity */
+ GSW_REASON_DISASSOC_AP_BUSY = 5, /**< Disassociated because AP is unable to handle all currently associated STA */
+ GSW_REASON_CLASS2_FRAME_FROM_NONAUTH_STA = 6, /**< Class 2 frame received from nonauthenticated STA */
+ GSW_REASON_CLASS3_FRAME_FROM_NONASSOC_STA = 7, /**< Class 3 frame received from nonassociated STA */
+ GSW_REASON_DISASSOC_STA_HAS_LEFT = 8, /**< Disassociated because sending STA is leaving (or has left) BSS */
+ GSW_REASON_STA_REQ_ASSOC_WITHOUT_AUTH = 9, /**< STA requesting (re)association is not authenticated with responding STA */
+ GSW_REASON_PWR_CAPABILITY_NOT_VALID = 10, /**< Disassociated because the information in the Power Capability element is unacceptable */
+ GSW_REASON_SUPPORTED_CHANNEL_NOT_VALID = 11, /**< Disassociated because the information in the Supported Channels is unacceptable */
+ GSW_REASON_BSS_TRANSITION_DISASSOC = 12, /**< Disassociated due to BSS Transition Management */
+ GSW_REASON_INVALID_IE = 13, /**< Invalid element, i.e., an element defined in this standard for which the content
+ does not meet the specifications in Clause 8 */
+ GSW_REASON_MICHAEL_MIC_FAILURE = 14, /**< Message integrity code (MIC) failure */
+ GSW_REASON_4WAY_HANDSHAKE_TIMEOUT = 15, /**< 4-Way Handshake timeout */
+ GSW_REASON_GROUP_KEY_UPDATE_TIMEOUT = 16, /**< Group Key Handshake timeout */
+ GSW_REASON_IE_IN_4WAY_DIFFERS = 17, /**< Element in 4-Way handshake different from (Re)Association
+ Request/Probe Response/Beacon frame */
+ GSW_REASON_GROUP_CIPHER_NOT_VALID = 18, /**< Invalid group cipher */
+ GSW_REASON_PAIRWISE_CIPHER_NOT_VALID = 19, /**< Invalid pairwise cipher */
+ GSW_REASON_AKMP_NOT_VALID = 20, /**< Invalid AKMP */
+ GSW_REASON_UNSUPPORTED_RSN_IE_VERSION = 21, /**< Unsupproted RSNE version */
+ GSW_REASON_INVALID_RSN_IE_CAPAB = 22, /**< Invalid RSNE capabilities */
+ GSW_REASON_IEEE_802_1X_AUTH_FAILED = 23, /**< IEEE 802.1X authentication failed */
+ GSW_REASON_CIPHER_SUITE_REJECTED = 24, /**< Cipher suite rejected because of the security policy */
+ GSW_REASON_TDLS_TEARDOWN_UNREACHABLE = 25, /**< TDLS direct-link teardown due to TDLS peer STA unreachable via the TDLS direct link */
+ GSW_REASON_TDLS_TEARDOWN_UNSPECIFIED = 26, /**< TDLS direct-link teardown for unspecified reason */
+ GSW_REASON_SSP_REQUESTED_DISASSOC = 27, /**< Disassocited because session terminated by SSP request */
+ GSW_REASON_NO_SSP_ROAMING_AGREEMENT = 28, /**< Disassocited because of lack of SSP roaming agreement */
+ GSW_REASON_BAD_CIPHER_OR_AKM = 29, /**< Requested service rejected because of SSP cipher suite or AKM requirment */
+ GSW_REASON_NOT_AUTHORIZED_THIS_LOCATION = 30, /**< requested service not authorized in this location */
+ GSW_REASON_SERVICE_CHANGE_PRECLUDES_TS = 31, /**< TS deleted because QoS AP lacks sufficient bandwidth for
+ this QoS STA due to a change in BSS service characteristics or operational mode
+ (e.g., an HT BSS change from 40 MHz channel to 20 MHz channel) */
+ GSW_REASON_UNSPECIFIED_QOS_REASON = 32, /**< Disassocited for unspecified QoS-related reason */
+ GSW_REASON_NOT_ENOUGH_BANDWIDTH = 33, /**< Disassocited because QoS AP lacks sufficient bandwidth for this QoS STA */
+ GSW_REASON_DISASSOC_LOW_ACK = 34, /**< Disassociated because excessive number of frames need to be acknowledged,
+ but are not acknowledged due to AP transmissions and/or poor channel conditions */
+ GSW_REASON_EXCEEDED_TXOP = 35, /**< Disassociated because STA is transmitting outside the limits of its TXOPs */
+ GSW_REASON_STA_LEAVING = 36, /**< Requested from peer STA as the STA is leaving the BSS (or resetting) */
+ GSW_REASON_END_TS_BA_DLS = 37, /**< Requested from peer STA as it does not want to use the mechanism */
+ GSW_REASON_UNKNOWN_TS_BA = 38, /**< Requested from peer STA as the STA received frames using
+ the mechanism for which a setup is required */
+ GSW_REASON_TIMEOUT = 39, /**< Requested from peer STA due to timeout */
+ GSW_REASON_PEERKEY_MISMATCH = 45, /**< Peer STA does not support the requested cipher suite */
+ GSW_REASON_AUTHORIZED_ACCESS_LIMIT_REACHED = 46, /**< In a DLS Teardown frame: The teardown was initiated by the DLS peer in
+ a disassociation frame: disassociated because authorized access limit reached*/
+ GSW_REASON_EXTERNAL_SERVICE_REQUIREMENTS = 47, /**< In a DLS Teardown frame: The teardown was initiated by the AP
+ In a disassociation frame: disassociated due to external service requirments */
+ GSW_REASON_INVALID_FT_ACTION_FRAME_COUNT = 48, /**< Invalid FT action frame count */
+ GSW_REASON_INVALID_PMKID = 49, /**< Invalid pairwise master key identifier (PMKI) */
+ GSW_REASON_INVALID_MDE = 50, /**< Invalid MDE */
+ GSW_REASON_INVALID_FTE = 51, /**< Invalid FTE */
+ GSW_REASON_MESH_PEERING_CANCELLED = 52, /**< SME cancels the mesh peering instance with the reason
+ other than reaching the maximum number of peer mesh STAs */
+ GSW_REASON_MESH_MAX_PEERS = 53, /**< The mesh STA has reached the supported maximum number of peer mesh STAs */
+ GSW_REASON_MESH_CONFIG_POLICY_VIOLATION = 54, /**< The received information violates the Mesh Configuration policy configured in the mesh STA profile */
+ GSW_REASON_MESH_CLOSE_RCVD = 55, /**< The mesh STA has received a Mesh Peering Close message requesting to close the mesh peering*/
+ GSW_REASON_MESH_MAX_RETRIES = 56, /**< the mesh STA has resent dot11MeshMaxRetries Mesh Peering Open messages
+ without receiveing a Mesh Peering Confirm messa*/
+ GSW_REASON_MESH_CONFIRM_TIMEOU = 57, /**< The confirm Timer for the mesh peering instance times out */
+ GSW_REASON_MESH_INVALID_GTK = 58, /**< The mesh STA fails to unwrap the GTK or the values in the wrapped contents do not match */
+ GSW_REASON_MESH_INCONSISTENT_PARAMS = 59, /**< The mesh STA receives inconsistent information about the mesh parameters
+ between mesh peering management frames */
+ GSW_REASON_MESH_INVALID_SECURITY_CAP = 60, /**< The mesh STA fails the authenticated mesh peering exchange because due to failure
+ in selecting either in the pairwise ciphersuite or group ciphersuite*/
+ GSW_REASON_MESH_PATH_ERROR_NO_PROXY_INFO = 61, /**< The mesh STA does not have proxy information for this external destination */
+ GSW_REASON_MESH_PATH_ERROR_NO_FORWARDING_INFO = 62, /**< The mesh STA does not have forwarding infromation for this destination */
+ GSW_REASON_MESH_PATH_ERROR_DEST_UNREACHABLE = 63, /**< The mesh STA determines that the link to the next hop of an active path in
+ its forwarding information is no longer usable */
+ GSW_REASON_MAC_ADDRESS_ALREADY_EXISTS_IN_MBSS = 64, /**< The deauthentication frame was sent because the MAC address
+ of the STA already exists in the mesh BSS.Scc10.3.6 */
+ GSW_REASON_MESH_CHANNEL_SWITCH_REGULATORY_REQ = 65, /**< The mesh STA performs channel switch to meet regulatory requirments */
+ GSW_REASON_MESH_CHANNEL_SWITCH_UNSPECIFIED = 66, /**< The mesh STA performs channel switch with unspecified reason */
+ GSW_REASON_LOW_SECURITY = 67, /**< Low level of network security */
+} error_number_e;
+
+typedef struct gsw_scan_info
+{
+ char mac[32]; /**< MAC addr */
+ char ssid[33]; /**< ssid */
+ gsw_wifi_band_e band; /**< band */
+ gsw_wifi_auth_e auth; /**< authentication */
+ int rssi; /**< rssi */
+} gsw_scan_info_s;
+
+
+/**
+ * @brief modem sdk wifi service init
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_sdk_interface_init(void);
+
+/**
+ * @brief load wifi driver
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_enable(void);
+
+/**
+ * @brief uninstall wifi driver
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_disable(void);
+
+/**
+ * @brief start ap mode
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_start(void);
+
+/**
+ * @brief stop ap mode
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_stop(void);
+
+/**
+ * @brief restart ap
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_restart(void);
+
+int gsw_wifi_stop_ap(wifi_mode_ability_e mode_ability);
+
+/**
+ * @brief set ap ssid
+ * @param [in] ssid ssid
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_ssid_set(char *ssid);
+
+/**
+ * @brief get ap ssid
+ * @param [out] ssid ssid
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_ssid_get(char *ssid);
+
+/**
+ * @brief set ap frequency
+ * @param [in] gsw_wifi_frequency 1 is 2.4G,2 is 5G
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_frequency_set(int gsw_wifi_frequency);
+
+/**
+ * @brief get ap frequency
+ * @param [out] gsw_wifi_frequency 1 is 2.4G,2 is 5G
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_frequency_get(int *gsw_wifi_frequency);
+
+/**
+ * @brief set ap bandwidth
+ * @param [in] bandwidth bandwidth
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_bandwidth_set(gsw_wifi_bandwidth_type_e bandwidth);
+
+/**
+ * @brief get ap bandwidth
+ * @param [out] bandwidth bandwidth
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_bandwidth_get(gsw_wifi_bandwidth_type_e *bandwidth);
+
+/**
+ * @brief set ap channel
+ * @param [in] channel channel
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_channel_set(int channel);
+
+/**
+ * @brief get ap channel
+ * @param [out] channel channel
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_channel_get(int *channel);
+
+/**
+ * @brief set ap authentication
+ * @param [in] auth authentication
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_auth_set(gsw_wifi_auth_e auth);
+
+/**
+ * @brief get ap authentication
+ * @param [out] auth authentication
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_auth_get(gsw_wifi_auth_e *auth);
+
+/**
+ * @brief set ap password
+ * @param [in] password password
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_password_set(char *password);
+
+/**
+ * @brief get ap password
+ * @param [out] password password
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_ap_password_get(char *password);
+
+/**
+ * @brief get ap run state
+ * @param [out] ap_status ap run state
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_ap_status(gsw_wifi_ap_run_status_e *ap_status);
+
+/**
+ * @brief get sta run state
+ * @param [out] sta_status sta run state
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_sta_status(gsw_wifi_sta_run_status_e *sta_status);
+
+/**
+ * @brief start sta mode
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_sta_start(void);
+
+/**
+ * @brief stop sta mode
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_sta_stop(void);
+
+int gsw_wifi_stop_sta(wifi_mode_ability_e mode_ability);
+
+/**
+ * @brief obtain the ssid of the ap currently connected to the sta
+ * @param [out] sta_ssid ssid
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_sta_ssid(char *sta_ssid);
+
+/**
+ * @brief obtain the authentication of the ap currently connected to the sta
+ * @param [out] auth authentication
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_sta_auth(gsw_wifi_auth_e *auth);
+
+/**
+ * @brief connect to target ap
+ * @param [in] ssid the ssid of the target ap
+ * @param [in] auth the authentication of the target ap
+ * @param [in] password the password of the target ap
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_sta_connect(char *ssid, gsw_wifi_auth_e auth, char *password);
+
+/**
+ * @brief disconnect the currently connected ap
+ * @param [in] ssid the ssid of the target ap
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_sta_disconnect(char *ssid);
+
+/**
+ * @brief delete remembered ap
+ * @param [in] ssid the ssid of the target ap
+ * @param [in] auth the authentication of the target ap
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_sta_forget_ap(char *ssid, gsw_wifi_auth_e auth);
+
+/**
+ * @brief sta start scan
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_sta_start_scan(void);
+
+/**
+ * @brief get interface ip addr
+ * @param [in] idx interface idx
+ * @param [out] ip interface ip addr
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_interface_ip(gsw_wifi_index_e idx, char *ip);
+
+/**
+ * @brief get interface mac addr
+ * @param [in] idx interface idx
+ * @param [out] mac interface mac addr
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_interface_mac(gsw_wifi_index_e idx, char *mac);
+
+/**
+ * @brief obtain the mac of the ap currently connected to the sta
+ * @param [out] mac ap mac addr
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_connect_ap_mac(char *mac);
+
+/**
+ * @brief obtain the rssi of the ap currently connected to the sta
+ * @param [out] rssi ap rssi
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_connect_ap_rssi(int *rssi);
+
+/**
+ * @brief obtain the band of the ap currently connected to the sta
+ * @param [out] band the ap band
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_connect_ap_band(gsw_wifi_band_e *band);
+
+/**
+ * @brief obtain the ip of the ap currently connected to the sta
+ * @param [out] ip the ap ip
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_connect_ap_ip(char *ip);
+
+/**
+ * @brief get the currently connectable AP with the best signal strength
+ * @param [out] info the ap info
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_sta_available_ap(gsw_ap_detail_info_s *info);
+
+/**
+ * @brief get ap device list
+ * @param [in] len the size of the param[device_list]
+ * @param [out] ap_info the ap info
+ * @param [out] device_list the device list
+ * @param [out] dev_len the device num
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_ap_device_list(gsw_ap_info_s *ap_info, gsw_device_info_s *device_list, int len, int *dev_len);
+
+/**
+ * @brief get the saved ap list
+ * @param [in] len the size of the param[list]
+ * @param [out] list the saved ap list
+ * @param [out] list_len the list num
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_sta_saved_ap(gsw_saved_ap_info_s *list, int len, int *list_len);
+
+/**
+ * @brief get the sta scan list
+ * @param [in] len the size of the param[list]
+ * @param [out] list the scan list
+ * @param [out] list_len the list num
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_get_scan_list(gsw_scan_info_s *list, int len, int *list_len);
+
+
+typedef void(*GSW_AP_CALLBACK_FUNC_PTR)(void *arg, gsw_wifi_ap_status_e status);
+
+/**
+ * @brief register ap event notification function
+ * @param [in] arg as gsw_cb function parameter, can be NULL
+ * @param [in] gsw_cb callback
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_reg_ap_event_callback(void *arg, GSW_AP_CALLBACK_FUNC_PTR gsw_cb);
+
+/**
+ * @brief unregister ap callback function
+ * @param [in] arg reserved parameter, can be NULL
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_unreg_ap_event_callback(void *arg);
+
+typedef void(*GSW_STA_CALLBACK_FUNC_PTR)(void *arg, gsw_wifi_sta_status_e status, error_number_e number, gsw_sta_dns_info_s* dns_info);
+
+/**
+ * @brief register sta event notification function
+ * @param [in] arg as gsw_cb function parameter, can be NULL
+ * @param [in] gsw_cb callback
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_reg_sta_event_callback(void *arg, GSW_STA_CALLBACK_FUNC_PTR gsw_cb);
+
+/**
+ * @brief unregister sta callback function
+ * @param [in] arg reserved parameters, can be NULL
+ * @retval 0: success
+ * @retval other: fail
+ */
+int gsw_wifi_unreg_sta_event_callback(void *arg);
+
+
+#endif