From 3b7f7ba32605dc0868470a2d7e58e403ce86c662 Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Wed, 8 May 2024 21:27:56 +0800 Subject: [PATCH] Backup. --- application/MissionManager/README.md | 5 + middleware/AppManager/README.md | 113 +++++++++++++++++- .../AppManager/src/AppManager_Test.cpp | 6 +- 3 files changed, 121 insertions(+), 3 deletions(-) diff --git a/application/MissionManager/README.md b/application/MissionManager/README.md index 9e2f23b..2bf2a53 100644 --- a/application/MissionManager/README.md +++ b/application/MissionManager/README.md @@ -14,6 +14,8 @@ ## 1.2. 状态机设计 +### 1.2.1. 状态树设计图 + ```mermaid stateDiagram-v2 [*] --> TopState @@ -38,6 +40,9 @@ MissionState --> 4G管理 MissionState --> Upgrade ``` +1. 任意状态处理命令时,不能阻塞,否则整个应用将会瘫痪无法响应任意的命令; +2. MissionState: 任务状态,在此状态下,由任务状态处理各种逻辑命令,根据逻辑命令定义,切换到相应的状态再处理数据,处理完数据会停留在当前状态,等待新的命令; + ## 1.3. 任务状态获取启动   应用程序运行后,首先需要知道主控是由于何种任务被唤醒,然后根据任务来执行相应的功能代码; diff --git a/middleware/AppManager/README.md b/middleware/AppManager/README.md index 11fbc35..8433e83 100644 --- a/middleware/AppManager/README.md +++ b/middleware/AppManager/README.md @@ -1 +1,112 @@ -# 手机APP对接 \ No newline at end of file +# 1. 打猎相机APP(WiFi单机版)设计文档 + +## 1.1. 概述 + +    打猎相机手机APP是用于查看相机的实时视频,回放保存在SD卡的MP4视频文件,以及对相机进行设置/管理。 + +**备注:** 本文基于六帧探APP现有功能,最小修改量实现APP的定制开发。 + +## 1.2. APP功能详解 + +### 1.2.1. 主页 + +  主页分三大块:相机管理,本地相册,更多(APP相关)。 + +#### 1.2.1.1. 相机管理 + +* 相机管理-添加设备 + +  手机连接设备的AP热点后,自动搜索设备,并添加到设备列表。可多次添加多个设备,设备列表中可对设备进行删除。 + +* 相机管理-连接设备 + +  APP只能连接当前WiFi设备,如果当前WiFi未发现设备,提示用户正确连接设备WiFi。连接设备后,跳转到设备管理页面。 + +#### 1.2.1.2. 本地相册 + +  本地相册可查找从相机下载到手机本地的文件(视频/图片)。“紧急”分类里面显示记录仪碰撞时的文件。 + +  在打猎机的产品形态中,“紧急”分类显示PIR触发时拍摄的图片/视频。 + +#### 1.2.1.3. 更多 + +  保持不变。 + +#### 1.2.1.4. 问题列表 + +1. 如果用户未对设备出厂设置进行修改,如何区分不同的设备? +2. 如果APP面对多个出厂设备(设备信息完全一样),如何快速判断连接的是哪个设备? + +### 1.2.2. 相机连接页 + +  APP连接设备后,可手动开始/停止录像;可手动拍照。可跳转到相机文件/相机设置界面。 + +#### 1.2.2.1. 实时播放界面 + +* 实时播放rtsp视频流; +* 可手动开始/停止录像; +* 可手动拍照; + +#### 1.2.2.2. 相机文件 + +  对设备的文件进行分类显示。可下载到手机本地/删除/编辑等操作。 + +##### 1.2.2.2.1. 文件分类 + +1. PIR触发图片/视频; +2. 手动抓拍图片/视频; +3. 定时抓拍图片/视频; +4. 全部文件; + +**文件分类整改方案:** + +  目前APP支持的四种协议类型显示:循环/拍照/紧急/停车。打猎相机的分类定义为全部/PIR/手动/定时,根据协议进行一一对应回复,全部-循环,PIR-紧急,手动-拍照,定时-停车,在不修改协议的情况下,只需要修改APP的显示文字即可实现APP定制开发。 + +##### 1.2.2.2.2. 相机设置 + +  对设备的参数进行读取/修改。目前基于记录仪产品的设置内容无法满足打猎机产品需求。 + +**记录仪当前参数列表:** + +| 参数名称 | 数据类型 | 取值说明 | 备注 | +| ---- | ---- | ---- | ---- | +| 记录仪WiFi名称 | ---- | ---- | ---- | +| 记录仪WiFi密码 | ---- | ---- | ---- | +| 固件版本 | ---- | ---- | ---- | +| 格式化存储卡 | ---- | ---- | ---- | +| 恢复出厂设置 | ---- | ---- | ---- | + +**打猎机参数需求列表:** + +| 参数名称 | 数据类型 | 取值说明 | 备注 | +| ---- | ---- | ---- | ---- | +| 记录仪WiFi名称 | ---- | ---- | ---- | +| 记录仪WiFi密码 | ---- | ---- | ---- | +| 固件版本 | ---- | ---- | 仅显示 | +| ---- | ---- | ---- | ---- | +| 工作模式 | 数字 | 0:图片
1:图片+视频 | ---- | +| 连拍|数字 | 1/2/3 | 单位:P | +| 连拍间隔 | 数字 | 0~60 | 单位:s | +| 图片大小 | 数字 | 8/16/24/32/40 | 单位:M | +| 视频长度 | 数字 | 10/15 | 单位:s | +| PIR延时 | 数字 | 0~60 | 单位:s | +| 工作时间 | 时间 | 起始的时间设置
例如:起点20:00至终点6:00 | ---- | +| 循环存储 | 数字 | 0:OFF
1:ON | ---- | +| 红外灯功率 | 数字 | 0/1/2 | 低/中/高 | +| PIR灵敏度 | 数字 | 0~9 | ---- | +| 恢复出厂 | ---- | ---- | 功能 | +| 格式化SD卡 | ---- | ---- | 功能 | +| 重启 | ---- | ---- | 功能 | + +#### 1.2.2.3. 问题列表 + +1. 针对软件迭代需求,除了一些和APP业务逻辑相关的参数需要特殊处理外,是否可以通过协议来获取设备自定义的参数设置?方便设备可以随意的增加/删除设置参数。 +2. 没发现升级功能。 + +## 1.3. APP定制整改总结 + +1. “记录仪”统一修改为“相机”; +2. 本地相册-“紧急”分类,改为“PIR”; +3. APP连接设备后,自动录像,改为默认不录像,可手动录像; +4. APP上的“循环”改成“全部”,“拍照”改成“手动”,“紧急”改成“PIR”,“停车”改成“定时”; +5. 相机设置需要实现设备自定义设置项功能; \ No newline at end of file diff --git a/test/middleware/AppManager/src/AppManager_Test.cpp b/test/middleware/AppManager/src/AppManager_Test.cpp index bf15ed6..9776689 100644 --- a/test/middleware/AppManager/src/AppManager_Test.cpp +++ b/test/middleware/AppManager/src/AppManager_Test.cpp @@ -70,10 +70,12 @@ TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_Demo0) std::this_thread::sleep_for(std::chrono::milliseconds(2000)); IAppManager::GetInstance()->UnInit(); } -// ../output_files/test/bin/AppManagerTest --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_Demo -TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_Demo) +// ../output_files/test/bin/AppManagerTest --gtest_filter=AppManagerTest.INTEGRATION_AppManager_EXAMPLE_AUTO_Demo +TEST_F(AppManagerTest, INTEGRATION_AppManager_EXAMPLE_AUTO_Demo) { + std::shared_ptr monitor = AppManagerTestTool::MakeMonitorMock(); IAppManager::GetInstance()->Init(mAppParam); + IAppManager::GetInstance()->SetAppMonitor(monitor); std::this_thread::sleep_for(std::chrono::milliseconds(100)); MockGetProductInfo(); std::this_thread::sleep_for(std::chrono::milliseconds(1000));