1. 修复协议服务存在越位问题

This commit is contained in:
coffee 2025-09-08 13:53:51 +08:00
parent 15f3b90f5a
commit 4887930ea2

View File

@ -38,7 +38,7 @@ static uint8_t IsOccupied(uint8_t currIndex, uint8_t protocol, uint8_t *occupied
{ {
if (currIndex >= OCCUPIED_MAX) { if (currIndex >= OCCUPIED_MAX) {
LogE("index[%d] out of range[%d]", currIndex, OCCUPIED_MAX); LogE("index[%d] out of range[%d]", currIndex, OCCUPIED_MAX);
return 0; return 1;
} }
for (int i = 0; i < OCCUPIED_MAX; ++i) { for (int i = 0; i < OCCUPIED_MAX; ++i) {
@ -331,6 +331,11 @@ void HDProtocolRun()
// 有之前的数据已经占用了, 并且检查是否超时 // 有之前的数据已经占用了, 并且检查是否超时
uint8_t occupiedIndex = OCCUPIED_MAX; uint8_t occupiedIndex = OCCUPIED_MAX;
if (IsOccupied(i, sInfo.info[i].supportProtocol, &occupiedIndex)) { if (IsOccupied(i, sInfo.info[i].supportProtocol, &occupiedIndex)) {
// 异常情况
if (occupiedIndex >= OCCUPIED_MAX) {
continue;
}
// 解析被占用, 检查超时 // 解析被占用, 检查超时
if (HDLogGetTime() - sOccupiedInfo[occupiedIndex].occupyTime <= HDPROTOCOL_OCCUPY_TIMEOUT) { if (HDLogGetTime() - sOccupiedInfo[occupiedIndex].occupyTime <= HDPROTOCOL_OCCUPY_TIMEOUT) {
continue; continue;