【OpenWrt智能路由器】c代码iwinfo库使用方法
在路由开发过程中一些开发者都是直接用管道调用命令工具的方式来获取一些无线信息,这里快速介绍一下怎么使用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中
复制代码
|