android运行iwconfig命令,android wpa_supplicant 添加支持wireless tools 的driver priv 命令

由于wpa_supplicant 不支持wireless tools(wext) 或者iw(nl80211)

的某些命令(跟wep,wpa 没关系),这样如果需要做测试比如set txpower,channel 等命令时

wpa_supplicant就不支持

但可以通过把iw,或者wireless tool 等命令加入到wpa_supplicant

中来实现,这样的好处,可以通过wpa_cli  调用,并且上层有jni

方便界面开发

实现wext接口wireless tools 命令到wpa_supplicant方法很简单

就是把wireless tools 代码弄到wpa supplicant中

并在wpa_driver_priv_driver_cmd添加接口

android2.3.4下

方法如下:

1. 在driver_wext.c中

wpa_driver_priv_driver_cmd 函数中

修改:

+extern int dispatch(void *priv, char *cmd,char *buf, size_t buf_len);

static int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len )

{

struct wpa_driver_wext_data *drv = priv;

int ret = -1;

wpa_printf(MSG_DEBUG, "%s %s", __func__, cmd);

-

if (os_strcasecmp(cmd, "start") == 0) {

wpa_printf(MSG_DEBUG,"Start command");

return (ret);

@@ -2723,6 +2724,9 @@ static int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t

}

else if( os_strcasecmp(cmd, "btcoexstat") == 0 ) {

}

+else if( (ret = dispatch(priv,cmd, buf, buf_len)) >= 0){

+ return ret;

+ }

else {

wpa_printf(MSG_DEBUG,"Unsupported command");

}

添加一个dispatch 命令接口

2. 将wrieless tools中iwconfig 部分内容移植过来

添加文件 如附件

zip.gif driver_cmd.zip  

然后将加的文件 加到wpa_supplicant 目录下的andorid.mk 中

3. 测试

进入wpa_cli 输入

driver get:命令

driver set:命令=value

命令字 可选iwconfig 中下面结构中第1个feild

static const struct iwconfig_entry iwconfig_cmds[] = {

{ "essid",        set_essid_info,        1,    SIOCSIWESSID,

"Set ESSID",

"{NNN|any|on|off}" },

{ "mode",        set_mode_info,        1,    SIOCSIWMODE,

"Set Mode",            "{managed|ad-

hoc|master|...}" },

{ "freq",        set_freq_info,        1,    SIOCSIWFREQ,

"Set Frequency",        "N.NNN[k|M|G]" },

{

"channel",        set_freq_info,        1,    SIOCSIWFREQ,

"Set Frequency",        "N" },

{ "bit",        set_bitrate_info,

1,    SIOCSIWRATE,

"Set Bit Rate",            "{N[k|M|G]|auto|fixed}" },

{ "rate",        set_bitrate_info,    1,    SIOCSIWRATE,

"Set Bit Rate",            "{N[k|M|G]|auto|fixed}" },

{ "power",        set_power_info,        1,    SIOCSIWPOWER,

"Set Power

Management",        "{period N|timeout N|saving N|off}" },

#ifndef WE_ESSENTIAL

{ "nickname",        set_nick_info,        1,

SIOCSIWNICKN,

"Set Nickname",            "NNN" },

{ "nwid",        set_nwid_info,        1,    SIOCSIWNWID,

"Set NWID",

"{NN|on|off}" },

#ifdef USE_ADDRESS_SUBROUTINES

{ "ap",        set_apaddr_info,    1,    SIOCSIWAP,

"Set AP Address",

"{N|off|auto}" },

#endif

{ "txpower",        set_txpower_info,    1,    SIOCSIWTXPOW,

"Set Tx Power",

"{NmW|NdBm|off|auto}" },

{ "sens",        set_sens_info,        1,    SIOCSIWSENS,

"Set Sensitivity",        "N" },

{ "retry",

set_retry_info,        1,    SIOCSIWRETRY,

"Set Retry Limit",        "{limit N|lifetime N}" },

{ "rts",        set_rts_info,

1,    SIOCSIWRTS,

"Set RTS Threshold",        "{N|auto|fixed|off}" },

{ "frag",        set_frag_info,        1,

SIOCSIWFRAG,

"Set Fragmentation Threshold",    "{N|auto|fixed|off}" },

{ "modulation",    set_modulation_info,    1,    SIOCGIWMODUL,

"Set

Modulation",        "{11g|11a|CCK|OFDMg|...}" },

#endif    /* WE_ESSENTIAL */

{ "commit",        set_commit_info,    0,

SIOCSIWCOMMIT,

"Commit changes",        "" },

{ NULL, NULL, 0, 0, NULL, NULL },

};

比如tx-power

取值

driver get:txpower

设置

driver get:txpower=20

4.nl80211 driver priv命令的实现

同样把 iw  部分代码,修改下支持dispatch接口

另外需要libnl ,需要将其build成android native lib

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值