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;
}
if (sInfo.localCallBuffer[i].nameLen != session->args[index].buffer.len) {
if (sInfo.localCallBuffer[i].funcCode != session->func) {
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;
}
@ -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) {
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);
return result;
}
@ -755,11 +759,11 @@ HDRPCIndexId_t _HDRPCSendData(HDRPCSession *session, uint16_t funcCode, HDRPCCal
}
do {
if (nameLen == 0 || callBack == NULL) {
if ((nameLen == 0 || callBack == NULL) && timeout == NULL) {
break;
}
if (HDRPCAddUserData(session, (void *)funcName, nameLen) == 0) {
if (nameLen != 0 && HDRPCAddUserData(session, (void *)funcName, nameLen) == 0) {
LogD("Add Call Data[%s] faild", funcName);
break;
}