WM开机读短信

WM中,从ril.h及文档可以发现,ril支持两大类短信,GSM0340IS637(CDMA)

关于开机需要读取的短信都在sim卡中,有两种,一种为模块初始化过程中收到的短信,由于不能上报,会存入sim卡中;另一种是sim卡中事先比如用户手动存入的短信。

RIL中对这两种短信要分别处理,tmail对这两种短信也有加以区分。

一、初始化过程中收到的短信:

1RIL初始化时,应从sim卡从读取这类短信上报,界面显示方式与正常收到短信的提示一致。

RIL进入radio on的过程中,选择合适的位置发送CMGL命令来获取sim卡中短信信息,其中UNREAD类型是我们想要的。在parse函数中解析CMGLreponse上报,等待tmail的一系列后续调用。

2tmail收到CMGL的信息后,CMGR将出马,由于事先知道短信所在index,有的放矢地读取sim卡中的短信。解析好短信,放入相应的结构体。

3sms_provider,CMGL和普通收到短信一样,会调用sms_provider做一些短信类型识别、格式转换的工作。对于is637provider应该添加对unicode的支持。

4、此后RIL_DeleteMsg 会被调用来删除这些暂存在sim卡的短信。

 

二、sim卡已有短信的读取。(应在CMGL之后进行,防止第一种短信未被删除)

1、开机过程中,sim卡联系人读取结束后,RIL_GetMsgServiceOptions

会被调用,获取sim卡的存储状态。当read区域不为空,将开始sim卡联系人的读取。

2RIL_ReadMsg 被调用,ril解析短信填入结构体。

3、一个很大的不同,sim卡短信不会调用provider进行处理,而且上报后,界面并不会提示收到新短信,而是仅仅在收件箱中显示,并且用不同于普通短信的图标来显示sim卡短信。

 

三、当系统是IS637时的疑惑。

即读取sim卡已有短信,如果是填入msgIS637InDeliver结构体,并且Message types是使用RIL_MSGTYPE_IN_IS637DELIVER,界面上不会显示短信,使用RIL_MSGTYPE_IN_DELIVER,竟成功显示,这点十分令人困惑,同样相反的操作CMGW,传入rilMessage typesRIL_MSGTYPE_IN_DELIVER,而非期待的RIL_MSGTYPE_IN_IS637DELIVER。而对于cmgl和接收短信,使用msgInDeliver结构体没有问题。这个问题还需要分析。

同时网上看到一位很帅的哥们,好像也遇到了和我同样的问题,他的一句话大概也印证了我得猜测:

“接收的未读短信或已读短信

 

调用ParseDeliverMessageTextGSM函数进行解析。

 

解析过程基本与新短信上报解析相同,只是上报消息类型不同,而解析结果存放的结构体也不同

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值