3.2. Wi-Fi API接口说明
wifi 的 API 接口说明如下:
Functions
-
void wifi_set_event_callback(int (*cb)(void*, enum WIFI_EVENT))
wifi_set_event_callback,用于注册(设置)WIFI事件回调函数
- Parameters
cb – 指向WIFI事件回调函数,一般为:wifi_event_callback
-
u8 wifi_airkiss_calcrc_bytes(u8 *p, unsigned int num_of_bytes)
wifi_airkiss_calcrc_bytes,用于计算airkiss接收包crc校验
- Parameters
p – 指向设备端扫描到的空中SSID
num_of_bytes – 设备端扫描到的空中SSID长度
-
void wifi_set_frame_cb(void (*cb)(void *rxwi, struct ieee80211_frame *wh, void *data, u32 len, void *priv), void *priv)
wifi_set_frame_cb,用于注册(设置)WIFI底层接收到802.11数据帧回调函数
- Parameters
cb – 指向WIFI底层接收到802.11数据帧回调函数
priv – 用户私有指针传递
-
void wifi_set_pwr(unsigned char pwr_sel)
wifi_set_pwr,用于设置WIFI 模拟功率等级
Note
参数设为0,表示把WIFI模拟功率调整到最低档位节电
- Parameters
pwr_sel – 默认为6,范围为0-6
-
int wifi_on(void)
wifi_on,用于启动WIFI
-
int wifi_is_on(void)
wifi_is_on,查询WIFI是否启动
-
int wifi_off(void)
wifi_off,关闭WIFI
-
int wifi_get_mac(u8 *mac)
wifi_get_mac,获取WIFI MAC地址
- Parameters
mac – 指向存储MAC地址的缓存数组,数组大小为6
-
int wifi_set_mac(char *mac_addr)
wifi_set_mac,设置WIFI MAC地址
- Parameters
mac_addr – 指向要设置的MAC地址缓存数组,数组大小为6
-
void wifi_rxfilter_cfg(char mode)
wifi_rxfilter_cfg,设置WIFI接收过滤
- Parameters
mode – 过滤模式
mode
说明
0
STA模式默认不过滤
1
AP模式默认不过滤
2
STA模式下使用,过滤广播,多播
3
STA模式下使用,过滤not_my_bssid
4
STA模式下使用,过滤广播+多播+not_my_bssid
5
AP模式下使用,过滤广播,多播
6
AP模式下使用,过滤not_my_bssid
7
AP模式下使用,过滤广播+多播+not_my_bssid
-
void wifi_set_tx_rate_control_tab(u32 tab)
wifi_set_tx_rate_control_tab,用于设置WIFI TX速率
- Parameters
tab – 速率表,不需要哪个速率就删除掉,可以动态设定
-
u32 wifi_get_channel(void)
wifi_get_channel,用于获取WIFI当前信道
-
void wifi_get_bssid(u8 bssid[6])
wifi_get_bssid,用于获取WIFI当前bssid
-
u32 wifi_get_upload_rate(void)
wifi_get_upload_rate,用于获取WIFI上行速率
-
u32 wifi_get_download_rate(void)
wifi_get_download_rate,用于获取WIFI下行速率
-
void wifi_get_mode_cur_info(struct wifi_mode_info *info)
wifi_get_mode_cur_info,用于获取WIFI当前是什么模式,或者当前指定模式下的配置信息
- Parameters
info – 指向一个wifi_mode_info类型的结构体,其包含了变量mode、ssid、pwd
-
int wifi_get_mode_stored_info(struct wifi_mode_info *info)
wifi_get_mode_stored_info,用于获取WIFI最后记忆的是什么模式,或者最后记忆模式下的配置信息
- Parameters
info – 指向一个wifi_mode_info类型的结构体,其包含了变量mode、ssid、pwd
-
int wifi_set_default_mode(struct wifi_store_info *parm, char force, char store)
wifi_set_default_mode,用于设置WIFI启动默认模式配置
Note
配置STA模式情况下,把默认配置SSID也存储起来,以后即使保存过其他SSID,也不会覆盖丢失,使用连接最优信号SSID策略的情况下可以匹配连接
- Parameters
parm – 指向一个wifi_store_info类型的结构体
force – 配置wifi_on之后的模式
force
说明
0
使用最后记忆的模式
1
强制默认模式
3-200
STA连接超时时间多少秒,如果超时都连接不上就连接最后记忆的或者最优网络
store – 选择是否存储默认配置的SSID
store
说明
0
不存储默认配置的SSID
1
存储默认配置的SSID
-
int wifi_store_mode_info(enum WIFI_MODE mode, char *ssid, char *pwd)
wifi_store_mode_info,用于保存WIFI模式配置信息,覆盖默认模式
- Parameters
mode – 配置的wifi模式
ssid – 配置模式下的SSID
pwd – 配置模式下的密码
-
int wifi_del_stored_sta_info(char *ssid)
wifi_del_stored_ssid,用于删除STA模式下保存过的SSID,仅允许STA模式使用
- Parameters
ssid – 删除wifi_get_stored_sta_info存储中的ssid
-
void wifi_set_target_mac_for_agc_recv(char *mac)
wifi_set_target_mac_for_agc_recv,用于设置目标接收地址,有利于提高抗干扰能力,专门针对目标地址的数据包进行接收AGC和频偏调整
- Parameters
mac – 目标接收地址
-
int wifi_enter_ap_mode(char *ap_ssid, char *ap_pwd)
wifi_enter_ap_mode,用于设置WIFI进入AP模式
- Parameters
ap_ssid – AP模式下的SSID
ap_pwd – AP模式下的密码
-
int wifi_get_sta_entry_rssi(char wcid, char **rssi, u8 **evm, u8 **mac)
wifi_get_sta_entry_rssi,用于AP模式下获取接入的每个STA信号质量和MAC地址
-
void wifi_disconnect_station(char *mac, u16 reason)
wifi_disconnect_station,用于AP模式下断开指定MAC地址的STA
- Parameters
mac – 要断开设备的mac地址
reason – 断开的原因,通常填8:Deauthenticated because sending station is leaving
-
void wifi_set_store_ssid_cnt(u32 cnt)
wifi_set_store_ssid_cnt,用于设置WIFI最多保存多少个连接的SSID数目
- Parameters
cnt – sta模式下最多保存的SSID数目,工程中默认为5
-
void wifi_set_sta_connect_best_ssid(u8 enable)
wifi_set_sta_connect_best_ssid,用于设置WIFI进入STA模式的时候如果匹配到信号最好的网络就去连接
- Parameters
enable – 自动连接保存过的信号最好的SSID使能端,置1:使能,置0:不使能
-
void wifi_set_sta_connect_timeout(int sec)
wifi_set_sta_connect_timeout,用于设置WIFI连接STA超时时间
- Parameters
sec – WIFI连接STA超时时间,单位为秒,工程中默认为60秒
-
void wifi_set_connect_sta_block(int block)
wifi_set_connect_sta_block,用于设置WIFI连接STA是否阻塞, 默认非阻塞通过事件通知
- Parameters
block – 使能端,置1:阻塞,置为0:不阻塞
-
int wifi_enter_sta_mode(char *sta_ssid, char *sta_pwd)
wifi_enter_sta_mode,用于设置WIFI进入STA模式
- Parameters
sta_ssid – 配置STA模式的SSID
sta_pwd – 配置STA模式的密码
-
int wifi_scan_req(void)
wifi_scan_req,用于WIFI STA模式或者AP模式下启动一次扫描空中SSID
Note
STA模式下调用返回-1代表WIFI OFF/正在扫描/连接中,无需启动扫描, 可以等待几秒或者扫描完成事件到来获取结果
-
struct wifi_scan_ssid_info *wifi_get_scan_result(u32 *ssid_cnt)
wifi_get_scan_result,用于启动一次扫描空中SSID后,获取扫描结果
-
void wifi_clear_scan_result(void)
wifi_clear_scan_result,用于获取扫描结果后,清空上次扫描结果
-
int wifi_get_stored_sta_info(struct wifi_stored_sta_info wifi_stored_sta_info[])
wifi_get_stored_sta_info,用于获取WIFI保存过的SSID
Note
返回WIFI保存过的SSID数目
-
char wifi_get_rssi(void)
wifi_get_rssi,用于获取WIFI连接的STA接收信号强度
Note
返回WIFI连接的STA接收信号强度
-
char wifi_get_cqi(void)
wifi_get_cqi,用于获取WIFI连接的STA信号质量
Note
返回WIFI连接的STA通信丢包质量,0-100,一般认为大于50为较好,20-50之间为一般,小于20较差, decide ChannelQuality based on: 1)last BEACON received time, 2)last RSSI权重50, 3)TxPER权重30, and 4)RxPER权重20
-
enum wifi_sta_connect_state wifi_get_sta_connect_state(void)
wifi_get_sta_connect_state,用于获取WIFI是连接STA状态
Note
返回WIFI连接STA的状态
-
int wifi_enter_smp_cfg_mode(void)
wifi_enter_smp_cfg_mode,用于设置WIFI进入配网模式/monitor模式
-
void wifi_set_smp_cfg_timeout(int sec)
wifi_set_smp_cfg_timeout,用于设置WIFI配网超时事件时间
- Parameters
sec – WIFI配网超时时间,单位为秒
-
void wifi_set_smp_cfg_scan_all_channel(char onoff)
wifi_set_smp_cfg_scan_all_channel,用于设置WIFI配网模式/monitor模式下是否扫描全部信道,默认否
- Parameters
onoff – 全扫描开关,1:开启,0:关闭
-
void wifi_set_smp_cfg_airkiss_recv_ssid(char onoff)
wifi_set_smp_cfg_airkiss_recv_ssid,用于设置WIFI airkiss配网模式下是否接收完整的SSID,默认否,有助于加快配网时效,有概率配网失败
- Parameters
onoff – 全扫描开关,1:开启,0:关闭
-
void wifi_set_smp_cfg_just_monitor_mode(char onoff)
wifi_set_smp_cfg_just_monitor_mode,用于设置WIFI进入配网/monitor模式后,是否只保留monitor模式,默认否
- Parameters
onoff – 全扫描开关,1:开启,0:关闭
-
void wifi_set_monitor_mode_scan_channel_time(int time_ms)
wifi_set_monitor_mode_scan_channel_time,用于在WIFI只保留monitor模式的情况下,设置扫描每个信道的时间间隔
- Parameters
time_ms – 扫描每个信道的时间间隔,单位为ms
-
void wifi_set_airkiss_key(u8 key[16])
wifi_set_airkiss_key,用于设置WIFI配网模式下airkiss的key
- Parameters
key – 为WIFI配网模式下airkiss的key数组
-
int wifi_get_cfg_net_result(struct smp_cfg_result *smp_cfg)
wifi_get_cfg_net_result,用于配网成功后获取WIFI配网信息
-
void wifi_set_channel(u8 ch)
wifi_set_channel,用于设置WIFI当前信道
- Parameters
ch – 要设置的WIFI信道
-
u8 *wifi_get_payload_ptr(void)
wifi_get_payload_ptr,用于获取WIFI底层接口填充payload指针
-
void wifi_send_data(int len, enum wifi_tx_rate rate)
wifi_send_data,用于使用WIFI底层接口直接发送数据帧
- Parameters
pkg – 要发送的数组
len – 发送数据的长度,最大2510字节
rate – WIFI发送速率
-
void wifi_set_long_retry(u8 retry)
wifi_set_long_retry,用于设置WIFI底层长帧重传次数
- Parameters
retry – 为重传次数
-
void wifi_set_short_retry(u8 retry)
wifi_set_short_retry,用于设置WIFI底层短帧重传次数
- Parameters
retry – 为重传次数
-
u32 wifi_get_remain_tx_queue(char ac_queue)
wifi_get_remain_tx_queue,用于获取WIFI底层发送队列剩余个数
- Parameters
ac_queue – 为Qos优先级,用户无配置就是填0
- Returns
剩余多少个包可填充,最大为 MAX_PACKETS_IN_QUEUE
-
void wifi_backoff_cfg(u8 cwmax)
wifi 最大backoff范围设置
- Parameters
cwmax – 为最大backoff范围