feat(vd960DBN): TCP/MQTT log_* 命令支持快照流 stream=snapshot (2026-08-18)
- snapshot.c/h: 新增 snap_rec_to_json() — SnapRec 64B → JSON (channels 对齐 0xC0, variation 3B 符号扩展, misc_type 全枚举) - tcp_json_srv.c: handle_log_stat/query/clear 加 stream 解析 + snapshot 分支 - iot_mqtt_srv.c: log_stat/query/clear 加 stream 解析 + snapshot 分支 - 事件流 count=0 按上限处理 (与 BLE 对齐); 快照 QUERY count≤2, CLEAR ~45ms - 新增 gcc 隔离单测 tests/test_snap_to_json.c 34 断言全过 - devlog V4.1
This commit is contained in:
@@ -4,6 +4,42 @@
|
||||
>
|
||||
> 项目定位: DLD960 通信板 — BLE 配网、TCP JSON 协议服务、Loop MCU 串口桥接
|
||||
|
||||
## 2026-08-18 — TCP/MQTT 脱机日志快照流支持(协议 V1.03/V1.07 落地)
|
||||
|
||||
### 背景
|
||||
|
||||
协议文档先行(TCP JSON V1.03 + IoT MQTT V1.07,2026-08-18):`log_stat` / `log_query` / `log_clear` 通过 `data.stream` 区分 `event` / `snapshot` 流(BLE 0x28/0x29/0x2A 的网络通道对称语义)。固件侧此前只实现事件流(offlog_*),快照流缺失——本次补齐。
|
||||
|
||||
### 变更
|
||||
|
||||
| 文件 | 变更 |
|
||||
|------|------|
|
||||
| `snapshot.c/h` | 新增 `snap_rec_to_json()`:SnapRec 64B 原始结构 → JSON(channels 对齐 0xC0 传感单元,variation 3B 符号扩展,misc_type 全枚举 time/cut_count/flow_count/relay_count) |
|
||||
| `tcp_json_srv.c` | `handle_log_stat/log_query/log_clear` 加 `stream` 解析 + snapshot 分支(snap_* API);事件流 count=0 按上限处理(与 BLE 对齐) |
|
||||
| `iot_mqtt_srv.c` | `log_stat/log_query/log_clear` 加 `stream` 解析 + snapshot 分支;同上 |
|
||||
|
||||
### 关键决策
|
||||
|
||||
- **复用 log_* 命令 + stream 字段**(协议 V1.00 即预留"快照流预留"),不新增命令码;与 BLE 侧独立命令(SNAP_*)不同,JSON 协议命令面保持 18 条不变
|
||||
- 快照 QUERY `count≤2`(`SNAP_MAX_QUERY_RECORDS=2`,64B×2 记录),事件流仍 ≤4
|
||||
- 快照 CLEAR 阻塞 ~45ms(逻辑清除+当前写扇区),事件流 ~2.8s 不变
|
||||
- `capacity`/`count` JSON 类型 uint32(W25Q256 事件流 130944 超 16bit,原文档 uint16 标注修正)
|
||||
- `snap_rec_to_json` 放 snapshot.c 公共模块,TCP/MQTT 两路共用(避免重复序列化代码)
|
||||
|
||||
### 验证
|
||||
|
||||
- gcc 隔离单测 `tests/test_snap_to_json.c`:**34 断言全过**(高频/低频/方向判别/初始频率、负 variation -10 符号扩展、misc_type 全枚举、loop_ok/has_car 位解析、空记录 coil_count=0 边界)
|
||||
- `check_c_balance.py` 5 文件 OK(tcp_json_srv.c / iot_mqtt_srv.c / snapshot.c / snapshot.h ×2)
|
||||
- `simple_parse_json` 字符串提取语义确认:去引号取内容,`strcmp(stream,"snapshot")` 成立
|
||||
- 待板级验证:MRS 真编译 + 真机 TCP/MQTT `log_query stream=snapshot`
|
||||
|
||||
### 注意
|
||||
|
||||
- 固件版本未升(仍 1.02.01),随下次发版统一
|
||||
- 协议文档已先行(V1.03/V1.07),固件本次同步跟上(README/规格书/产品手册索引已同步)
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-17 — 频繁"复位"根因闭环:.bss 挤占 RAM → 栈溢出 → PC 跑飞
|
||||
|
||||
### 背景
|
||||
@@ -1271,6 +1307,7 @@ TCP 超时要等 ~2 分钟才触发 `SINT_STAT_TIM_OUT`,
|
||||
|
||||
| 版本 | 时间 | 说明 |
|
||||
|------|------|------|
|
||||
| V4.1 | 2026-08-18 | TCP/MQTT 脱机日志快照流: log_stat/log_query/log_clear 支持 stream=snapshot (协议 V1.03/V1.07), snap_rec_to_json 序列化, 事件流 count=0 按上限 |
|
||||
| V4.0 | 2026-08-10 | BLE 脱机日志接口: OFFLOG_STAT/QUERY/CLEAR (0x25/0x26/0x27), 32B OfflogEvt 二进制直传, 缓冲扩容 132B, 隔离测试 7 例 + 协议文档 V1.00 |
|
||||
| V3.9 | 2026-08-05 | offlog 协议导出命令分发: log_stat/log_query/log_clear 落地 MQTT V1.06 + TCP JSON V1.02 (seq_first/seq_last 计算、idx 映射、OFFLOG_MAX_QUERY_RECORDS=4、log_clear 阻塞~2.8s) |
|
||||
| V3.8 | 2026-08-04 | offlog: TIME_ANCHOR 严格用平台下发 unix_ts (offlog_evt_ts), 单测 7 例 |
|
||||
|
||||
Reference in New Issue
Block a user