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

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

相关推荐
大数据女孩_Aimee39 分钟前
AndroidAutoOverUsbInteractiveHostTest FAIL
android·测试用例
FAREWELL000751 小时前
Lua学习记录(4) --- Lua中多文件调用 以及 关于位运算符的零碎知识点
开发语言·学习·lua
woodykissme1 小时前
齿轮如何撬动工业文明的进程
学习·机械·齿轮·传动
码界奇点1 小时前
Java大数据在智能教育个性化学习资源推荐中的冷启动解决方案
java·大数据·学习·动画·推荐算法
hqk1 小时前
鸿蒙 ArkUI 从零到精通:基础语法全解析
android·前端·harmonyos
摇滚侠1 小时前
零基础小白自学 Git_Github 教程,分支合并,笔记13
笔记·git·github
DJ斯特拉1 小时前
Tlias智能学习辅助系统(一)
学习
灰灰勇闯IT1 小时前
隐语MOOC三期笔记:可信数据空间实战课——从“数据孤岛”到“安全流通”,企业落地的3个关键步骤(附部署脚本)
笔记·安全
5***g2982 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
牛奔2 小时前
php 8.2 配置安装php-zbarcode扩展
android·开发语言·php