oFono学习笔记——modem初始化分析
前言
这篇文章主要集中讲述了Modem在oFono中的启动初始化,有一段时间没有看oFono了,不废话,走起,走起!
1. 初始化分析
从大的方向上来说Modem的初始化分为4个阶段,分别是POWER_OFF, PRE_SIM, OFFLINE, ONLINE.
下面具体的来说一下每一个阶段oFono都作了一些什么工作
2. MODEM_STATE_POWER_OFF
当Modem被加入到系统当中并被oFono检测到后, oFono会在oFono Daemon中创建对应的modem对象。此时,对于oFono来说它只是知道了系统中存在这样的一个Modem设备而已并不知道Modem处于什么状态。在这个时候oFono认为Modem处于MODEM_STATE_POWER_OFF状态下。
3.MODEM_STATE_PRE_SIM
当application通过D-BUS唤醒Modem时,oFono会调用modem驱动中的enable函数来唤醒Modem。在成功唤醒Modem之后。Modem进入MODEM_STATE_PRE_SIM状态。在这个状态下,oFono会做创建一些和SIM卡无关的atom。利用这些atom可以实现获取modem设备信息,sim卡检测等。
在做完这些操作后,Modem就进入到了下一个状态:MODEM_STATE_OFFLINE.
4. MODEM_STATE_OFFLINE
当Modem处于OFFLINE状态的时候,oFono会做一些和SIM有关的atom,完成比如电话,短信,电话本等功能。在完成这些atom的初始化工作后,modem就可以online了。
5. MODEM_STATE_ONLINE
在ONLINE这个模式下,Modem就可以进行和网络相关的atom的初始化了。比如GPRS,3G,4G.
6.总结
以上就是我对Modem初始化过程的一个简要的理解。在阅读代码的过程中发现并不是所有的公司都严格按照这样的分类进行设备的初始化,比如,华为的设备MODEM_STATE_OFFLINE的时候就对GPRS atom进行了初始化。不过大致上就是这么一个流程,希望大家有所启发吧。