天嵌二次封装库使用手册  V1.0
tq_wifi.h 文件参考
#include "wpa_ctrl.h"
#include <net/if.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
tq_wifi.h 的引用(Include)关系图:

浏览源代码.

结构体

struct  WIFI
 用来存放一个WIFI的基本参数 更多...
 

函数

struct WIFIinit_wifi ()
 初始化WIFI结构体 更多...
 
void release_wifi (struct WIFI *wifi)
 释放WIFI指针 更多...
 
int Extract_information (char *src, char *dest, char *key, int dest_size)
 提取特定类型的字符串 更多...
 
int send_command (struct wpa_ctrl *ctrl, char *cmd)
 用于发送只返回OK,FAIL的指令 更多...
 
int scan (struct wpa_ctrl *ctrl)
 扫描WIFI列表 更多...
 
int scan_result (struct wpa_ctrl *ctrl, struct WIFI *wifi, int index)
 获取WIFI扫描结果 更多...
 
int connect_wifi (struct wpa_ctrl *ctrl, char *ssid, char *passwork)
 连接wifi 更多...
 
int get_wifi_status_value (struct wpa_ctrl *ctrl, char *key, char *dest, int dest_size)
 通过"STATUS"指令,获取所需参数。 更多...
 
int get_wifi_rssi (struct wpa_ctrl *ctrl)
 获取已连接的wifi的信号强度 更多...
 
int disconnect_wifi (struct wpa_ctrl *ctrl)
 关闭WIFI使能 更多...
 
int reconnect_wifi (struct wpa_ctrl *ctrl)
 开启WIFI使能 更多...
 

变量

const int IP_SIZE = 16
 IP地址长度
 

详细描述

作者
owen (ouzij.nosp@m.ian@.nosp@m.embed.nosp@m.sky..nosp@m.net)
版本
1.0
日期
2021-08-27
修改日志:
Date Version Author Description
2021-08-27 1.0 owen 第一次发布,对wpa_ctrl.h中的函数进行更进一步的封装。

函数说明

int connect_wifi ( struct wpa_ctrl ctrl,
char *  ssid,
char *  passwork 
)

连接wifi

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
ssid目标WIFI的SSID
passwork若WIFI已加密则需要密码,若无则输入NULL
返回
int 成功则返回1,失败返回0。

具体执行步骤:先清理所有网络节点->关闭WIFI使能->申请网络节点->设置目标WIFI的SSID-> 若WIFI加密则需要设置WIFI密码和加密方式->设置scan_ssid为1以防目标WIFI隐藏SSID->开启WIFI使能。

int disconnect_wifi ( struct wpa_ctrl ctrl)

关闭WIFI使能

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 成功返回1。缓存区申请失败返回0,发送或接收失败返回-1,接收超时返回-2,没有收到OK则返回-3。

调用send_command()发送"DISABLE_NETWORK ALL",暂时断开当前wifi,能通过reconnect_wifi()重新连接。

int Extract_information ( char *  src,
char *  dest,
char *  key,
int  dest_size 
)

提取特定类型的字符串

参数
src目标字符串
dest用于存储提取出来的数据的字符串
key想要提取的数据的关键字
dest_size存储字符串的长度
返回
int 成功则返回提取出来的字符串长度,没找到对应的key则返回0,参数错误返回-1。

对于"……\nkey=value\n……\0"类型字符串,按照key提取对应的value。

int get_wifi_rssi ( struct wpa_ctrl ctrl)

获取已连接的wifi的信号强度

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 成功返回信号强度,失败返回0。
int get_wifi_status_value ( struct wpa_ctrl ctrl,
char *  key,
char *  dest,
int  dest_size 
)

通过"STATUS"指令,获取所需参数。

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
key想要提取的数据的关键字
value用于存储提取出来的数据的字符串
value_size存储字符串的长度
返回
int 成功返回提取出来的字符串长度,缓存区申请失败或没有目标参数返回0,发送或接收失败返回-1,接收超时返回-2,参数错误返回-3。

获取如当前WIFI网络状态,已连接WIFI的SSID,BSSID(MAC地址)等信息。

struct WIFI* init_wifi ( )

初始化WIFI结构体

返回
struct WIFI* 返回一个指向WIFI结构体在内存中的指针,若失败返回NULL。

申请一个内存空间用于存放WIFI结构体中的数据,并将结构体中的字符串指针初始化为NULL,int类型数据初始化为0。

int reconnect_wifi ( struct wpa_ctrl ctrl)

开启WIFI使能

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 成功返回1。缓存区申请失败返回0,发送或接收失败返回-1,接收超时返回-2,没有收到OK则返回-3。

调用send_command()发送"ENABLE_NETWORK ALL",重新连接所有已配置好的wifi。

void release_wifi ( struct WIFI wifi)

释放WIFI指针

参数
wifi由init_wifi()返回的WIFI结构体指针。
int scan ( struct wpa_ctrl ctrl)

扫描WIFI列表

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
返回
int 若收到OK返回1,缓存区申请失败返回0,发送或接收失败返回-1,接收超时返回-2,没有收到OK则返回-3。

本质上就是调用sen_command()发送"SCAN"指令,并返回结果。

int scan_result ( struct wpa_ctrl ctrl,
struct WIFI wifi,
int  index 
)

获取WIFI扫描结果

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
wifi由init_wifi()返回的WIFI结构体指针
indexBSS指令所需参数
返回
int 成功返回1,缓存区申请失败返回返回0,发送或接收失败返回-1,接收超时返回-2,收到FAIL或收到空数据返回-3。

通过BSS <index>获取单条WIFI扫描结果,将结果保存在WIFI结构体中。

int send_command ( struct wpa_ctrl ctrl,
char *  cmd 
)

用于发送只返回OK,FAIL的指令

参数
ctrl由wpa_ctrl_open()返回的接口控制指针
cmd指令,如“STATUS”,通常是ASCII文本
返回
int 若收到OK返回1,缓存区申请失败返回0,发送或接收失败返回-1,接收超时返回-2,没有收到OK则返回-3。

对于像"SCAN","SAVE_CONFIG"等只会返回OK,FAIL的指令就可以使用该函数。 若像"STATUS","SCAN_RESULTS"等返回特定信息的指令就需要调用wpa_ctrl_request()函数,再根据自己需要对reply进行分析处理。