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:
@@ -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→56B,DBN 侧 `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 基础实现
|
||||
|
||||
Reference in New Issue
Block a user