docs(devlog): 记录 variation 2B->3B有符号升级 (V1.05)

- vd960Loop/docs/devlog.md: 组包端改动(uint32->int32,方案B,饱和防回绕),
  背景/影响范围/验证
- vd960DBN/docs/devlog.md: 接收端4处联动(结构体/解析步长/符号扩展/
  fast_mode abs阈值), 缓冲核查
两端均标注必须同版本发布
This commit is contained in:
wangfq
2026-07-14 16:48:25 +08:00
parent bfc9646e48
commit 82e01cd337
2 changed files with 82 additions and 0 deletions
+42
View File
@@ -6,6 +6,48 @@
---
## 2026-07-14 — Loop 上报 variation 解析升级 2B→3B 有符号 (协议 V1.05)
### 背景
Loop MCU 上报的 `SENS_MULTI_LOOP_DYNAMIC (0xC0/0x0C)` 中变化量 `variation` 由 2B 无符号扩展为 **3B 有符号补码**(详见 Loop 侧 devlog 与协议 V1.05)。DBN 作为接收/转发端,解析逻辑须同步升级,否则每通道单元 12B 会被按旧的 11B 步长错位解析,**4 通道数据全错**。
### 改动 (4 处)
**1. `loop_uart_proto.h` — 结构体字段类型**
```c
// uint16_t variation; -> int32_t variation; // 3B有符号, = Origin-CAPVD
```
**2. `loop_uart_proto.c` — 解析函数 `lup_parse_sensor_report`**
- 每通道单元步长 `i*11``i*12`
- 通道数计算 `data_len/11``data_len/12`
- 频率仍 3B 无符号;**变化量 3B 解码 + bit23 符号扩展**
```c
int32_t v = c[5] | ((int32_t)c[6] << 8) | ((int32_t)c[7] << 16);
if (v & 0x800000) v |= (int32_t)0xFF000000; // 符号扩展, 漏了负值会变~1600万大正数
cs->variation = v;
```
- 杂项偏移 `c[7..10]``c[8..11]`(整体右移 1B
**3. `iot_mqtt_srv.c` — fast_mode 阈值判断(隐藏坑)**
```c
// variation 变有符号后, 车进入(正)/反向漂移(负) 都应触发加速上报
int32_t av = (v >= 0) ? v : -v;
if (av >= IOT_MQTT_VARIATION_THRESHOLD) fast_mode = 1; // 原 variation>=10 会漏掉负向
```
**4. JSON 输出(`iot_mqtt_srv.c` / `tcp_json_srv.c`**
- `"diff":%d` / `"variation":%d` 格式符不变——CH32V208 上 `int32_t == int``%d` 天然正确输出负号,无需改动。
### 缓冲核查
整帧 52B→56BDBN 侧 `g_pkg_uart_2.pkg[BUFF_STACK_SIZE=512]``LUP_MAX_PKG_LEN=70` 均远大于 56B,接收无截断;转发 MSS=576 不分片。
⚠️ **必须与 Loop 固件同版本发布**(步长死绑定)。
---
## 2026-06-26 — TCP JSON 协议框架搭建
### 1. TCP JSON Server 基础实现