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

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

相关推荐
Rattenking几秒前
React 源码学习01 ---- React.Children.map 的实现与应用
javascript·学习·react.js
顾北川_野5 分钟前
Android CALL关于电话音频和紧急电话设置和获取
android·音视频
&岁月不待人&15 分钟前
Kotlin by lazy和lateinit的使用及区别
android·开发语言·kotlin
TeYiToKu20 分钟前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws23 分钟前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
道法自然040224 分钟前
Ethernet 系列(8)-- 基础学习::ARP
网络·学习·智能路由器
爱吃生蚝的于勒30 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
Winston Wood2 小时前
Android Parcelable和Serializable的区别与联系
android·序列化
cuisidong19972 小时前
5G学习笔记三之物理层、数据链路层、RRC层协议
笔记·学习·5g
乌恩大侠2 小时前
5G周边知识笔记
笔记·5g