最近调试Android的4G模块;这里做个总结;走个流程;代码就不贴了;公司保密;驱动方面没什么好说的;一般都是厂家会提供文档;其实也就是把4G模块虚拟机成ttyUSB0~ttyUSB5等几个虚拟串口;再打开CDC_NCM虚拟网卡绑定到某一个虚拟串口;产生虚拟网卡usb0或者什么的;

              先走个大概流程;其实主要就是hardware/ril/几个库文件;修改的也不多;有些公司主要是修改reference-ril.so库的修改;有些公司为了公司保密直接给编译好的reference-ril.so文件;那更简单了;直接添加进系统就OK了;

  1. hardware/ril/rild/rild.c => main()
  2. main()打开reference-ril.so库;调用reference-ril.so库里面的RIL_Init()函数;
  3. RIL_Init()函数创建线程调用mainLoop()函数;
  4. mainLoop()函数打开4G模块的虚拟串口;然后:首先调用onUnsolicited()函数监听4G模块主动上报的信息;再调用initializeCallback()函数初始化4G模块;
  5. onRequest()函数接收上层传下来的指令转换成AT指令拨号等;

关键函数:

initializeCallback()4G 模块初始化函数;里面就是一些发给4G模块的AT指令;不能出错;

 onUnsolicited()函数接收4G模块对AT指令的返回值;可以在里面添加根据返回值相应的动作;比如根据拨号成功返回值做出绑定网卡分配IP的动作;

 onRequest()主动拨号、上层发下来的所有AT指令都在这里;

一般调试4G模块就是修改上面的三个文件;

开机自动拨号实现:

       frameworks/base/services/java/com/android/server/ConnectivityService.java

 public boolean getMobileDataEnabled() {        // TODO: This detail should probably be in DataConnectionTracker's        //       which is where we store the value and maybe make this        //       asynchronous.        enforceAccessPermission();        boolean retVal = Settings.Secure.getInt(mContext.getContentResolver(),                Settings.Secure.MOBILE_DATA, 1/*默认是0,改为1就可以了*/) == 1;        if (VDBG) log("getMobileDataEnabled returning " + retVal);        return retVal;    }

        其实就是默认开机就打开了上网流量开关;手机的4G上网开关;

还有个关键点:apns-conf.xml

根据你使用的SIM修改apns-conf.xml文件;就是apn接入点;如果apns-conf.xml文件里面没有相应的核心网的mcc和mnc则Android系统不能自动拨号;如下图;

        


注意点:

       如果有些4G模式使用软卡、或者硬件是在4G模块初始化的时候决定的;修改相应的AT指令;在initializeCallback()函数里;


更多相关文章

  1. C语言函数的递归(上)
  2. Android应用开发的插件化 模块化
  3. Android(安卓)runtime机制(一)init进程
  4. 第三部分:Android(安卓)应用程序接口指南---第五节:计算---第一章
  5. Android(安卓)进阶解密:init 进程启动过程
  6. Android(安卓)Scroll详解(三):Android(安卓)绘制过程详解
  7. Android绘图系列(一)——自定义View基础
  8. Android的RIL驱动模块启动流程
  9. android编译系统分析一:source build/envsetup.sh与lunch

随机推荐

  1. Api级别详解
  2. Android(安卓)静默安装程序(在后台偷偷安
  3. Android(安卓)dialog——点击「屏幕」或
  4. Android(安卓)创世纪 第三天
  5. android ProgressBar定制模式,自定义模式
  6. android anr traces日志分析方法
  7. Android解锁屏幕失效问题
  8. Android(安卓)studio gradle 配置阿里镜
  9. Android(安卓)关于微信分享图片过大失败
  10. android应用安全——组件通信安全(Intent)