cdma-import分支由Teleca CDMA团队开发。
Teleca's contribution covers all required extensions in the application framework of the telephony stack, the application domain and user interface. In order to support existing applications the application interface is backward compatible, but extended to include CDMA specific methods, parameters or notifications to make the new features accessible by new applications.
取出cdma-import版本
$ mkdir ~/android_cdma
$ cd ~/android_cdma
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b cdma-import
$ repo sync
(3)后面 -b cdma-import 指定分支,还有其他分支:
cupcake
donut
master
release-1.0
如果不加以指定,则取出的是master分支。
(4) 全部取出。我发现很慢,速度1-4k,下一个晚上也下不完。网上查了一圈,原来可以令开两个终端同时下载,分别取出 kernel, prebuild,这两个目录都比较大。
$ repo sync kernel
$ repo sync prebuild
我们主要分析cdma模组,取出 ril目录的代码即可
$ repo sync hardware/ril
代码结构如下:
ril
|-- include
| `-- telephony
| |-- ril.h
| `-- ril_cdma_sms.h
|-- libril
| |-- ril.cpp
| |-- ril_commands.h
| |-- ril_event.cpp
| |-- ril_event.h
| `-- ril_unsol_commands.h
|-- reference-cdma-sms
| |-- reference-cdma-sms.c
| `-- reference-cdma-sms.h
|-- reference-ril
| |-- at_tok.c
| |-- at_tok.h
| |-- atchannel.c
| |-- atchannel.h
| |-- misc.c
| |-- misc.h
| `-- reference-ril.c
`-- rild
|-- radiooptions.c
`-- rild.c
reference-ril目录通俗易懂,at_tok.h 提供AT响应的解析函数,atchannel.h提供AT的发送函数,misc.h就只是一个字符串匹配函数。
reference-ril.c提供许多函数,在函数内实现发送AT,解析AT响应字符串。在代码里直接写AT,看到有些失望,特别是用at_tok.h里的函数
一个参数一个参数的解析,不如写一个类似于sscanf专门处理AT响应字符串的函数AtScanf,这样代码看起来就清爽多了。
大概的看看,没什么改动,很多代码还放在Teleca的网站上,没有合并进来。
atchannel.h
/include/telephony/ril.h
在gsm一些枚举类型里额外添加对uim的支持。
其他请参看it168熊猫哥哥的《深入详解Android GSM驱动模块》
http://tech.it168.com/a2009/0323/269/000000269394.shtml
http://tech.it168.com/a2009/0331/270/000000270151.shtml