QMI..

QcRilHook:
ByteBuffer reqBuffer = createBufferWithNativeByteOrder(request);
reqBuffer 被用来读取或写入request数组中的数据,不用担心字节序,注意request的大小是否满足所需传递的数据大小
addQcRilHookHeader(reqBuffer, requestId , INT_SIZE + Size);
在reqBuffer对象中组织QC RIL头信息,包括OEM标识符("QOEMHOOK")、请求ID(requestId)和请求大小(INT_SIZE + Size)
AsyncResult ar = sendRilOemHookMsg(requestId, request);->sendRilOemHookMsg(requestId, request, DEFAULT_PHONE)
默认使用DEFAULT_PHONE,ar 用于存储最终的返回结果
public int sendOemRilRequestRaw(byte[] request, byte[] response, int sub)
AsyncResult result = (AsyncResult) sendRequest(CMD_INVOKE_OEM_RIL_REQUEST, request, sub);
sub表示子系统ID
private Object sendRequest(int command, Object argument, int sub)
将指定的命令发送到主线程执行,并等待请求完成后返回结果,其中调用 sendToTarget 方法将消息发送到消息处理器
———————————————————————————————————————————
qcril_qmi_nas:
写入到reqBuffer中的数据传到了params_ptr->data,确保数据无误后就可以从中提取,拆分了
extern qmi_client_error_type
qmi_client_send_msg_sync
(
 qmi_client_type    user_handle,
 unsigned int       msg_id,
 void               *req_c_struct,
 unsigned int       req_c_struct_len,
 void               *resp_c_struct,
 unsigned int       resp_c_struct_len,
 unsigned int       timeout_msecs
);
然后通过此函数发送一个同步的 QMI 消息,并等待响应
qcril_qmi_util_convert_qmi_response_codes_to_ril_result->qcril_qmi_util_convert_qmi_response_codes_to_ril_result_ex
ril_req_res = qcril_qmi_util_convert_qmi_response_codes_to_ril_result( qmi_client_error, &qmi_response.resp );
通过此接口处理QMI响应码,转换为RIL结果

qcril_default_request_resp_params( instance_id, params_ptr->t, params_ptr->event_id, ril_req_res, &resp );
初始化 qcril_request_resp_params_type 结构体,后续将其用作 RIL 请求响应的参数

qcril_send_request_response( &resp );
涉及RIL层的请求处理和响应发送,以及对QMI(Qualcomm Modem Interface)消息的编码和解码操作,在这个接口中如果QMI IDL tunnel 响应,将执行QMI IDL消息的编码和解码,通过qmi_ril_fw_send_request_response_epilog发送响应
———————————————————————————————————————————
可以先调试AP侧:
在保证AP侧代码逻辑没问题后,QXDM log中的错误码为57时,就可以开始写BP侧的代码了
#define QMI_SERVICE_ERR_INVALID_MESSAGE_ID 57

调试QMI:

当错误码为94时,#define QMI_SERVICE_ERR_NOT_SUPPORTED 94
可以检查AP侧和BP侧的message id的位置是否对齐了

错误码:vendor/qcom/proprietary/qmi/inc/qmi.h
vendor/qcom/proprietary/commonsys/qcrilOemHook/src/com/qualcomm/qcrilhook/IQcRilHook.java
vendor/qcom/proprietary/commonsys/qcrilOemHook/src/com/qualcomm/qcrilhook/QcRilHook.java
vendor/qcom/proprietary/qcril-nr/include/modules/nas/qcril_qmi_nas.h
vendor/qcom/proprietary/qcril-nr/modules/nas/src/qcril_qmi_nas.cpp
vendor/qcom/proprietary/qcril-nr/qcril_qmi/oem_socket/qcril_qmi_oem_eventlist.h
vendor/qcom/proprietary/qcril-nr/qcril_qmi/oem_socket/qcril_qmi_oem_events.cc
vendor/qcom/proprietary/qcril-nr/qcril_qmi/oem_socket/qcril_qmi_oem_reqlist.h
vendor/qcom/proprietary/qcril-qmi-services-headers/device_management_service_v01.h
vendor/qcom/proprietary/qcril-qmi-services/device_management_service_v01.c

单编调试:(待尝试)
vendor/qcom/proprietary/commonsys/qcrilOemHook/Android.bp
vendor/qcom/proprietary/qcril-nr/modules/nas/Android.mk
vendor/qcom/proprietary/qcril-nr/qcril_qmi/Android.mk
vendor/qcom/proprietary/qcril-qmi-services/Android.bp
vendor/qcom/proprietary/qcril-qmi-services-headers/Android.bp

source build/envsetup.sh && lunch parrot-userdebug && mmma vendor/qcom/proprietary/commonsys/qcrilOemHook

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值