随笔分类 - Telephony & RIL
摘要:现有的手机中使用的卡SIM, USIM,UIM等统称为:UICC——Universal Integrated Circuit Card;这些卡之间数据结构是有些区别的,先来看看SIM卡的文件结构。一 Sim文件系统数据结构1 sim卡文件系统 SIM card file system structure: 2 文件结构 MF:The root level of the file system is known as the Master file. DF:Directories are known as Dedicated files and are of a fixed si...
阅读全文
摘要:1 RIL_J与RIL_C通信 上层通常要和RILD通信,是通过Socket,在RIL_JAVA层实现;沿着这样代码流程进行Framework——native: Phone——RIL_JAVA——>RIL_CPP那么可不可以直接和RILD(RIL_CPP)进行通信呢? 肯定是可以的,因为通信使用的rildsocket,只要通过这个socket就可以和RILD进行通信 ;但实际中可靠的使用是不可行的,因为RILD在创建的时候, 设计初始化已经决定了RILD同时所支持的客户端的数量: 单卡仅支持一个客户端; 双卡实现方式代码提供了两种方式: 1)双卡两个RIL客户端对应一个RILD服务端..
阅读全文
摘要:一 DataConnectionTracker DataConnectionTracker:控制手机APN加载,数据连接; 包括:APN的创建,开机启动断开连接时,Radio状态改变时,Apn变化时,语音和数据业务切换时, 连接失败及自动重连时,漫游打开关闭时……这些情况下数据连接的处理; 对于CDMA和GSM两种网络通信技术,处理数据连接存在着一些差异,基本流程一致,下面看看CdmaDataConnectionTracker工作流程;二 APN加载1 APN概念 APN(Access Point Name),即“接入点名称”,用来标识GPRS的业务种类,目前分为两大类:CMWAP...
阅读全文
摘要:一 ServiceStateTracker 作为Phone重要的Tracker:CallTracker,DataConnectionTracker,ServiceStateTrackerServiceStateTracker:处理和维护手机各种状态 小区位置CellLocation,网络状态ServiceState,信号强度SignalStrength, 业务限制状态RestrictedState,用户识别卡信息IccRecords……看一下ServiceStateTracker类结构图: 对于CDMA和GSM两种网络通信技术,存在着一些差异,下面看看CDMAServiceSta...
阅读全文
摘要:CDMA手机两种实现模式: 机卡分离式:用户信息写在单独的UIM卡 机卡一体式:用户信息写在手机中的 这个跟CDMA Subscription模式有关,对于我们来说使用的是独立UIM卡,在软件里面使用什么方式,跟一项NV值有关,但这项值却无法使用QXDM来更改,确切的说是改了,重新开机之后值又被写回去了, 所以这项NV值应当是在代码中设置的,高通一直说在网络设置里面,但是也一直没有找到,看了代码才知道由于某种原因没显示出来,都不管了,直接找到CDMA信息读取模式设置代码改成UIM模式即可。下面看这个设置的过程:public static void makeDefaultPhone(Cont..
阅读全文
摘要:GSMPhone与CDMAPhone切换过程Phone创建过程 Phone APP开机启动,会去创建Phone:public static void makeDefaultPhone(Context context) { // Get preferred network mode 根据网络设置, // 否则默认PREFERRED_NETWORK_MODE 为= NETWORK_MODE_WCDMA_PREF; int preferredNetworkMode = RILConstants.PREFERRED_NETWORK_MODE; if (BaseCommands...
阅读全文
摘要:一 TelephonyManager TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。 TelephonyManager类的对象可以通过:Context.getSystemService(Context.TELEPHONY_SERVICE)方法来获得,需要注意的是有些通讯信息的获取对应用程序的权限有一定的限制,在开发的时候需要为其添加相应的权限。 TelephonyManager不是一个Framework层Service,属于Co..
阅读全文
摘要:一 监听手机Phone状态在手机里面监听Phone的状态有两种方法:1 注册接收广播 AndroidMenifest.xml: <receiver android:name="CallListener" > <intent-filter> <action android:name="android.intent.action.PHONE_STATE" /> <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
阅读全文
摘要:Framework层Ril控制流程分析RIL Native层分析:http://www.cnblogs.com/bastard/archive/2012/11/05/2754891.html一 RIL整体框架看一下整个RIL部分框架图: 实际上Framework部分比较复杂的,包含了很多类;但其核心的两个类是GSMPhone/,RIL.Java. 还包括围绕这两个类构成的状态管理,命令交互的类。二 PhoneApp 启动过程在AndroidManifest.xml文件中: <application android:name="PhoneApp" android:per
阅读全文
摘要:通过对Ril部分代码的流程大致分析,其中的设计思路还是很值得学习:在RIL_JAVA层:通过RILSender与RILReceiver两个线程提高程序并发处理能力:发送 和接收;RILSender消息循环可以同时为多个请求服务;RILRequest将请求与响应绑定;在RIL_CPP层:Event机制:通过事件机制动态的对外部请求调度和处理,异步请求/处理模式,提高程序并发处理能力;消息映射表:采用消息数组的形式减少代码中存在较多的分支;模块间通信:迪米特法则,采用简单一致的接口,注册回调的方式; Ril.cpp Reference-ril.c Atchannel.c之间
阅读全文
摘要:从modem传递来的网络端事件,通过readLoop线程处理: readLoop读取数据过程:static void *readerLoop(void *arg){ for (;;) { //从与modem通信设备端口读取数据 line = readline(); if (line == NULL) { break; } //处理数据 processLine(line); } onReaderClosed(); return NULL;}static void pr...
阅读全文
摘要:Ril与modem的交互一 客户端的请求处理客户端请求从EventLoop通过dispatch传递到reference-ril.c中调用onRequest接口。 处理客户端请求:static void onRequest (int request, void *data, size_t datalen, RIL_Token t){ switch (request) { case RIL_REQUEST_DIAL: requestDial(data, datalen, t); break; ...
阅读全文
摘要:客户端请求处理和Event事件处理机制一 事件机制//ril_event.cppevent事件数据结构: struct ril_event { struct ril_event *next; struct ril_event *prev; int fd; //事件对应的设备文件句柄 int index; bool persist; struct timeval timeout; //事件超时处理时间 ril_event_cb func; //事件处理回调函数 void *param; //回调函数参数};相关对象: fd_set rea...
阅读全文
摘要:rild进程rild进程 init.rc中描述: service ril-daemon /system/bin/rild class main socket rild stream 660 root radio socket rild-debug stream 660 radio system user root进程rild.c中:int main(int argc, char **argv){ const char * rilLibPath = NULL; const RIL_RadioFunctions *(*rilInit)(const stru...
阅读全文

浙公网安备 33010602011771号