本文为原创,如转载必须注明!!!
初次接触android的代码,花2天时间把android的RIL以及向上的延伸比如天线信号刷新的流程理一下。
我把这个流程分成3个部分:
1. RIL的实现流程;
2. 自动上报的信号强度如何实现在屏幕上的刷新;
3. 信号强度的主动读取流程;
其一,RIL实现流程,这个在去年有抽一点点时间看过,不过当时因为时间和心情的关系没有看明白,感觉是一头雾水。这一次算是把整体的ril梳理了一下。这里仅仅描述大概的流程:
1.首先了解串口数据的接收和处理
动态加载ril库,取出ril_INIT函数-》创建mainloop线程-》创建readerlooper线程,readerlooper线程主要用于处理串口的数据,先读取串口的数据然后对数据进行解析,分为两种:自动上报的AT数据,AT的反馈数据【主动发送的AT数据,然后接收到modem的返回】。
主动发送的AT分为如下类型:
->NO RESULT------无返回
->SIGNALLINE----返回为单条命令
->NUMBERIC----数字(基本没有用到)
->MUTILINE----返回为多行命令
->SMS---短信PDU
因为每个AT的发送都会收到OK或者非OK的返回,主要是用于验证通讯是否正常。返回ok也仅仅表示发送的at modem已经成功收到。针对返回的是ok还是非ok来填充respone结构体中的success变量。然后根据当前