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