WIFI已经可以工作了,大部分android wifisetting里要求的功能也都实现了,不过还有两个问题在这里记录一下:
1. Softap无法使用
2. 通过WPS联网的时候有一定几率会失败。
对于softap,当在setting中选下WIFI TETHERING时,softapcontroller就会给DRIVER发送私有命令,不过在发送私有命令前会先通过IOCTL发送SIOCGIWPRIV这个命令字给DRIVER。这个命令的作用是获得当前DRIVER所支持的私有命令。(因为SOFTAP并不是standard cmd, 所以如果要支持的话必须放在私有命令中)
而DRIVER是否支持私有命令,或者说支持哪些私有命令就要看DRIVER中关于结构体iw_handler_def的赋值:
const struct iw_handler_def wl_iw_handler_def =
{
.num_standard = ARRAYSIZE(wl_iw_handler),
.standard = (iw_handler *) wl_iw_handler,
.num_private = ARRAYSIZE(wl_iw_priv_handler),
.num_private_args = ARRAY_SIZE(wl_iw_priv_args),
.private = (iw_handler *)wl_iw_priv_handler,
.private_args = (void *) wl_iw_priv_args,
};
而我这边由于不知到手上的模块支持哪些private cmd。所以这块自己没办法加,只有联系供应厂商提供支援,现在暂时空下,等支援OK了再该过来。
可是对于问题2我就头大了,有时候好有时候不好,不好的时候就是硬件返回了一个fail,这个让我无从解起。不知道是不是WPS本来联网就不稳定还是其他什么情况我也不得而知。这可能也是我没有选择在设备商公司工作而是转投到制造商的悲哀之一吧。一旦设备本身出了问题,作为制造商只能等待设备商自己来解决,除了催促其他什么也做不了!可是在设备商公司工作又无法接触到这么多好玩的终端产品这就交鱼和熊掌不可兼得吧。