2.4 KiB
2.4 KiB
修改记录 2026-09-04:设备参数改为只读特征 + App 定时读
设备参数查看(温度/风扇/电压/版本/uptime/heap)从「INFO_QUERY 帧 + notify 应答」 改为「只读特征 + App 定时 read」,不再依赖 notify 上行通道。
GATT 变更(固件 mcm-ddc-ble V1.00.04)
- 新增只读特征
00002760-08c2-11e1-9073-0e8ac72e0004(MCM_INFO_UUID): 读出内容为全部信息项的 TLV 序列{id u8, len u8, value…}×n(数值小端), 与 INFO_RSP(all) 帧 payload 完全一致。信息项 id 不变: 0x01 FW_VERSION(u32)、0x02 CHIP_TEMP(i16, 0.1℃, 0x7FFF=失败)、 0x03 FAN_RPM(u16, 0xFFFF=无硬件)、0x04 VDD_MV(u16, 0=失败)、 0x05 UPTIME_S(u32)、0x06 FREE_HEAP(u32)。 - 既有特征不变:
...e0001(帧协议下行,无响应写)、...e0002(notify 上行)、...e0003(CLI 读写特征:写原始命令行、读输出文本,V1.00.02 新增)。 - 固件侧实现:
app_info.c抽出app_info_tlv_snapshot()(INFO_QUERY 帧应答与其 共用同一组包逻辑);app_rdtss.c读请求按att_idx分发(CLI_VAL → 命令输出, INFO_VAL → TLV 快照,其余保持原 "NSING" 行为)。 - 附带修复(V1.00.03):芯片温度采样前先给 TS 5ms 稳定时间并丢弃第一次转换,
修复
devinfo/INFO_QUERY 温度显示 287.6°C 的问题(传感器未稳定即采样)。
App 侧修改
src/BluetoothManager.ts:新增MCM_INFO_UUID常量与readInfoChar(cb);onBLECharacteristicValueChange监听重构为ensureValueChangeListener(), notify 数据与 read 结果按特征 UUID 分发(uni 的读结果经此回调返回); 读操作带 3s 超时。src/mcm/McmInfo.ts:新增readDeviceInfo(),读参数特征并复用parseTlv解析; 原queryDeviceInfo()(帧协议 INFO_QUERY)保留。pages/tabbar/home.vue:参数轮询pollParams()从queryDeviceInfo切到readDeviceInfo,一次读出全部项取温度+风扇。
验证
- 固件
UV4 -r全量重建 0 Error / 0 Warning;tools/out/caiic_ble_full.hex出包, OTA 清单 version=0x00010004。 - PC 侧验证(烧录后):
tools\ble_cli.bat param读参数特征并解析 TLV;tools\ble_cli.bat -rw help验证 CLI 读写特征。 - 真机回归:主页温度/风扇显示(轮询走 read),CLI 终端、OTA 流程不受影响。