docs: add core business event IO matrix to architecture design document
This commit is contained in:
@@ -262,3 +262,23 @@ flowchart TD
|
||||
|
||||
%% 显示与控制响应
|
||||
StateMenu -->|Redraw == 1| LcdPaint[Truly AMOLED 屏幕局部像素重绘]
|
||||
StateSub -->|Redraw == 1| LcdPaint
|
||||
LocalAlarm -->|Redraw == 1| LcdPaint
|
||||
EmitSOS -->|Redraw == 1| LcdPaint
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 核心业务事件输入输出 (I/O) 架构明细表
|
||||
|
||||
为实现绝对清晰的软硬件交互链路,以下为手环核心业务事件的端到端输入、输出及流转逻辑汇总:
|
||||
|
||||
### 6.1 核心事件 I/O 矩阵
|
||||
|
||||
| 事件名称 | 输入源 (触发条件与参数) | 状态机判定逻辑 (当前状态与条件) | 输出结果 & 动作执行 (显示、灯效、马达与无线) |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| **按键操作事件**<br>`KEY_EVENT` | **源**:P0.1~P0.5 下降沿中断。<br>**参数**:`KEY_UP`、`KEY_DOWN`、`KEY_CONFIRM` (短按/长按)。 | **当前状态**:`STATE_CLOCK` / `STATE_MENU` 等。<br>**条件**:在待机下长按确认键 3 秒进入菜单;在菜单下短按 ▲/▼ 键翻页。 | 1. **显示**:置 `Redraw = 1`,LCD 刷新切换对应页面;<br>2. **触觉**:发出 50ms 极短振动作按键反馈。 |
|
||||
| **主动求救事件**<br>`SOS_ACTIVE_EVENT` | **源**:上部任意 SOS 按键按下(短按或长按)。 | **当前状态**:除已报警外的任意业务状态。<br>**条件**:无视当前状态,拥有最高抢占优先级。 | 1. **状态**:切入 `STATE_SOS_EMITTED`;<br>2. **无线**:通过 LR690L 周期性(2s)发射手环 Factory ID 及 `0x08` (SOS) 数据包;<br>3. **显示**:LCD 闪烁呈现超大警灯与分行 `SOS EMIS` 字样;<br>4. **灯效**:WS2812B 红色高速交替闪烁(50ms周期);<br>5. **马达**:持续间歇长振(振 1000ms,停 200ms)。 |
|
||||
| **无线对码捕获事件**<br>`RF_PAIR_RECV_EVENT` | **源**:LR690L 接收 433MHz 对码载波包。<br>**参数**:24-bit 物理地址 + 4-bit 传感器类型数据码。 | **当前状态**:`STATE_PAIR_SEARCH` (搜索对码中)。<br>**条件**:捕获到合法 EV1527 帧。 | 1. **状态**:切换至 `STATE_PAIR_CONFIRM` (确认微调);<br>2. **显示**:只读显示自动识别的传感器名称(如 `PORTE`)、大图标,以及超大 `[ 01 ]` 序号选框;<br>3. **马达**:发出 300ms 短振提醒成功捕获。 |
|
||||
| **传感器入侵警报事件**<br>`RF_ALARM_RECV_EVENT` | **源**:LR690L 接收 433MHz 警报载波包。<br>**参数**:传感器地址 + 4-bit 状态码。 | **当前状态**:`STATE_CLOCK` (待机)。<br>**条件**:1. 地址与 Flash 数据库匹配;<br>2. 该防区属于 ZONE 0 (24h) 或处于已布防状态下的 ZONE 1。 | 1. **状态**:切入 `STATE_ALARMING`;<br>2. **显示**:LCD 亮起 4px 闪烁红边框与 64x64px 对应传感器报警图标,显示 `PORTE 01 INTRUSION!`;<br>3. **灯效**:WS2812B 闪烁对应传感器防区色彩(500ms闪烁);<br>4. **马达**:根据传感器类型,输出对应的间歇振动波形(如门磁短振 1 次)。 |
|
||||
| **系统自动休眠事件**<br>`AUTO_SLEEP_EVENT` | **源**:软件时钟 `inactivity_timer >= 1000` (10s)。 | **当前状态**:`STATE_CLOCK` / `STATE_MENU` / `STATE_SET_TIME` 等非报警状态。 | 1. **状态**:切入 `STATE_SLEEP`;<br>2. **硬件**:拉低 `SGM_CTRL = 0` 切断 AMOLED PMIC 供电;<br>3. **电源**:使能 P0 口电平中断及 INT2,挂起 CPU 进入 Power-Down 极低功耗模式。 |
|
||||
|
||||
Reference in New Issue
Block a user