docs: architecture.md + protocol.md 互证标注与 SUOTA 章节

This commit is contained in:
agent committed 2026-07-24 11:27:39 +00:00
1 parent 3b92c382fc
commit bed8973551
2 files changed
+69 -2

No files matched your search

+21 -2
View File
@@ -1,7 +1,10 @@
# BLE 协议规范(4.2寸墨水屏设备 · 实现标准)
> 状态:**单一事实来源**。实现 `src/ppclock` 以本文件为准。
> 证据来源:`analysis/web/protocol-raw.md`(Web JS),APK/固件互证结果以"互证"标注;未互证项以 ⚠ 标注。
> 证据来源:`analysis/web/protocol-raw.md`(Web JS)+ `analysis/apk/apk-analysis.md`(APK 反编译互证)。
> **互证结论**:GATT UUID、NRF- 前缀、240B 分块、ff/00 平面码、dd 时间帧、e2 收尾、e100/e101/e102 模式族、倒计时 04/0n/990/ff00/ffff 帧、6 种抖动(Bayer 矩阵逐值一致)、红色判定、灰度系数 —— 三线一致。
> Web 独有(APK 未实现):WiFi 配置、EFEF 取设备 ID、2300/2301、14/15、e3/e4/e5、E6、FB、e901/EA000、EA0x —— 本规范以 Web 证据为准。
> APK 独有:`$IMG(0,0)`、8000/8001 图像起始帧(属扫地/轻舞固件家族分叉,本设备不适用)。
## 1. 设备与 GATT
@@ -134,11 +137,27 @@ ASCII UTF-8 直发:`WIFI_SSID:{ssid};WIFI_PASS:{pass};CITY:{城市代码}`(
| 云依赖 | 本地化方案 |
|---|---|
| key_generator.php 激活码 | 分析固件校验逻辑(见 docs/firmware-analysis.md),本地实现算法或固件补丁绕过 ⚠待固件分析 |
| file_down.php 固件下载 | 固件已本地存档 app/ |
| file_down.php 固件下载 | 固件已本地存档 app/;SUOTA 由 `ppclock ota` 实现(§9) |
| qbsg.top 自助激活 | 同上激活方案 |
| 天气(CITY 代码) | 本地化=不依赖天气;CLI 提供 `wifi-config` 透传 |
| qrcodejs CDN(模板用) | CLI 用本地 qrcode 库 |
## 9. SUOTA 固件升级(证据:APK §e)
| 项 | 值 |
|---|---|
| Service | `0000fef5-0000-1000-8000-00805f9b34fb` |
| SERV_STATUS(notify) | `64b4e8b5-0de5-401b-a21d-acc8db3b913a` |
| MEM_DEV | `8082caa8-41a6-4021-91c6-56f9b954cc34` |
| GPIO_MAP | `724249f0-5ec3-4b5f-8804-42345af08651` |
| PATCH_DATA(自定义映射) | `457871e8-d516-4ca1-9116-57d0b17b9cb2` |
| PATCH_LEN(自定义映射) | `9d84b9a3-000c-49d8-9183-855b673fda31` |
流程:MEM_DEV←`{00,00,00,13}`(SPI Flash)→ GPIO_MAP←`{00,00,06,05}` →
镜像+尾 1B XOR 校验 → 240B 块(PATCH_LEN 2B LE + 20B 无响应写块 + 等 SERV_STATUS==2)→
MEM_DEV←`{00,00,00,FE}` → 等 ==2 → `{00,00,00,FD}` 重启。
状态码:2=成功,3-9/17-22/0xFFFF/0xFFFE=各类错误(见 ota.py STATUS_ERRORS)。
## 8. 测试向量(实现前必须写入 tests/)
> 来源:analysis/web/protocol-raw.md 各节;标 ⚠ 的待 APK/固件互证确认。