android增加5G热点

busybox ifconfig -a 查看网口

sudo iw list|grep MHz 查看信道
Android平台API直接通过mWifiManager.setWifiEnabled来打开热点,即调用WifiManager的方法:
Z:\KK\frameworks\base\wifi\java\android\net\wifi\WifiManager.java
android增加5G热点_第1张图片

到服务器端进程:
Z:\KK\frameworks\base\services\java\com\android\server\wifi\WifiService.java
android增加5G热点_第2张图片
从而调用到Wifi状态机中的实例,接着会调到mSoftApStartingState
Z:\KK\frameworks\base\wifi\java\android\net\wifi\WifiStateMachine.java

android增加5G热点_第3张图片

加载AP对应的驱动,通过JNI调用本地方法加载驱动:
android增加5G热点_第4张图片
加载驱动成功后状态又被迁移至mSoftApStartingState
android增加5G热点_第5张图片
SoftApStartingState 会检测上层传下的参数的有效性并调用startSoftApWithConfig 配置、打开SoftAP
android增加5G热点_第6张图片
接着调用到startAccessPoint()函数
Z:\KK\frameworks\base\services\java\com\android\server\NetworkManagementService.java

android增加5G热点_第7张图片

在此可强制修改热点的信道,如上已将mConnector.execute直接写入了36信道。

下载AP对应的 firmware
wifiFirmwareReload(wlanIface, “AP”);
设置ap的ssid 信道 加密方式 以及密码
mConnector.execute(“softap”, “set”, wlanIface, wifiConfig.SSID,
“broadcast”, “36”, getSecurityType(wifiConfig),
new SensitiveArg(wifiConfig.preSharedKey));3、运行softap
mConnector.execute(“softap”, “startap”);
这里通过一个NativeDaemonConnector的实例mConnector 调用c++程序

android增加5G热点_第8张图片

最后调用到了 “./system/netd/CommandListener.cpp” 中的CommandListener::SoftapCmd::runCommand
android增加5G热点_第9张图片

调用”set“ 命令, 调用到 rc = sSoftapCtrl->setSoftap(argc, argv);来配置网络
android增加5G热点_第10张图片

asprintf(&wbuf, “interface=%s\ndriver=nl80211\nctrl_interface=”
“/data/misc/wifi/hostapd\nssid=%s\nchannel=%d\nieee80211n=1\n”
“hw_mode=a\nignore_broadcast_ssid=%d\n”,
argv[2], argv[3], channel, hidden);
则是热点打开生成的配置文件内容,会接收到上层传来的信道和接口进行配置,此处我们若要改成5G热点,需如上修改协议hw_mode=a,至此热点配置修改已完成。

你可能感兴趣的:(android)