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 )
* @param src
* @param dst
* @param src
* @param dst
* @param data
* @param len
* @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);
#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

View File

@ -235,6 +235,10 @@ void HDProtocolRegisterInit(HDProtocolServerInfo *info, int len)
uint8_t HDProtocolCurrSend(const void *data, int len)
{
if (data == NULL || len == 0) {
return 0;
}
HDProtocolServerInfo *info = HDProtocolGetCurrInfo();
if (info == NULL) {
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)
{
if (data == NULL || len == 0) {
return;
}
if (sInfo.writeCall == NULL || sInfo.info == NULL) {
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)
{
if (data == NULL || len == 0) {
return;
}
if (sInfo.writeCall == NULL || sInfo.info == NULL) {
return;
}

View File

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