Fix mbtk from v1265 GSW

Change-Id: I5d8d395616f284bc74c8b9448cfa347164b5a668
diff --git a/mbtk/include/ql/ql_wifi.h b/mbtk/include/ql/ql_wifi.h
new file mode 100755
index 0000000..a5f97d7
--- /dev/null
+++ b/mbtk/include/ql/ql_wifi.h
@@ -0,0 +1,652 @@
+/**
+ * @file ql_wifi.h
+ * @brief Quectel Openlinux WiFi public function declarations.
+ * 
+ * @note 
+ *
+ * @copyright Copyright (c) 2009-2017 @ Quectel Wireless Solutions Co., Ltd.
+ */
+/*================================================================
+  Copyright (c) 2018 Quectel Wireless Solution, Co., Ltd.  All Rights Reserved.
+  Quectel Wireless Solution Proprietary and Confidential.
+=================================================================*/
+
+/*=====================================================================
+  
+                         EDIT HISTORY FOR MODULE
+
+  This section contains comments describing changes made to the module.
+  Notice that changes are listed in reverse chronological order.
+
+  WHEN             WHO         WHAT, WHERE, WHY
+  ------------     -------     ----------------------------------------
+  11/20/2011       Paddy        Initial creation.
+
+=======================================================================*/
+
+#ifndef __QL_WIFI_H__
+#define __QL_WIFI_H__
+
+#include <stdbool.h>
+#include <netinet/in.h>
+
+#define QL_WIFI_AP_AUTH_OPEN                  "none"
+#define QL_WIFI_AP_AUTH_WPA_PSK               "psk"
+#define QL_WIFI_AP_AUTH_WPA2_PSK              "psk2"
+#define QL_WIFI_AP_AUTH_WPA_WPA2_PSK          "psk-mixed"
+
+#define QL_WIFI_AP_AUTH_WPA_PAIRWISE_TKIP     "tkip"
+#define QL_WIFI_AP_AUTH_WPA_PAIRWISE_AES      "aes"
+#define QL_WIFI_AP_AUTH_WPA_PAIRWISE_BOTH     "tkip+aes"
+
+#define QL_WIFI_AP_BANDWIDTH_20MHZ             "HT20"
+#define QL_WIFI_AP_BANDWIDTH_40MHZ             "HT40-"
+#define QL_WIFI_AP_BANDWIDTH_80MHZ             "HT40+"
+
+#define QL_WIFI_AP_MODE_80211B                "11b"
+#define QL_WIFI_AP_MODE_80211BG               "11bg"
+#define QL_WIFI_AP_MODE_80211BGN              "11bgn"
+
+
+typedef enum {
+	WIFI_WORK_MODE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.	Do not change or use*/
+	WIFI_WORK_MODE_AP_V01 = 0, 
+	WIFI_WORK_MODE_STA_V01 = 1, 
+	WIFI_WORK_MODE_AP_STA_V01 = 2, 
+	WIFI_WORK_MODE_AP_AP_V01 = 3, 
+	WIFI_WORK_MODE_MAX_V01 = 4, 
+	WIFI_WORK_MODE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}wifi_work_mode_e_v01;
+	
+typedef enum {
+	WIFI_IEEE80211_MODE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+	WIFI_MODE_11A_V01 = 0, 
+	WIFI_MODE_11AN_V01 = 1, 
+	WIFI_MODE_11B_V01 = 2, 
+	WIFI_MODE_11BG_V01 = 3, 
+	WIFI_MODE_11BGN_V01 = 4, 
+	WIFI_MODE_11AC_V01 = 5, 
+	WIFI_IEEE80211_MODE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}wifi_ieee80211_mode_e_v01;;
+
+
+	
+typedef enum {
+	WIFI_BANDWIDTH_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+	WIFI_BANDWIDTH_20MHZ_V01 = 0, 
+	WIFI_BANDWIDTH_40MHZ_V01 = 1, 
+	WIFI_BANDWIDTH_80MHZ_V01 = 2, 
+	WIFI_BANDWIDTH_160MHZ_V01 = 3, 
+	WIFI_BANDWIDTH_MAX_V01 = 4, 
+	WIFI_BANDWIDTH_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}wifi_bandwidth_e_v01;
+
+typedef enum {
+	WIFI_AUTH_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+	WIFI_AUTH_OPEN_V01 = 0, 
+	WIFI_AUTH_WEP_V01 = 1, 
+	WIFI_AUTH_WPA_PSK_V01 = 2, 
+	WIFI_AUTH_WPA2_PSK_V01 = 3, 
+	WIFI_AUTH_WPA_WPA2_PSK_BOTH_V01 = 4, 
+	WIFI_AUTH_WPA_V01 = 5, 
+	WIFI_AUTH_WPA2_V01 = 6, 
+	WIFI_AUTH_WPA_WPA2_BOTH_V01 = 7, 
+	WIFI_AUTH_WPS_V01 = 8, 
+	WIFI_AUTH_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}wifi_auth_e_v01;
+/**
+    @}
+  */
+
+/** @addtogroup ql_manager_access_msgr_wifi_qmi_enums
+    @{
+  */
+typedef enum {
+	WIFI_WPA_PAIRWISE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+	WIFI_AUTH_WPA_PAIRWISE_TKIP_V01 = 0, 
+	WIFI_AUTH_WPA_PAIRWISE_AES_V01 = 1, 
+	WIFI_AUTH_WPA_PAIRWISE_BOTH_V01 = 2, 
+	WIFI_WPA_PAIRWISE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}wifi_wpa_pairwise_e_v01;
+
+typedef enum {
+    QL_WIFI_EVENT_ENABLE_STATUS = 0,
+    QL_WIFI_EVENT_DISABLE_STATUS,
+    QL_WIFI_EVENT_AP_STATION,
+    QL_WIFI_EVENT_STA_STATUS,
+    QL_WIFI_EVENT_STA_SCAN_DONE,
+} ql_wifi_event_type_e;
+
+typedef enum {
+    QL_WIFI_STATUS_ENABLE = 0,
+    QL_WIFI_STATUS_DISABLE,
+    QL_WIFI_STATUS_ERR_DRIVER,
+    QL_WIFI_STATUS_ERR_SOFTWARE,
+} ql_wifi_status_e;
+
+typedef enum {
+    QL_WIFI_STATION_DISABLE = 0,    /* WiFi station is not enable */
+    QL_WIFI_STATION_CONNECTED,      /* WiFi station is connected hotspot */
+    QL_WIFI_STATION_DISCONNECTED    /* WiFi station is disconnect hotspot */
+} ql_wifi_station_status_e;
+
+typedef struct {
+    ql_wifi_event_type_e id;
+    union {
+        /* the QL_WIFI_ENABLE_STATUS or QL_WIFI_DISABLE_STATUS event */
+        ql_wifi_status_e status;
+        struct {
+            /* 
+             * If connected is true, the station is connected wifi hotspot.
+             * If connected is false, the station is disconnected wifi hotspot.
+             */
+            bool connected;
+            unsigned char mac[6];
+        } ap_sta_info;
+        ql_wifi_station_status_e sta_status;
+    };
+} ql_wifi_event_s;
+
+typedef void (*wifi_event_handle)(ql_wifi_event_s *event, void *arg);
+
+typedef enum {
+    QL_WIFI_WORK_MODE_STA = 0,      /* WiFi is in STA Mode */
+    QL_WIFI_WORK_MODE_AP0,          /* WiFi is in AP Mode */
+    QL_WIFI_WORK_MODE_AP0_STA,      /* WiFi is in AP/STA Mode */
+    QL_WIFI_WORK_MODE_AP0_AP1       /* WiFi is in AP/AP Mode */
+} ql_wifi_work_mode_e;
+
+typedef enum {
+    QL_WIFI_AP_INDEX_AP0 = 0,       /* Index 0 of AP/AP-STA/AP-AP Mode */
+    QL_WIFI_AP_INDEX_AP1            /* Index 1 of AP/AP-STA/AP-AP Mode */
+} ql_wifi_ap_index_e;
+
+typedef enum {
+    QL_WIFI_MODE_80211B = 0,        /* IEEE 802.11b (2.4 GHz) */
+    QL_WIFI_MODE_80211BG,           /* IEEE 802.11bg (2.4 GHz) */
+    QL_WIFI_MODE_80211BGN,          /* IEEE 802.11bgn (2.4 GHz) */
+    QL_WIFI_MODE_80211A,            /* IEEE 802.11a (5 GHz) */
+    QL_WIFI_MODE_80211AN,           /* IEEE 802.11an (5 GHz) */
+    QL_WIFI_MODE_80211AC            /* IEEE 802.11ac (5 GHz) */
+} ql_wifi_mode_type_e;
+
+typedef enum {
+    QL_WIFI_BANDWIDTH_HT20 = 0,    
+    QL_WIFI_BANDWIDTH_HT40,
+    QL_WIFI_BANDWIDTH_HT80
+} ql_wifi_bandwidth_type_e;
+
+typedef enum {
+    QL_WIFI_SSID_HIDE_DISABLE = 0,    
+    QL_WIFI_SSID_HIDE_ENABLE,
+} ql_wifi_ssidhide_type_e;
+
+typedef enum {
+    QL_WIFI_AUTH_OPEN = 0,             /* Open */
+    QL_WIFI_AUTH_WPA_PSK,              /* WPA Personal */
+    QL_WIFI_AUTH_WPA2_PSK,             /* WPA2 Personal */
+    QL_WIFI_AUTH_WPA_WPA2_PSK_BOTH,    /* WPA&WPA2 Personal */
+} ql_wifi_auth_e;
+
+typedef enum {
+    QL_WIFI_AUTH_WPA_PAIRWISE_AUTO = 0,    /* contain TKIP and AES */
+    QL_WIFI_AUTH_WPA_PAIRWISE_TKIP,
+    QL_WIFI_AUTH_WPA_PAIRWISE_AES
+} ql_wifi_auth_wpa_psk_e;
+
+typedef struct {
+    int auth;
+    union {
+        struct {
+            int default_index;
+            char passwd[4][64];
+        } wep;
+
+        struct {
+            short pairwise;
+            char passwd[64];
+            int group_rekey;
+        } wpa_psk;
+    };
+} ql_wifi_ap_auth_s;
+
+
+typedef enum {
+	WIFI_IDX_AP_0 = 1,
+	WIFI_IDX_AP_1,
+	WIFI_IDX_STA_0
+} wifi_index_e;
+
+typedef enum {
+	WIFI_WORK_MODE_AP = 0,
+	WIFI_WORK_MODE_STA,
+	WIFI_WORK_MODE_AP_STA,
+	WIFI_WORK_MODE_AP_AP,
+	WIFI_WORK_MODE_MAX
+} wifi_work_mode_e;
+
+typedef enum {
+	WIFI_START = 0,
+	WIFI_STOP,
+	WIFI_RESTART,
+} wifi_active_e;
+
+typedef enum {
+	WIFI_MODE_11A = 0,
+	WIFI_MODE_11AN,
+	WIFI_MODE_11B,
+	WIFI_MODE_11BG,
+	WIFI_MODE_11BGN,
+	WIFI_MODE_11AC
+} wifi_ieee80211_mode_e;
+
+typedef enum {
+	WIFI_BANDWIDTH_20MHZ = 0,
+	WIFI_BANDWIDTH_40MHZ,
+	WIFI_BANDWIDTH_80MHZ,
+	WIFI_BANDWIDTH_160MHZ,
+	WIFI_BANDWIDTH_MAX,
+} wifi_bandwidth_e;
+
+typedef enum {
+	WIFI_AUTH_OPEN = 0,
+	WIFI_AUTH_WEP,
+	WIFI_AUTH_WPA_PSK,
+	WIFI_AUTH_WPA2_PSK,
+	WIFI_AUTH_WPA_WPA2_PSK_BOTH,
+	WIFI_AUTH_WPA,
+	WIFI_AUTH_WPA2,
+	WIFI_AUTH_WPA_WPA2_BOTH,
+	WIFI_AUTH_WPS
+} wifi_auth_e;
+
+typedef enum {
+	WIFI_AUTH_WPA_PAIRWISE_TKIP = 0,
+	WIFI_AUTH_WPA_PAIRWISE_AES,
+	WIFI_AUTH_WPA_PAIRWISE_BOTH
+} wifi_wpa_pairwise_e;
+
+typedef enum {
+	WIFI_SSID_HIDE_DISABLE = 0,
+	WIFI_SSID_HIDE_ENABLE
+} wifi_ssid_hide_state_e;
+
+
+struct _auth {
+	unsigned char auth;
+	struct {
+		unsigned char pairwise;
+		unsigned char group_rekey;
+		unsigned char passwd[64];
+	} wpa_psk;
+	
+};
+
+
+typedef enum {
+	WIFI_INDEX_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+	WIFI_IDX_AP_0_V01 = 1, 
+	WIFI_IDX_AP_1_V01 = 2, 
+	WIFI_IDX_STA_0_V01 = 3, 
+	WIFI_INDEX_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}wifi_index_e_v01;
+
+typedef enum {
+	RTK_WIFI_IEEE80211_MODE_E_MIN_ENUM_VAL_V01 = -2147483647, /**< To force a 32 bit signed enum.  Do not change or use*/
+	RTK_WIFI_WORKMODE_11B_V01 = 1, 
+	RTK_WIFI_WORKMODE_11BG_V01 = 3, 
+	RTK_WIFI_WORKMODE_11BGN_V01 = 11, 
+	RTK_WIFI_IEEE80211_MODE_E_MAX_ENUM_VAL_V01 = 2147483647 /**< To force a 32 bit signed enum.  Do not change or use*/
+}rtk_wifi_ieee80211_mode_e_v01;
+
+typedef enum {
+    QL_WIFI_AUTH_OPEN_V01 = 0,             /* Open */
+    QL_WIFI_SHARED_KEY,              /* Shared key */
+    QL_WIFI_AUTO                   /* Auto */
+} ql_wifi_auth_type_e;
+
+typedef enum {
+    QL_WIFI_ENCRYPT_TKIP = 2,           /* TKIP */
+    QL_WIFI_ENCRYPT_AES = 8,        /* AES */
+    QL_WIFI_ENCRYPT_TKIP_AES_MIXED = 10     /* TKIP & AES MIXED */
+} ql_wifi_encrypt_mode_e;
+
+typedef enum {
+    QL_WIFI_PSK_DISABLE = 0,    /* Encrypt disable */
+    QL_WIFI_PSK_WPA,            /* WPA */
+    QL_WIFI_PSK_WPA2,           /* WPA2 */
+    QL_WIFI_PSK_WPA_WPA2,       /* WPA-WPA2 */
+} ql_wifi_psk_enable_e;
+
+
+
+#define QL_WIFI_MAX_STA_NUM 16
+	
+	struct ql_mgmt_client_wifi_work_mode {
+		/*
+		 * WiFi work mode support AP, STA, AP+STA, AP-AP
+		 */
+		wifi_work_mode_e work_mode;
+	};
+	
+	struct ql_mgmt_client_wifi_enable {
+		bool state;
+	};
+	
+	struct ql_mgmt_client_wifi_country_code {
+		char country_code[2];
+	};
+	
+	struct ql_mgmt_client_wifi_mode {
+		wifi_index_e id;
+		wifi_ieee80211_mode_e mode;
+	};
+	
+	struct ql_mgmt_client_wifi_channel {
+		wifi_index_e id;
+		int channel;
+	};
+	
+	struct ql_mgmt_client_wifi_essid {
+		wifi_index_e id;
+		char ssid[32];
+	};
+	
+	struct ql_mgmt_client_wifi_ssid_hide {
+		wifi_index_e id;
+		wifi_ssid_hide_state_e state;
+	};
+	
+	struct ql_mgmt_client_wifi_bandwidth {
+		wifi_index_e id;
+		wifi_bandwidth_e bandwidth;
+	};
+	
+	struct ql_mgmt_client_wifi_max_sta {
+		wifi_index_e id;
+		int num;
+	};
+
+	
+	struct ql_mgmt_client_wifi_active {
+		wifi_index_e_v01 id;
+		unsigned char action_type;
+	};
+	
+	struct ql_mgmt_client_wifi_auth {
+		wifi_index_e id;
+		wifi_auth_e auth;
+		union {
+			struct {
+				int default_index;
+				char password[4][64];
+			} wep;
+			struct {
+				wifi_wpa_pairwise_e pairwise;
+				char password[64];
+				int group_rekey;
+			} wpa_psk;
+		};
+	};
+	
+	struct ql_mgmt_client_wifi_rssi {
+		wifi_index_e id;
+		int rssi;
+	};
+	
+	struct ql_mgmt_client_wifi_sta_info {
+		int count;
+		struct {
+			int ip;
+			char mac[6];
+			char hostname[32];
+			char ssid[32];
+			int uptime;
+			long long tx_bytes;
+			long long rx_bytes;
+		} sta[QL_WIFI_MAX_STA_NUM];
+	};
+	typedef struct{
+		struct ql_mgmt_client_wifi_enable enable;
+	
+	
+	}ql_mgmt_client_wifi_s_test;
+	
+	typedef struct {
+		union {
+			struct ql_mgmt_client_wifi_work_mode work_mode;
+			struct ql_mgmt_client_wifi_enable enable;
+			struct ql_mgmt_client_wifi_country_code country_code;
+			struct ql_mgmt_client_wifi_mode mode;
+			struct ql_mgmt_client_wifi_channel channel;
+			struct ql_mgmt_client_wifi_essid ssid;
+			struct ql_mgmt_client_wifi_ssid_hide ssid_hide;
+			struct ql_mgmt_client_wifi_bandwidth bandwidth;
+			struct ql_mgmt_client_wifi_max_sta max_sta;
+			struct ql_mgmt_client_wifi_active active;
+			struct ql_mgmt_client_wifi_auth auth;
+			struct ql_mgmt_client_wifi_rssi rssi;
+			struct ql_mgmt_client_wifi_sta_info sta_info;
+		};
+	} ql_mgmt_client_wifi_s;
+
+
+extern int ql_wifi_enable(void);
+
+/**
+ * Disables the WLAN. This function removes the kernel module for the Wi-Fi driver.
+ *
+ * @param None
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_disable(void);
+
+/**
+ * Create thread to enables the WLAN. This function enables the WLAN based on the hostpad or wpa_supplicant 
+ * configuration provided. This function inserts the WLAN kernel module and advertises the SSID.
+ * 
+ * @param None
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+
+
+extern int ql_wifi_status_get(ql_wifi_status_e *status);
+
+/**
+ * Set the WiFi configuration: WiFi work mode configuration.
+ *
+ * @param [in]   WiFi work mode
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ * @dependencies
+ *   ql_wifi_disable is must be disable
+ *
+ */
+
+extern int ql_wifi_ap_ssid_set(ql_wifi_ap_index_e idx, char *ssid);
+
+/**
+ * Get the WiFi configuration: the hotspot ssid mode configuration.
+ *
+ * @param [in]    Index of AP mode
+ * @param [out]   the hotspot ssid name
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_ssid_get(ql_wifi_ap_index_e idx, char *ssid);
+
+/**
+ * Set the WiFi configuration: hidden hotspot configuration.
+ *
+ * @param [in]    Index of AP mode
+ * @param [in]    If set true, hidden hotspot
+ *                If set false, open hotspot
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_ssid_hide_set(ql_wifi_ap_index_e idx, bool hide);
+
+/**
+ * Get the WiFi configuration: hidden hotspot configuration.
+ *
+ * @param [in]    Index of AP mode
+ * @param [in]    Get the hotspot hidden status
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_ssid_hide_get(ql_wifi_ap_index_e idx, bool *hide);
+
+/**
+ * Set the WiFi configuration: Operation mode configuration, such as 802.11a/b/n/ac.
+ *
+ * @param [in]   Index of AP mode
+ * @param [in]   Operation mode
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_mode_set(ql_wifi_ap_index_e idx, ql_wifi_mode_type_e mode);
+
+/**
+ * Get the WiFi configuration: Operation mode configuration, such as 802.11a/b/n/ac.
+ *
+ * @param [in]    Index of AP mode
+ * @param [out]   Operation mode
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_mode_get(ql_wifi_ap_index_e idx, ql_wifi_mode_type_e *mode);
+
+/**
+ * Set the WiFi configuration: HT or VHT capabilities (20MHz, 40MHz, 80MHz).
+ *
+ * @param [in]   Index of AP mode
+ * @param [in]   Bandwidth
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ * @dependencies
+ *   The WiFi Operation mode must be set 802.11bgn/802.11an/802.11ac.
+ */
+extern int ql_wifi_ap_bandwidth_set(ql_wifi_ap_index_e idx, ql_wifi_bandwidth_type_e bandwidth);
+
+/**
+ * Get the WiFi configuration: HT or VHT capabilities (20MHz, 40MHz, 80MHz).
+ *
+ * @param [in]    Index of AP mode
+ * @param [Out]   Bandwidth
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ * @dependencies
+ *   The WiFi Operation mode must be set 802.11bgn/802.11an/802.11ac.
+ */
+extern int ql_wifi_ap_bandwidth_get(ql_wifi_ap_index_e idx, ql_wifi_bandwidth_type_e *bandwidth);
+
+/**
+ * Set the WiFi configuration: channel number configuration.
+ *
+ * @param [in]   Index of AP mode
+ * @param [in]   Channel number
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ * @dependencies
+ *   1. if WiFi set 2.4GHz, the channel list: 
+ *   0/1/2/3/4/5/6/7/8/9/10/11/12/13/14
+ *   2. if WiFi set 5GHz, the channel list:
+ *   36/40/44/48/52/56/60/64/100/104/108/112/116/120/124/128/132/136/140/144/149/153/157/161/165/175/181 
+ */
+extern int ql_wifi_ap_channel_set(ql_wifi_ap_index_e idx, int channel);
+
+/**
+ * Get the WiFi configuration: channel number configuration.
+ *
+ * @param [in]    Index of AP mode
+ * @param [out]   Channel number
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ * @dependencies
+ *   1. if WiFi set 2.4GHz, the channel list: 
+ *   0/1/2/3/4/5/6/7/8/9/10/11/12/13/14
+ *   2. if WiFi set 5GHz, the channel list:
+ *   36/40/44/48/52/56/60/64/100/104/108/112/116/120/124/128/132/136/140/144/149/153/157/161/165/175/181 
+ */
+extern int ql_wifi_ap_channel_get(ql_wifi_ap_index_e idx, int *channel);
+
+/**
+ * Set the WiFi configuration: IEEE 802.11 specifies two authentication algorithms and WPA/IEEE 802.11i configuration.
+ *
+ * @param [in]   Index of AP mode
+ * @param [in]   authentication configuration
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_auth_set(ql_wifi_ap_index_e idx, ql_wifi_ap_auth_s *auth);
+
+/**
+ * Get the WiFi configuration: IEEE 802.11 specifies two authentication algorithms and WPA/IEEE 802.11i configuration.
+ *
+ * @param [in]   Index of AP mode
+ * @param [out]   authentication configuration
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_auth_get(ql_wifi_ap_index_e idx, ql_wifi_ap_auth_s *auth);
+
+/**
+ * Set the WiFi configuration: Maximum number of stations allowed in station table.
+ *
+ * @param [in]   Index of AP mode
+ * @param [in]   Maximum number of stations
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_max_sta_set(ql_wifi_ap_index_e idx, int max_sta_num);
+
+/**
+ * Get the WiFi configuration: Maximum number of stations allowed in station table.
+ *
+ * @param [in]    Index of AP mode
+ * @param [out]   Maximum number of stations
+ *
+ * @return 
+ *   On success, 0 is returned.  On error, -1 is returned.
+ * 
+ */
+extern int ql_wifi_ap_max_sta_get(ql_wifi_ap_index_e idx, int *max_sta_num);
+
+extern int ql_wifi_set_to_ap(ql_wifi_ap_index_e idx);
+
+extern int ql_wifi_set_to_sta(ql_wifi_ap_index_e idx);
+
+#endif /* end of __QL_WIFI_H__ */
+