1、修复CBR0寿命与31天记录落盘失败(比较缓冲128→256)
2、APP换灯直接写DP3,DP4本版忽略;上电用restore灌RAM;读/全量打包权威剩余秒数
This commit is contained in:
+18
-14
@@ -7,7 +7,7 @@
|
||||
| 工程 | `电子开关-加热灯罩_soc_JieLi-JL7016` |
|
||||
| 产品码 | ProdtCode=`CBR0`,productCode=`PRCBR0` |
|
||||
| 协议 | 见宝 SOC 55AA,V1.0.0 |
|
||||
| 文档版本 | V1.0.0 |
|
||||
| 文档版本 | V1.0.1 |
|
||||
| 日期 | 2026.09.08 |
|
||||
| 作者 | cyWu |
|
||||
| 读者 | WorkBuddy / 固件开发 |
|
||||
@@ -16,6 +16,8 @@
|
||||
| 灯效参考 | `D:\Jianbao\Project\产品\宠物\门夹弹力绳\门夹弹力绳_soc_JieLi-JL7016`(红绿双通道、OTA 红绿交替) |
|
||||
| 加热垫规格 | `电子开关-加热垫_固件需求规格书.md` V1.0.1(同板行为以加热垫为准,本页只写灯罩差量与 DP 重编号) |
|
||||
|
||||
> **V1.0.1(2026-09-08):** DP4 灯泡复位本版写忽略。APP 换灯直接写 DP3(例如 2,592,000);出厂复位 DP26 仍把寿命拉回额定值。
|
||||
>
|
||||
> **V1.0.0(2026-09-08):** 首版共同理解。硬件、过零继电器、短按、联动、定时开停、31 天运行记录、故障码 2、出厂复位 **与加热垫相同**。差量:灯泡剩余寿命(额定 2,592,000 秒,按实际吸合每秒减 1,到 0 报粘性告警 1,灯仍可亮);DP9 当前温度改为 **WO**;定时配置 **11 字节且无模式字节**(使能/类型/星期/开始结束时分,Byte7–10 预留);DP2 总工作时长本版恒 0。
|
||||
|
||||
本文是 **已拍板的共同理解**,不是草稿。实现时以本文为准;DP 表以 `dp_definition.json` + 本文第 10.2 / 11.1 / 13.1 / 13.2 / 15 章为准。与加热垫冲突时:**引脚、过零、仲裁、联动回差跟加热垫;DP 号、定时 11 字节、寿命跟本文。**
|
||||
@@ -30,7 +32,7 @@
|
||||
4. **不要抄风扇的 PWM 风扇 / 数码管 / AHT20 / 通风强力。** 执行器是继电器 + 过零;温度来自扫描或 DP9,不是本机传感器。
|
||||
5. **`MAX_PACKAGE_LEN` 必须为 512。** 生成值 128 装不下 DP20 `run_record`(124B),11×7 定时 + 寿命 DP 全量一包也会超过 256。禁止再生成回 128。
|
||||
6. **DP9 `current_temp` 为 WO。** 生成 JSON 是 RO,必须改成 WO。已连接时服务器下发;设备不上报;断连扫描到的温度不填 DP9。
|
||||
7. **本版写忽略:** DP1 温控开关、DP2 总工作时长(上报恒 0)、DP5 温控时间、DP6 模式、DP7/8 最低最高温度。DP21 心跳忽略。
|
||||
7. **本版写忽略:** DP1 温控开关、DP2 总工作时长(上报恒 0)、**DP4 灯泡复位**、DP5 温控时间、DP6 模式、DP7/8 最低最高温度。DP21 心跳忽略。APP 换灯请写 DP3。
|
||||
8. 每个模块必须能用 `board_pin.h` 的 `BOARD_xxx_ENABLE` **单独关掉** 仍能编过、能配网上报。寿命用 `BOARD_LIGHT_LIFE_ENABLE`。
|
||||
9. 日志全部 **英文**。中文只出现在注释和本文。
|
||||
10. 编码风格对齐加热垫 + 工程师规范:文件小写+下划线,`g_` / `s_` 前缀,枚举 `Pascal_t`,接口 `xxx_init` / `xxx_run` 或 tick / `xxx_get_status`。
|
||||
@@ -291,6 +293,7 @@ OTA 进行中:忽略短按和再次 5s/12s。配对进行中:短按仍可切
|
||||
|---|---|
|
||||
| 1 温控开关 | 写忽略 |
|
||||
| 2 灯泡总工作时长 | 写忽略,**上报恒 0**(不累计) |
|
||||
| 4 灯泡复位 | 写忽略。APP 换灯直接写 DP3 |
|
||||
| 5 温控时间 | 写忽略 |
|
||||
| 6 模式 | 写忽略 |
|
||||
| 7 / 8 最低最高温度 | 写忽略(阈值只在 DP11 联动 20B 里) |
|
||||
@@ -476,7 +479,7 @@ VM magic 必须用灯罩自己的值(建议 `0xCB00`),**禁止**复用加
|
||||
|
||||
`BOARD_RUNREC_ENABLE=0`:不累加、DP20 报全 0。
|
||||
|
||||
### 13.2 灯泡剩余寿命(DP2 / DP3 / DP4 / DP25)
|
||||
### 13.2 灯泡剩余寿命(DP2 / DP3 / DP25;DP4 不用)
|
||||
|
||||
额定工时,不是日历:
|
||||
|
||||
@@ -491,12 +494,12 @@ VM magic 必须用灯罩自己的值(建议 `0xCB00`),**禁止**复用加
|
||||
| 到期后加热 | **不互锁**,开停仍走第 7 / 10 / 11 / 12 章 |
|
||||
| 告警推导 | `remain == 0` → `alarm_code = 1`,否则 `0`。`alarm_en` 不屏蔽 |
|
||||
| DP2 | 写忽略,上报恒 0 |
|
||||
| DP3 写 | **立刻生效**,范围 0~4,294,967,295,不封顶 |
|
||||
| DP4 写 1 | 剩余寿命 = 2,592,000;写 0 无动作;WO 不上报 |
|
||||
| DP3 写 | **立刻生效**,范围 0~4,294,967,295,不封顶。**APP 换灯:直接写 DP3=2,592,000** |
|
||||
| DP4 | 本版 **写忽略**,不上报 |
|
||||
| 按键 5s 清绑定 | 不碰寿命 |
|
||||
| 出厂复位 DP26 | 剩余寿命回到 2,592,000,告警 0(与第一次开机相同) |
|
||||
|
||||
**边沿副作用(必须同一套):** APP 写 DP3、DP4=1、扣到 0、出厂复位:
|
||||
**边沿副作用(必须同一套):** APP 写 DP3、扣到 0、出厂复位:
|
||||
|
||||
1. 改 `gDevData.lighe_remain_time`
|
||||
2. 按值置/清 `alarm_code`
|
||||
@@ -508,7 +511,7 @@ VM magic 必须用灯罩自己的值(建议 `0xCB00`),**禁止**复用加
|
||||
**DP3 上报节流:**
|
||||
|
||||
- 实际吸合且剩余 >0:距上次 DP3 上报满 **墙上 60 秒** 才再走变化上报
|
||||
- 到期、DP4 复位、APP 写 DP3、读请求、10 分钟全量:**立刻带上 DP3**
|
||||
- 到期、APP 写 DP3、读请求、10 分钟全量:**立刻带上 DP3**
|
||||
- 其它 DP 仍 2 秒变化防抖;DP25 随告警边沿立刻报
|
||||
|
||||
`BOARD_LIGHT_LIFE_ENABLE=0`:不扣秒、不因寿命置告警;DP3 若 VM 里有值仍上报,否则 0。
|
||||
@@ -536,7 +539,7 @@ VM magic 必须用灯罩自己的值(建议 `0xCB00`),**禁止**复用加
|
||||
| 1 | temp_control_switch | 本版写忽略 |
|
||||
| 2 | light_work_time | 本版写忽略,上报恒 0 |
|
||||
| 3 | lighe_remain_time | 第 13.2 节。RW;固件扣秒;APP 写立刻生效 |
|
||||
| 4 | light_reset | **WO**。写 1 把 DP3 置 2,592,000;不上报 |
|
||||
| 4 | light_reset | **WO,本版写忽略。** APP 换灯直接写 DP3 |
|
||||
| 5 | temp_control_time | 本版写忽略 |
|
||||
| 6 | mode | 本版写忽略 |
|
||||
| 7 / 8 | min_temp / max_temp | 本版写忽略 |
|
||||
@@ -612,7 +615,7 @@ apps/usr_app/
|
||||
- [ ] 5s 配对,APP 能写 DP0 开关灯泡(过零后灯和继电器一致,DP0 报实际态)
|
||||
- [ ] 短按同步上报 DP0
|
||||
- [ ] VM:改开关后断电,重新上电按上次开关恢复(开则等过零再吸合)
|
||||
- [ ] DP1 / DP2 / DP5–8 写忽略;DP2 上报 0
|
||||
- [ ] DP1 / DP2 / DP4 / DP5–8 写忽略;DP2 上报 0
|
||||
- [ ] DP9 WO:APP/服务器能写下当前温度;设备全量上报 **不含** DP9
|
||||
- [ ] 定时 7 组 11 字节 + `time_en` 能存;`BOARD_TIMER_ENABLE=0` 时不执行
|
||||
- [ ] `MAX_PACKAGE_LEN=512`,APP 能读完整 124B 运行记录(本阶段记录可仍为 0)
|
||||
@@ -634,8 +637,8 @@ apps/usr_app/
|
||||
- [ ] 过零超时 `fault_code=2`(DP23)
|
||||
- [ ] 仲裁表第 12 章逐条用例(与加热垫相同,DP 号按本文)
|
||||
- [ ] **寿命:** 实际吸合才扣;到 0 停在 0,`alarm_code=1`,灯仍可亮
|
||||
- [ ] **DP4=1:** 剩余寿命回到 2,592,000,告警清 0,立刻上报
|
||||
- [ ] **APP 写 DP3:** 任意 uint32 生效;>0 清告警,=0 置告警;立刻落盘
|
||||
- [ ] **DP4 写忽略:** 写 1 不改寿命
|
||||
- [ ] **APP 写 DP3:** 任意 uint32 生效;写 2,592,000 即换灯;>0 清告警,=0 置告警;立刻落盘
|
||||
- [ ] **5s 清绑定不改寿命**
|
||||
- [ ] 点灯时 DP3 最多 1 分钟报一次;到期/复位/写 DP3 立刻报
|
||||
- [ ] 掉电再上电:未到期接着扣;已到期仍为 0 且告警 1
|
||||
@@ -645,7 +648,7 @@ apps/usr_app/
|
||||
与加热垫第 17 章用例 1–9 相同,把「加热」读成「灯泡」、DP6 读成 **DP9**。额外:
|
||||
|
||||
10. 剩余寿命置 5,实际吸合 5 秒 → DP3=0、DP25=1,继电器保持开(若请求仍为开)。
|
||||
11. 用例 10 之后 DP4 写 1 → DP3=2,592,000、DP25=0。
|
||||
11. 用例 10 之后 APP 写 DP3=2,592,000 → DP25=0。写 DP4=1 **不得**改寿命。
|
||||
12. APP 写 DP3=100 后立刻拔电再上电 → 仍约 100(允许未满边沿的秒误差,不允许回到 2,592,000)。
|
||||
13. 定时 11 字节:Byte1=1(每天)、Byte3–6=时分,Byte0=1 → 到点开;若误用加热垫偏移(Byte2 当类型)则本条失败。
|
||||
|
||||
@@ -709,6 +712,7 @@ apps/usr_app/
|
||||
| 生成协议再导回 DP9=RO / LEN=128 | 禁止;以本文 + 改过的源码为准 |
|
||||
| 把加热垫 8 字节定时偏移用到灯罩 | 禁止。Byte1 是类型不是模式 |
|
||||
| 到期强制关灯 | 禁止。只告警 |
|
||||
| 用 DP4 做换灯 | 禁止。本版 DP4 写忽略;APP 换灯直接写 DP3 |
|
||||
| 每秒写一次寿命到 Flash | 禁止。平时 600s,边沿立刻写 |
|
||||
| 点灯时每 2 秒报 DP3 | 禁止。最多 60s 一次(边沿除外) |
|
||||
| 改 `lighe_remain_time` 拼写 | 禁止 |
|
||||
@@ -734,7 +738,7 @@ apps/usr_app/
|
||||
6. P0:继电器 + 灯 + 按键验收。
|
||||
7. P1:VM 恢复开关、忽略 DP、定时只存、首次 DP3=2,592,000。
|
||||
8. P2:扫描/联动/定时引擎/运行记录/仲裁用例。
|
||||
9. 新建 `app_light_life`:扣秒、DP4、写 DP3、告警、60s 节流、边沿立刻落盘。
|
||||
9. 新建 `app_light_life`:扣秒、写 DP3、告警、60s 节流、边沿立刻落盘。DP4 写忽略。
|
||||
|
||||
每一步都保持对应 `BOARD_xxx_ENABLE` 可关。提交前对照第 0.1 节:一个模块一个 `s_xxx`,注释写为什么,不要排障日记。
|
||||
|
||||
@@ -748,7 +752,7 @@ apps/usr_app/
|
||||
| 1 温控开关 | 1 | 忽略 |
|
||||
| — | 2 总工作时长 | 新增,恒 0 |
|
||||
| — | 3 剩余寿命 | 新增 |
|
||||
| — | 4 灯泡复位 | 新增,WO |
|
||||
| — | 4 灯泡复位 | 新增,WO,**本版忽略** |
|
||||
| 2 温控时间 | 5 | 忽略 |
|
||||
| 3 模式 | 6 | 忽略 |
|
||||
| 4 / 5 最低最高温度 | 7 / 8 | 忽略 |
|
||||
|
||||
Reference in New Issue
Block a user