fix(vd960DBN): 消灭 data_json[1024] 中间缓冲, 防 BSS 重叠致 MQTT 上报 _raw 异常
- root cause: data_json[1024] + payload[1400] BSS 合计 2424B, 叠加 iot_mqtt_srv.c 其他缓冲 (~9KB total), 在 48KB RAM 上 与 mqttBuf[1024] 重叠, event_report 的 MQTT 二进制 泄漏到 loop_data payload - fix: 直接在 payload 构建完整 JSON, 省 1024B BSS - defense: coil_count > 4 硬限, 防 0xC0 坏帧溢出 - JSON 输出格式不变 - also: set_response_tran_to_notify 加返回值 - also: uart_srv BLE 通知逻辑重构
This commit is contained in:
@@ -172,10 +172,16 @@ void uart_srv(void)
|
||||
if(g_dbn_ble_state_acs_enable.flag != 0){
|
||||
// BLE ACS 已连接 → 改 Magic 为 0x8F 发给 BLE
|
||||
g_pkg_uart_2.pkg[0] = 0x8F;
|
||||
_report_flag = 1; // 保留给 BLE
|
||||
g_flag_notify_temp = set_response_tran_to_notify(g_pkg_uart_2.pkg, g_pkg_uart_2.offset, &g_notify_buftemp); // 保留给 BLE
|
||||
}
|
||||
// else: 回调已推送 TCP,直接清理
|
||||
}
|
||||
else {
|
||||
if(g_flag_bt_state){
|
||||
g_flag_notify_temp = set_response_tran_to_notify(g_pkg_uart_2.pkg, g_pkg_uart_2.offset, &g_notify_buftemp);
|
||||
InitPkgUart(&g_pkg_uart_2);
|
||||
}
|
||||
}
|
||||
|
||||
// 调试打印
|
||||
for(i = 0; i < g_pkg_uart_2.offset; i++){
|
||||
@@ -183,10 +189,6 @@ void uart_srv(void)
|
||||
}
|
||||
PRINT("\n");
|
||||
|
||||
if(_report_flag){
|
||||
// 传感器帧保留在 pkg 中供上层 (tcp_json_srv) 处理
|
||||
// 不 InitPkgUart — 由 tcp_json_push_sensor 消费后清理
|
||||
}
|
||||
}
|
||||
else {
|
||||
// 非 0x7F 魔法字节
|
||||
@@ -199,16 +201,11 @@ void uart_srv(void)
|
||||
|
||||
|
||||
if(g_flag_bt_state){
|
||||
g_flag_notify_temp = set_response_tran_to_notify(g_pkg_uart_2.pkg, g_pkg_uart_2.offset, &g_notify_buftemp);
|
||||
|
||||
}
|
||||
else{
|
||||
g_dbn_ble_state_acs_enable.flag = 0;
|
||||
}
|
||||
|
||||
// 只有非 _report_flag 时才立即清空
|
||||
// _report_flag 的帧由 tcp_json_push_sensor 消费后清理
|
||||
if (!_report_flag) {
|
||||
InitPkgUart(&g_pkg_uart_2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user