Radio开发新功能
来源:互联网 发布:网络运维绩效考核 编辑:程序博客网 时间:2024/06/05 09:20
对于Vendor,系统方案提供商,有时候会需要增加AT指令,实现新功能,这时候需要对Ril层增加对底层Modem进行适配(仅对需要消息上报的类型),本人知识有限,只了解到了Ril.java,未对往下的底层有涉及,理解有误请指出。
1、首先要在frameworks/base/telephony/java/com/android/internal/telephony/RILConstants.java里面增加对于的消息上报类型如:int RIL_REQUEST_GSM_BROADCAST_ACTIVATION = 91;
2、当需要对功能进行开关功能设置时,需要在frameworks/opt/telephony/src/java/com/android/internal/telephony/CommandsInterface.java增加相应的注册与取消注册的方法,如:setOn......(), unSetOn.....(),或者registerFor.....(),unRegisterFor......()抽象方法来实现
3、在Ril.java中实现CommandsInterface.java的定义抽象方法;
4、这时候分为两个流程:一个是对数据上报的流程,一个是上层调用注册下发指令;
数据流上报:
1/ 对Ril.java中的processResponse (Parcel p)分类进行处理(processUnsolicited是处理返回的response,processSolicited是处理向下底层发送的Request),如对Case:RIL_REQUEST_GSM_BROADCAST_ACTIVATION进行读取底层的上报数据,并通过notifyRegistrant()通知注册者;
2/ src/java/com/android/internal/telephony/WakeLockStateMachine.java进行事件类型定义,增加WaitingState extends State进行等候消息,同时在processMessage()方法里进行处理;
3/ 在上一步的调用具体的handler方法时就开始进行到了相应的Handler中去处理,
比如CB中的frameworks/opt/telephony/src/java/com/android/internal/telephony/gsm/
GsmCellBroadcastHandler.java中进行相应的处理,对于比较复杂的交互情况如短彩信,
这时候在这一层会有比较多的Tracker进行记录,比较繁琐;
指令下发:
1/对于短彩信方面的,在Ril.java之上的一层是IccSmsInterfaceManager.java,再往上是UiccSmsController.java
(这作为一个服务,通过AIDL向上层进行提供接口,它的代理接口为SmsManager.java,一般通过这个类向上提供,
APP也可以直接使用AIDL桥接到Uicc去),就是由此上层一层一层调用到地下去进行发送指令。
所以对于这种类是的开发功能比较复杂,需要Modem,RIL,Framework和APP层多层的交互,
一般厂商没有这么大的实力进行修改,只有系统方案提供商有能力进行修改,只能作为知识的扩展。
- Radio开发新功能
- 新功能
- Borland JBuilder2006新功能加速Java应用开发
- 一种邮件客户端新功能的开发。
- ovirt-engine新功能开发-模版切换
- Android开发编程Fragment对象引出新功能
- 使用git开发新功能,新需求
- radio
- radio
- radio
- radio
- radio
- radio
- Visual Studio Whidbey——Web应用程序开发新功能预览
- Visual Studio Whidbey——Web应用程序开发新功能预览
- 好友系统重构+新功能开发的思考
- 【Java开发技术之程序测试】Junit4 新功能学习总结
- unity基础开发 ----Unity3D 4.0新功能:Mecanim动画系统基础教程
- Maven 常用命令收集
- 当打开Delphi7,出现“borland license information was found,but it is not valid for delphi”的错误,无法运行的解决方法
- 创建兼容 IE/FireFox 的 event 及 event 的 srcElement、fromElement、toElement 属性
- UIAlertView 基础篇
- 数据库设计
- Radio开发新功能
- cas系列(二)--cas单点登录配置
- 如何使用OpenCV实现基于标记的定位(为什么对标记检测能够实现定位)
- ORA-01789: query block has incorrect number of result columns
- 重写QWidget关闭时触发的事件
- Android 自定义 按当前view的宽高进行矩形移动内容图
- UVALA 4329 - Ping pong 树状数组+组合原理
- LeetCode 154 Find Minimum in Rotated Sorted Array II
- Xcode添加文件没有Copy进去??