Android中添加AT命令流程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android中添加AT命令流程

android中如何添加一个AT命令 简介: android平台,自带的参考RIL层是使用AT命令来和modem进行通信的,因为它假定AP和CP可能来自不同的厂家,所以AP和CP之间采用的是松耦合的机制。而高通平台,AP和CP都由高通提供,所以两颗CPU之间的通信采用紧耦合机制,采用ONCRPC或QMI来进行通信。 AT命令和QMI各有优缺点,AT命令有国际统一的标准,实现简单,但是实现的功能少,效率较低。而QMI机制是高通制定的,其实现复杂,但是效率高。 下面介绍使用AT命令机制实现的RIL,如何添加一个AT命令。我们假定要加一个读取CDMA modem的IMSI值的AT命令。 一、在上层添加所要发的AT命令的方法 1. 在接口phone中添加所要发的AT命令的方法。接口phone所在的位置是:frameworks/base/telephony/java/com/android/internal/telephony/Phone.java 在phone的接口中添加方法:getcdmaIMSI(); Phone是个接口,因此,添加完方法后,得在实现Phone接口的java类里面实现这个方法,GSM实现Phone的类是GSMPhone.java,CDMA实现phone的类是CDMAPhone.java GSMPhone.java位于frameworks/base/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java CDMAPhone.java位于frameworks/base/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java public String getcdmaIMSI() { return mSST.getImsi(); } 2. Phone接口的实现方法调用CommandsInterface接口里面的方法,所以我们还需要在CommandsInterface里面把我们要增加的方法添加进去。 CommandsInterface接口位于:rameworks/base/telephony/java/com/android/internal/telephony/commandsinterface.java 在commandsinterface接口中添加方法:void getIMSI(String aid, Message result); 同样的,CommandInterface也是个接口,我们需要在实现接口的类里实现这个方法。而实现这个接口的类有2个: 1. frameworks/base/telephony/java/com/android/internal/telephony /RIL.java 2. frameworks/base/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java 其中第2个是在模拟器里面测试用的, 我们只需要在里面把方法添加进去,然后调用个resultSuccess或者umimplement都可以。 而第1个才是真正实现功能的类。 所以,我们得在RIL.java中,实现具体的方法。 在RIL.java的方法里面,只需要定义好你所需要发送AT命令的一个标识MARK(下面还会提到), 再把RilRequest类里面的Parcel成员mp赋值, 然后发送出去即可。 赋给mp的值,即为我们需要发送到下层去处理的值, 例如传个数组下去, 一般都先把长度写进去, 其次再把成员依次写入。 public void getIMSI(String aid, Message result) { RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result); rr.mp.writeInt(1); rr.mp.writeString(aid); if (RILJ_LOGD) riljLog(rr.serialString() + getIMSI: + requestToString(rr.mRequest) + aid: + aid); send(rr); } 二、在下层添加实现的函数 1. 在hardware/ril/include/telephony/ri

文档评论(0)

cj80011 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档