/* * Copyright (c) 2010, The Linux Foundation. All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. * * Neither the name of The Linux Foundation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _QSAP_API_H_ #define _QSAP_API_H_ #if __cplusplus extern "C" { #endif #include typedef unsigned char u8; typedef char s8; typedef unsigned short int u16; typedef signed short int s16; typedef unsigned int u32; typedef signed int s32; /** Success and error messages */ #define SUCCESS "success" #define ERR_INVALID_ARG "failure invalid arguments" #define ERR_INVALID_PARAM "failure invalid parameter" #define ERR_UNKNOWN "failure unknown error" #define ERR_INVALIDCMD "failure invalid command" #define ERR_INVALIDREQ "failure invalid request" #define ERR_FEATURE_NOT_ENABLED "failure feature not enabled" #define ERR_NOT_SUPPORTED "failure not supported" #define ERR_NOT_READY "failure not ready" #define ERR_RES_UNAVAILABLE "failure resource unavailable" #define ERR_SOFTAP_NOT_STARTED "failure softap not started" /** Error numbers used with the SDK */ enum error_val { eERR_UNKNOWN = -1, eSUCCESS = 0, eERR_STOP_BSS, eERR_BSS_NOT_STARTED, eERR_COMMIT, eERR_START_SAP, eERR_STOP_SAP, eERR_RELOAD_SAP, eERR_FILE_OPEN, eERR_CONF_FILE, eERR_INVALID_MAC_ADDR, eERR_SEND_TO_HOSTAPD, eERR_CONFIG_PARAM_MISSING, eERR_CHAN_READ, eERR_FEATURE_NOT_ENABLED, eERR_UNLOAD_FAILED_SDIO, eERR_UNLOAD_FAILED_SOFTAP, eERR_LOAD_FAILED_SDIOIF, eERR_LOAD_FAILED_SOFTAP, eERR_SET_CHAN_RANGE, eERR_GET_AUTO_CHAN, eERR_SET_TX_POWER }; #ifndef WIFI_DRIVER_CONF_FILE #define WIFI_DRIVER_CONF_FILE NULL #endif #ifndef WIFI_DRIVER_DEF_CONF_FILE #define WIFI_DRIVER_DEF_CONF_FILE NULL #endif /** Configuration file name for SAP+SAP*/ #define CONFIG_FILE_2G "/data/vendor/wifi/hostapd/hostapd_dual2g.conf" #define CONFIG_FILE_5G "/data/vendor/wifi/hostapd/hostapd_dual5g.conf" #define CONFIG_FILE_60G "/data/vendor/wifi/hostapd/hostapd_60g.conf" /** Configuration file name for OWE-transition */ #define CONFIG_FILE_OWE "/data/vendor/wifi/hostapd/hostapd_owe.conf" /** Configuration file name */ #define CONFIG_FILE "/data/vendor/wifi/hostapd/hostapd.conf" /** Default configuration file path */ #define DEFAULT_CONFIG_FILE_PATH "/vendor/etc/hostapd/hostapd_default.conf" /** Default Accept list file name */ #define DEFAULT_ACCEPT_LIST_FILE_PATH "/vendor/etc/hostapd/hostapd.accept" /** Accept list file name */ #define ACCEPT_LIST_FILE "/data/vendor/wifi/hostapd/hostapd.accept" /** Default Deny list file name */ #define DEFAULT_DENY_LIST_FILE_PATH "/vendor/etc/hostapd/hostapd.deny" /** Deny list file name */ #define DENY_LIST_FILE "/data/vendor/wifi/hostapd/hostapd.deny" /** Default Ini file */ #define DEFAULT_INI_FILE "/persist/qcom/softap/qcom_cfg_default.ini" /** SDK control interface path */ #define SDK_CTRL_IF "/data/vendor/wifi/hostapd/ctrl/softap_sdk_ctrl" /** Maximum length of the line in the configuration file */ #define MAX_CONF_LINE_LEN (156) /** MAC address length in acsii string format*/ #define MAC_ADDR_LEN (17) /** MAC address length, as integer */ #define MAC_ADDR_LEN_INT (6) /** Maximum number of MAC address in the allow / deny MAC list */ #define MAX_ALLOWED_MAC (15) /** Maximum length of the file path */ #define MAX_FILE_PATH_LEN (128) /** WPS key length - 8 digit key, usually*/ #define WPS_KEY_LEN (8) /** Maximum length of the SSID */ #define SSD_MAX_LEN (32) #define CTRY_MAX_LEN (3) /** Beacon interval 50 to 65535 */ #define BCN_INTERVAL_MIN (1) #define BCN_INTERVAL_MAX (65535) /** Passphrase max length 63 bytes, Minumum lenght is 8. * NOTE: If Passphrase length is 64, then phassphrase is treated as PSK. */ #define PASSPHRASE_MIN (8) #define PASSPHRASE_MAX (63) /** DTIM period 1 to 255 -- Qualcomm 10 */ #define DTIM_PERIOD_MIN (1) #define DTIM_PERIOD_MAX (255) /** WEP key lengths in ASCII and hex */ #define WEP_64_KEY_ASCII (5) #define WEP_64_KEY_HEX (10) #define WEP_128_KEY_ASCII (13) #define WEP_128_KEY_HEX (26) #define WEP_152_KEY_ASCII (16) #define WEP_152_KEY_HEX (32) #define WPS_PIN_LEN (8) #define CHANNEL_MIN (0) #define CHANNEL_MAX (14) #define AUTO_CHANNEL (0) #define BG_MAX_CHANNEL (11) /** Fragmentation threshold 256 to 2346 */ #define FRAG_THRESHOLD_MIN (256) #define FRAG_THRESHOLD_MAX (2346) /** RTS threshold 1 to 2347 */ #define RTS_THRESHOLD_MIN (1) #define RTS_THRESHOLD_MAX (2347) #define MIN_UUID_LEN (1) #define MAX_UUID_LEN (36) #define MIN_DEVICENAME_LEN (1) #define MAX_DEVICENAME_LEN (32) #define MIN_MANUFACTURER_LEN (1) #define MAX_MANUFACTURER_LEN (64) #define MIN_MODELNAME_LEN (1) #define MAX_MODELNAME_LEN (32) #define MIN_MODELNUM_LEN (1) #define MAX_MODELNUM_LEN (32) #define MIN_SERIALNUM_LEN (1) #define MAX_SERIALNUM_LEN (32) #define MIN_DEV_TYPE_LEN (1) #define MAX_DEV_TYPE_LEN (20) #define MIN_OS_VERSION_LEN (1) #define MAX_OS_VERSION_LEN (12) #define MIN_FRIENDLY_NAME_LEN (1) #define MAX_FRIENDLY_NAME_LEN (64) #define MAX_URL_LEN (128) #define MIN_MODEL_DESC_LEN (1) #define MAX_MODEL_DESC_LEN (128) #define MIN_UPC_LEN (1) #define MAX_UPC_LEN (128) #define GTK_MIN (30) #define MAX_INT_STR (8) /** Tx Power range 2dBm to 18 dBm */ #define MIN_TX_POWER (2) #define MAX_TX_POWER (30) /** Data rate index */ #define MIN_DATA_RATE_IDX (0) #define MAX_DATA_RATE_IDX (28) #define AUTO_DATA_RATE (0) #define B_MODE_MAX_DATA_RATE_IDX (4) #define G_ONLY_MODE_MAX_DATA_RATE_IDX (12) /** parameters for read config */ #define GET_COMMENTED_VALUE 1 #define GET_ENABLED_ONLY 0 #define MAX_RESP_LEN 255 /** AP shutoff time */ #define AP_SHUTOFF_MIN (0) #define AP_SHUTOFF_MAX (120) /** AP shutoff time */ #define AP_ENERGY_DETECT_TH_MIN (0) #define AP_ENERGY_DETECT_TH_MAX (9) /** command request index - in the array Cmd_req[] */ enum eCmd_req { eCMD_GET = 0, eCMD_SET = 1, eCMD_REQ_LAST }; /** config request index - in the array Conf_req[] */ enum eConf_req { CONF_2g = 0, CONF_5g = 1, CONF_owe = 2, CONF_60g = 3, CONF_REQ_LAST }; /** * Command numbers, these numbers form the index into the array of * command names stored in the 'cmd_list'. * * Warning: An addtion of an entry in 'esap_cmd', should be followed * by an addition of a command name string in the 'cmd_list' array */ typedef enum esap_cmd { eCMD_INVALID = -1, eCMD_SSID = 0, eCMD_BSSID = 1, eCMD_CHAN = 2, eCMD_BCN_INTERVAL = 3, eCMD_DTIM_PERIOD = 4, eCMD_HW_MODE = 5, eCMD_AUTH_ALGS = 6, eCMD_SEC_MODE = 7, eCMD_WEP_KEY0 = 8, eCMD_WEP_KEY1 = 9, eCMD_WEP_KEY2 = 10, eCMD_WEP_KEY3 = 11, eCMD_DEFAULT_KEY = 12, eCMD_PASSPHRASE = 13, eCMD_WPA_PAIRWISE = 14, eCMD_RSN_PAIRWISE = 15, eCMD_MAC_ADDR = 16, eCMD_RESET_AP = 17, eCMD_MAC_ACL = 18, eCMD_ADD_TO_ALLOW = 19, eCMD_ADD_TO_DENY = 20, eCMD_REMOVE_FROM_ALLOW = 21, eCMD_REMOVE_FROM_DENY = 22, eCMD_ALLOW_LIST = 23, eCMD_DENY_LIST = 24, eCMD_COMMIT = 25, eCMD_ENABLE_SOFTAP = 26, eCMD_DISASSOC_STA = 27, eCMD_RESET_TO_DEFAULT = 28, eCMD_PROTECTION_FLAG = 29, eCMD_DATA_RATES = 30, eCMD_ASSOC_STA_MACS = 31, eCMD_TX_POWER = 32, eCMD_SDK_VERSION = 33, eCMD_WMM_STATE = 34, /** WARNING: The order of WPS commands should not be altered. New commands SHOULD be added above or below this */ eCMD_WPS_STATE = 35, eCMD_WPS_CONFIG_METHOD = 36, eCMD_UUID = 37, eCMD_DEVICE_NAME = 38, eCMD_MANUFACTURER = 39, eCMD_MODEL_NAME = 40, eCMD_MODEL_NUMBER = 41, eCMD_SERIAL_NUMBER = 42, eCMD_DEVICE_TYPE = 43, eCMD_OS_VERSION = 44, eCMD_FRIENDLY_NAME = 45, eCMD_MANUFACTURER_URL = 46, eCMD_MODEL_DESC = 47, eCMD_MODEL_URL = 48, eCMD_UPC = 49, /******************************************************/ eCMD_FRAG_THRESHOLD = 50, eCMD_RTS_THRESHOLD = 51, eCMD_GTK_TIMEOUT = 52, eCMD_COUNTRY_CODE = 53, eCMD_INTRA_BSS_FORWARD = 54, eCMD_REGULATORY_DOMAIN = 55, eCMD_AP_STATISTICS = 56, eCMD_AP_AUTOSHUTOFF = 57, eCMD_AP_ENERGY_DETECT_TH = 58, eCMD_BASIC_RATES = 59, eCMD_REQUIRE_HT = 60, eCMD_IEEE80211N = 61, eCMD_SET_CHANNEL_RANGE = 62, eCMD_GET_AUTO_CHANNEL = 63, eCMD_IEEE80211W = 64, eCMD_WPA_KEY_MGMT = 65, eCMD_SET_MAX_CLIENTS = 66, eCMD_IEEE80211AC = 67, eCMD_VHT_OPER_CH_WIDTH = 68, eCMD_ACS_CHAN_LIST = 69, eCMD_HT_CAPAB = 70, eCMD_IEEE80211H = 71, eCMD_ENABLE_WIGIG_SOFTAP = 72, eCMD_INTERFACE = 73, eCMD_SSID2 = 74, eCMD_BRIDGE = 75, eCMD_CTRL_INTERFACE = 76, eCMD_VENDOR_ELEMENT = 77, eCMD_ASSOCRESP_ELEMENT = 78, eCMD_ACS_EXCLUDE_DFS = 79, eCMD_WOWLAN_TRIGGERS = 80, eCMD_ACCEPT_MAC_FILE = 81, eCMD_DENY_MAC_FILE = 82, eCMD_OWE_TRANS_IFNAME = 83, eCMD_SAE_REQUIRE_MPF = 84, eCMD_IEEE80211AX = 85, eCMD_ENABLE_EDMG = 86, eCMD_EDMG_CHANNEL = 87, eCMD_LAST /** New command numbers should be added above this */ } esap_cmd_t; /** non-commands */ typedef enum esap_str { STR_WPA = 0, STR_ACCEPT_MAC_FILE = 1, STR_DENY_MAC_FILE = 2, STR_MAC_IN_INI = 3, STR_PROT_FLAG_IN_INI = 4, STR_DATA_RATE_IN_INI = 5, STR_TX_POWER_IN_INI = 6, STR_FRAG_THRESHOLD_IN_INI = 7, STR_RTS_THRESHOLD_IN_INI = 8, STR_COUNTRY_CODE_IN_INI = 9, STR_INTRA_BSS_FORWARD_IN_INI = 10, STR_WMM_IN_INI = 11, STR_802DOT11D_IN_INI = 12, STR_HT_80211N = 13, STR_CTRL_INTERFACE = 14, STR_INTERFACE = 15, STR_EAP_SERVER = 16, STR_AP_AUTOSHUTOFF = 17, STR_AP_ENERGY_DETECT_TH = 18, eSTR_LAST } esap_str_t; /** Supported security mode */ typedef enum sec_mode { SEC_MODE_NONE = 0, SEC_MODE_WEP = 1, SEC_MODE_WPA_PSK = 2, SEC_MODE_WPA2_PSK = 3, SEC_MODE_WPA_WPA2_PSK = 4, SEC_MODE_INVALID } sec_mode_t; /** security mode in the configuration file */ enum wpa_in_conf_file { WPA_IN_CONF_FILE = 1, WPA2_IN_CONF_FILE = 2, WPA_WPA2_IN_CONF_FILE = 3 }; enum { DISABLE = 0, ENABLE = 1 }; enum { FALSE = 0, TRUE = 1 }; /** IEEE 802.11 operating mode */ enum oper_mode { HW_MODE_B = 0, HW_MODE_G = 1, HW_MODE_N = 2, HW_MODE_G_ONLY = 3, HW_MODE_N_ONLY = 4, HW_MODE_A = 5, HW_MODE_ANY = 6, HW_MODE_AD = 7, HW_MODE_UNKNOWN }; /** Authentication algorithm */ enum auth_alg { AHTH_ALG_OPEN = 1, AUTH_ALG_SHARED = 2, AUTH_ALG_OPEN_SHARED = 3, AUTH_ALG_INVALID }; /** Allow or Deny MAC address list selection */ enum macaddr_acl { ACL_DENY_LIST = 0, ACL_ALLOW_LIST = 1, ACL_ALLOW_AND_DENY_LIST = 2 }; enum ap_reset { SAP_RESET_BSS = 0, SAP_RESET_DRIVER_BSS = 1, SAP_STOP_BSS = 2, SAP_STOP_DRIVER_BSS = 3, #ifdef QCOM_WLAN_CONCURRENCY SAP_INITAP = 4, SAP_EXITAP = 5, #endif SAP_RESET_INVALID }; enum wmm_state { WMM_AUTO_IN_INI = 0, WMM_ENABLED_IN_INI = 1, WMM_DISABLED_IN_INI = 2 }; enum wps_state { WPS_STATE_DISABLE = 0, WPS_STATE_ENABLE = 2 }; enum wps_config { WPS_CONFIG_PBC = 0, WPS_CONFIG_PIN = 1, }; /** Choose the configuration file */ enum eChoose_conf_file { HOSTAPD_CONF_QCOM_FILE = 0, INI_CONF_FILE = 1 }; struct Command { s8 * name; s8 * default_value; }; /** STA Channel information*/ typedef struct sta_channel_info { int subioctl; int stastartchan; int staendchan; int staband; } sta_channel_info; /**SAP Channel information*/ typedef struct sap_channel_info { int startchan; int endchan; int band; } sap_channel_info; /**SAP auto Channel information*/ typedef struct sap_auto_channel_info { int subioctl; } sap_auto_channel_info; /** Validate enable / disable softap */ #define IS_VALID_SOFTAP_ENABLE(x) (((value == ENABLE) || (value == DISABLE)) ? TRUE: FALSE) /** Validate the channel */ #define IS_VALID_CHANNEL(x) ((value >= CHANNEL_MIN) && (value <= CHANNEL_MAX) ? TRUE : FALSE) /** Validate the security mode */ #define IS_VALID_SEC_MODE(x) (((x >= SEC_MODE_NONE) && (x < SEC_MODE_INVALID)) ? TRUE : FALSE) /** Validate the selection of access or deny MAC address list */ #define IS_VALID_MAC_ACL(x) (((x==ACL_DENY_LIST) || (x==ACL_ALLOW_LIST) || (x==ACL_ALLOW_AND_DENY_LIST)) ? TRUE : FALSE) /** Validate the broadcast SSID status */ #define IS_VALID_BSSID(x) (((value == ENABLE) || (value == DISABLE)) ? TRUE: FALSE) /** Validate the length of the passphrase */ #define IS_VALID_PASSPHRASE_LEN(x) ((((x >= PASSPHRASE_MIN) && (x <= PASSPHRASE_MAX)) || (x == 0)) ? TRUE: FALSE) /** Validate the beacon interval */ #define IS_VALID_BEACON(x) (((x >= BCN_INTERVAL_MIN) && (x <= BCN_INTERVAL_MAX)) ? TRUE: FALSE) /** Validate the DTIM period */ #define IS_VALID_DTIM_PERIOD(x) (((x >= DTIM_PERIOD_MIN) && (x <= DTIM_PERIOD_MAX)) ? TRUE: FALSE) /** Validate the WEP index */ #define IS_VALID_WEP_KEY_IDX(x) ((x >= 0) && (x < 4) ? TRUE : FALSE) /** Validate the pairwise encryption */ #define IS_VALID_PAIRWISE(x) (((!strcmp(x, "TKIP")) || (!strcmp(x, "CCMP")) || \ (!strcmp(x, "TKIP CCMP")) || (!strcmp(x, "CCMP TKIP")) || (!strcmp(x, "GCMP"))) ? TRUE : FALSE) /** Validate the WMM status */ #define IS_VALID_WMM_STATE(x) (((x >= WMM_AUTO_IN_INI) && (x <= WMM_DISABLED_IN_INI)) ? TRUE: FALSE) /** Validate the WPS status */ #define IS_VALID_WPS_STATE(x) (((x == ENABLE) || (x == DISABLE)) ? TRUE: FALSE) /** Validate the fragmentation threshold */ #define IS_VALID_FRAG_THRESHOLD(x) (((x >= FRAG_THRESHOLD_MIN) && (x <= FRAG_THRESHOLD_MAX)) ? TRUE: FALSE) /** Validate the RTS threshold value */ #define IS_VALID_RTS_THRESHOLD(x) (((x >= RTS_THRESHOLD_MIN) && (x <= RTS_THRESHOLD_MAX)) ? TRUE: FALSE) /** Validate the GTK */ #define IS_VALID_GTK(x) ((x >= GTK_MIN) ? TRUE: FALSE) /** Validate the intra-bss forwarding status */ #define IS_VALID_INTRA_BSS_STATUS(x) (((x == ENABLE) || (x == DISABLE)) ? TRUE: FALSE) /** Validate the protection flag */ #define IS_VALID_PROTECTION(x) (((x == ENABLE) || (x == DISABLE)) ? TRUE: FALSE) /** Validate the UUID length */ #define IS_VALID_UUID_LEN(x) (((x >= MIN_UUID_LEN) && (x <= MAX_UUID_LEN)) ? TRUE : FALSE) /** Validate the device name length */ #define IS_VALID_DEVICENAME_LEN(x) (((x >= MIN_DEVICENAME_LEN) && (x <= MAX_DEVICENAME_LEN)) ? TRUE : FALSE) /** Validate the Manufacturer length */ #define IS_VALID_MANUFACTURER_LEN(x) (((x >= MIN_MANUFACTURER_LEN) && (x <= MAX_MANUFACTURER_LEN)) ? TRUE : FALSE) /** Validate the Model name length */ #define IS_VALID_MODELNAME_LEN(x) (((x >= MIN_MODELNAME_LEN) && (x <= MAX_MODELNAME_LEN)) ? TRUE : FALSE) /** Validate the Model number length */ #define IS_VALID_MODELNUM_LEN(x) (((x >= MIN_MODELNUM_LEN) && (x <= MAX_MODELNUM_LEN)) ? TRUE : FALSE) /** Validate the Model serial number length */ #define IS_VALID_SERIALNUM_LEN(x) (((x >= MIN_SERIALNUM_LEN) && (x <= MAX_SERIALNUM_LEN)) ? TRUE : FALSE) /** Validate the Primary device type length */ #define IS_VALID_DEV_TYPE_LEN(x) (((x >= MIN_DEV_TYPE_LEN) && (x <= MAX_DEV_TYPE_LEN)) ? TRUE : FALSE) /** Validate the OS version length */ #define IS_VALID_OS_VERSION_LEN(x) (((x >= MIN_OS_VERSION_LEN) && (x <= MAX_OS_VERSION_LEN)) ? TRUE : FALSE) /** Validate the friendly name length */ #define IS_VALID_FRIENDLY_NAME_LEN(x) (((x >= MIN_FRIENDLY_NAME_LEN) && (x <= MAX_FRIENDLY_NAME_LEN)) ? TRUE : FALSE) /** Validate the URL length */ #define IS_VALID_URL_LEN(x) (((x > 0) && (x <= MAX_URL_LEN)) ? TRUE : FALSE) /** Validate the model description length */ #define IS_VALID_MODEL_DESC_LEN(x) (((x > MIN_MODEL_DESC_LEN) && (x <= MAX_MODEL_DESC_LEN)) ? TRUE : FALSE) /** Validate the Universal Product Code (UPC) length */ #define IS_VALID_UPC_LEN(x) (((x > MIN_UPC_LEN) && (x <= MAX_UPC_LEN)) ? TRUE : FALSE) /** Validate the Tx power index */ #define IS_VALID_TX_POWER(x) (((x >= MIN_TX_POWER ) && (x <= MAX_TX_POWER)) ? TRUE : FALSE) /** Validate the Data rate */ #define IS_VALID_DATA_RATE_IDX(x) (((x >= MIN_DATA_RATE_IDX) && (x <= MAX_DATA_RATE_IDX)) ? TRUE : FALSE ) /** Validate WPS config */ #define IS_VALID_WPS_CONFIG(x) (((x == WPS_CONFIG_PBC) || (x == WPS_CONFIG_PIN)) ? TRUE : FALSE) /** Validate the 802dot11d state */ #define IS_VALID_802DOT11D_STATE(x) (((x == ENABLE) || (x == DISABLE)) ? TRUE: FALSE) /** Validate the AP shutoff time */ #define IS_VALID_APSHUTOFFTIME(x) (((x >= AP_SHUTOFF_MIN) && (x <= AP_SHUTOFF_MAX)) ? TRUE : FALSE) /** Validate the AP shutoff time */ #define IS_VALID_ENERGY_DETECT_TH(x) ((((x >= AP_ENERGY_DETECT_TH_MIN) && (x <= AP_ENERGY_DETECT_TH_MAX)) ||( x == 128)) ? TRUE : FALSE) /** Validate the 802dot11h state */ #define IS_VALID_DFS_STATE(x) (((x == ENABLE) || (x == DISABLE)) ? TRUE: FALSE) /** Function declartion */ int qsap_hostd_exec(int argc, char ** argv); void qsap_hostd_exec_cmd(s8 *pcmd, s8 *presp, u32 *plen); s8 *qsap_get_config_value(s8 *pfile, struct Command *pcmd, s8 *pbuf, u32 *plen); int qsapsetSoftap(int argc, char *argv[]); int qsap_add_or_remove_interface(const char *iface_name, int create_iface); void qsap_del_ctrl_iface(void); s16 wifi_qsap_reset_to_default(s8 *pcfgfile, s8 *pdefault); void check_for_configuration_files(void); void qsap_set_ini_filename(void); int qsap_set_channel_range(s8 * cmd); int qsap_get_sap_auto_channel_slection(s32 *pautochan); int qsap_get_mode(s32 *pmode); int qsap_prepare_softap(void); int qsap_unprepare_softap(void); int qsap_is_fst_enabled(void); int qsap_control_bridge(int argc, char ** argv); int linux_get_ifhwaddr(const char *ifname, char *addr); #if __cplusplus }; // extern "C" #endif #endif