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

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

相关推荐
LaoZhangGong1231 天前
学习TCP/IP的第6步:断开连接
网络·学习·tcp/ip·以太网
TheNextByte11 天前
如何将文件从Android无线传输到 iPad
android·ios·ipad
赫萝的红苹果1 天前
实验探究并验证MySQL innoDB中的各种锁机制及作用范围
android·数据库·mysql
江苏世纪龙科技1 天前
助力职校教学:大众ID.4 CROZZ新能源汽车维护与高压组件更换仿真教学软件
学习
FakeOccupational1 天前
【树莓派 004】 RP2040 PIO JMP指令 : jmp()条件跳转+jmp 指令的常用条件+示例解释
笔记
狐571 天前
2026-01-19-LeetCode刷题笔记-1292-元素和小于等于阈值的正方形的最大边长
笔记·算法·leetcode
叶落无痕521 天前
Android Studio 2024.3.1 连接夜神模拟器
android·ide·android studio
张祥6422889041 天前
误差理论与测量平差基础笔记六
笔记·算法·概率论
玲子的猫1 天前
安卓原生开发实现图片双指放大预览功能
android
zpedu1 天前
软考想一次过,有一个学习衡量标准吗?
人工智能·笔记