Ril分析四——来自网络端事件流程
2012-11-05 15:19
453 查看
从modem传递来的网络端事件,通过readLoop线程处理:
readLoop读取数据过程:
网络端事件处理过程:
同样以数组映射表形式存储网络端事件响应请求接口:
readLoop读取数据过程:
static void *readerLoop(void *arg) { for (;;) { //从与modem通信设备端口读取数据 line = readline(); if (line == NULL) { break; } //处理数据 processLine(line); } onReaderClosed(); return NULL; } static void processLine(const char *line) { if (sp_response == NULL) { //来自网络端事件 handleUnsolicited(line); } else if (isFinalResponseSuccess(line)) { //客户端请求处理返回 sp_response->success = 1; handleFinalResponse(line); } }
网络端事件处理过程:
static void handleUnsolicited(const char *line) { //onUnsolicited if (s_unsolHandler != NULL) { s_unsolHandler(line, NULL); } } static void onUnsolicited (const char *s, const char *sms_pdu) { //初始化传入的ril.cpp中RIL_onUnsolicitedResponse函数 RIL_onUnsolicitedResponse ( RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED, NULL, 0); } Void RIL_onUnsolicitedSendResponse(int unsolResponse, void *data, size_t datalen, int client_id) { unsolResponseIndex = unsolResponse - RIL_UNSOL_RESPONSE_BASE; appendPrintBuf("[UNSL]< %s", requestToString(unsolResponse)); Parcel p; p.writeInt32 (RESPONSE_UNSOLICITED); p.writeInt32 (unsolResponse); //调用ril中网络端请求的响应函数 ret = s_unsolResponses[unsolResponseIndex] .responseFunction(p, data, datalen); //将数据传递给响应的设备 ret = sendResponse(p, client_id); return; }
同样以数组映射表形式存储网络端事件响应请求接口:
typedef struct { int requestNumber; int (*responseFunction) (Parcel &p, void *response, size_t responselen); WakeType wakeType; } UnsolResponseInfo; static UnsolResponseInfo s_unsolResponses[] = { #include "ril_unsol_commands.h" }; ril_unsol_commands.h: {RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED, responseVoid, WAKE_PARTIAL}, {RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED, responseVoid, WAKE_PARTIAL}, {RIL_UNSOL_RESPONSE_VOICE_NETWORK_STATE_CHANGED, responseVoid, WAKE_PARTIAL}, {RIL_UNSOL_RESPONSE_NEW_SMS, responseString, WAKE_PARTIAL}, ……
相关文章推荐
- java的RIL框架处理modem网络状态改变事件的流程
- Z-Stack中OSAL定时器事件触发流程分析
- linux网络流程分析(一)---网卡驱动
- 典型的网络攻击事件分析
- libevent源码分析---基本使用场景和事件流程
- 深入分析 Java 中的中文编码问题 (文章来自网络)
- libevent高性能网络库源码分析——事件(event)及其接口(三)
- linux网络协议栈分析——ioctl的调用流程
- 【网络安全】Snort漏洞分析规则提取验证全流程讲述
- android的frameworks层键盘事件处理流程分析
- 悬镜安全丨德国电信断网事件详细分析:mirai僵尸网络的新变种和旧主控
- Android O Touch事件处理流程源码分析
- Android 事件捕捉和处理流程分析
- android的frameworks层键盘事件处理流程分析
- android 应用监听输入法按键事件【比如搜索和回车键等】的整个流程分析
- 按键分析--APP部分-- OnClickListener事件处理流程
- JAVA中IO和NIO的详解分析,内容来自网络和自己总结
- Android的frameworks层键盘事件处理流程分析
- 下面介绍下iMatrix平台流程引擎事件处理之流向事件处理分析
- 安卓KeyEvent事件分发流程分析