android电话分析,android电话系统和ril分析(2)————rild详细分析

1.rild.c结构:

ccd4008429475cf5d4b8fc238a308437.png

2.各个函数分析:

2.1>RIL_register

extern void RIL_register (const RIL_RadioFunctions *callbacks);

该函数在ril.cpp里有实现,RIL_RadioFunctions 在ril.h里定义为:

typedef struct {

int version; /* set to RIL_VERSION */

RIL_RequestFunc onRequest;

RIL_RadioStateRequest onStateRequest;

RIL_Supports supports;

RIL_Cancel onCancel;

RIL_GetVersion getVersion;

} RIL_RadioFunctions;

其中onRequest,指令请求会在reference-ril.c里实现:

static void onRequest (int request, void *data, size_t datalen, RIL_Token t){...}

接口里用switch分支判断请求号request,调用at_send_command等发送相应的at指令

RIL_register:启动名为

rild

的监听端口,等待

java

端通过

socket

进行连接

2.2>RIL_onRequestComplete

extern void RIL_onRequestComplete(RIL_Token t, RIL_Errno e,void *response, size_t responselen)、RIL_onUnsolicitedResponse、

RIL_requestTimedCallback和RIL_startEventLoop函数同上,都在ril.cpp里有实现。

2.3>main(守护进程)

编译之后是个rild可执行文件,在/init.rc里面打开rild服务,会随系统一起运行。

1>首先和phone.apk服务建立socket连接,句柄为fd:

fd = socket_local_client(

QEMUD_SOCKET_NAME,

ANDROID_SOCKET_NAMESPACE_RESERVED,

SOCK_STREAM );

2>加载/system/lib/libreference-ril.so动态库dlHandle = dlopen(rilLibPath, RTLD_NOW);

3>启动eventLoop线程,开始执行RIL消息队列

不小心网上发现

有个完整的ril分析

Android RIL结构分析与移植

(ril_commands.h)

Android电话系统之-rild

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值