#ifndef __WIFI_H__ #define __WIFI_H__ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef SYSLOG_DEBUG #define pr_debug(fmt, ...) syslog(LOG_DEBUG, fmt, ##__VA_ARGS__) #define pr_info(fmt, ...) syslog(LOG_INFO, fmt, ##__VA_ARGS__) #define pr_warning(fmt, ...) syslog(LOG_WARNING, fmt, ##__VA_ARGS__) #define pr_err(fmt, ...) syslog(LOG_ERR, fmt, ##__VA_ARGS__) #else #define pr_debug printf #define pr_info printf #define pr_warning printf #define pr_err printf #endif #define DEFAULT_IFNAME "wlan0" #define JOIN_AP_RETRIES 1 #define MAX_SAME_AP_NUM 5 #define MAX_SCAN_NUM 10 #define TCP_CONNECT_RETRIES 3 #define TCPKA_INTERVAL 60 #define TCPKA_RETRY_INTERVAL 4 #define TCPKA_RETRY_COUNT 15 #define ETHERNET_HEADER_LEN 14 #define IPV4_HEADER_FIXED_LEN 20 #define TCP_HEADER_FIXED_LEN 20 #define TCP_OPTIONS_LEN 12 #define WOWL_PATTERN_MATCH_OFFSET \ (ETHERNET_HEADER_LEN + IPV4_HEADER_FIXED_LEN + TCP_HEADER_FIXED_LEN + TCP_OPTIONS_LEN) #define CUSTOM_LISTEN_INTERVAL 1000 #define SOL_TCP 6 #define TCP_EXT_INFO 37 struct tcp_ext_info { uint16_t ip_id; uint16_t dummy; uint32_t snd_nxt; uint32_t rcv_nxt; uint32_t window; uint32_t tsval; uint32_t tsecr; }; extern const char tcpka_payload[]; extern const char wowl_pattern[]; int WIFI_Suspend(int sock, bool is_connected); int WIFI_Resume(void); int rk_build_tcpka_param(wl_tcpka_param_t* param, char* ifname, int sock); void rk_system_return(const char cmdline[], char recv_buff[], int len); int rk_system(const char *cmd); int rk_obtain_ip_from_vendor(char * ifname); int rk_obtain_ip_from_udhcpc(char* ifname); typedef struct { uint32_t ssid_len; char ssid[32]; uint8_t bssid[6]; uint32_t security; uint16_t channel; int16_t rssi; } wifi_ap_info_t; /* * ¹¦ÄÜ : wifiÄ£¿é³õʼ»¯. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : ÎÞ */ int WIFI_Init(void); /* * ¹¦ÄÜ : wifiÄ£¿éÍ˳ö. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : ÎÞ */ void WIFI_Deinit(void); /* * ¹¦ÄÜ : WIFI¶Ï¿ª. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : ÎÞ */ void WIFI_Disconnect(void); /* * ¹¦ÄÜ : Á¬½ÓÖ¸¶¨ÍøÂç[¾²Ì¬/¶¯Ì¬/OPEN]. * ²ÎÊý : * ssid : Ä¿±êSSID. pass : ÃÜÂë. useip: 0/¾²Ì¬ 1/¶¯Ì¬ 2/OPEN * ·µ»ØÖµ : ÎÞ */ int WIFI_Connect(char *ssid, char *pass, int useip); /* * ¹¦ÄÜ : »ñÈ¡ÍøÂçÁ¬½Ó״̬. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : ÎÞ */ int WIFI_GetStatus(void); /* * ¹¦ÄÜ : »ñÈ¡WIFIÁ¬½ÓÐŵÀ. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : [0-13]/WIFIÁ¬½ÓÐŵÀ. */ int WIFI_GetChannel(void); /* * ¹¦ÄÜ : »ñÈ¡WIFI»½ÐÑ·½Ê½. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : WIFIÆô¶¯Ô­ÒòÂë. */ int WIFI_GetWakupReason(void); /* * ¹¦ÄÜ : »ñÈ¡WIFIÐźÅÇ¿¶È. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : WIFIÐźÅÇ¿¶È. */ int WIFI_GetSignal(void); /* * ¹¦ÄÜ : ÉèÖÃWIFI¾²Ì¬IPÐÅÏ¢. * ²ÎÊý : ipAddr : IPµØÖ·ÐÅÏ¢. netmask : ×ÓÍøÑÚÂë. gateway : Íø¹Ø. * ·µ»ØÖµ : 0/³É¹¦ * ·Ç0/ʧ°Ü */ int WIFI_SetNetInfo(char *ipAddr, char *netmask, char *gateway, char *dns); /* * ¹¦ÄÜ : »ñÈ¡WIFIÆô¶¯·½Ê½. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : 0/ÖØÆô 1/PIR´¥·¢»½ÐÑ 2/WIFI»½ÐÑ 3/ÆäËû */ int WIFI_StartUpMode(void); /* * ¹¦ÄÜ : Íø¹ØÀëÏßÅäÖÃSSID»½ÐÑ. * ²ÎÊý : ssid : Ä¿±êSSID. channel_num : ɨÃèͨµÀÊý,0/È«ÐŵÀɨÃè [1-12]/µ¥ÐŵÀɨÃè. interval : ɨÃèÖÜÆÚ. * ·µ»ØÖµ : 0/³É¹¦ * ·Ç0/ʧ°Ü */ int WIFI_SetWakeupBySsid(char *ssid, char channelNum, unsigned short interval); /* * ¹¦ÄÜ : Íø¹ØÉÏÏߺóÇå³ýSSID»½ÐÑ. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : 0/³É¹¦ * ·Ç0/ʧ°Ü */ int WIFI_ClearWakeupSsid(void); /* * ¹¦ÄÜ : ÉèÖÃWIFIÆô¶¯·½Ê½. * ²ÎÊý : * WakeupFlag : 0/ÂýÆô¶¯ * 1/¿ìÆô¶¯ * ·µ»ØÖµ : ÎÞ */ int WIFI_SetQuickStartWay(int WakeupFlag); /* * ¹¦ÄÜ : ɨÃèÖܱßÍøÂç. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : ÎÞ */ int WIFI_ClientScan(void); /* * ¹¦ÄÜ : »ñȡɨÃè½á¹û. * ²ÎÊý : * pstResults : ɨÃè½á¹û. * num : AP×ÜÊý. * ·µ»ØÖµ : 0/³É¹¦ * ·Ç0/ʧ°Ü */ int WIFI_GetClientScanResults(wifi_ap_info_t *pstResults, uint32_t num); /* * ¹¦ÄÜ : ½øÈëÐÝÃß±£»î״̬. * ²ÎÊý : ÎÞ * ·µ»ØÖµ : 0/³É¹¦ * ·Ç0/ʧ°Ü */ #endif /* __WIFI_H__ */