文件
jw-beauty/docs/protocols/协议简述-补充解析.md
T
Guoguo 3fd7578163 feat: support 17-byte ADC status from updated vendor protocol
Protocol update adds FFE4 Status format: 7×PD sensors (little-endian)
+ VBAT battery voltage (mV) + XOR checksum = 17 bytes.

- parseVendorStatus: handles 1-byte heartbeat, 17-byte ADC, 33-byte params
- handleValueChange: ADC type extracts PD array + battery % from VBAT
- Battery calculated as linear 3000mV(0%) to 4200mV(100%)
- PD data passed through status event for treatment pages
- Updated protocol doc with full byte table and old/new comparison
2026-05-19 03:54:15 -07:00

2.6 KiB
原始文件 Blame 文件历史

协议简述补充解析

来源:仓库根目录 协议简述(1).docx(更新版),已归档到 docs/protocols/

服务/特征值摘要

UUID 名称 属性 说明
FFE1 Command Write+Read 下发 33 字节控制指令
FFE4 Status Read+Notify 上报 17 字节 ADC/电池数据

Command 参数(FFE1 Write,33 字节)

字节 含义
Byte1 IO1 红灯光强
Byte2 IO1 红外灯光强
Byte3 IO1 紫外灯光强
Byte4 IO1 暖黄灯光强
Byte5 IO1 电流增益高字节
Byte6 IO1 电流增益低字节
Byte7-12 IO2(同 IO1 结构)
Byte13-18 IO3
Byte19-24 IO4
Byte25-30 IO5
Byte31 保持时间高字节
Byte32 保持时间低字节
Byte33 异或校验(Byte1-Byte32

每个 IO 为 6 字节:红灯(1) + 红外(1) + 紫外(1) + 暖黄(1) + 电流增益(2, 大端)。

Status 上报(FFE4 Notify,17 字节)— 新增

字节 含义 字节序
Byte1-2 PD1 ADC 值 小端(低字节在前)
Byte3-4 PD2 ADC 值 小端
Byte5-6 PD3 ADC 值 小端
Byte7-8 PD4 ADC 值 小端
Byte9-10 PD5 ADC 值 小端
Byte11-12 PD6 ADC 值 小端
Byte13-14 PD7 ADC 值 小端
Byte15-16 VBAT 电池电压 小端(单位 mV
Byte17 异或校验(Byte1-Byte16

7 个 PD(光电传感器)通道 + 1 个电池电压通道。

与旧版协议简述的差异

项目 旧版 新版(当前)
FFE4 上报格式 仅说"设备状态及 ADC 值",无字节定义 完整定义:7×PD + VBAT + XOR,共 17 字节
FFE1 Command 33 字节(相同) 33 字节(不变)
PD 通道数 未知 7 个通道
电池信息 未知 VBAT,小端 mV
字节序 未标注 Status 明确小端序

对代码的影响

已更新

  • protocol.jsparseVendorStatus() 增加 17 字节解析:提取 7 个 PD 值 + VBAT,校验 XOR
  • connection.jshandleValueChange() 处理 type === 'adc':从 VBAT 计算电量百分比,PD 数据通过 status 事件传递

仍待确认

  1. PD1-PD7 与面部区域的对应关系
  2. PD 值的物理含义(光照强度?反射率?)和有效范围
  3. VBAT 值的精度(是否直接 mV?是否需要系数换算?)
  4. 电量百分比计算方式(当前假设 3000mV=0%,4200mV=100%,可能不准确)
  5. 上报频率(当前实测是每秒一次,但可能固件更新后改变)
  6. 是否有 start/stop 命令,还是全 0 的 33 字节表示停止