hunting/application/MissionManager/README.md
2024-06-15 08:35:07 +08:00

82 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 1. 相机任务管理
  相机主业务逻辑使用状态机机制进行管理。
## 1.1. 任务状态
  任务状态是指相机启动需要执行的任务,可能是拍照 / 视频,可能是其它任务。
**例如:**
1. 移动物体侦测启动;
2. 定时启动拍照 / 录像;
3. 测试启动;
## 1.2. 状态机设计
### 1.2.1. 状态树设计图
```mermaid
stateDiagram-v2
[*] --> TopState
TopState --> PowerOff
TopState --> MSDCState
TopState --> DeviceAbnormal
TopState --> MissionState
MissionState --> 空闲
MissionState --> 存储管理
存储管理 --> EMMC
存储管理 --> SD卡
MissionState --> 媒体管理
SD卡 --> 插卡
SD卡 --> 拔卡
SD卡 --> 卡异常
MissionState --> 网络管理
网络管理 --> 联网
联网 --> 上传文件
网络管理 --> 未联网
MissionState --> 直播
MissionState --> 4G管理
4G管理 --> Sim卡初始化
4G管理 --> 注网状态
MissionState --> Upgrade
```
1. 任意状态处理命令时,不能阻塞,否则整个应用将会瘫痪无法响应任意的命令;
2. MissionState: 任务状态,在此状态下,由任务状态处理各种逻辑命令,根据逻辑命令定义,切换到相应的状态再处理数据,处理完数据会停留在当前状态,等待新的命令;
## 1.3. 任务状态获取启动
  应用程序运行后,首先需要知道主控是由于何种任务被唤醒,然后根据任务来执行相应的功能代码;
**时序图**
```mermaid
sequenceDiagram
participant MCU
participant 大核
MCU ->> MCU:待机
opt MCU上电
MCU ->> 大核:上电
activate 大核
大核 ->> 大核:系统初始化
大核 ->> 大核:启动脚本拉起APP
大核 ->> +MCU:读取启动任务
MCU -->> -大核:return
alt PIR触发
大核 ->> 大核:APP初始化
大核 ->> 大核:抓拍并保存
else 定时
大核 ->> 大核:APP初始化
大核 ->> 大核:抓拍并保存
else TEST
大核 ->> 大核:APP初始化
大核 ->> 大核:待机
end
deactivate 大核
end
```
## 1.4. MCU监视器
  MCU监视器必须由其中一个状态继承只有状态机运行之后才能处理串口命令。