摘要: 通过对Ril部分代码的流程大致分析,其中的设计思路还是很值得学习:在RIL_JAVA层:通过RILSender与RILReceiver两个线程提高程序并发处理能力:发送 和接收;RILSender消息循环可以同时为多个请求服务;RILRequest将请求与响应绑定;在RIL_CPP层:Event机制:通过事件机制动态的对外部请求调度和处理,异步请求/处理模式,提高程序并发处理能力;消息映射表:采用消息数组的形式减少代码中存在较多的分支;模块间通信:迪米特法则,采用简单一致的接口,注册回调的方式; Ril.cpp Reference-ril.c Atchannel.c之间 阅读全文
posted @ 2012-11-05 15:34 __Shadow 阅读(1372) 评论(0) 推荐(0) 编辑
摘要: 从modem传递来的网络端事件,通过readLoop线程处理: readLoop读取数据过程:static void *readerLoop(void *arg){ for (;;) { //从与modem通信设备端口读取数据 line = readline(); if (line == NULL) { break; } //处理数据 processLine(line); } onReaderClosed(); return NULL;}static void pr... 阅读全文
posted @ 2012-11-05 15:19 __Shadow 阅读(3251) 评论(0) 推荐(0) 编辑
摘要: 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; ... 阅读全文
posted @ 2012-11-05 15:13 __Shadow 阅读(5391) 评论(0) 推荐(0) 编辑
摘要: 客户端请求处理和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... 阅读全文
posted @ 2012-11-05 14:44 __Shadow 阅读(4378) 评论(0) 推荐(0) 编辑
摘要: 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... 阅读全文
posted @ 2012-11-05 12:00 __Shadow 阅读(10333) 评论(0) 推荐(1) 编辑