321 lines
8.7 KiB
C
Executable File
321 lines
8.7 KiB
C
Executable File
/*
|
|
Copyright (c) 2014 Novatek Microelectronics Corporation
|
|
|
|
@file WiFiIpc.h
|
|
|
|
@version
|
|
|
|
@date
|
|
*/
|
|
|
|
#ifndef _WIFIIPCAPI_H
|
|
#define _WIFIIPCAPI_H
|
|
|
|
#include <kwrap/type.h>
|
|
#include "nvtwifi.h"
|
|
|
|
#define NVT_WIFIIPC_IP_MAX_LEN (16) //refer to NET_IP_MAX_LEN
|
|
|
|
#define NULL_FILE 0
|
|
#define NULL_STR ""
|
|
#define WIFI_IFNAME "wlan0" //interface name
|
|
|
|
#define WIFIIPC_RET_OK 0
|
|
#define WIFIIPC_RET_ERR (-1)
|
|
|
|
enum { WSC_AUTH_OPEN = 1,
|
|
WSC_AUTH_WPAPSK = 2,
|
|
WSC_AUTH_SHARED = 4,
|
|
WSC_AUTH_WPA = 8,
|
|
WSC_AUTH_WPA2 = 0x10,
|
|
WSC_AUTH_WPA2PSK = 0x20,
|
|
WSC_AUTH_WPA2PSKMIXED = 0x22
|
|
};
|
|
|
|
enum { WSC_ENCRYPT_NONE = 1, WSC_ENCRYPT_WEP = 2, WSC_ENCRYPT_TKIP = 4, WSC_ENCRYPT_AES = 8, WSC_ENCRYPT_TKIPAES = 12 };
|
|
|
|
enum { NOT_USED = -1,
|
|
PROTOCOL_START = 0, PROTOCOL_PBC_OVERLAPPING = 1,
|
|
PROTOCOL_TIMEOUT = 2, PROTOCOL_SUCCESS = 3,
|
|
|
|
SEND_EAPOL_START = 4, RECV_EAPOL_START = 5, SEND_EAP_IDREQ = 6, RECV_EAP_IDRSP = 7,
|
|
SEND_EAP_START = 8, SEND_M1 = 9, RECV_M1 = 10, SEND_M2 = 11,
|
|
|
|
RECV_M2 = 12, RECV_M2D = 13, SEND_M3 = 14, RECV_M3 = 15,
|
|
SEND_M4 = 16, RECV_M4 = 17, SEND_M5 = 18, RECV_M5 = 19,
|
|
|
|
SEND_M6 = 20, RECV_M6 = 21, SEND_M7 = 22, RECV_M7 = 23,
|
|
SEND_M8 = 24, RECV_M8 = 25, PROC_EAP_ACK = 26, WSC_EAP_FAIL = 27,
|
|
|
|
HASH_FAIL = 28, HMAC_FAIL = 29, PWD_AUTH_FAIL = 30, PROTOCOL_PIN_NUM_ERR = 31,
|
|
PROC_EAP_DONE = 32, PROTOCOL_ERR = 33
|
|
};
|
|
|
|
enum {
|
|
CONFIG_METHOD_ETH = 0x2,
|
|
CONFIG_METHOD_PIN = 0x4,
|
|
CONFIG_METHOD_DISPLAY = 0x8,
|
|
CONFIG_METHOD_PBC = 0x80,
|
|
CONFIG_METHOD_KEYPAD = 0x100,
|
|
CONFIG_METHOD_VIRTUAL_PBC = 0x280,
|
|
CONFIG_METHOD_PHYSICAL_PBC = 0x480,
|
|
CONFIG_METHOD_VIRTUAL_PIN = 0x2008,
|
|
CONFIG_METHOD_PHYSICAL_PIN = 0x4008
|
|
};
|
|
|
|
// callback function prototype for link status report
|
|
typedef void (wifi_link_status_cb_func_t)(char *pIntfName, int status);
|
|
|
|
// callback function prototype for station status report
|
|
typedef void (wifi_sta_status_cb_func_t)(char *pIntfName, char *pMacAddr, int status);
|
|
|
|
// callback function prototype for p2p
|
|
typedef void (p2p_event_indicate_cb_func_t)(char *pIntfName, int status);
|
|
|
|
typedef void (wsc_event_cb_func_t)(int evt, int status);
|
|
typedef int (wsc_flash_param_cb_func_t)(nvt_wsc_flash_param *);
|
|
|
|
typedef struct {
|
|
UINT32 sharedMemAddr; // shared memory address
|
|
UINT32 sharedMemSize; // shared memory size
|
|
} WIFIIPC_OPEN;
|
|
|
|
/**
|
|
Install WiFiIpc flag and semaphore id.
|
|
|
|
@return void.
|
|
*/
|
|
extern void WiFiIpc_InstallID(void) _SECTION(".kercfg_text");
|
|
|
|
/**
|
|
Open WiFiIpc task.
|
|
|
|
This is WiFiIpc initialization function.
|
|
|
|
@return
|
|
- @b E_PS_OK if success, others fail
|
|
*/
|
|
extern ER WiFiIpc_Open(WIFIIPC_OPEN *pOpen);
|
|
|
|
/**
|
|
Close WiFiIpc task.
|
|
|
|
@return
|
|
- @b E_PS_OK if success, others fail
|
|
*/
|
|
extern ER WiFiIpc_Close(void);
|
|
|
|
/**
|
|
WiFiIpc Test API.
|
|
|
|
@return
|
|
- @b E_PS_OK if success, others fail
|
|
*/
|
|
extern ER WiFiIpc_Test(int param1, int param2, int param3);
|
|
|
|
/**
|
|
init wlan0 device.
|
|
|
|
The API would call RTK wifi_init_wlan0_netdev();
|
|
|
|
@param[in] pri use to assign wifi thread priority, 0 - default priority
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_init_wlan0_netdev(int pri);
|
|
|
|
/**
|
|
Check interface if up.
|
|
The API would call RTK is_interface_up();
|
|
|
|
@param[in] pIntfName interface name
|
|
|
|
@return
|
|
- @b 1 is up, 0 is down.
|
|
|
|
*/
|
|
extern ER WiFiIpc_is_interface_up(const char *pIntfName);
|
|
/**
|
|
Set WiFi interface up.
|
|
The API would call RTK is_interface_up();
|
|
|
|
@param[in] pIntfName interface name
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_interface_up(const char *pIntfName);
|
|
|
|
/**
|
|
Set WiFi interface down.
|
|
The API would call RTK is_interface_down();
|
|
|
|
@param[in] pIntfName interface name
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_interface_down(const char *pIntfName);
|
|
|
|
/**
|
|
Config WiFi IP and netmask.
|
|
The API would call RTK interface_config();
|
|
|
|
@param[in] pIntfName interface name
|
|
@param[in] IPaddr IP address
|
|
@param[in] netmask network net mask
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_interface_config(const char *pIntfName, char *IPaddr, char *netmask);
|
|
|
|
extern ER WiFiIpc_delete_interface_addr(const char *pIntfName);
|
|
|
|
/**
|
|
Get WiFi wlan0 mac address.
|
|
The API would call RTK get_wlan0_efuse_mac();
|
|
|
|
@param[out] pMacAddr pointer of mac address
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_get_wlan0_efuse_mac(char *pMacAddr);
|
|
|
|
/**
|
|
Set WiFi mac address.
|
|
The API would call RTK set_mac_address();
|
|
|
|
@param[in] pIntfName interface name
|
|
@param[in] pMacAddr pointer of mac address
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_set_mac_address(const char *pIntfName, char *pMacAddr);
|
|
|
|
/**
|
|
Set WiFi system command.
|
|
The API would call RTK RunSystemCmd();
|
|
|
|
@param[in] filepath variable number of parameter,start from NULL_FILE,end to NULL_STR
|
|
Example: WiFiIpc_RunSystemCmd(NULL_FILE, "iwpriv", WIFI_IFNAME, "set_mib", "band=11", NULL_STR);
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/extern ER WiFiIpc_RunSystemCmd(char *filepath, ...);
|
|
|
|
/**
|
|
Register callback function of station status
|
|
|
|
Register callback function for link status report,when WiFi is AP mode.
|
|
|
|
@param[in] pIntfName interface name
|
|
@param[in] pFunc pointer of callback function
|
|
|
|
@return
|
|
- @b 1: register success, 0: register fail.
|
|
*/
|
|
extern ER WiFiIpc_register_wifi_sta_status_cb(const char *pIntfName, wifi_sta_status_cb_func_t *pFunc);
|
|
|
|
/**
|
|
Register callback function of link to AP
|
|
|
|
Register callback function for link status report,when WiFi is station mode.
|
|
|
|
@param[in] pIntfName interface name
|
|
@param[in] pFunc pointer of callback function
|
|
|
|
@return
|
|
- @b 1: register success, 0: register fail.
|
|
*/
|
|
extern ER WiFiIpc_register_wifi_link_status_cb(const char *pIntfName, wifi_link_status_cb_func_t *pFunc);
|
|
|
|
|
|
extern ER WiFiIpc_register_p2p_event_indicate_cb(const char *pIntfName, p2p_event_indicate_cb_func_t *pFunc);
|
|
extern ER WiFiIpc_register_wsc_event_cb(wsc_event_cb_func_t *pFunc);
|
|
extern ER WiFiIpc_register_wsc_flash_param_cb(wsc_flash_param_cb_func_t *pFunc);
|
|
|
|
|
|
|
|
/**
|
|
Get wfii site survey request
|
|
|
|
@param[in] pwifi WiFi setting,refer to struct nvt_wifi_settings
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
|
|
*/
|
|
extern ER WiFiIpc_Config(nvt_wifi_settings *pwifi);
|
|
|
|
/**
|
|
Get WiFi site survey request
|
|
|
|
@param[in] pIntfName interface name
|
|
@param[out] pStatus pointer of request status
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_getWlSiteSurveyRequest(const char *pIntfName, int *pStatus);
|
|
|
|
/**
|
|
Get WiFi site survey result
|
|
|
|
@param[in] pIntfName interface name
|
|
@param[out] pStatus pointer of all site information
|
|
@param[in] size size of pStatus
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_getWlSiteSurveyResult(const char *pIntfName, NVT_SS_STATUS_Tp pStatus, UINT32 size);
|
|
extern ER WiFiIpc_getWlP2PScanRequest(const char *pIntfName, int *pStatus);
|
|
extern ER WiFiIpc_getWlP2PScanResult(const char *pIntfName, NVT_SS_STATUS_Tp pStatus, UINT32 size);
|
|
extern ER WiFiIpc_sendP2PProvisionCommInfo(const char *pIntfName, NVT_P2P_PROVISION_COMM_Tp pP2PProvisionComm);
|
|
extern ER WiFiIpc_create_wscd(void);
|
|
extern ER WiFiIpc_wsc_reinit(void);
|
|
extern ER WiFiIpc_wsc_stop_service(void);
|
|
extern ER WiFiIpc_generate_pin_code(char *pinbuf);
|
|
extern ER WiFiIpc_wscd_is_start(void);
|
|
extern ER WiFiIpc_ignore_down_up(const char *pIntfName, int val);
|
|
extern ER WiFiIpc_get_connect_info(const char *pIntfName, const char *pStaMac, NVT_Connect_Info info, unsigned char *buf, unsigned int size);
|
|
extern ER WiFiIpc_set_country(const char *country);
|
|
extern ER WiFiIpc_set_frequency(NVT_FREQUENCY_TYPE f);
|
|
|
|
/**
|
|
Remove WiFi interface.
|
|
The API would remove wifi device from ecos sdio framework;
|
|
|
|
@param[in] pIntfName interface name
|
|
|
|
@return
|
|
- @b 0 success, -1 fail
|
|
*/
|
|
extern ER WiFiIpc_interface_remove(const char *pIntfName);
|
|
|
|
extern ER WiFiIpc_wow_clear(void);
|
|
|
|
extern ER WiFiIpc_wow_setIP(char *IP,char *Mac,char *AP);
|
|
|
|
extern ER WiFiIpc_wow_offload(void);
|
|
|
|
extern ER WiFiIpc_wow_keep_alive_pattern(NVTWIFI_PARAM_KEEP_ALIVE *param);
|
|
|
|
extern ER WiFiIpc_wow_wakeup_pattern(NVTWIFI_PARAM_WAKEUP_PATTERN *param);
|
|
|
|
extern ER WiFiIpc_wow_apply2(void);
|
|
|
|
extern ER WiFiIpc_wow_set_auto_recovery(NVTWIFI_PARAM_SLEEP_RECOVERY *param);
|
|
|
|
extern ER WiFiIpc_set_keep_resp_detect(unsigned char sip[4], int idx, int last, int interval);
|
|
|
|
extern ER WiFiIpc_is_associated(const char *pIntfName);
|
|
|
|
extern ER WiFiIpc_wow_show_status(void);
|
|
|
|
#endif /* _WIFIIPCAPI_H */
|