82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
 | 
						||
# 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监视器必须由其中一个状态继承,只有状态机运行之后才能处理串口命令。 |