学习笔记:【QC】Android Q qmi扩展nvReadItem/nvWriteItem

一、qmi初始化 流程图

初始化流程:

1、主入口:

vendor/qcom/proprietary/qcril-hal/qcrild/qcrild/rild.c

cpp 复制代码
int main(int argc, char **argv) {
const RIL_RadioFunctions *(*rilInit)(const struct RIL_Env *, int, char **);
rilInit = RIL_Init;
funcs = rilInit(&s_rilEnv, argc, rilArgv);
RIL_register(funcs);
}

2、其中RIL_Init的实现在:

vendor/qcom/proprietary/qcril-hal/modules/android/src/ril_api.cpp

在ril_api.cpp中还定义qcril_request_api:

cpp 复制代码
static const RIL_RadioFunctions qcril_request_api[] = {
{ QCRIL_RIL_VERSION, onRequest, currentState_rid, 
onSupports_rid, onCancel_rid, getVersion_rid }};
static RIL_Env *qcril_response_api[QCRIL_MAX_INSTANCE_ID];

3、最终,注册到IRadio:
s_vendorFunctions = callbacks;

这边callbacks实际上就是:
funcs:ril_api.cpp的qcril_request_api[]

这样就可以和Ril.java通信:
#define CALL_ONREQUEST(a, b, c, d, e)
s_vendorFunctions->onRequest((a), (b), (c), (d))

详细流程图:【高清图,保存后可以放大看】

二、nvReadItem/nvWriteItem 流程图

详细流程图:【高清图,保存后可以放大看】

相关推荐
妄汐霜1 分钟前
小白学习笔记(MySQL增删改查)
笔记·学习·mysql
李少兄1 分钟前
从一篇IDEA笔记开始,我走出了自己的技术创作路
java·笔记·intellij-idea
SweetCode19 分钟前
汉诺塔问题
android·java·数据库
XFF不秃头27 分钟前
力扣刷题笔记-合并区间
c++·笔记·算法·leetcode
shayudiandian37 分钟前
学习率(Learning Rate)到底怎么调?
学习
L***一40 分钟前
汽车产业数字化转型背景下复合型技术人才培养路径研究
学习
丝斯20111 小时前
AI学习笔记整理(39)——自然语言处理算法之词向量 Word2vec
人工智能·学习·自然语言处理
巧克力味的桃子1 小时前
学习笔记:查找数组第K小的数(去重排名)
笔记·学习·算法
旖旎夜光1 小时前
Linux(6)(下)
linux·学习
音视频牛哥1 小时前
Android 端构建高性能 RTSP 转 RTMP|轻量级RTSP服务 网关:透传与二次编码深度实践
android·音视频·大牛直播sdk·rtsp转rtmp推送·rtsp转发到rtsp服务器·rtsp转rtmp二次编码推送·rtsp二次编码加水印