Android6.0的phone应用源码分析(7)——RIL层框架分析2

本文分析了Android 6.0中RILJ如何处理MODEM命令请求与响应。通过创建RILRequest及result变量,确保响应能准确地返回给相应的请求方。同时介绍了serial和token机制在请求响应匹配过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里再次 将Android6.0的phone应用源码分析(5)中最后的流向图拿出来


从图中可以看到RILJ通过RILD向MODEM发送命令后,接受response是通过readerLoop异步进行的(?好像并不是异步,虽然在不同线程,但是加锁了,执行情况和同步基本一样啊)。这就存在一个问题:RILJ怎么识别response对应哪一个request?并且这个response返回给谁?

从下图中可以看到,Andorid上层在RILJ新建一个RILRequst之前就已经率先新建了一个用于存放结果的result作为RILRequest的成员变量。这样当RILJ接收到response时就可以通过这个result传递到正确的命令发起者。而在RILJ层又为每个RILRquest指定了一个serial,当RILJ收到RILD的response时可以通过serial查表找到response匹配的RILRequest。在RILD层,则是依据serial生成token封装成parcel,下发至Modem。Modem处理后携带token返回parcel回RILD。RILD接收parcel后解析出token,以这个token作为参数封装成包含response信息Parcel包,token在RILJ中被还原成回serial。以此serial查询RILRequestList得到匹配的RILRequest。最终RILJ在通过rr.mResult.sendToTarget()将结果返回至命令发起者。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值