分享

【原创】调试ralink 5370 wifi芯片(四)

 昵称14797374 2013-12-10

今天开始调试如何同时开起android的softap和wifi功能。

1.softap的直接控制代码在system/netd/SoftapController.cpp

2.上一层控制代码在system/netd/CommandListener.cpp

3.framework层的代码在frameworks/base/services/java/com/android/server/NetworkManagementService.java.

4.setting中相关设置的代码在packages/apps/Settings/src/com/android/settings/wifi/WifiApEnabler.java
  和packages/apps/Settings/src/com/android/settings/wifi/WifiEnabler.java中。

5.修改了softapcontroller.cpp中的代码,强制置顶了启用wlan1作为softap。
   最终hostapd可以启动,但是dnsmasq没有启动。

6.将frameworks/base/core/res/res/values/config.xml中的wlan0改为wlan1之后,重新烧写了系统,dnsmasq可以启动了。
  并且可以正常连接,无论是open还是wpa2都正常。

7屏蔽掉了第4步中两个.java中关闭对方的语句:setWifiApEnabled和setWifiEnabled
  先开启wifi后再开启softap出现如下报错:
  E/WifiStateMachine( 1047): Failed to start soft AP with a running supplicant
  先开启softap后再开启wifi后出现如下报错:
 E/WifiStateMachine( 1047): Cannot start supplicant with a running soft AP
 这两句话是在 frameworks/base/wifi/java/android/net/wifi/WifiStateMachine.java中报出的。

8, 在frameworks/base/services/java/com/android/server/WifiService.java中为softap单独建立一个wifistatemachine.

就可以实现wifi和softap一起工作。里面有绑定wlan1为softap的语句。

 

9.在wifiservice.java的checkAndStartWifi函数中设置setWifiApEnabled即可让开机自动启动softap.

 

至此,整个功能调试完毕,经验就是以后还是要多看代码,稳扎稳打。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多