I use EM7455 for MT7628 platform. This platform linux kernel version is 3.10. so I must use Gobinet driver and sdk. This topic does not talk about this version of the problem.
I encountered some errors when use sdk.
firmware:9999999_9904609_SWI9X30C_02.33.03.00_00_GENERIC_002.072_000.exe
sdk version:SLQS04.00.27-lite.bin.tar.gz
- API error when verify PIN.
# syslog
Mon Oct 25 16:39:24 2021 user.debug modem_mgr: [1] [ pack] QMI_DMS_UIM_VERIFY_PIN xid 0x0004 returned 0x0
Mon Oct 25 16:39:25 2021 user.debug modem_mgr: [1] [helper] DMS_UIM_PIN_VERIFY svc 2 xid 0x0004
===:255,255
Mon Oct 25 16:39:25 2021 user.debug modem_mgr: [1] [unpack] QMI_DMS_UIM_VERIFY_PIN xid 0x0004 returned 0x42f
#my code
int AtcVerifyPin(unsigned int modem_id, char *pincode) {
int rtn;
pack_qmi_t req_ctx;
uint8_t qmi_req[QMI_MSG_MAX];
uint8_t qmi_rsp[QMI_MSG_MAX];
uint16_t qmi_req_len;
uint16_t qmi_rsp_len;
QmiInfo *qmi_handler = AtcGetQmiHanderFromId(modem_id);
if (!qmi_handler) {
return -1;
}
pack_dms_UIMVerifyPIN_t pinVerify;
memset(&pinVerify, 0, sizeof(pinVerify));
memset(qmi_req, 0, QMI_MSG_MAX);
memset(qmi_rsp, 0, QMI_MSG_MAX);
memset(&req_ctx, 0, sizeof(pack_qmi_t));
pinVerify.id = 1;
strncpy((char *)pinVerify.value, pincode, sizeof(pinVerify.value) - 1);
req_ctx.xid = create_xid(qmi_handler, eLITE_DMS_FD_ARR_INDEX);
rtn = pack_dms_UIMVerifyPIN(&req_ctx, qmi_req, &qmi_req_len, &pinVerify);
if (rtn != eQCWWAN_ERR_NONE) {
return -1;
}
/* our version for wait rsp use socket but condition/mutex. */
rtn = write_fd_waitrsp(&req_ctx, qmi_req, qmi_req_len, qmi_handler,
eLITE_DMS_FD_ARR_INDEX, QMI_CMD_TIMEOUT_MSEC, qmi_rsp,
&qmi_rsp_len);
if (rtn != 0) {
return -1;
}
unpack_dms_UIMSetPINProtection_t test;
memset(&test, 0, sizeof(test));
rtn = unpack_dms_UIMVerifyPIN(qmi_rsp, qmi_rsp_len, &test);
printf("===:%d,%d\n", test.verifyRetriesLeft, test.unblockRetriesLeft);
return 0;
}
- SIM card status not report to dms service watch.
how can I enable report for SIM cart status(plug in/plug out) ? sdk demo have not specfic exaples.
# my Fake code
uint8_t setInd = 0x1;
pack_dms_SetEventReport_t dmsReqPara;
memset(&dmsReqPara, 0, sizeof(pack_dms_SetEventReport_t));
dmsReqPara.mode = DMS_SET_REPORT_ENABLE;
rtn = pack_dms_SetEventReport(&req_ctx, qmi_req, &qmi_req_len, (void *)&dmsReqPara);
//write(2);
pack_dms_SwiSetEventReport_t SwiEventSettingsUINStatus = {NULL, NULL, &setInd};
rtn = pack_dms_SwiSetEventReport(&req_ctx, qmi_req, &qmi_req_len, (void *)&SwiEventSettingsUINStatus);
// write(2);
pack_dms_SLQSDmsSwiIndicationRegister_t dmsIndRegPara;
memset(&dmsIndRegPara, 0, sizeof(pack_dms_SLQSDmsSwiIndicationRegister_t));
dmsIndRegPara.resetInfoInd = DMS_SWI_SET_IND_ENABLE;
pack_dms_SLQSDmsSwiIndicationRegister(&req_ctx, qmi_req, &qmi_req_len, (void *)&dmsIndRegPara);
//write(2);