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
2.6 KiB
2.6 KiB
协议简述补充解析
来源:仓库根目录 协议简述(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.js的parseVendorStatus()增加 17 字节解析:提取 7 个 PD 值 + VBAT,校验 XORconnection.js的handleValueChange()处理type === 'adc':从 VBAT 计算电量百分比,PD 数据通过status事件传递
仍待确认
- PD1-PD7 与面部区域的对应关系
- PD 值的物理含义(光照强度?反射率?)和有效范围
- VBAT 值的精度(是否直接 mV?是否需要系数换算?)
- 电量百分比计算方式(当前假设 3000mV=0%,4200mV=100%,可能不准确)
- 上报频率(当前实测是每秒一次,但可能固件更新后改变)
- 是否有 start/stop 命令,还是全 0 的 33 字节表示停止