您的位置:首页 > 运维架构 > 网站架构

【Android架构Telephony篇】之数据业务(一)

2015-11-06 21:42 579 查看
Android: 4.4.4
Desktop: Ubuntu 15.04


这里只做一些准备事情。

不得不说,Android里的Telephony模块还是挺复杂的,要想搞个八九分清楚需要花点功夫。今天把数据业务从点击【开启】Switch到HAL层的数据流向(函数调用—面向对象叫做“方法”)走了一遍,心得是:

1、用好Source Insight

2、用好find命令

一、主要文件

在茫茫Ascii中搜寻需要的函数,真对亏了强大到没对手的find!

find . -name "*.java" | xargs grep -ri "func"
为方便故,把涉及的主要文件备份一下。

Framework层的Java文件:



BaseNetworkStateTracker.java (h:\frameworks\base\core\java\android\net)
CommandsInterface.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony)
ConnectivityManager.java (h:\frameworks\base\core\java\android\net)
ConnectivityService.java (h:\frameworks\base\services\java\com\android\server)
DataConnection.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony\dataconnection)
DataUsageSummary.java (h:\packages\apps\settings\src\com\android\settings)
DcAsyncChannel.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony\dataconnection)
DctConstants.java (h:\frameworks\base\telephony\java\com\android\internal\telephony)
DcTracker.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony\dataconnection)
DcTrackerBase.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony\dataconnection)
Handler.java (h:\frameworks\base\core\java\android\os)
IConnectivityManager.aidl (h:\frameworks\base\core\java\android\net)
Message.java (h:\frameworks\base\core\java\android\os)
MobileDataStateTracker.java (h:\frameworks\base\core\java\android\net)
MobileLinkQualityInfo.java (h:\frameworks\base\core\java\android\net)
MobileNetworkSettings.java (h:\packages\services\telephony\src\com\android\phone)
NetworkStateTracker.java (h:\frameworks\base\core\java\android\net)
Phone.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony)
PhoneBase.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony)
PhoneConstants.java (h:\frameworks\base\telephony\java\com\android\internal\telephony)
PhoneInterfaceManager.java (h:\packages\services\telephony\src\com\android\phone)
PhoneNotifier.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony)
RadioInfo.java (h:\packages\apps\settings\src\com\android\settings)
Ril.h (h:\hardware\ril\include\telephony)
RIL.java (h:\frameworks\opt\telephony\src\java\com\android\internal\telephony)
Settings.java (h:\frameworks\base\core\java\android\provider)


HAL层的CC++文件:



Atchannel.c (h:\hardware\ril\reference-ril)
Atchannel.h (h:\hardware\ril\reference-ril)
At_tok.c (h:\hardware\ril\reference-ril)
At_tok.h (h:\hardware\ril\reference-ril)
Gsm0710muxd.c (h:\hardware\ril\gsm0710muxd\src)
Gsm_7bit.c (h:\hardware\ril\reference-ril)
Gsm_7bit.h (h:\hardware\ril\reference-ril)
Librilutils.c (h:\hardware\ril\librilutils)
Librilutils.h (h:\hardware\ril\include\telephony)
Misc.c (h:\hardware\ril\reference-ril)
Misc.h (h:\hardware\ril\reference-ril)
Radiooptions.c (h:\hardware\ril\rild)
Record_stream.c (h:\hardware\ril\librilutils)
Record_stream.h (h:\hardware\ril\include\telephony)
Reference-ril.c (h:\hardware\ril\reference-ril)
Ril-ss.c (h:\hardware\ril\reference-ril)
Ril.cpp (h:\hardware\ril\libril)
Ril.h (h:\hardware\ril\include\telephony)
Ril.h (h:\hardware\ril\reference-ril)
Rild.c (h:\hardware\ril\rild)
Ril_cdma_sms.h (h:\hardware\ril\include\telephony)
Ril_commands.h (h:\hardware\ril\libril)
Ril_event.cpp (h:\hardware\ril\libril)
Ril_event.h (h:\hardware\ril\libril)
Ril_unsol_commands.h (h:\hardware\ril\libril)


二、数据业务相关

和嵌入式Linux一样,封装了的Android在SIM卡相关的数据业务用的也是PPP(Point to Point Protocol)拨号,为直观故,上图:


最后一行返回status为0,说明网络建立成功。

同时,它也显示了本地IP、远程IP、DNS等网络信息。在拨号过程中,用到的两个重要文件是/data/connect和/etc/ppp/ip-up。

这.时可以ADB进入系统,看下网络:

netcfg
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: