1. 修复协议绑定立刻触发超时问题

This commit is contained in:
coffee 2025-10-25 16:22:26 +08:00
parent 1c8727bc9f
commit c2ed44d4ba
4 changed files with 18 additions and 4 deletions

View File

@ -126,8 +126,8 @@ void HDProtocolSendPort(uint8_t dst, const void *data, int len);
/** /**
* @brief (, , HDProtocolGetDest ) * @brief (, , HDProtocolGetDest )
* @param src * @param src
* @param dst * @param dst
* @param data * @param data
* @param len * @param len
* @param needReadCount * @param needReadCount

View File

@ -32,6 +32,7 @@ typedef uint16_t HProtocolBindFunc_t;
///< 协议回调 ///< 协议回调
typedef void (*HProtocolBindCallback)(HProtocolBind_t index, uint8_t* data, uint16_t len); typedef void (*HProtocolBindCallback)(HProtocolBind_t index, uint8_t* data, uint16_t len);
#define HPROTOCOL_BIND_CALL_ARGS HProtocolBind_t index, uint8_t* data, uint16_t len #define HPROTOCOL_BIND_CALL_ARGS HProtocolBind_t index, uint8_t* data, uint16_t len
#define HPROTOCOL_IS_TIMEOUT() (data == NULL && len == 0)
///< 协议会话 ///< 协议会话
typedef struct HProtocolBindInfo typedef struct HProtocolBindInfo

View File

@ -235,6 +235,10 @@ void HDProtocolRegisterInit(HDProtocolServerInfo *info, int len)
uint8_t HDProtocolCurrSend(const void *data, int len) uint8_t HDProtocolCurrSend(const void *data, int len)
{ {
if (data == NULL || len == 0) {
return 0;
}
HDProtocolServerInfo *info = HDProtocolGetCurrInfo(); HDProtocolServerInfo *info = HDProtocolGetCurrInfo();
if (info == NULL) { if (info == NULL) {
LogD("curr not read call"); LogD("curr not read call");
@ -248,6 +252,10 @@ uint8_t HDProtocolCurrSend(const void *data, int len)
void HDProtocolSendPort(uint8_t dst, const void *data, int len) void HDProtocolSendPort(uint8_t dst, const void *data, int len)
{ {
if (data == NULL || len == 0) {
return;
}
if (sInfo.writeCall == NULL || sInfo.info == NULL) { if (sInfo.writeCall == NULL || sInfo.info == NULL) {
return; return;
} }
@ -263,6 +271,10 @@ void HDProtocolSendPort(uint8_t dst, const void *data, int len)
void HDProtocolTmpSend(uint8_t src, uint8_t dst, const void *data, int len, uint8_t needReadCount, uint8_t waitCount) void HDProtocolTmpSend(uint8_t src, uint8_t dst, const void *data, int len, uint8_t needReadCount, uint8_t waitCount)
{ {
if (data == NULL || len == 0) {
return;
}
if (sInfo.writeCall == NULL || sInfo.info == NULL) { if (sInfo.writeCall == NULL || sInfo.info == NULL) {
return; return;
} }

View File

@ -217,10 +217,11 @@ void HProtocolBindRun(HProtocolBindId_t id)
continue; continue;
} }
if (HDLogGetTime() - sBindRegisters[id].binds[i].lastTime >= sBindRegisters[id].binds[i].delayMs) { if (HDLogGetTime() - sBindRegisters[id].binds[i].lastTime < sBindRegisters[id].binds[i].delayMs) {
sBindRegisters[id].binds[i].isTimeout = 1; continue;
} }
sBindRegisters[id].binds[i].isTimeout = 1;
// 可能是同一个功能码绑定多个回调 // 可能是同一个功能码绑定多个回调
if (sBindRegisters[id].binds[i].callback) { if (sBindRegisters[id].binds[i].callback) {
sBindRegisters[id].curr = 1; sBindRegisters[id].curr = 1;