在路由开发过程中一些开发者都是直接用管道调用命令工具的方式来获取一些无线信息,这里快速介绍一下怎么使用c代码调用iwinfo库获取相应的信息。
iwinfo封装了nl80211、madwifi、qcawifi、wl_ops等驱动接口,然后将这些接口整合出一套统一的API层。
其中重要的结构如下:
struct iwinfo_ops { int (*mode)(const char *, int *); int (*channel)(const char *, int *); int (*frequency)(const char *, int *); int (*frequency_offset)(const char *, int *); int (*txpower)(const char *, int *); int (*txpower_offset)(const char *, int *); int (*bitrate)(const char *, int *); int (*signal)(const char *, int *); int (*noise)(const char *, int *); int (*quality)(const char *, int *); int (*quality_max)(const char *, int *); int (*mbssid_support)(const char *, int *); int (*hwmodelist)(const char *, int *); int (*ssid)(const char *, char *); int (*bssid)(const char *, char *); int (*country)(const char *, char *); int (*hardware_id)(const char *, char *); int (*hardware_name)(const char *, char *); int (*encryption)(const char *, char *); int (*assoclist)(const char *, char *, int *); int (*txpwrlist)(const char *, char *, int *); int (*scanlist)(const char *, char *, int *); int (*freqlist)(const char *, char *, int *); int (*countrylist)(const char *, char *, int *); int (*beacon_int)(const char *, int *); void (*close)(void); };
初始化的时候该结构指针就会指向对应驱动的结构,从而调用对应的处理方法。
函数:
const struct iwinfo_ops * iwinfo_backend(const char *ifname); //参数传入网卡名称,返回对应的消息iwinfo_ops结构指针 void iwinfo_finish(void); //关闭socket
使用方法:
1. 调用iwinfo_backend()
函数来初始化并获取对应驱动的iwinfo_ops
结构指针
2. 调用iwinfo_ops
中的方法来获取相应的信息
如:获取”ath0”网卡ssid名,信道…
#include "iwinfo.h" iw = iwinfo_backend("ath0"); iw->channel("ath0", &val);//返回值存放在val中iw->ssid("ath0", buf);//返回字符串存放在buf中
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。