1. 修复HDRPC在回调为NULL的情况下, 无法注册超时函数的问题

This commit is contained in:
coffee 2026-05-28 14:39:03 +08:00
parent 3fb9057dd9
commit 46601f7f8a

View File

@ -132,11 +132,15 @@ static void Call(HDRPCSession *session, uint16_t exception) {
continue; continue;
} }
if (sInfo.localCallBuffer[i].nameLen != session->args[index].buffer.len) { if (sInfo.localCallBuffer[i].funcCode != session->func) {
continue; continue;
} }
if (strncmp(sInfo.localCallBuffer[i].name, (char *)session->args[index].buffer.data, session->args[index].buffer.len) != 0) { if (sInfo.localCallBuffer[i].nameLen != 0 && sInfo.localCallBuffer[i].nameLen != session->args[index].buffer.len) {
continue;
}
if (sInfo.localCallBuffer[i].nameLen != 0 && strncmp(sInfo.localCallBuffer[i].name, (char *)session->args[index].buffer.data, session->args[index].buffer.len) != 0) {
continue; continue;
} }
@ -159,7 +163,7 @@ static void Call(HDRPCSession *session, uint16_t exception) {
static HDRPCIndexId_t AddCall(HDRPCSession *session, HDRPCCallback callBack, const char *funcName, uint8_t nameLen, HDRPCTimeoutCall timeout) { static HDRPCIndexId_t AddCall(HDRPCSession *session, HDRPCCallback callBack, const char *funcName, uint8_t nameLen, HDRPCTimeoutCall timeout) {
HDRPCIndexId_t result = -1; HDRPCIndexId_t result = -1;
if (session == NULL || callBack == NULL || nameLen == 0) { if (session == NULL || ((callBack == NULL || nameLen == 0) && timeout == NULL)) {
LogD("funcName[%s], len[%d] add Faild", funcName, nameLen); LogD("funcName[%s], len[%d] add Faild", funcName, nameLen);
return result; return result;
} }
@ -755,11 +759,11 @@ HDRPCIndexId_t _HDRPCSendData(HDRPCSession *session, uint16_t funcCode, HDRPCCal
} }
do { do {
if (nameLen == 0 || callBack == NULL) { if ((nameLen == 0 || callBack == NULL) && timeout == NULL) {
break; break;
} }
if (HDRPCAddUserData(session, (void *)funcName, nameLen) == 0) { if (nameLen != 0 && HDRPCAddUserData(session, (void *)funcName, nameLen) == 0) {
LogD("Add Call Data[%s] faild", funcName); LogD("Add Call Data[%s] faild", funcName);
break; break;
} }