feat(can): 新增CAN通道收发器Silent模式功能
- 新增SPI 0xC8命令用于切换CAN通道收发器Silent模式(只听不发) - 在canFdSetTxSilent函数中实现静默模式控制逻辑 - 在HTTP API中添加POST /can/silent端点 - 更新CAN协议文档,记录新命令和错误码E6 - 修改bus_state位图,添加bit5表示静默状态 fix(can): 优化CAN反馈任务内存使用和链路离线处理 - 将任务栈上的临时缓冲区改为静态分配,防止栈溢出 - 添加链路在线检测,在离线状态下进入休眠退避 - 修复queryMotorStatePages和queryAdcFeedback函数返回值类型 - 优化UDP日志发送的冷却退避机制 chore(config): 更新调试日志配置和版本信息 - 在VSCode设置中添加ESP-IDF串口配置 - 添加SPI调试日志级别编译期开关CONFIG_SPI_DEBUG_LOG_LEVEL - 更新固件版本至0.5.2,记录相关变更内容 - 调整SPI和CAN反馈任务的栈大小配置
This commit is contained in:
@@ -676,9 +676,13 @@ esp_err_t DebugLog::send(const uint8_t *data, size_t len)
|
||||
uart_ret = uartSend(data, len);
|
||||
}
|
||||
|
||||
/* UDP:堆紧 / 无 IP 时跳过 sendto */
|
||||
/* UDP:堆紧 / 无 IP 时跳过 sendto;增加关闭后 10s 冷却退避,防连续失败时反复创建/销毁 socket 造成堆抖动 */
|
||||
static TickType_t s_lastUdpCloseTick = 0;
|
||||
const TickType_t now_tick = xTaskGetTickCount();
|
||||
const bool udp_in_cooloff = (s_lastUdpCloseTick != 0) &&
|
||||
((now_tick - s_lastUdpCloseTick) < pdMS_TO_TICKS(10000));
|
||||
if (m_initialized && free_now >= kSkipUdpFree && udpNetifHasIp()) {
|
||||
if (m_udpSock < 0) {
|
||||
if (m_udpSock < 0 && !udp_in_cooloff) {
|
||||
(void)ensureUdpSocket();
|
||||
}
|
||||
|
||||
@@ -703,12 +707,13 @@ esp_err_t DebugLog::send(const uint8_t *data, size_t len)
|
||||
}
|
||||
if (m_udpFailStreak >= kUdpFailRecreate) {
|
||||
closeUdpSocket();
|
||||
s_lastUdpCloseTick = xTaskGetTickCount();
|
||||
m_udpFailStreak = 0;
|
||||
const TickType_t now = xTaskGetTickCount();
|
||||
if (m_lastUdpFailWarnTick == 0 ||
|
||||
(now - m_lastUdpFailWarnTick) >= warnIntervalTicks()) {
|
||||
m_lastUdpFailWarnTick = now;
|
||||
static const char kMsg[] = "[W][LOG] UDP 连续失败,已重建 socket\n";
|
||||
static const char kMsg[] = "[W][LOG] UDP 连续失败,暂停发送 10s 后重建\n";
|
||||
ringPush(kMsg, (int)sizeof(kMsg) - 1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user