#ifndef __WIFI_H__
|
#define __WIFI_H__
|
|
#include <syslog.h>
|
#include <stdint.h>
|
#include <stdio.h>
|
#include <stdlib.h>
|
#include <unistd.h>
|
#include <stdbool.h>
|
#include <string.h>
|
#include <fcntl.h>
|
#include <sys/socket.h>
|
#include <sys/ioctl.h>
|
#include <netinet/in.h>
|
#include <arpa/inet.h>
|
#include <linux/if.h>
|
#include <linux/if_arp.h>
|
#include <sys/time.h>
|
#include <ctype.h>
|
#include <errno.h>
|
#include <assert.h>
|
#include <paths.h>
|
#include <sys/wait.h>
|
#include <linux/sockios.h>
|
#include <net/route.h>
|
|
#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__ */
|