softAP调试过程
Android 4.4
- 流程
- 问题
1 流程
打开设置里的ap热点
.packages/apps/TvSettings/Settings/src/com/android/settings/TetherSettings.Java
public boolean onPreferenceChange(Preference preference, Object value) {boolean enable = (Boolean) value;if (enable) {startProvisioningIfNecessary(WIFI_TETHERING);} else {mWifiApEnabler.setSoftapEnabled(false);}return false;}
然后 startProvisioningIfNecessary(WIFI_TETHERING);
接着startTethering();
接着mWifiApEnabler.setSoftapEnabled(true);
进入
packages/apps/TvSettings/Settingssrc/com/android/settings/wifi/WifiApEnabler.java
setSoftapEnabled
转向frameworks的frameworks/base/wifi/java/android/net/wifi/WiFiManager.java
public boolean setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled) {try {mService.setWifiApEnabled(wifiConfig, enabled);return true;} catch (RemoteException e) {return false;}}
调用Service
frameworks/base/services/java/com/android/server/wifi/WifiService.java
public void setWifiApEnabled(WifiConfiguration wifiConfig, boolean enabled) {enforceChangePermission();// null wifiConfig is a meaningful input for CMD_SET_APif (wifiConfig == null || wifiConfig.isValid()) {mWifiController.obtainMessage(CMD_SET_AP, enabled ? 1 : 0, 0, wifiConfig).sendToTarget();} else {Slog.e(TAG, "Invalid WifiConfiguration");}}
后边转到loaddriver
if (mWifiNative.loadDriver()) {setWifiApState(WIFI_AP_STATE_ENABLING);transitionTo(mSoftApStartingState);} else {loge("Failed to load driver for softap");}
下载驱动(我这边是错在这里)
public void wifiFirmwareReload(String wlanIface, String mode) {mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);try {mConnector.execute("softap", "fwreload", wlanIface, mode);} catch (NativeDaemonConnectorException e) {throw e.rethrowAsParcelableException();}}
public void wifiFirmwareReload(String wlanIface, String mode) {mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);try {mConnector.execute("softap", "fwreload", wlanIface, mode);} catch (NativeDaemonConnectorException e) {throw e.rethrowAsParcelableException();}}
报错是
/WifiStateMachine( 1802): Failed to reload STA firmware java.lang.IllegalArgumentException: command '8 softap fwreload wlan0 STA' failed with '501 8 SoftAP command has failed'
下载不到固件
继续看下去
system/netd/SoftapController.cpp: ALOGE("SoftAP fwreload is missing arguments. Please use: softap <wlan iface> <AP|P2P|STA>");
int SoftapController::fwReloadSoftap(int argc, char *argv[])
{char *fwpath = NULL;if (argc < 4) {ALOGE("SoftAP fwreload is missing arguments. Please use: softap <wlan iface> <AP|P2P|STA>");return ResponseCode::CommandSyntaxError;}if (strcmp(argv[3], "AP") == 0) {fwpath = (char *)wifi_get_fw_path(WIFI_GET_FW_PATH_AP);} else if (strcmp(argv[3], "P2P") == 0) {fwpath = (char *)wifi_get_fw_path(WIFI_GET_FW_PATH_P2P);} else if (strcmp(argv[3], "STA") == 0) {fwpath = (char *)wifi_get_fw_path(WIFI_GET_FW_PATH_STA);}if (!fwpath)return ResponseCode::CommandParameterError;if (wifi_change_fw_path((const char *)fwpath)) {ALOGE("Softap fwReload failed");return ResponseCode::OperationFailed;}else {ALOGD("Softap fwReload - Ok");}return ResponseCode::SoftapStatusResult;
}
这部分wlan 的sta与 ap是分开的,但是现在用的驱动是合在一起的,在串口用hostap可以起来
hostapd -B hostapd.conf
hostapd.conf如下
现在问题在于要把原生的下载两个驱动的方式改为一种
继续看获取驱动的方式
const char *wifi_get_fw_path(int fw_type)
{switch (fw_type) {case WIFI_GET_FW_PATH_STA:return WIFI_DRIVER_FW_PATH_STA;case WIFI_GET_FW_PATH_AP:return WIFI_DRIVER_FW_PATH_AP;case WIFI_GET_FW_PATH_P2P:return WIFI_DRIVER_FW_PATH_P2P;}return NULL;
}
把 ap 的path改为sta 的path
const char *wifi_get_fw_path(int fw_type)
{switch (fw_type) {case WIFI_GET_FW_PATH_STA:return WIFI_DRIVER_FW_PATH_STA;case WIFI_GET_FW_PATH_AP:return WIFI_DRIVER_FW_PATH_STA;case WIFI_GET_FW_PATH_P2P:return WIFI_DRIVER_FW_PATH_P2P;}return NULL;
}
问题解决
softAP调试过程相关推荐
- 单片机驱动DM9000网卡芯片(详细调试过程)【下】
http://hi.baidu.com/mcu8031/blog/item/c95903138671c625dc540171.html 单片机驱动DM9000网卡芯片(详细调试过程)[下] 4.验证初 ...
- stm32--FatFs调试过程(SPIFlash)
移植方法参见我的另一篇博客:<stm32--FatFs移植(SPIFlash)>. 本文仅记录在初次移植完成后,遇到的问题,和解决的过程. 调试记录: 问题1:f_open返回3,即磁盘没 ...
- linux下jtag命令,[转载]LINUX内核调试过程(使用OpenJtag + OpenOCD)
[转载]LINUX内核调试过程(使用OpenJtag + OpenOCD) (2012-04-12 02:02:27) 标签: 杂谈 [转载]LINUX内核调试过程(使用OpenJtag + Open ...
- [VN2020 公开赛]simpleHeap-记录一次gef调试过程
[V&N2020 公开赛]simpleHeap 安全机制: IDA反汇编 main: Add: Edit: 可以看到get_input_content函数包含一个off_by_one漏洞. S ...
- c语言调试过程中的错误,C语言调试过程中duplicate symbol错误分析
说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境).如下图: 一.简单分析一下C语言程序的开发步骤. 由上图我们可以看出C语言由 ...
- PIXHAWK上安装PX4Flow光流传感器及调试过程
摘自:https://blog.csdn.net/wlrh253250/article/details/90146561 PIXHAWK上安装PX4Flow光流传感器及调试过程 置顶 wang-rh ...
- STM32调试过程中出现的问题1:
STM32调试过程中出现的问题1: -\HARDWARE\KEY\key.c(47): error: #29: expected an expression if(key_up&&(K ...
- 百度云PCS调试过程
其实整个调试过程按照百度的开发指南做就可以了,只是现在百度云平台又改版,而开发文档在一些地方没有同步更新.所以写下我的调试过程供大家参考. 1.当然首先是注册成为百度开发者 2.任意创建一个应用,我选 ...
- 腾讯在线教育互动课堂——Demo调试过程记录
官方文档地址:https://cloud.tencent.com/document/product/680/17888 "Demo调试"不像集成使用,不需要完全按照文档一步步处理, ...
最新文章
- 无盘服务器 双镜像盘,镜像(无盘柜)-双活集群解决方案
- php截取数组中的字符串,PHP 中使用explode()函数切割字符串为数组的示例
- Flutter 底部向上弹出的动画按钮
- ORACLE坏块检查
- 深入理解Java8 Lambda表达式
- C语言-基础例题55道
- 2021爱分析・区域性银行数字化厂商全景报告
- 电子科技大学软件工程大一到大二课程
- TeamViewer设备数量受限的解决办法
- 异域公主连接iOS怎么修改服务器,公主连结ios账号在电脑端登录方法 模拟器使用技巧分享...
- 【翻译】揭开HTML5的神秘面纱
- mt4服务器文件夹,MT4服务器地址在哪个文件
- 【数据结构-K】基数排序
- android Menu菜单组键
- RPG游戏-刷怪系统
- 工业大数据在铅粉机的应用(一)
- [分享] 给铭文商人一个草药→草渣→墨水的列表[希望大家有用]
- Ruby和其它类似语言的比较
- ca证书如何保证非对称加密安全?
- 如何自动聚焦到表单的某个input标签(autofocus)