mothercup/SmartAssiter/docs/修改记录_2026-09-04_设备参数只读特征.md
2026-09-04 08:56:15 +08:00

2.4 KiB
Raw Permalink Blame History

修改记录 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 流程不受影响。