From 59fccf3ad1f70d947401d017b16e74673ae2e35c Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Thu, 23 May 2024 14:22:40 +0800 Subject: [PATCH] Backup. --- .../src/MissionManagerMakePtr.cpp | 5 ++ .../src/PirTrggeredMissionState.cpp | 37 ++++++++++++ .../src/PirTriggeredMissionState.h | 31 ++++++++++ doc/develop_standard.md | 4 ++ doc/git_guide.md | 60 +++++++++++++++++++ doc/git_usage.md | 43 ------------- doc/sdk_build_guide.md | 6 +- middleware/AppManager/README.md | 8 ++- .../src_mock/McuManager_Mock_Test.cpp | 13 ++++ .../tool/src/MissionManagerMakePtrTest.cpp | 5 ++ .../tool/src/PirTriggeredMissionStateMock.cpp | 16 +++++ .../tool/src/PirTriggeredMissionStateMock.h | 33 ++++++++++ 12 files changed, 216 insertions(+), 45 deletions(-) create mode 100644 application/MissionManager/src/PirTrggeredMissionState.cpp create mode 100644 application/MissionManager/src/PirTriggeredMissionState.h create mode 100644 doc/git_guide.md delete mode 100644 doc/git_usage.md create mode 100644 test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp create mode 100644 test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h diff --git a/application/MissionManager/src/MissionManagerMakePtr.cpp b/application/MissionManager/src/MissionManagerMakePtr.cpp index 16bfb3e..1927336 100644 --- a/application/MissionManager/src/MissionManagerMakePtr.cpp +++ b/application/MissionManager/src/MissionManagerMakePtr.cpp @@ -16,6 +16,7 @@ #include "ILog.h" #include "MissionManager.h" #include "OnMissionState.h" +#include "PirTriggeredMissionState.h" #include "SdCardHandleState.h" #include "StorageHandleState.h" #include "TestMissionState.h" @@ -67,6 +68,10 @@ std::shared_ptr MissionManagerMakePtr::CreateMissionState(const IpcMissio LogInfo("MissionManagerMakePtr::CreateMissionState\n"); std::shared_ptr state; switch (mission) { + case IpcMission::PIR_TRIGGERED: + LogInfo("Create PirTriggeredMissionState.\n"); + state = std::make_shared(); + break; case IpcMission::TEST: LogInfo("Create TestMissionState.\n"); state = std::make_shared(); diff --git a/application/MissionManager/src/PirTrggeredMissionState.cpp b/application/MissionManager/src/PirTrggeredMissionState.cpp new file mode 100644 index 0000000..7f2c287 --- /dev/null +++ b/application/MissionManager/src/PirTrggeredMissionState.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2023 Fancy Code. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "PirTriggeredMissionState.h" +#include "ILog.h" +#include "IStorageManager.h" +#include "MissionStateMachine.h" +PirTriggeredMissionState::PirTriggeredMissionState() : MissionState("PirTriggeredMissionState") +{ + // mEventHandle[InternalStateEvent::ANY_STATE_SD_STATUS_PERORIED] = + // std::bind(&PirTriggeredMissionState::SdCardEventReportSendToApp, this, _1); +} +void PirTriggeredMissionState::GoInState() +{ + MissionState::GoInState(); + LogInfo(" ========== PirTriggeredMissionState::GoInState.\n"); +} +void PirTriggeredMissionState::GoOutState() +{ + MissionState::GoOutState(); + LogInfo(" ========== PirTriggeredMissionState::GoOutState.\n"); +} +bool PirTriggeredMissionState::SdCardEventReportSendToApp(VStateMachineData *msg) +{ + return EXECUTED; +} \ No newline at end of file diff --git a/application/MissionManager/src/PirTriggeredMissionState.h b/application/MissionManager/src/PirTriggeredMissionState.h new file mode 100644 index 0000000..6734768 --- /dev/null +++ b/application/MissionManager/src/PirTriggeredMissionState.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2023 Fancy Code. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef PIR_TRIGGERED_MISSION_STATE_H +#define PIR_TRIGGERED_MISSION_STATE_H +#include "IStateMachine.h" +#include "IStorageManager.h" +#include "MissionState.h" +class PirTriggeredMissionState : public MissionState +{ +public: + PirTriggeredMissionState(); + virtual ~PirTriggeredMissionState() = default; + void GoInState() override; + void GoOutState() override; + +private: + bool SdCardEventReportSendToApp(VStateMachineData *msg); +}; +#endif \ No newline at end of file diff --git a/doc/develop_standard.md b/doc/develop_standard.md index 0f54781..e820b20 100644 --- a/doc/develop_standard.md +++ b/doc/develop_standard.md @@ -72,3 +72,7 @@ typedef struct app_get_product_info std::string mSp; } AppGetProductInfo; ``` + +### 1.1.5. 文件命名 + +* 文件名必须使用驼峰命名法,且首字母大写; diff --git a/doc/git_guide.md b/doc/git_guide.md new file mode 100644 index 0000000..6afb8c6 --- /dev/null +++ b/doc/git_guide.md @@ -0,0 +1,60 @@ +# 1. git使用手册 + +## 1.1. 概述 + +  git是分布式版本控制系统,在多人开发中,git可以很好的管理代码的版本。 + +## 1.2. 源码托管服务器 + +  github和gitlab还有gitee(国产)都是开源的代码托管服务器,可以用来管理源码。 + +## 1.3. git安装 + +## 1.4. git分支管理 + +### 1.4.1. git创建本地分支 + +* 基于远端分支创建一个本地分支,同时新建一个对应的远端分支: + +  当主干发生较大变化,例如:原厂更新sdk时,需要新建分支,划分界限。 + +``` +$ git branch -a +* master + remotes/origin/HEAD -> origin/master + remotes/origin/app_test + remotes/origin/master +$ git checkout -b master-sdk-202405 origin/master +M ipc-sdk +Branch 'master-sdk-202405' set up to track remote branch 'master' from 'origin'. +Switched to a new branch 'master-sdk-202405' +$ git branch -a + master +* master-sdk-202405 + remotes/origin/HEAD -> origin/master + remotes/origin/app_test + remotes/origin/master +$ git push origin master-sdk-202405:sdk-202405 +Enumerating objects: 3, done. +Counting objects: 100% (3/3), done. +Delta compression using up to 8 threads +Compressing objects: 100% (2/2), done. +Writing objects: 100% (2/2), 250 bytes | 250.00 KiB/s, done. +Total 2 (delta 1), reused 0 (delta 0) +remote: Powered by GITEE.COM [GNK-6.4] +remote: Create a pull request for 'sdk-202405' on Gitee by visiting: +remote: https://gitee.com/shenzhen-jiuyilian/ipc-rk1106/pull/new/shenzhen-jiuyilian:sdk-202405...shenzhen-jiuyilian:master +To gitee.com:shenzhen-jiuyilian/ipc-rk1106.git + * [new branch] master-sdk-202405 -> sdk-202405 +$ git branch -a + master +* master-sdk-202405 + remotes/origin/HEAD -> origin/master + remotes/origin/app_test + remotes/origin/master + remotes/origin/sdk-202405 +``` + +## 1.5. 存疑 + +* 不同的分支之间如何同步某个文件? diff --git a/doc/git_usage.md b/doc/git_usage.md deleted file mode 100644 index 1f0d246..0000000 --- a/doc/git_usage.md +++ /dev/null @@ -1,43 +0,0 @@ -# 1. **关于使用git爬取、上传文件,以及创建本地分支的方法总结** - -## 1.1. 背景 -为了使一个有多人的开发团队协作的项目拥有统一的规范管理,不至于杂乱无章,一个可用、好用的代码管理工具的引入是必要的。目前为止,笔者所接触到较多的两大代码管理工具分别是:gitee和github,本篇规范着重介绍gitee。与任何工具一样,相使用好gitee就必然需要按照相对应的方法和步骤。本规范用于介绍在gitee上进行文件获取、上传,以及本地分支的创建和提交的方法,以及以上步骤遇到问题时的解决方法。 - -## 1.2. 操作方法/步骤及其解析 - -* 爬取文件:git clone (所爬取的地址) -例如:git clone https://gitee.com/xxxxxx/git-test.git -tips:当该指令的使用者在某个终端首次使用该指令时,会需要输入处于该仓库中的用户的账号密码,才允许对仓库中的内容进行获取,其表现如下: -~~~ -xxxxx@ubuntu:~/2$ git clone https://gitee.com/xxxxxx/git-test.git -正克隆到 'git-test'... -Username for 'https://gitee.com': xxxxxx -Password for 'https://xxxxx@gitee.com': -remote: Enumerating objects: 13, done. -remote: Counting objects: 100% (13/13), done. -remote: Compressing objects: 100% (10/10), done. -remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 0 -展开对象中: 100% (13/13), 4.31 KiB | 1.08 MiB/s, 完成. -~~~ - -* 提交文件: -核心步骤: -> cd xxx(所需提交的文件的目录) -> git add xxx(将需要提交的内容传至缓存区,xxx所需提交的文件的名字) -> git commit -m "xxxxxx"(本次提交内容的行为的备注信息,在一切上传行为中,该步骤都不可省略) -> git pull origin master(将服务器中的最新内容下拉,与本地的内容进行比较,此处的master可以替换为读者希望下拉到的分支而非固定的master;请注意,直至下一步之前,该步骤是上传前最后的纠错机会,请务必确保无误后再操作下一步) -> git push origin master(将缓存区的内容上传至服务器,此处的master可以替换为读者希望上传到的分支而非固定的master) -**tips:以上内容仅为上传文件的核心步骤,一般而言,为了规范化流程以减少出现错误的概率,笔者更建议在核心步骤前或后添加以下步骤:** -> git status .(此步骤用以检查区分本地的代码与gitee服务器中的代码的差别,即与服务器中的相比,读者新增加了哪些操作) -> xxx(核心步骤)xxx -> git log(该步骤可以将操作者所进行过的步骤以log的形式列出来,以便操作者找到关键的信息,该步骤建议无论读者完成任何大型操作之后都进行一次,以便检查自己的操作有无失误) - -* 创建并提交本地分支 -> git branch -a(显示所有的主、分支并指明操作者所在的分支) -> git checkout -b xxxxx origin/master(切换到一个指定名字的分支中,如果该分支不存在,则在主支之外创建名字为“xxxxx”的本地分支并切换到该分支) -> git branch -a(显示所有的主、分支并指明操作者所在的分支,本次操作是处于谨慎考虑,再次检查自己所在的分支,以免操作失误) -> git add xxx.txt(将需要提交的内容传至缓存区,xxx所需提交的文件的名字该步骤只是一个泛指,指代一切希望上传到新创建的分区中的内容,其在实际场景中极不可能只有一步,由于git不允许将没有内容的分支上传到服务器,所以该步骤不可省略) -> git commit -m "fenzhi test.("本次提交内容的行为的备注信息,在一切上传行为中,该步骤都不可省略) -> git pull origin KAIFA(将服务器中的最新内容下拉,与本地的内容进行比较,此处的KAIFA可以替换为读者希望下拉到的分支;请注意,直至下一步之前,该步骤是上传前最后的纠错机会,请务必确保无误后再操作下一步) -> git push origin xxxxxx:KAIFA(将缓存区的内容上传至服务器,此处的KAIFA可以替换为读者希望上传到的分支,xxxxx为操作者新创建的本地分区) -> git log(该步骤可以将操作者所进行过的步骤以log的形式列出来,以便操作者找到关键的信息,该步骤建议无论读者完成任何大型操作之后都进行一次,以便检查自己的操作有无失误) \ No newline at end of file diff --git a/doc/sdk_build_guide.md b/doc/sdk_build_guide.md index 9b1f4de..cecfbd8 100644 --- a/doc/sdk_build_guide.md +++ b/doc/sdk_build_guide.md @@ -2,4 +2,8 @@ ## 1.1. 概述 -  SDK使用cmake构建,把分层解耦合的独立模块编译成静态库,应用程序根据依赖关系进行自动关联链接。 \ No newline at end of file +  SDK使用cmake构建,把分层解耦合的独立模块编译成静态库,应用程序根据依赖关系进行自动关联链接。 + +## 1.2. 启用/禁用功能模块 + +  根据不同的产品需求来启用/禁用功能模块,避免编译不需要的模块。 diff --git a/middleware/AppManager/README.md b/middleware/AppManager/README.md index b9c3dee..e3c6592 100644 --- a/middleware/AppManager/README.md +++ b/middleware/AppManager/README.md @@ -49,7 +49,9 @@ #### 1.2.1.4. 问题列表 1. 如果用户未对设备出厂设置进行修改,如何区分不同的设备? +答:通过wifi名称进行区分。 2. 如果APP面对多个出厂设备(设备信息完全一样),如何快速判断连接的是哪个设备? +答:音频互动。滴一声表示链接成功。 ### 1.2.2. 相机连接页 @@ -131,14 +133,18 @@ #### 1.2.2.3. 问题列表 1. 针对软件迭代需求,除了一些和APP业务逻辑相关的参数需要特殊处理外,是否可以通过协议来获取设备自定义的参数设置?方便设备可以随意的增加/删除设置参数。 +答:已经支持,看协议能力。 2. 没发现升级功能。 +答:公版APP不支持升级功能。 ## 1.3. APP定制整改总结 1. “记录仪”统一修改为“相机”; +答:公版无法修改,需要定制。 2. 本地相册-“紧急”分类,改为“PIR”; 3. APP连接设备后,自动录像,改为默认不录像,可手动录像; -4. APP上的“循环”改成“全部”,“拍照”改成“手动”,“紧急”改成“PIR”,“停车”改成“定时”; +答:设备返回非记录仪即可,见能力集。 +4. APP上的“循环”改成“全部”,“拍照”改成“手动”,“紧急”改成“PIR”,“停车”改成“定时”,**全部包括手动/PIR/定时**; 5. 相机设置需要实现设备自定义设置项功能; ## 1.4. 设置界面动态渲染方案设计 diff --git a/test/application/HuntingCamera/src_mock/McuManager_Mock_Test.cpp b/test/application/HuntingCamera/src_mock/McuManager_Mock_Test.cpp index 14ab5aa..5c71b95 100644 --- a/test/application/HuntingCamera/src_mock/McuManager_Mock_Test.cpp +++ b/test/application/HuntingCamera/src_mock/McuManager_Mock_Test.cpp @@ -51,4 +51,17 @@ TEST_F(HuntingCameraTest, HS_INTEGRATION_HunttingCamera_EXAMPLE_OnMissionStateSt std::this_thread::sleep_for(std::chrono::milliseconds(100)); MainThread::GetInstance()->Runing(); } +/** + * @brief Construct a new test f object + * ../output_files/test/bin/HuntingCameraTest + * --gtest_filter=HuntingCameraTest.HS_INTEGRATION_HunttingCamera_EXAMPLE_PirTriggeredMissionStateStart + */ +TEST_F(HuntingCameraTest, HS_INTEGRATION_HunttingCamera_EXAMPLE_PirTriggeredMissionStateStart) +{ + McuManagerTestTool::MockOtherSideIpcMissionReply(IpcMission::PIR_TRIGGERED); + MainThread::GetInstance()->Init(); + TestManager::ResetTimeOut(1000 * 3); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + MainThread::GetInstance()->Runing(); +} } // namespace McuManager_Mock_Test \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp b/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp index d52042a..5a17d83 100644 --- a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp +++ b/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp @@ -15,6 +15,7 @@ #include "MissionManagerMakePtrTest.h" #include "ILog.h" #include "OnMissionStateMock.h" +#include "PirTriggeredMissionStateMock.h" #include "TestMissionStateMock.h" #include "TopStateMock.h" void OverrideMissionManagerMakePtrObject(std::shared_ptr &appManagerMock) @@ -55,6 +56,10 @@ std::shared_ptr MissionManagerMakePtrTest::CreateMissionState(const IpcMi LogInfo("MissionManagerMakePtrTest::CreateMissionState\n"); std::shared_ptr state; switch (mission) { + case IpcMission::PIR_TRIGGERED: + LogInfo("Create PirTriggeredMissionStateMock.\n"); + state = std::make_shared(); + break; case IpcMission::TEST: LogInfo("Create TestMissionStateMock.\n"); state = std::make_shared(); diff --git a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp b/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp new file mode 100644 index 0000000..cc245e0 --- /dev/null +++ b/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2023 Fancy Code. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "PirTriggeredMissionStateMock.h" +#include "ILog.h" \ No newline at end of file diff --git a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h b/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h new file mode 100644 index 0000000..29acdaf --- /dev/null +++ b/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 Fancy Code. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef PIR_TRIGGERED_MISSION_STATE_MOCK_H +#define PIR_TRIGGERED_MISSION_STATE_MOCK_H +#include "MissionManagerTestTool.h" +#include "PirTriggeredMissionState.h" +class PirTriggeredMissionStateTest : public PirTriggeredMissionState +{ +public: + PirTriggeredMissionStateTest() = default; + virtual ~PirTriggeredMissionStateTest() = default; + +protected: +}; +class PirTriggeredMissionStateMock : public PirTriggeredMissionStateTest +{ +public: + PirTriggeredMissionStateMock() = default; + virtual ~PirTriggeredMissionStateMock() = default; +}; +#endif \ No newline at end of file