学习笔记:【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 流程图

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

相关推荐
笨鸟笃行6 小时前
百日挑战——单词篇(第二十四天)
学习
惜.己6 小时前
html笔记(一)
前端·笔记·html
沐怡旸7 小时前
【底层机制】Android OTA更新系统:原理与应用深度解析
android·面试
烤麻辣烫7 小时前
23种设计模式(新手)-7迪米特原则 合成复用原则
java·开发语言·学习·设计模式·intellij-idea
q***31147 小时前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
android·前端·后端
开开心心_Every8 小时前
Excel图片提取工具,批量导出无限制
学习·pdf·华为云·.net·excel·harmonyos·1024程序员节
952368 小时前
数据结构-二叉树
java·数据结构·学习
无妄无望8 小时前
ragflow代码学习切片方式(1)docling_parser.py
人工智能·python·学习
SkyQvQ9 小时前
Android Studio 开发效率神器:Auto-import
android·android studio
木子予彤9 小时前
Compose 中的系统区域适配
android·android jetpack