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

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

相关推荐
一只侯子2 小时前
Face AE Tuning
图像处理·笔记·学习·算法·计算机视觉
烤麻辣烫3 小时前
黑马程序员大事件后端概览(表现效果升级版)
java·开发语言·学习·spring·intellij-idea
烤麻辣烫4 小时前
黑马程序员苍穹外卖(新手)DAY6
java·开发语言·学习·spring·intellij-idea
whale fall4 小时前
【剑雅14】笔记
笔记
e***87705 小时前
windows配置永久路由
android·前端·后端
星空的资源小屋5 小时前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Xudde.6 小时前
Quick2靶机渗透
笔记·学习·安全·web安全·php
fouryears_234176 小时前
现代 Android 后台应用读取剪贴板最佳实践
android·前端·flutter·dart
AA陈超7 小时前
Git常用命令大全及使用指南
笔记·git·学习
麦麦在写代码7 小时前
前端学习5
前端·学习