diff --git a/doc/clang-tidy_user_guide.md b/doc/clang-tidy_user_guide.md
deleted file mode 100644
index 07d0c7c..0000000
--- a/doc/clang-tidy_user_guide.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# 1. clang-tidy使用指南
-
- 使用clang-tidy工具进行代码规范管理。
-1. 编译时实时报错;
-2. 指定自研源码检测;
-
-## 1.1. 环境搭建
-
-1. llvm使用cmake编译,cmake版本要求 3.20以上,此处使用cmake-3.27.4
-```
-// cmake源码目录://tools/cmake/cmake-3.27.4.tar.gz
-// cmake源码安装:
-tar zxvf cmake-3.27.4.tar.gz
-cd cmake-3.27.4/
-sudo apt-get install openssl // 如果执行./bootstrap提示缺少ssl相关资源,执行此安装命令
-./bootstrap
-make
-sudo make install
-```
-2. 安装llvm
-```
-// 下载源码
-git clone https://github.com/llvm/llvm-project.git
-cd llvm-project/
-mkdir build
-cd build
-cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" ../llvm
-make -j8
-find ./ -name clang-tidy // 确认编译完成
-```
-
-## 1.2. clang-tidy使用
-修改配置:< IPC-SDK >/build/global_config.cmake
-```
-# ------------ build clang-tools ------------ #
-if(${LINUX_TEST} MATCHES "true")
- set(CLANG_TIDY_SUPPORT "true") // 使能工具
- set(CLANG_FORMAT_SUPPORT "true")
- set(LLVM_PATH "/home/xiaojiazhu/project/tmp/llvm-project") // llvm安装目录
-endif()
-# ------------ build clang-tools end ------------ #
-```
\ No newline at end of file
diff --git a/doc/cmake_exploitReport.md b/doc/cmake_exploitReport.md
deleted file mode 100644
index 61a54da..0000000
--- a/doc/cmake_exploitReport.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# 1.cmake开发报告
-
-## 1.1 前言
-该篇md用于ipc项目下log功能的cmakelist的开发报告,以阐述其功能和组成。
-
-## 1.2 功能介绍
-* 设置库文件输出路径:`set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})`.
-该语句用于设置该功能的静态库的生成路径,其中`${LIBS_OUTPUT_PATH}`在/build/cmake/global_config.cmake被定义在项目根目录的/output_files/libs/。
-
-* 添加实现功能的文件目录:`include_directories(./)`.
-该语句旨在向编译器告知该功能的实现文件和头文件的所在位置。
-
-* 添加功能目录到搜索路径:`set(CMAKE_AUTOMOC ON);set(CMAKE_INCLUDE_CURRENT_DIR ON)`
-这些 CMake 命令支持自动处理 Qt moc(元对象编译器),并将当前目录设置为包含在包含文件的搜索路径中;在构建过程中自动运行Qt moc编译器,用于包含Q_OBJECT宏的任何源文件。这对于为信号和插槽生成必要的C++代码是必需的;该选项将当前源目录添加到包含文件的搜索路径中。这允许构建系统查找与正在编译的源文件位于同一目录中的头文件。
-
-* 收集、生成头文件列表:`file(GLOB_RECURSE HEADER_FILES "*.h")`
-该语句的功能是搜索当前目录及其子目录中扩展名为 .h 的所有文件。生成的文件列表存储在 HEADER_FILES 变量中。
-
-* 收集源文件列表:`aux_source_directory(. SRC_FILES)`
-在本语句中,aux_source_directory(.SRC_FILES) 从当前目录(由 .) 及其子目录中收集所有源文件(例如,.cpp 个文件),生成的文件列表存储在 SRC_FILES 变量中。
-
-* 添加编译器标志和定义到当前目录及其子目录:`add_definitions("-fexceptions")`
-添加编译器标志`-fexceptions`以在代码中启用异常处理。此标志告诉编译器生成支持捕获和引发异常的代码。通过使用 add_definitions(),可以将特定的编译器标志或定义全局应用于项目或特定源文件。
-
-* 创建静态库目标:`add_library(xlog STATIC ${SRC_FILES} ${HEADER_FILES})`
-在这种情况下,本语句使用提供的源文件和头文件列表创建一个名为“xlog”的静态库目标;`STATIC`关键字指定库将构建为静态库,这意味着库代码将在编译时直接链接到最终可执行文件中;`${SRC_FILES}`变量包含应编译并链接到库中的源文件(通常.cpp文件)的列表。${HEADER_FILES} 变量包含头文件(通常为 .h 文件)的列表,这些文件定义库使用的接口和声明。
-
-## 1.3 总结
-该篇cmakelists.txt的主要用途是对ipc项目下xlog功能的显现文件的编译和汇总。
-
-## 2.1 返回码管理库概述
-提供整个应用程序的返回码管理功能,例如:打印返回码的字符串含义。提供C语言接口,内部实现不限于C或者C++,形成项目内部唯一返回码标准。
-
-## 2.2 功能介绍
-* 设置可执行文件的输出路径:`set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})`;`set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})`
-
-* 引入头文件目录:`include_directories`。`include_directories`表示引入头文件搜索路径,当工程要用到某个头文件的时候,就会去该路径下搜索。
-
-* 开启自动编译:`set(CMAKE_AUTOMOC ON)` `set(CMAKE_INCLUDE_CURRENT_DIR ON)`. 这段代码开启了 CMake 的元对象编译器、界面编译器和资源编译器自动编译,这样当项目使用了包含元对象的文件、界面文件和资源文件时 CMake 可以自动检测并编译。
-
-* 查找在./src路径下的所有源文件:`aux_source_directory(./src SRC_FILES)` 。
-
-* 设置ReturnCode地址:`set(TARGET_NAME ReturnCode)`。根据提供的源文件创建一个叫ReturnCode的静态库。然后将目标文件与库文件进行链接:`target_link_libraries(${TARGET_NAME} Log)`。
-
-## 2.3 返回码test
-* 添加test文件到目录,本目录为测试代码目录,目录结构保持与源码目录结构一致。
-
-* 在test各个文件夹里添加相对应的CMakeLists.txt文件,通过`add_subdirectory(utils)`添加与源码目录结构相对应的子文件夹。
-
-* 在src文件夹下创建ReturnCodeTest.cpp,调用返回码管理接口。在根目录添加第三方库文件,存放需要用到的第三方库。
-
-## 2.4 总结
-Cmake的语句都在CMakeLists.txt的文件中,Cmake运行之后就会产生想要的makefile文件,然后再直接make就可以编译出可执行程序。
-
diff --git a/doc/design.md b/doc/design.md
deleted file mode 100644
index b9e60e3..0000000
--- a/doc/design.md
+++ /dev/null
@@ -1,1103 +0,0 @@
-# 1. 设计文档
-
-## 1.1. 产品概述
-
- 一款低功耗的IPC产品设计方案。
-
-### 1.1.1. 名词说明:
-MCU:外接的单片机;
-小核:rk1106内置的单片机
-大核:rk1106 linux部分业务
-
-## 1.2. 结构设计
-1. 迷彩外观;
-2. 抽屉式电池箱组;
-3. 捆绑/相机支架安装方式;
-4. 可拓展4G模块;
-5. 户外防水等级?
-
-### 1.2.1. 结构
-
-| 物料 | 备注 |
-|----|----|
-| 喇叭 | - |
-| 麦克风 | - |
-| 按键 | 恢复出厂
SD卡格式化
TEST拨键
硬件电源开关 |
-| 指示灯 | RGB三色灯 |
-| 红外灯 | 940nm |
-| usb | TYPEC,充电 |
-| 太阳能板 | - |
-| 电池仓 | - |
-| TF卡卡槽 | - |
-| PIR | - |
-
-### 1.2.2. 配件
-
-| 物料 | 备注 |
-|----|----|
-| 捆绑轧带 | - |
-| 快充电池 | - |
-| 快充适配器 | - |
-
-## 1.3. 硬件设计
-
-### 1.3.1. 关键外设
-1. 双摄像头;
-2. PIR sensor;
-3. IR leds;
-4. 电池(箱体);
-5. 电源开关;
-6. 复位按键:同步/复位/格式化;
-7. 功能按键:拍摄/cpu通电启动/
-8. tf card;
-9. usb接口;
-10. 光感传感器:白天/黑夜;
-11. 单色指示灯:设备状态(工作/WiFi连接/异常);
-
-## 1.4. 软件设计
-
-### 1.4.1. 多态单例设计模式
-
- 多态单例模式包含两部分:抽象接口 + 抽象接口实例,代码基于抽象接口存在,业务基于抽象接口实例存在。
-
-#### 1.4.1.1. 多态单例图示
-
- 下述图示分别为:类图 / 依赖关系图 / 编译链接关系图
-```mermaid
-classDiagram
- APP --> AbstractInterface:使用
- AbstractInterface <|.. Instance:实现
- 应用 --> 抽象接口库:依赖
- 抽象接口库 ..> 实例库:依赖
- main线程 --> 抽象接口代码库:链接
- main线程 --> 实例代码库:链接
-```
-#### 1.4.1.2. 多态单例模块使用时序图
-
- 在使用多态单例设计模式开发功能模块时,使用统一的命名规则:
-* 抽象接口命名:xxx + Abstract,例如:libLogAbstract.a;
-* 实例库命名:xxx + 具体实例名称,例如:libLogEasylogging.a;
-
-**调用关系如下图**
-```mermaid
-sequenceDiagram
-User ->> +libLogAbstract.a:调用抽象接口
-libLogAbstract.a --> +libLogEasylogging.a:实际调用实例接口
-libLogEasylogging.a --> -libLogAbstract.a:return
-libLogAbstract.a -->> -User:return
-```
-**只有main函数实际调用实例库的实例化接口时,log功能才会生效。**
-
-#### 1.4.1.3. 多态单例目录结构规范
-
- 根据多态单例设计模式,指定使用多态单例模式开发的模块的源码目录结构,耦合思路清晰。
-```
-└── Log // 多态单例模式模块的目录
- ├── include // 多态单例模块对外暴露的头文件目录,抽象接口定义
- │ └── ILogAbstract.h
- ├── abstract // 多态单例模式抽象接口声明
- │ └── ILogAbstract.cpp
- └── src // 多态单例接口实例代码,目录名称可根据实际功能定义
- ├── LogAstract.cpp
- └── LogAstract.h
-```
- 构建时把abstract目录和src目录的源码分别编译成库,main线程根据实际需要链接并实例化即可。
-
-#### 1.4.1.4. 混合多态单例
-
- 多态单例的分类有C++版本多态单例,C语言版本多态单例,混合(C/C++)多态单例。混合多态单例的提出是由于纯C语言多态单例开发难度较高,纯C++语言的多态单例不适合底层(特指本文的分层结构中的适配层)接口为C++时,很多C语言代码调用困难。
-
- 混合多态单例,内部多态实现使用C++,保留C++开发便捷性和易维护性(智能指针),对外同时提供C语言多态抽象接口和C++多态抽象接口,满足C/C++混编时易用性。最大特点是include文件夹里面会包含两个头文件。
-
-##### 1.4.1.4.1. 多态单例目录结构
-```
-hal
-├── abstract // 抽象接口库的基础代码
-│ ├── IHal.cpp
-│ └── IHalCpp.cpp
-├── include
-│ ├── IHalCpp.h // C++抽象接口头文件
-│ └── IHal.h // C语言抽象接口头文件
-└── src // 抽象接口实例库代码
- ├── Hal.c // C语言接口实例
- ├── HalCpp.cpp // C++接口实例
- ├── HalCpp.h
- ├── Hal.h
- ├── HalMakePtr.cpp // 负责创建内部实例
- └── HalMakePtr.h
-```
-
-#### 1.4.1.5. 多态单例总结:
-
-1. 应用代码只使用抽象接口,禁止直接依赖实例代码;
-2. 应用代码只有在main线程初始化时实例化实例模块即可;
-3. 多态单例模块由两个库组成,一个是抽象接口库,一个是实例代码库,支持静态多态和动态多态;
-
-### 1.4.2. 产品业务功能设计
-
- 基于芯片大小核架构的启动设计。
-
-#### 1.4.2.1. 白/黑切换状态启动
-
- 由外置单片机检测光敏adc,判断由白天切换到黑夜或者黑夜切换到白天时,主动给主控上电,主控上电后会校验并保存新的环境参数,以下次正常PIR启动时,可以避免ircut耗时快速收敛第一帧,最大程度实现快启功能。
-
-**启动时序图**
-
-```mermaid
-sequenceDiagram
-participant MCU
-participant 小核
-participant 大核
-loop 光敏检测
- MCU ->> MCU:定时唤醒(定时时间待定)
- opt 光敏>>>黑夜状态
- note over MCU:由外置单片机点亮红外补光灯
- MCU ->> MCU:点亮红外灯
- end
- opt 光敏>>>黑/白切换
- MCU ->> 小核:上电
- activate 小核
- note over 小核:根据上次启动的ircut切换条件初始化ircut IO
本次启动上次的切换条件是异常的
- 小核 ->> 小核:ircut切换-消耗0ms
- 小核 ->> 小核:Sensor初始化
- 小核 --> 大核:Sensor初始化完成-100ms
- deactivate 小核
- activate 大核
- 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms
- 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
- 大核 ->> 大核:启动脚本启动APP-?ms
- 大核 ->> +MCU:获取启动模式
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复启动模式
- opt 黑/白切换状态
- 大核 ->> +MCU:获取黑/白状态
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复黑或者白
- opt 黑/白状态不符合抓拍的初始化参数
- 大核 ->> 大核:ircut重新切换
- 大核 ->> 大核:重新初始化sensor参数
- end
- 大核 ->> MCU:关机
- MCU ->> 大核:断电
- end
- deactivate 大核
- end
-end
-```
-
-#### 1.4.2.2. 红外触发状态启动(正常工作快启)
-
- 红外触发启动作为产品正常工作时最经常最重要的启动状态。启动后快速抓拍/录像,快速关机。
-
-1. 为保证快启速度,IRCUT需要业务设计进行提前切换;
-2. 每次启动抓拍/录像完,需要校验IRCUT状态,保证sensor初始化参数和环境相匹配;
-3. 如果发生sensor初始化参数和光照环境不匹配,需要重新初始化sesor并补拍;
-
-**启动时序图**
-
-```mermaid
-sequenceDiagram
-participant MCU
-participant 小核
-participant 大核
-MCU ->> MCU:PIR中断唤醒
-opt 光敏>>>黑夜状态
-note over MCU:由外置单片机点亮红外补光灯
- MCU ->> MCU:点亮红外灯
-end
-opt PIR信号触发
- alt 主控未开机
- MCU ->> 小核:上电
- activate 小核
- note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好
- 小核 ->> 小核:ircut切换-消耗0ms
- 小核 ->> 小核:Sensor初始化
- 小核 --> 大核:Sensor初始化完成-100ms
- deactivate 小核
- activate 大核
- 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms
- 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
- 大核 ->> 大核:启动脚本启动APP-?ms
- 大核 ->> +MCU:获取启动模式
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复启动模式
- opt PIR触发状态
- 大核 ->> +MCU:获取黑/白状态
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复黑或者白
- alt sensor初始化参数和环境参数匹配
- note over 大核:环境参数未发生变化时,可直接保存快启的抓拍
- 大核 ->> 大核:保存到sd卡-?ms
- else sensor初始化参数和环境参数不匹配
- note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍
- 大核 ->> 大核:ircut重新切换
- 大核 ->> 大核:重新初始化sensor参数
- 大核 ->> 大核:重新抓拍/录像
- 大核 ->> 大核:保存到sd卡-?ms
- end
- end
- alt TEST拨键-OFF
- 大核 ->> MCU:关机
- MCU ->> 小核:断电
- MCU ->> 大核:断电
- else TEST拨键-ON
- opt 超时关机
- 大核 ->> MCU:关机
- MCU ->> 小核:断电
- MCU ->> 大核:断电
- end
- end
- deactivate 大核
- else 主控已经开机
- MCU ->> +大核:发送抓拍指令
- 大核 ->> 大核:抓拍
- 大核 ->> MCU:回复抓拍
- 大核 ->> 大核:保存抓拍
- 大核 ->> -MCU:关机指令
- MCU ->> 大核:断电
- end
-end
-```
-
-#### 1.4.2.3. 定时触发状态启动
-
-**定时触发状态启动时序图**
-
-```mermaid
-sequenceDiagram
-participant MCU
-participant 小核
-participant 大核
-MCU ->> MCU:定时中断唤醒
-opt 光敏>>>黑夜状态
-note over MCU:由外置单片机点亮红外补光灯
- MCU ->> MCU:点亮红外灯
-end
-opt 根据定时参数上电
- MCU ->> 小核:上电
- activate 小核
- note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好
- 小核 ->> 小核:ircut切换-消耗0ms
- 小核 ->> 小核:Sensor初始化
- 小核 --> 大核:Sensor初始化完成-100ms
- deactivate 小核
- activate 大核
- 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms
- 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
- 大核 ->> 大核:启动脚本启动APP-?ms
- 大核 ->> +MCU:获取启动模式
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复启动模式
- opt 定时启动状态
- 大核 ->> +MCU:获取黑/白状态
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复黑或者白
- alt sensor初始化参数和环境参数匹配
- note over 大核:环境参数未发生变化时,可直接保存快启的抓拍
- 大核 ->> 大核:保存到sd卡-?ms
- else sensor初始化参数和环境参数不匹配
- note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍
- 大核 ->> 大核:ircut重新切换
- 大核 ->> 大核:重新初始化sensor参数
- 大核 ->> 大核:重新抓拍/录像
- 大核 ->> 大核:保存到sd卡-?ms
- end
- end
- note over 大核:定时状态启动抓拍完直接关机
- 大核 ->> MCU:关机
- MCU ->> 小核:断电
- MCU ->> 大核:断电
- deactivate 大核
-end
-```
-
-#### 1.4.2.4. 设置/调试状态启动
-
- 特殊的启动状态,可以较长时间通电完成其它功能,期间可供用户完成相关调试和参数设置,此时功耗较高。超时进入工作模式。
-
-1. 设置状态按键触发CPU上电,首先进入设置状态启动,5分钟后自动切换到工作状态。
-
-**设置状态启动时序图**
-
-```mermaid
-sequenceDiagram
-participant MCU
-participant 小核
-participant 大核
-MCU ->> MCU:待机
-opt 光敏>>>黑夜状态
-note over MCU:由外置单片机点亮红外补光灯
- MCU ->> MCU:点亮红外灯
-end
-opt TEST拨键-ON
- MCU ->> 小核:上电
- activate 小核
- MCU ->> 大核:上电
- activate 大核
- note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好
- 小核 ->> 小核:ircut切换-消耗0ms
- 小核 ->> 小核:Sensor初始化
- 小核 --> 大核:Sensor初始化完成-100ms
- deactivate 小核
- 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
- 大核 ->> 大核:启动脚本启动APP-?ms
- 大核 ->> +MCU:获取启动模式
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复启动模式
- opt TEST状态
- 大核 ->> +MCU:获取黑/白状态
- note over 大核:大核启动后,需要通过串口获取启动模式,
来执行后续的任务
- MCU -->> -大核:回复黑或者白
- opt sensor初始化参数和环境参数不匹配
- note over 大核:环境参数发生变化时,需要重新初始化sensor并补拍
- 大核 ->> 大核:ircut重新切换
- 大核 ->> 大核:重新初始化sensor参数
- end
- alt WiFi链接
- 大核 ->> 大核:常通电待机
- else 无WiFi连接/无操作
- opt 超时
- 大核 ->> MCU:关机
- MCU ->> 小核:断电
- MCU ->> 大核:断电
- end
- end
- end
- deactivate 大核
-end
-```
-
-#### 1.4.2.5. 厂测状态启动
-
- 生产测试状态触发:使用tf card配置文件触发生产测试状态;
-
-**厂测状态启动时序图**
-
-```mermaid
-sequenceDiagram
-participant MCU
-participant 小核
-participant 大核
-MCU ->> MCU:物理上电
-MCU ->> 小核:上电
- activate 小核
- MCU ->> 大核:上电
- activate 大核
- 小核 ->> 小核:Sensor初始化
- 小核 --> 大核:Sensor初始化完成-100ms
- deactivate 小核
- 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
- 大核 ->> 大核:启动脚本启动APP-?ms
- alt TEST拨键-ON
- alt tf card厂测配置文件存在
- 大核 ->> 大核:常通电待机
- else tf card厂测配置文件不存在
- opt 超时
- 大核 ->> MCU:关机
- MCU ->> 小核:断电
- MCU ->> 大核:断电
- end
- end
- else TEST拨键-OFF
- alt tf card厂测配置文件存在
- 大核 ->> 大核:常通电待机
- else tf card厂测配置文件不存在
- 大核 ->> MCU:关机
- MCU ->> 小核:断电
- MCU ->> 大核:断电
- end
- end
- deactivate 大核
-```
-
-#### 1.4.2.6. 快启时序时间消耗
-
-```mermaid
-sequenceDiagram
-participant MCU
-participant 小核
-participant 大核
-MCU ->> MCU:PIR中断唤醒
-note right of MCU:设此时为时间轴0ms
-MCU ->> 小核:上电
-MCU ->> 大核:上电
-activate MCU
-activate 小核
-activate 大核
-note right of 大核:竞品时间12ms
- opt 光敏>>>黑夜状态
- note over MCU:由外置单片机点亮红外补光灯
- MCU ->> MCU:点亮红外灯
- end
-deactivate MCU
- opt PIR信号触发
- alt 主控未开机
- note over 小核:根据上次启动的ircut切换条件初始化ircut IO
消耗0ms是由于ircut IO会提前切换好
- note right of 大核:竞品在CPU启动后,获取MCU的光敏值
再切ircut和打开红外灯-时间168ms
- 小核 ->> 小核:ircut切换-消耗0ms
- 小核 ->> 小核:Sensor初始化
- 小核 --> 大核:Sensor初始化完成-100ms
-deactivate 小核
- activate 大核
- 大核 ->> 大核:内核快启抓拍(1P/3P)-200ms
- note right of 大核:竞品第一帧时间350ms
- 大核 ->> 大核:内核启动(文件系统/挂载sd卡)-?ms
- 大核 ->> 大核:启动脚本启动APP-?ms
- deactivate 大核
- end
- end
-deactivate 大核
-```
-
-### 1.4.3. 根据软件模块作用域分层
-
-#### 1.4.3.1. 应用层(application)
-
-##### 1.4.3.1.1. 应用层概述
-
- 应用层负责处理产品级的复杂业务关系,是产品功能的直接体现,应用层模块全部使用C++接口的多态单例模式设计,各模块之间可以互相调用接口,应用层各库可以随意任意调用中间件或者工具类接口。
-
-##### 1.4.3.1.2. 网络服务模块
-
-###### 1.4.3.1.2.1. 网络服务概述
-
- 根据产品联网属性,网络服务模块分为不联网 / 联网(B端)/ 联网(自研)三个多态属性。联网时,IPC的图片 / 视频资源通过网络服务器进行管理。
-
-1. 不联网版本:网络服务模块不实例化即可;
-2. 联网(B端):媒体资源由三方服务器管理;
-3. 联网(自研):媒体资源由自研服务器管理;
-
-###### 1.4.3.1.2.2. 网络服务多态设计模式
-
- 通过构建配置文件选择需要实例化的网络服务模块代码。
-
-##### 1.4.3.1.3. 相机任务管理
-
- 相机主业务逻辑使用状态机机制进行管理。
-
-###### 1.4.3.1.3.1. 任务状态
-
- 任务状态是指相机启动需要执行的任务,可能是拍照 / 视频,可能是其它任务。
-
-**例如:**
-1. 移动物体侦测启动;
-2. 定时启动拍照 / 录像;
-3. 测试启动;
-
-###### 1.4.3.1.3.2. 状态机设计
-
-```mermaid
-stateDiagram-v2
-[*] --> TopState
-TopState --> PowerOff
-TopState --> MSDCState
-TopState --> DeviceAbnormal
-TopState --> MissionState
-MissionState --> 存储管理
-存储管理 --> EMMC
-存储管理 --> SD卡
-SD卡 --> 插卡
-SD卡 --> 拔卡
-SD卡 --> 卡异常
-MissionState --> 网络管理
-网络管理 --> 联网
-联网 --> 上传文件
-网络管理 --> 未联网
-MissionState --> 直播
-MissionState --> 4G管理
-4G管理 --> Sim卡初始化
-4G管理 --> 注网状态
-MissionState --> Upgrade
-```
-
-###### 1.4.3.1.3.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.3.2. 中间件(middleware)
-
-##### 1.4.3.2.1. 中间件概述
-
- 一些相对中性的业务功能库,这些库可以提供给不同的产品需求使用,在应用层不同的调用方式可实现不同的产品功能。中间件只能被应用层调用或者向下调用适配层或者调用工具库,中间件各模块之间不能互相调用。中间件库接口可以使用C或者C++接口。
-
-##### 1.4.3.2.2. 设备管理模块
-
- 设备,统指Linux的设备节点,应用层唯一的硬件设备接口库。包含灯 / 按键 / GPIO / SD卡 / 串口 / USB等。
-
-##### 1.4.3.2.3. 相机管理模块
-
- 应用层唯一的摄像头接口库。
-
-##### 1.4.3.2.4. MCU管理模块
-
- MCU通信接口库,一般使用串口进行通信,需要考虑多态其它接口(例如I2C),考虑多态协议数据结构。MCU负责管理外设的电源控制 / 充当硬狗等。
-
-###### 1.4.3.2.4.1. MCU管理模块设计模式
-
- 使用C++接口的多态单例模式。
-
-基本功能:
-
-1. 使用utils当中的串口功能模块,支持多态切换到其它串口功能模块;
-2. 设置MCU管理的监视器monitor,用于回调处理MCU接受到的业务事件;
-3. 通信协议不暴露,内部处理基于协议的数据解析 / 组包;
-4. 通信协议支持多态拓展,通信协议独立成库;
-
-##### 1.4.3.2.5. MCU协议模块
-
- 负责对MCU协议进行封包/解包,负责协议的多态替换。协议数据统一使用网络字节序(大端字节序)。
-
-###### 1.4.3.2.5.1. 协议格式
-
-| 协议头 | 流水号 | 命令字 | 长度 | 数据段 | 校验码 |
-|----|----|----|----|----|----|
-| 2字节
0xFAC1 | 4字节 | 2字节 | 2字节 | - | 2字节 |
-
-**流水号**
-
- 流水号用于强绑定问答型协议的发送数据和回复数据,回复者原数据回传即可。例如:
-
-```
-unsigned char ASK_IPC_MISSION[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x81, 0x01, 0x00, 0x0C, 0x71, 0x88};
-unsigned char REPLY_IPC_MISSION[] = {0xFA, 0xC1, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x0D, 0x01, 0xAA, 0x89};
-```
-
- 流水号管理发送方和接收方互相独立,各自往外发的协议中流水号存在重复的可能,接收方直接复制回传即可。
-
- 流水号必须大于等于1,0用于代码初始化值,代码意义上表示无效的流水号。
-
-**协议收发匹配逻辑**
- 协议发送时,附带自管理的流水号,对端回复时,根据流水号绑定发送的协议,为了避免对端回复时,流水号错误导致的业务逻辑错乱,本端除了匹配流水号,还需要根据协议匹配回复的命令字,保证回复内容的有效匹配。如果流水号和命令字无法同时匹配,该回复的数据包被丢弃。
-
-**校验码算法**
-
- 校验码算法使用ModBus CRC16方法计算。
-
-**参考代码(查表法)**
-
-```
-/* Table of CRC values for high–order byte */
-unsigned char chCRCHi[] ={
- 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
- 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
- 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
- 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
- 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
- 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
- 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
- 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
- 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
- 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
- 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
- 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
- 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
- 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
- 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
- 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
- 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
- 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
- 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
- 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
- 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
- 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
- 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,
- 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
- 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
- 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40
-};
-
-/* Table of CRC values for low–order byte */
-unsigned char chCRCLo[] ={
- 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,
- 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,
- 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,
- 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,
- 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,
- 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
- 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,
- 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,
- 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,
- 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,
- 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,
- 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,
- 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,
- 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
- 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,
- 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,
- 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,
- 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,
- 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,
- 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,
- 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,
- 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
- 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,
- 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,
- 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,
- 0x43, 0x83, 0x41, 0x81, 0x80, 0x40
-};
-/**
- * @brief 计算校验和
- *
- * @param pData 数据指针
- * @param length 数据长度
- * @return unsigned short
- */
-unsigned short calculate_check_sum(const unsigned char* pData, unsigned short length)
-{
- unsigned char CRCHi = 0xFF;
- unsigned char CRCLo = 0xFF;
- int uIndex;
- while (length--)
- {
- uIndex = CRCHi ^ *pData++;
- CRCHi = CRCLo ^ chCRCHi[uIndex];
- CRCLo = chCRCLo[uIndex];
- }
- return (CRCHi << 8 | CRCLo);
-}
-```
-
-###### 1.4.3.2.5.2. 协议内容
-
-**基本描述**
-1. 大于等于0x8000的命令字由CPU发给MCU;
-2. 小于0x8000的命令字由MCU发给CPU;
-3. 大于0x0801而小于0xC101的命令由CPU主动发送给MCU,大于等于0xC101的命令由CPU回复发送给MCU;
-4. 问答型协议只有按位最高位相反,其它位相等,例如:0x8101与0x0101是一问一答的协议;
-
-| 命令字 | CPU | MCU | 数据段 | 协议解析 | 备注 |
-|----|----|----|----|----|----|
-| 0x8101 | ask | - | - | 获取启动模式 | - |
-| 0x0101 | - | reply | Data[0]:启动模式
0x01:PIR启动
0x02:TEST启动
0x03:连拍启动
0x04:PIR延时启动
0x05:定时(间隔一定时间)启动
0x06:关机
0x07:低电关机 | 回复启动模式 | - |
-| 0x8102 | ask | - | - | 断电关机 | - |
-| 0x8103 | ask | - | - | 喂狗 | - |
-| 0x8104 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 开启狗/设置喂狗周期 | - |
-| 0x0104 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 开启狗/设置喂狗周期回复 | - |
-| 0x8105 | ask | - | - | 关闭狗 | - |
-| 0x0105 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 关闭狗回复 | - |
-| 0x8106 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 设置间隔启动时间 | - |
-| 0x0106 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置间隔启动时间回复 | - |
-| 0x8107 | ask | - | Data[0]:Year
Data[1]:Mon
1-12
Data[2]:Day
0-31
Data[3]:Hour
0-23
Data[4]:Min
0-59
Data[5]:Sec
0-59 | 设置日期和时间 | - |
-| 0x0107 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置日期和时间回复 | - |
-| 0x8108 | ask | - | Data[0]:灵敏度
0-9 | 设置PIR灵敏度 | - |
-| 0x0108 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置PIR灵敏度回复 | - |
-| 0x8109 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 设置连拍间隔 | - |
-| 0x0109 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置连拍间隔回复 | - |
-| 0x810A | ask | - | Data[0]:控制模式
0-关闭红外灯
1-开启红外灯 | 红外灯控制 | - |
-| 0x010A | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 红外灯控制回复 | - |
-| 0x810B | ask | - | - | 获取光敏值 | - |
-| 0x010B | - | reply | Data[0]:结果
0-100 | 获取光敏值回复 | - |
-| ====== | === | ====== | ============================ | ==================== | ======= |
-| 0xC101 | reply | - | Data[0]:结果
0x01:成功
0x02:失败 | 发送启动模式回复 | - |
-| 0x4101 | - | ask | Data[0]:启动模式
0x01:PIR启动
0x02:TEST启动
0x03:连拍启动
0x04:PIR延时启动
0x05:定时(间隔一定时间)启动
0x06:关机
0x07:低电关机 | 发送启动模式 | - |
-
-##### 1.4.3.2.6. IPC配置库
-
- 负责管理IPC产品相关的配置数据。
-
-###### 1.4.3.2.6.1. IPC配置库设计模式
-
- 使用多态单例设计模式,对外提供C语言接口,内部不局限使用C或者C++。
-
-**基本功能**
-
-1. 敏感数据(例如:账号 / 密码)需要加密处理;
-2. 读到内存使用二进制数据,缓存到数据结构体;
-3. 调用utils工具里面的配置库,对配置文件进行读 / 写;
-4. 使用二进制结构体 + 明文配置文件结合的模式,既可减少内存消耗,又可以规避二进制数据升级迭代数据匹配困难问题;
-5. 使用枚举方式管理IPC配置数据定义,当使用纯16进制保存数据时,可不链接utils工具里面的配置库,直接保存16进制数据到文件系统即可;
-6. 应用程序全局唯一可以操作IPC配置文件的库,保证配置文件正确读写;
-
-###### 1.4.3.2.6.2. IPC配置库类图
-```mermaid
-classDiagram
- i_ipc_config <.. ipc_config:实现
- ipc_config --> i_config_manager:依赖
- ipc_config --> IHal:依赖
- i_config_manager <.. config_manager:实现
- config_manager --> libconfig开源库:依赖
-```
-
-###### 1.4.3.2.6.3. 关键业务时序图
-
- **时序图会忽略抽象接口直接使用实例接口表示。**
-
-* IPC配置库初始化 / 解初始化
-```mermaid
-sequenceDiagram
-participant User
-participant ipc_config
-participant i_config
-participant IHal
-User ->> +ipc_config:初始化
- ipc_config ->> +IHal:获取文件系统路径
- IHal -->> -ipc_config:return
- ipc_config ->> +i_config:打开配置文件
- i_config -->> -ipc_config:return
- alt 打开成功
- rect rgba(255,220,200,1)
- loop 读取所有数据到IPC数据结构体
- ipc_config ->> +i_config:读取一个数据到IPC数据结构体
- i_config -->> -ipc_config:return
- rect rgba(255,255,200,1)
- opt 读取失败
- ipc_config ->> ipc_config:生成默认数据
- ipc_config ->> +i_config:设置默认数据
- i_config ->> -ipc_config:return
- end
- end
- end
- ipc_config ->> +i_config:关闭配置文件
- i_config -->> -ipc_config:return
- end
- else 打开失败
- rect rgba(255,200,200,1)
- ipc_config ->> ipc_config:生产默认数据
- ipc_config ->> +i_config:创建配置文件
- i_config -->> -ipc_config:return
- ipc_config ->> +i_config:设置默认数据
- i_config -->> -ipc_config:return
- ipc_config ->> +i_config:关闭配置文件
- i_config -->> -ipc_config:return
- end
- end
-ipc_config -->> -User:return
-User ->> +ipc_config:解初始化
- ipc_config ->> ipc_config:释放内存中的数据
-ipc_config -->> -User:return
-```
-
-* 读 / 写(修改)数据
-
-```mermaid
-sequenceDiagram
-participant User
-participant ipc_config
-User ->> +ipc_config:读取数据
- ipc_config ->> ipc_config:返回内存保存的数据
-ipc_config -->> -User:return
-User ->> +ipc_config:修改数据
- ipc_config ->> ipc_config:修改内存保存的数据
-ipc_config -->> -User:return
-```
-
-* 保存数据
-
-
-```mermaid
-sequenceDiagram
-participant User
-participant ipc_config
-participant i_config
-User ->> +ipc_config:保存
- ipc_config ->> +i_config:打开配置文件
- i_config -->> -ipc_config:return
- ipc_config ->> +i_config:同步数据
- i_config -->> -ipc_config:return
- ipc_config ->> +i_config:保存配置文件
- i_config -->> -ipc_config:return
- ipc_config ->> +i_config:关闭配置文件
- i_config -->> -ipc_config:return
-ipc_config -->> -User:return
-```
-
-
-##### 1.4.3.2.7. 高级配置库
-
- 对配置库的二级封装,提供更便捷的功能服务,例如:可以监控文件的修改事件 / 可以直接捕获某个配置文件或者数据的操作对象。
-
-###### 1.4.3.2.7.1. 高级配置库设计
-
- 对外暴露C++接口,使用多态单例设计模式。
-
-##### 1.4.3.2.8. 状态机管理
-
- 提供实现状态机管理机制C++接口,使用鸿蒙状态机开源源码进行改造封装。
-
-###### 1.4.3.2.8.1. 状态机管理设计模式
-
- 使用多态单例设计模式,暂定使用鸿蒙状态机开源代码改造实现,后续可替换其它源码或者自研代码。
-
-##### 1.4.3.2.9. 文件数据库
-
- 文件数据库负责管理设备的媒体资源(图片 / 视频等)。
-
-###### 1.4.3.2.9.1. 文件数据设计模式
-
- 使用混合多态单例模式开发。
-
-###### 1.4.3.2.9.2. 开源库选型
-
- sqlite3开源库,编译成工具类库提供给文件数据库使用。
-
-###### 1.4.3.2.9.3. 基本功能和业务需求
-
-1. 对媒体资源文件的增删改查处理;
-2. 记录媒体资源文件的生成时间,任务(是否发送);
-3. 业务根据需要,通过数据库判断哪些文件已经发送完成,哪些文件发送失败,哪些文件待发送;
-
-#### 1.4.3.3. 硬件适配层(hal)
-
- 负责适配不同的硬件平台。
-
-##### 1.4.3.3.1. 硬件适配层设计模式
-
- 基于C语言接口的多态单例模式,编译时静态多态链接对应的芯片平台适配代码,实现芯片接口的标准功能定义。
-
-##### 1.4.3.3.2. 媒体适配方案:
-
- IPC应用在适配芯片平台的多媒体接口时,使用多进程的方式实现。满足IPC应用可以快起(无需等待媒体相关的初始化)的需求。
-
-**媒体基本需求**
-
-1. 图片抓拍;
-2. 视频抓拍;
-
-**多进程通信方案**
-
- 使用本地socket的方式进行多进程通信,媒体进程为客户端,IPC应用为服务端(IPC先启动)。
-
-1. 客户端可自动重连;
-2. 服务端可多次关闭和开启,满足gtest资源回收需求;
-
-##### 1.4.3.3.3. 适配层多进程类图
-
-```mermaid
-classDiagram
- i_hal <.. hal:实现
- hal --> v_media_handle:依赖
- v_media_handle --> local_socket:依赖
- local_socket .. media进程:跨进程
- media进程 --> 芯片媒体API:依赖
-```
-
-##### 1.4.3.3.4. 跨进程业务时序图
-
-* 本地socket链接
-
-```mermaid
-sequenceDiagram
-participant hal
-participant v_media_handle
-participant local_socket_s
-participant local_socket_c
-participant media进程
-participant 芯片媒体API
-hal ->> +v_media_handle:初始化
- v_media_handle ->> +local_socket_s:本地socket服务端启动
- par 本地socket初始化
- local_socket_s -->> -v_media_handle:return
-v_media_handle -->> -hal:return
- and
- media进程 ->> media进程:启动
- media进程 ->> +local_socket_c:初始化服务端
- local_socket_c -->> local_socket_s:链接
- local_socket_c -->> -media进程:return
- local_socket_s -->> local_socket_c:初始化媒体
- local_socket_c ->> media进程:回调回传协议事件
- media进程 ->> +芯片媒体API:初始化媒体
- 芯片媒体API -->> -media进程:return
- end
-```
-
-* 存在问题:
-使用C语言开发时如何解决智能指针问题?
-
-#### 1.4.3.4. 工具库(utils)
-
-##### 1.4.3.4.1. 工具库概述
- 工具库是功能单一的不依赖任何三方库的独立库(日志库和返回码管理库除外),必须提供C语言接口,内部实现不限于C或者C++。工具类库可以被任意的其它模块调用,特别指hal/component/application三大层级。
-
-##### 1.4.3.4.2. 日志库
-
-###### 1.4.3.4.2.1. 日志库概述
- 提供程序的日志管理功能,含日志的实时打印/保存/跟踪(实时上传云端)。
-
-###### 1.4.3.4.2.2. 日志库设计模式
- C语言接口的多态单例模式,可动态/静态加载多态实例。
-
-###### 1.4.3.4.2.3. 日志库启动
- 日志库是否启用一般来讲是dubug版本启用日志功能,release版本禁用日志功能,考虑到release版本的维护问题,标准启动时,main线程在启动时使用dlopen系列函数去加载日志库(多态),特殊版本仍可在main线程加载日志库后,二次实例化日志库(多态)来实现不同的日志功能。
-
-1. 标准流程:main线程加载sd卡动态库,如有即可动态实现日志功能,正常出货sd卡不带日志库,此时没有日志功能;
-2. 可以通过配置参数决定是否启用日志;
-3. sd卡的日志动态,根据实际售后维护,可以是实时打印log/保存本地log/云log的多态实例库;
-4. 多态日志功能,可以忽略debug和release版本的区别,只发布一个版本即可;
-
-##### 1.4.3.4.3. 状态码管理库
-
- 提供整个应用程序的返回码管理功能,例如:打印返回码的字符串含义。提供C语言接口,纯C语言开发的模块,形成项目内部唯一返回码标准。
-
-###### 1.4.3.4.3.1. 状态码功能
-
-1. 创建返回码操作“句柄”;
-2. 打印返回码/获取返回码(字符串);
-3. 不同模块可继承实现各自的返回码处理接口;
-4. 不同模块之间可透传状态码,避免错误码的转换麻烦;
-5. 状态码的定义是跟着模块走的,独立模块的状态码定义在模块内部,不链接时不占用程序空间;
-
-###### 1.4.3.4.3.2. 基础状态码定义
-
- 基础状态码是全局的基础状态码,枚举值全局唯一,其它独立模块必须继承基础状态码累加枚举值,但是,独立模块之间的枚举值可重复,状态码在使用时,日志只关注状态码的字符串,不关心状态码枚举值,代码逻辑使用枚举值。
-
-```
-enum STATUS_CODE
-{
- STATUS_CODE_OK = 0,
- STATUS_CODE_NOT_OK,
- STATUS_CODE_VIRTUAL_FUNCTION,
- STATUS_CODE_INVALID_PARAMENTER,
- STATUS_CODE_END
-};
-```
-| 枚举名 | 字符串 | 描述 |
-| ------ | :------------------------------- | --------- |
-| STATUS_CODE_OK | STATUS_CODE_OK | 成功 |
-| STATUS_CODE_NOT_OK | STATUS_CODE_NOT_OK | 失败 |
-| STATUS_CODE_VIRTUAL_FUNCTION | STATUS_CODE_VIRTUAL_FUNCTION | 抽象接口,提示抽象接口未实例化 |
-| STATUS_CODE_INVALID_PARAMENTER | STATUS_CODE_INVALID_PARAMENTER | 无效的参数 |
-| STATUS_CODE_END | STATUS_CODE_END | 结束,无意义 |
-| 其它 | ? | 其它状态码在各自模块定义 |
-
-###### 1.4.3.4.3.3. 已知漏洞
-
- 状态码在代码层面是存在重复的可能性的,代码逻辑在使用状态码枚举值时,可能会出现逻辑错误。
-
-* 解决方案
-在使用状态码进行逻辑判断时,使用状态码枚举值的字符串。
-Example:
-```
-static inline bool StatusCodeEqual(const StatusCode code, const char *value)
-```
-
-##### 1.4.3.4.4. 系统标准接口库
-
- 对系统标准接口的套壳封装,主要是为了对系统标准打桩满足测试需求。
-
- 使用普通的C语言接口封装即可,通过使用gcc编译参数在Linux x86系统中满足打桩需求,在交叉编译(担心工具链兼容问题)测试程序中无法对系统标准接口进行打桩。
-
-##### 1.4.3.4.5. 通用配置库
-
-###### 1.4.3.4.5.1. 通用配置库概述
-
- 配置库负责管理软件配置参数,对配置数据进行设置 / 获取 / 存储 / 备份 / 升级等功能;通用配置库不限制使用场景,是一个通用的配置文件管理库。
-
-###### 1.4.3.4.5.2. 配置库设计模式
-
- 对外提供C语言接口,内部不局限使用C或者C++。整个软件唯一可以直接操作文件系统配置文件的库。配置库可以理解为简单的三方库的接口直接封装,使用多态单例设计模式实现静态或者动态切换三方库的使用。
-
-**基本功能**
-
-1. 使用**三方库**保存明文格式的配置文件到文件系统;
-2. 可注册回调函数,监听文件的操作事件;
-3. 使用字符串名字key + 值的方式管理配置文件,作为通用的配置文件管理库;
-
-###### 1.4.3.4.5.3. 开源库
-
-两种方案:
-1. 使用libconfig作为文件操作的开源库,实现文件和数据的读 / 写。
-2. 使用sqlite3作为文件操作的开源库,作为数据库文件处理。
-
-###### 1.4.3.4.5.4. 通用配置库类图
- 多态单例设计模式,main线程静态链接多态库。
-```mermaid
-classDiagram
- i_config_manager <.. config_manager:实现
- config_manager --> libconfig开源库:依赖
- i_config_manager <.. sqlite_manager:实现
- sqlite_manager --> sqlite3数据库:依赖
-```
-
-###### 1.4.3.4.5.5. 备份机制
-
- 备份数据用于数据异常时可还原旧数据。
-
-方案选择:
-1. 出厂默认配置文件为只读文件,在数据破坏时还原;
-
-###### 1.4.3.4.5.6. 升级机制
-
- 程序升级后配置数据发生增 / 删时如何兼容和还原。
-
-##### 1.4.3.4.6. 串口功能模块
-
- 串口的打开 / 关闭 / 数据读 / 数据写 功能。
-
-###### 1.4.3.4.6.1. 串口开源库
-使用下述开源库对串口数据进行收发。
-```
-https://gitee.com/RT-Thread-Mirror/TinyFrame
-```
-
-##### 1.4.3.4.7. MCU协议库
-
- 负责MCU通信协议的组包 / 拆包 / 事件转换。
-
-###### 1.4.3.4.7.1. MCU协议库设计模式
-
- 基于C语言的多态单例设计模式。
-
-###### 1.4.3.4.7.2. 协议数据结构
-
-##### 1.4.3.4.8. 多进程通讯库
-
- 负责多进程之间的数据交换。使用local socket方式实现。
-
-##### 1.4.3.4.9. 多进程协议库
-
- 负责IPC应用和媒体进程之间的协议组包 / 拆包,在协议和业务之间进行转换接口的封装。
-
-## 1.5. 生产测试/研发调试
-
- 基于公版代码派生出来的特定的定制版本,用于辅助生产和测试。
-
-## 1.6. 自动化测试
-
-### 1.6.1. 自动化测试概述
-
- 自动化测试是该产品设计的一大特点,需要严格执行。自动化测试指使用纯代码对业务设计进行测试用例设计,实现业务集成测试的能力。
-
-
-### 1.6.2. 自动化测试规范
-
-1. 每个源码文件在开发时,均要写调试的example,用于验证该文件的接口功能;测试文件的命名规则为:文件名 + “_Test.c(pp)”;
-例如:
-* C语言:log_impl.c对应的测试文件为log_impl_Test.cpp;
-* C++:LogImpl.cpp对应的测试文件为LogImpl_Test.cpp;
-
-## 1.7. 编码规范
-
-1. 文件命名统一使用大驼峰命名规则;
-2. 混合多态单例的C++抽象接口头文件需要有Cpp关键字标识;
-3. 多单单例的头文件 / 类名 统一使用“I”前缀,interface的单词首字母;
-4. 抽象对象接口类统一使用“V”前缀, virtual的单词首字母;
-5. 所有函数统一使用大驼峰命名规则;
-6. 其它遵循华为的编码规范要求;
\ No newline at end of file
diff --git a/doc/develop_standard.md b/doc/develop_standard.md
deleted file mode 100644
index c218327..0000000
--- a/doc/develop_standard.md
+++ /dev/null
@@ -1,111 +0,0 @@
-# 1. SDK开发规范
-
-## 1.1. 编码规范
-
-### 1.1.1. 指针/智能指针
-
-* C++编码只能使用智能指针;
-* 指针遵循谁使用谁进行“非空”判断,且无比使用前进行“非空”判断;
-* 智能指针经过转换后务必进行“非空”判断;
-
-理论上,**明显不可能为空的指针,可以不进行“非空”判断**,可以不进行“非空”判断的场景:
-
-```
-void McuManagerImpl::OtherSideSendIpcMission(const unsigned int &serialNumber, const unsigned char &mission)
-{
- class McuRecvIpcMission : public McuRecvImpl, public McuRecv
- {
- public:
- McuRecvIpcMission(std::shared_ptr &mcuManager, const unsigned int &serialNumber,
- const OtherSideSendType &sendType, const unsigned char &mission)
- : McuRecvImpl(serialNumber, sendType)
- {
- McuRecv::mDataRecvReply = mission;
- McuRecvImpl::mMcuManager = mcuManager;
- }
- ~McuRecvIpcMission() = default;
- void ReplyFinished(const bool result) override
- {
- // 此处可以不进行“非空”判断,该值在有限范围内(OtherSideSendIpcMission函数内部)就能看出是否为空
- McuRecvImpl::mMcuManager->ReplyOtherSideSendIpcMission(ASK_RESULT::SUCCEED, McuRecvImpl::mSerialNumber);
- }
- };
- std::shared_ptr monitor = GetMcuMonitor();
- std::shared_ptr manager = std::dynamic_pointer_cast(SharedFromThis());
- std::shared_ptr recv =
- std::make_shared(manager, serialNumber, OtherSideSendType::SEND_IPC_MISSION, mission);
- if (monitor) {
- monitor->RecvIpcMissionEvent(recv, static_cast(mission));
- }
- else {
- LogWarning("mMonitor is nullptr, AddMcuRecv.\n");
- AddMcuRecv(recv);
- }
-}
-```
-
-**没有进行“非空”判断的代码,应该开发测试用例,保证“空指针”的报错。**
-
-### 1.1.2. 注释
-
-* 注释必须使用英文,且使用翻译器翻译;
- 避免编码问题导致的乱码,且需要保证阅读困难时可使用翻译器翻译成可读的中文;
-
-**注:** 注释翻译工具使用[百度翻译](https://fanyi.baidu.com/);翻译的注释在使用doxygen工具生成接口文档时,在网页上方便翻译成中文。
-
-### 1.1.3. C++继承
-
-* 子类使用父类的函数时,函数前必须加父类名,降低阅读难度,没有父类名的一律为本类函数(有可能是虚函数);
-
-### 1.1.4. 变量命名
-
-#### 1.1.4.1. 结构体/类成员
-
-* 结构体和类成员必须要使用驼峰命名法,且首字母必须为m表示成员变量;
-
-```
-typedef struct app_get_product_info
-{
- app_get_product_info();
- std::string mModel;
- std::string mCompany;
- std::string mSoc;
- std::string mSp;
-} AppGetProductInfo;
-```
-
-### 1.1.5. 文件命名
-
-* 文件名必须使用驼峰命名法,且首字母大写;
-
-### 1.1.6. 代码排版
-
-* 使用统一标准的代码排版风格,保持多人开发时代码的整洁,避免因为排版(特别是编辑工具的自动排版功能)导致每次提交时都产生大量的排版修改,影响后续代码异常排查;
-
- 请使用仓库跟目录下.clang-format配置文件进行排版,如果使用vscode编辑器开发代码,可直接使用快捷键ctrl+alt+f进行排版;也可以使用构建脚本对代码进行排版。
-
-**对发生修改的代码进行格式化:**
-
-```code
-$ make cmake // 在仓库根目录执行,对发生修改的文件创建格式化命令
-$ cd cmake-shell/
-$ make improve_modified_code // 文件格式化命令,统一排版,此命名只对发生修改的文件进行格式化
-```
-
-**对全部文件进行格式化:**
-
-```code
-详见配置文件://build/global_config.cmake
-把 COMPILE_IMPROVE_SUPPORT 设置为 true 时,将会在每次编译代码时进行格式化。
-if(${LINUX_TEST} MATCHES "true")
- set(CLANG_TIDY_SUPPORT "true")
- set(CLANG_FORMAT_SUPPORT "true")
- set(COMPILE_IMPROVE_SUPPORT "false") # 开启后每次编译可能会很慢
- set(LLVM_PATH "$ENV{HOME}/llvm-project")
-endif()
-```
-
-### 1.1.7. 函数
-
-* 单个函数代码行控制在50行内,阅读时无需上下滚动去理解代码逻辑;极少数初始化数据的无逻辑推理的代码除外;
-* 函数参数不能超过10个;
diff --git a/doc/doxygen_user_guide.md b/doc/doxygen_user_guide.md
deleted file mode 100644
index 33907f6..0000000
--- a/doc/doxygen_user_guide.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# 1. Linux嵌入式项目使用Doxygen生成API文档
-
-## 1.1. Doxygen简介
-
- Doxygen是一个开源的文档生成工具,可以用来生成项目源代码的API文档。
-
-## 1.2. Doxygen安装
-
- Doxygen安装非常简单,直接在官网下载最新版本即可。
-
-```
- $ sudo apt-get install doxygen
-```
-
-## 1.3. 安装Graphviz
-
- Doxygen本身不直接支持画图功能,但它可以生成DOT格式的图形描述文件,然后使用Graphviz工具进行渲染。
-
-```
-$ sudo apt-get install graphviz
-```
\ No newline at end of file
diff --git a/doc/gdb_coredump_guide.md b/doc/gdb_coredump_guide.md
deleted file mode 100644
index b7de2ad..0000000
--- a/doc/gdb_coredump_guide.md
+++ /dev/null
@@ -1,209 +0,0 @@
-# 1. gdb coredump分析
-
- 本文介绍ubuntu系统环境下coredump文件的分析方法。
-
-**一个coredump示例:**
-
-```
-$ ../output_files/test/bin/McuManagerTest --gtest_filter=McuManagerTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission
-Note: Google Test filter = McuManagerTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission
-[==========] Running 1 test from 1 test suite.
-[----------] Global test environment set-up.
-[----------] 1 test from McuManagerTest
-NewLog succeed.
-LogImplInit
-[ RUN ] McuManagerTest.RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission
-2024-05-15 17:43:04,782 INFO [default] [McuManagerMakePtr.cpp:23]:CreateMcuManager is ok.
-
-2024-05-15 17:43:04,783 INFO [default] [IMcuManager.cpp:72]:Instance changed succeed.
-
-2024-05-15 17:43:04,783 INFO [default] [UartDeviceImpl.cpp:277]:Create the uart device object.
-
-Can't Open Serial Port: No such file or directory
-2024-05-15 17:43:04,784 ERROR [default] [McuDevice.cpp:51]:IUartOpen failed.
-
-2024-05-15 17:43:04,787 INFO [default] [UartDeviceImpl.cpp:277]:Create the uart device object.
-
-Can't Open Serial Port: No such file or directory
-2024-05-15 17:43:04,787 ERROR [default] [McuDevice.cpp:51]:IUartOpen failed.
-
-terminate called without an active exception
-Aborted (core dumped)
-```
-
-## 1.1. coredump文件生成路径查询
-
-```
-$ cat /proc/sys/kernel/core_pattern
-|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E
-```
-
-修改coredump文件生成路径:
-
-```
-$ sudo sh -c 'echo /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p > /proc/sys/kernel/core_pattern'
-$ cat /proc/sys/kernel/core_pattern
-/home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p
-```
-命令:
-sudo sh -c 'echo /path/core.%e.%p > /proc/sys/kernel/core_pattern'
-
-例如:
-```
-sudo sh -c 'echo /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p > /proc/sys/kernel/core_pattern'
-```
-
-**发现路径下并未生成coredump文件**
-
-```
-$ ulimit -a
-core file size (blocks, -c) 0 // 0表示终端未开启core dump
-data seg size (kbytes, -d) unlimited
-scheduling priority (-e) 0
-file size (blocks, -f) unlimited
-pending signals (-i) 63499
-max locked memory (kbytes, -l) 65536
-max memory size (kbytes, -m) unlimited
-open files (-n) 1024
-pipe size (512 bytes, -p) 8
-POSIX message queues (bytes, -q) 819200
-real-time priority (-r) 0
-stack size (kbytes, -s) 8192
-cpu time (seconds, -t) unlimited
-max user processes (-u) 63499
-virtual memory (kbytes, -v) unlimited
-file locks (-x) unlimited
-```
-
-解决:
-```
-$ ulimit -c unlimited
-```
-
-sudo echo /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell/core.%e.%p > /proc/sys/kernel/core_pattern
-
-## 1.2. gdb查看堆栈信息
-
-**Ubuntu系统需要加sudo执行程序才会生成coredump文件。**
-
-### 1.2.1. 无法识别coredump文件
-
- 在gdb中无法识别coredump文件,如下所示:
-
-```
-$ sudo gdb ../output_files/test/bin/McuManagerTest core.smbd.3390383
-[sudo] password for xiaojiazhu:
-Sorry, try again.
-[sudo] password for xiaojiazhu:
-GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
-Copyright (C) 2020 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-Type "show copying" and "show warranty" for details.
-This GDB was configured as "x86_64-linux-gnu".
-Type "show configuration" for configuration details.
-For bug reporting instructions, please see:
-.
-Find the GDB manual and other documentation resources online at:
- .
-
-For help, type "help".
-Type "apropos word" to search for commands related to "word"...
-Reading symbols from ../output_files/test/bin/McuManagerTest...
-
-warning: core file may not match specified executable file. // 表示coredump文件与可执行文件不匹配
-[New LWP 3390383]
-Core was generated by `/usr/sbin/smbd --foreground --no-process-group'.
-Program terminated with signal SIGABRT, Aborted.
-#0 0x00007fd59718600b in ?? ()
-(gdb) bt
-#0 0x00007fd59718600b in ?? ()
-#1 0x0000000000001c80 in ?? ()
-#2 0x0000000000000000 in ?? ()
-```
-
-由于gdb和asan同时启用会冲突,导致无法识别coredump文件。解决办法如下:
-
-修改://build/sdk_config.cmake
-
-```
-# Gdb debug
-if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
- message("---------------------------Debug mode.-----------------------")
- SET(CMAKE_BUILD_TYPE "Debug")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -Wall -g -ggdb")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -Wall -g -ggdb")
- SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
- SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
- # asan
- # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
- # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=leak -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined")
-else()
- message("---------------------------Release mode.-----------------------")
- SET(CMAKE_BUILD_TYPE "Release")
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Os")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Os")
-endif()
-```
-
-解决后:
-
-```
-$ sudo gdb ../output_files/test/bin/McuManagerTest core.McuManagerTest.3406751
-GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
-Copyright (C) 2020 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-Type "show copying" and "show warranty" for details.
-This GDB was configured as "x86_64-linux-gnu".
-Type "show configuration" for configuration details.
-For bug reporting instructions, please see:
-.
-Find the GDB manual and other documentation resources online at:
- .
-
-For help, type "help".
-Type "apropos word" to search for commands related to "word"...
-Reading symbols from ../output_files/test/bin/McuManagerTest...
-[New LWP 3406751]
-[New LWP 3406753]
-[New LWP 3406752]
-[Thread debugging using libthread_db enabled]
-Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
-Core was generated by `../output_files/test/bin/McuManagerTest --gtest_filter=McuManagerTest.RH_INTEGR'.
-Program terminated with signal SIGABRT, Aborted.
-#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
-50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
-[Current thread is 1 (Thread 0x7fd355968740 (LWP 3406751))]
-(gdb) bt
-#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
-#1 0x00007fd35598f859 in __GI_abort () at abort.c:79
-#2 0x00007fd355d678d1 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
-#3 0x00007fd355d7337c in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
-#4 0x00007fd355d733e7 in std::terminate() () from /lib/x86_64-linux-gnu/libstdc++.so.6
-#5 0x000055c247b3ae41 in std::thread::operator= (__t=..., this=0x55c248d19748) at /usr/include/c++/9/thread:152
-#6 McuProtocol::Init (this=this@entry=0x55c248d196f8) at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/src/McuProtocol.cpp:58
-#7 0x000055c247b03e57 in McuManagerImpl::Init (this=0x55c248d19680)
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/middleware/McuManager/src/McuManagerImpl.cpp:46
-#8 0x000055c247acd3d4 in McuManagerTest::McuManagerTest_RH_INTEGRATION_McuManager_AUTO_OtherSideSendIpcMission_Test::TestBody (this=)
- at /usr/include/c++/9/bits/shared_ptr_base.h:1020
-#9 0x000055c247b303fd in void testing::internal::HandleExceptionsInMethodIfSupported(testing::Test*, void (testing::Test::*)(), char const*) () at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121
-#10 0x000055c247b23343 in testing::Test::Run() () at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121
-#11 0x000055c247b2342b in testing::TestInfo::Run() ()
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121
-#12 0x000055c247b2376e in testing::TestSuite::Run() ()
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121
-#13 0x000055c247b2a0fa in testing::internal::UnitTestImpl::RunAllTests() ()
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121
-#14 0x000055c247b3085e in bool testing::internal::HandleExceptionsInMethodIfSupported(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) ()
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121
-#15 0x000055c247b23529 in testing::UnitTest::Run() ()
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/utils/McuProtocol/./include/McuProtocol.h:121
-#16 0x000055c247ac9287 in RUN_ALL_TESTS ()
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/external/gtest/googletest-release-1.11.0/googletest/include/gtest/gtest.h:2490
-#17 main (argc=, argv=)
- at /home/xiaojiazhu/project/rkipc/battery/ipc-rk1106/ipc-sdk/test/middleware/McuManager/mainTest.cpp:22
-(gdb)
-```
\ No newline at end of file
diff --git a/doc/git/git-commit-standardize.md b/doc/git/git-commit-standardize.md
deleted file mode 100644
index 80151ac..0000000
--- a/doc/git/git-commit-standardize.md
+++ /dev/null
@@ -1,67 +0,0 @@
-### 背景
-
-Git每次提交代码都需要写commit message,否则就不允许提交。一般来说,commit message应该清晰明了,说明本次提交的目的,具体做了什么操作……但是在日常开发中,大家的commit message千奇百怪,中英文混合使用、fix bug等各种笼统的message司空见怪,这就导致后续代码维护成本特别大,有时自己都不知道自己的fix bug修改的是什么问题。基于以上这些问题,我们希望通过某种方式来监控用户的git commit message,让规范更好的服务于质量,提高大家的研发效率。
-
-### 规范建设
-
-#### 规范梳理
-
-初期我们在互联网上搜索了大量有关git commit规范的资料,但只有Angular规范是目前使用最广的写法,比较合理和系统化,并且有配套的工具(IDEA就有插件支持这种写法)。最后综合阿里巴巴高德地图相关部门已有的规范总结出了一套git commit规范。
-
-## **commit message格式**
-
-```plain
-(scope):
-```
-## type (必须)
-
-用于说明git commit的类别,只允许使用下面的标识。
-
-feat:新功能(feature)。
-
-fix/to:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。
-
-* fix:产生diff并自动修复此问题。适合于一次提交直接修复问题
-* to:只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix
-docs:文档(documentation)。
-
-style:格式(不影响代码运行的变动)。
-
-refactor:重构(即不是新增功能,也不是修改bug的代码变动)。
-
-perf:优化相关,比如提升性能、体验。
-
-test:增加测试。
-
-chore:构建过程或辅助工具的变动。
-
-revert:回滚到上一个版本。
-
-merge:代码合并。
-
-sync:同步主线或分支的Bug。
-
-## scope (可选)
-
-scope用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
-
-例如在Angular,可以是location,browser,compile,compile,rootScope, ngHref,ngClick,ngView等。如果你的修改影响了不止一个scope,你可以使用*代替。
-
-## subject (必须)
-
-ubject是commit目的的简短描述,不超过50个字符。
-
-建议使用中文(感觉中国人用中文描述问题能更清楚一些)。
-
-* 结尾不加句号或其他标点符号。
-* 根据以上规范git commit message将是如下的格式:
-```plain
-fix(DAO):用户查询缺少username属性
-feat(Controller):用户查询接口开发
-```
-以上就是我们梳理的git commit规范,那么我们这样规范git commit到底有哪些好处呢?
-* 便于程序员对提交历史进行追溯,了解发生了什么情况。
-* 一旦约束了commit message,意味着我们将慎重的进行每一次提交,不能再一股脑的把各种各样的改动都放在一个git commit里面,这样一来整个代码改动的历史也将更加清晰。
-* 格式化的commit message才可以用于自动化输出Change log。
-
-
diff --git a/doc/git/git-rebase.md b/doc/git/git-rebase.md
deleted file mode 100644
index 976b561..0000000
--- a/doc/git/git-rebase.md
+++ /dev/null
@@ -1,41 +0,0 @@
-
-## git rebase 合并多条 commit 记录
-
-### PS:gedit 不太好用,可以执行如下命令将编辑器修改为熟悉的 vim
-```shell
-git config --global core.editor "vim"
-```
-
-如图,我们有一些 commit 是比较凌乱的,现在希望将其整理为一条合适的 commit 提交到 远程仓库。
-
-
-我们需要将 day1 day2 add file 这三条记录合并为一条,执行
-
-```shell
-git rebase -i [commit]
-```
- **commit** 为你要合并的最后一条提交的下一个 commit,
-
- 这里为 640f9a20c7bb7e9e3dfc76b089745d5c95818fed
-
-指令如下
-```shell
-git rebase -i 640f9a20c7bb7e9e3dfc76b089745d5c95818fed
-```
-
-
-这里将弹出 vim 编辑窗口,可以看到有此次 rebase 涉及到三个 commit id,我们选取需要 pick 的 commit id,其余的参考下面注释,添加 s 前缀,表示 commit 用于提交但是归并到 pick 的 commit 中。
-
-:wq 保存,将进入下一个 vim 编辑界面
-
-
-将所有的 commit msg 编辑一个合适的归并 commit msg。
-再次执行 :wq 保存即可。
-
-可以看到,我们将两条不希望留存的 commit 记录归并到了
-
-
-
-640f9a20c7bb7e9e3dfc76b089745d5c95818fed 提交之中,并且,这样的操作并不会改变原本这个 commit id 的值。
-
-PS: 具体 rebase 指令细节参考 ```git rebase --help```
\ No newline at end of file
diff --git a/doc/git/git.md b/doc/git/git.md
deleted file mode 100644
index 4d28abd..0000000
--- a/doc/git/git.md
+++ /dev/null
@@ -1,299 +0,0 @@
-# git初步使用
-
-```
-git init
-
-//设置仓库的公共信息,这个user信息会体现在commit信息中
-git config --global user.name "yourname"
-git config --global user.email "your email"
-
-//在远程仓库方面,有两种模式,一种ssh一种https
-//https 简单方便,但每次push都要输入密码
-
-git remote add origin https://github.com/yourgit/your warehouse.git
-
-git add --all
-git commit -m "you commit info"
-git push -u origin master //第一次,以后可以用git push简化
-
-//ssh模式 需要先在github中添加自己的sshkey
-
-//首先看自己的本地目录下是否有 .ssh目录
-//没有的话
-ssh-keygen -t rsa -C "youremail@example.com"
-//并将 .ssh/id_rsa.pub中的key添加到github.com中
-
-git remote add origin git@github.com:yourgit/your warehouse.git
-
-```
-
-## git alias
- ~/.gitconfig配置文件可以配置当前用户全局git属性,当然每个字母了git仓库下也可以有一个.gitconfig配置当前仓库属性,属性中有一个alias属性来给git一些命令提供别名,方便使用
-
-配置方法参考 ```git config --help```
-
-下面给出我的配置仅供参考
-
- ```shell
-[user]
- email = liaojia138797@163.com
- name = ljx
-[alias]
- st = status
- co = checkout
- br = branch
- hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
- type = cat-file -t
- dump = cat-file -p
- cm = commit -m
- df = diff
-
-[core]
- editor = vim
- ```
-
-## gitignore
-
-```
- 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
- 可以使用标准的 glob 模式匹配。
- 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
- 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
-
- 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc]匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。
-```
-## git命令
-
-* git rm / git rm --cached
-```
-//当我们要删除文件filename, 并且工作区也不需要这个文件了
-git rm filename
-
-//当我们需要删除暂存区或者分支的文件,但是本地需要保留这个文件,只是不希望此文件被版本控制时
-git rm --cached filename
-```
-* git branch
-```
-查看本地分支:$ git branch
-查看远程分支:$ git branch -r
-创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
-切换分支:$ git checkout [name]
-创建新分支并立即切换到新分支:$ git checkout -b [name]
-删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
-合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
-创建远程分支(本地分支push到远程):$ git push origin [name]
-删除远程分支:$ git push origin :heads/[name]
-或 $ git push origin :[name]
-```
-* git remote
-```c++
-查看远程仓库:$ git remote -v
-添加远程仓库:$ git remote add [name] [url]
-删除远程仓库:$ git remote rm [name]
-修改远程仓库:$ git remote set-url --push [name] [newUrl]
-拉取远程仓库:$ git pull [remoteName] [localBranchName]
-推送远程仓库:$ git push [remoteName] [localBranchName]
-
-*如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
-$git push origin test:master // 提交本地test分支作为远程的master分支
-$git push origin test:test // 提交本地test分支作为远程的test分支
-```
-* git merge
-```
-//合并a分支到master
-git checkout master
-git merge a
-
-```
-* git tag
-```
-//标签
-git tag v1.0
-```
-* git reset
-```
-当将不想staging的文件add进了index,可以
-git reset HEAD
-git reset --hard xxx
-xxx可以是connid,可以退回到此id的版本
-hard (修改版本库,修改暂存区,修改工作区)
---hard HEAD~1 (或是commid)意为将版本库回退1个版本,但是不仅仅是将本地版本库的头指针全部重置到指定版本,也会重置暂存区,并且会将工作区代码也回退到这个版本
-这个操作非常危险,需要谨慎执行,如果不小心丢失掉了一些commit的话,执行
-git reflog找到丢失掉的commit再次git reset --hard 回去
-
-git reset --soft xxx
-soft (修改版本库,保留暂存区,保留工作区)
---soft HEAD~1 意为将版本库软回退1个版本,所谓软回退表示将本地版本库的头指针全部重置到指定版本,且将这次提交之后的所有变更都移动到暂存区。
-意思是当你commit后,又执行 git reset --soft HEAD^1,你本次commit直接从repository退回到index,未commit状态,如果是退回多个版本,则多次commit回退
-
-不加参数(--mixed)
-意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
-这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
-
-
-
-git revert xxx
-revert
--- git revert 也是撤销命令,区别在于reset是指向原地或者向前移动指针,git revert是创建一个commit来覆盖当前的commit,指针向后移动。
-
-https://www.jianshu.com/p/c2ec5f06cf1a
-
-git reset --hard :
-1.替换引用的指向.引用指向新的提交ID;
-2.替换暂存区.替换后,暂存区的内容和引用指向的目录树一致;
-3.替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同.
-
-git reset --soft :
-1.替换引用的指向.引用指向新的提交ID.
-即只更改引用的指向,不该编暂存区和工作区.
-
-git reset --mixed 或git reset :
-1.替换引用的指向.引用指向新的提交ID;
-2.替换暂存区.替换后,暂存区的内容和引用指向的目录树一致;
-即更改引用的指向及重置暂存区,但是工作区不变.
-
-实例:
-git reset
-仅用HEAD指向的目录树重置暂存区,工作区不受影响,相当于将之前用git add命令更新到暂存区的内容撤出暂存区.引用也未改变,因为引用重置到HEAD相当于没有重置.
-
-git reset HEAD
-同上
-
-git reset -- filename
-仅将文件filename的改动撤出暂存区,暂存区中其他文件不该变.相当于git add filename的反向操作.
-
-git reset HEAD filename
-同上
-
-git reset --soft HEAD^
-工作区和暂存区不改变,但是引用向前回退一次.当对最新提交的提交说明或提交不满意更改时,撤销最新的提交一遍重新提交.
-
-git reset HEAD^
-工作区不变,但是暂存区会回退到上一次提交之前,引用也会回退一次.
-
-git reset --mixed HEAD^
-同上
-
-git reset --hard HEAD^
-彻底撤销最近的提交.引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态.自上一次以来的提交全部丢失.
-```
-* git checkout
-```
-git checkout
-git checkout [--]
-1.是可选项,如果省略则相当于从暂存区进行检出.和reset命令大不相同:重置的默认值是HEAD,而检出的默认值是暂存区.
-2.因此重置一般用于重置暂存区(除非使用--hard,否则不重置工作区),而检出命令主要是覆盖工作区(如果不省略,也会替换暂存区中相应的文件).
-3.该命令不会改变HEAD的头指针,主要用于指定版本文件覆盖工作区中对应的文件.如果省略,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件.
-
-git checkout
-
-1.会改变HEAD头指针.之所以后面的参数写作,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入"分离头指针"的状态.在"分离头指针"的状态下的提交并不能被引用关联到,从而可能丢失.所以该命令主要作用是切换分支.
-2.如果省略则相当于对工作区进行状态检查.
-
-实例:
-git checkout branch
-检出branch分支,更新HEAD以指向branch分支,以及用branch指向的树更新暂存区和工作区.
-
-git checkout
-汇总显示工作区,暂存区与HEAD的差异
-
-git checkout HEAD
-同上
-
-git checkout -- filename
-用暂存区中的filename文件来覆盖工作区中的filename文件.相当于取消自上次执行git add filename以来(如果执行过)的本地修改
-//放弃修改回到以前的状态
-//这条命令有些危险,所有对文件的修改都没有了,因为我们刚刚把之前版本的文件复制过来重写了此文件。所以在用这条命令前,请务必确定真的不再需要保留刚才的修改
-
-git checkout branch -- filename
-维持HEAD的指向不变.用branch所指向的提交中的filename替换暂存区和工作区中相应的文件.会将暂存区和工作区中的filename直接覆盖
-
-git checkout -- .或者git checkout .
-会取消本地所有修改,相当于用暂存区的所有文件直接覆盖本地文件.
-```
-* git stash
-```
-当你做某个工作时遇到紧急情况需要切换branch,又不想commit当前未完成工作来造成不必要的繁琐log时,执行
-git stash
-或者执行
-git stash save "something"
-当你完成紧急工作后想要继续当时停下来的开发
-在原分支 git stash save -a "messeag",网上很多很多资料都没有加 -a 这个option选项,我想他们的代码开发可能都是在原代码上进行修改吧。而对于在项目里加入了代码新文件的开发来说,-a选项才会将新加入的代码文件同时放入暂存区。
-
-git stash pop可以弹回到最后一次的stash
-也可以
-git stash list查看有几个stash
-git stash apply stash@{}来回到你想要的stash
-git stash clear清除所有缓存的stash
-git stash show stash@{}来查看diff
-
-stash信息不回被删除,除非你弹回去了,但如果你不想要那时候的stash了。比如认为当时的改动是错误的,你可以
-git stash drop 如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。git stash clear 是清除所有stash,整个世界一下子清净了!
-git stash pop 与 git stash apply 的区别。
-当我使用git stash pop 和 git stash apply 几次以后,我发现stash list 好像比我预计的多了几个stash。于是我便上网去了解了一下这两个命令的区别。原来git stash pop stash@{id}命令会在执行后将对应的stash id 从stash list里删除,而 git stash apply stash@{id} 命令则会继续保存stash id。对于有点强迫症的我来说,是容不下越来越多的陈旧stash id 仍然存在的,所以我更习惯于用git stash pop 命令。
-```
-* git log
-```
-$ git log -p -2
-//我们常用 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新
-$ git log -U1 --word-diff
-//上下文行数1行,以单词来看差异,单词前后以+wold+ - - 表示出来
-```
-* git commit
-```
-$ git commit amend
-//有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,可以使用 --amend 选项重新提交
-```
-* git clone
-```
-git clone git@github.com:ljx791863565/xxx.git
-git clone https://github.com/ljx791863565/xxx.git
-```
-* git diff
-```
-//比较暂存区与版本库的改动
-git diff --staged
-
-git diff commid1 commid2
-git diff branch1 branch2
-
-git diff : 对比工作区(未 git add)和暂存区(git add 之后)
-git diff --cached: 对比暂存区(git add 之后)和版本库(git commit 之后)
-git diff HEAD: 对比工作区(未 git add)和版本库(git commit 之后)
-
-```
-* git config
-Git 提供了一个叫做 git config 的工具(译注:实际是 git-config 命令,只不过可以通过 git 加一个名字来呼叫此命令。),专门用来配置或读取相应的工作环境变量。而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
-
- * /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system选项,读写的就是这个文件。
- * ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global选项,读写的就是这个文件。
-当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
-
-供了一个叫做 git config 的工具(译注:实际是 git-config 命令,只不过可以通过 git 加一个名字来呼叫此命令。),专门用来配置或读取相应的工作环境变量。而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
-
- * /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system选项,读写的就是这个文件。
- * ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global选项,读写的就是这个文件。
-当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
-
-```
-第一个要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:
-$ git config --global user.name "John Doe"
-$ git config --global user.email johndoe@example.com
-如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
-
-还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
-$ git config --global merge.tool vimdiff
-Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。当然,你也可以指定使用自己开发的工具
-
-```
-## git问题解决
-
-* fatal: object 906d1543778b940af481c0ca7f5ce9d3d9771140 is corrupted
-```
-rm -rf .git
-git init
-git remote add origin git@github.com:yourgit/yourwarehouse.git
-git fetch
-git reset --hard origin/master
-```
-[https://blog.csdn.net/dengjianqiang2011/article/details/9260435](https://blog.csdn.net/dengjianqiang2011/article/details/9260435)
diff --git a/doc/git/pic/p1.jpg b/doc/git/pic/p1.jpg
deleted file mode 100644
index 4fc952a..0000000
Binary files a/doc/git/pic/p1.jpg and /dev/null differ
diff --git a/doc/git/pic/p2.jpg b/doc/git/pic/p2.jpg
deleted file mode 100644
index c16753c..0000000
Binary files a/doc/git/pic/p2.jpg and /dev/null differ
diff --git a/doc/git/pic/p3.jpg b/doc/git/pic/p3.jpg
deleted file mode 100644
index 2d8080d..0000000
Binary files a/doc/git/pic/p3.jpg and /dev/null differ
diff --git a/doc/git/pic/p4.jpg b/doc/git/pic/p4.jpg
deleted file mode 100644
index 1eba0e6..0000000
Binary files a/doc/git/pic/p4.jpg and /dev/null differ
diff --git a/doc/git/pic/p5.jpg b/doc/git/pic/p5.jpg
deleted file mode 100644
index 3923ed0..0000000
Binary files a/doc/git/pic/p5.jpg and /dev/null differ
diff --git a/doc/git_guide.md b/doc/git_guide.md
deleted file mode 100644
index 35e26f5..0000000
--- a/doc/git_guide.md
+++ /dev/null
@@ -1,179 +0,0 @@
-# 1. git使用手册
-
-## 1.1. 概述
-
- git是分布式版本控制系统,在多人开发中,git可以很好的管理代码的版本。
-
-## 1.2. 源码托管服务器
-
- github和gitlab还有gitee(国产)都是开源的代码托管服务器,可以用来管理源码。
-
-## 1.3. git安装
-
-## 1.4. git分支管理
-
-### 1.4.1. git创建本地分支
-
-* 基于远端分支创建一个本地分支,同时新建一个对应的远端分支:
-
- 当主干发生较大变化,例如:原厂更新sdk时,需要新建分支,划分界限。
-
-```code
-$ 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.4.2. git获取远端分支
-
- 当想知道远端是否新建了分支,可使用git fetch命令获取远端分支。
-
-**git fetch示例:**
-
-```code
-$ git fetch
-------------
-remote: Enumerating objects: 21, done.
-remote: Counting objects: 100% (21/21), done.
-remote: Compressing objects: 100% (11/11), done.
-remote: Total 14 (delta 8), reused 0 (delta 0), pack-reused 0
-Unpacking objects: 100% (14/14), 2.14 KiB | 156.00 KiB/s, done.
-From gitee.com:shenzhen-jiuyilian/ipc-rk1106
- bf71a01..2b9b803 master -> origin/master
- * [new branch] sdk-202402 -> origin/sdk-202402 // 此处发现远端新建了分支
-Fetching submodule ipc-sdk
-From gitee.com:shenzhen-jiuyilian/ipc
- 7c261bd..eec9fb4 master-develop -> origin/master-develop
-```
-
-**多个远端仓库git fetch示例:**
-
-```code
-$ git remote -v
-----------------
-dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (fetch)
-dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (push)
-rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (fetch)
-rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (push)
-$ git fetch dgiot // git fetch + 远端仓库名称
----------------------------------------------
-remote: Enumerating objects: 9, done.
-remote: Counting objects: 100% (9/9), done.
-remote: Compressing objects: 100% (7/7), done.
-remote: Total 9 (delta 3), reused 5 (delta 2), pack-reused 0
-Unpacking objects: 100% (9/9), 8.74 KiB | 746.00 KiB/s, done.
-From gitee.com:shenzhen-jiuyilian/fastbootserver
- * [new branch] sdk-202405 -> dgiot/sdk-202405
-```
-
-### 1.4.3. git新增远端地址
-
- 在一个git仓库中,可以同时管理多个远端地址,例如:在原厂的git仓库中,可以在仓库添加一个私人的git仓库,这样后续把修改提交到自己的仓库进行代码管理。
-
-**git remote add示例:**
-
-命令格式:
-
-```code
-git remote add
-```
-
-示例:
-
-```code
-$ git remote add dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git
----------------------------------------------------------------------------
-$ git remote -v
-----------------
-dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (fetch)
-dgiot git@gitee.com:shenzhen-jiuyilian/fastbootserver.git (push)
-rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (fetch)
-rk https://gerrit.rock-chips.com:8443/linux/linux/ipc/app/fastboot_server (push)
-$ git fetch dgiot
-------------------
-remote: Enumerating objects: 107, done.
-remote: Counting objects: 100% (104/104), done.
-remote: Compressing objects: 100% (45/45), done.
-remote: Total 99 (delta 47), reused 89 (delta 42), pack-reused 0
-Unpacking objects: 100% (99/99), 29.55 KiB | 315.00 KiB/s, done.
-From gitee.com:shenzhen-jiuyilian/fastbootserver
- * [new branch] master -> dgiot/master
- * [new branch] sdk-202405 -> dgiot/sdk-202405
-$ git branch -a
-----------------
-* (HEAD detached at bf91101)
- remotes/dgiot/master
- remotes/dgiot/sdk-202405
- remotes/m/master
- remotes/rk/master
-$ git checkout -b sdk-202405 m/master
---------------------------------------
-Switched to a new branch 'sdk-202405'
-$ git branch -a
-----------------
-* sdk-202405
- remotes/dgiot/master
- remotes/dgiot/sdk-202405
- remotes/m/master
- remotes/rk/master
-$ git pull dgiot sdk-202405
----------------------------
-From gitee.com:shenzhen-jiuyilian/fastbootserver
- * branch sdk-202405 -> FETCH_HEAD
-Updating bf91101..dc76264
-Fast-forward
- .clang-format | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- .gitmodules | 3 +++
- README.md | 30 ++++++++++++++++++++++++++++++
- rv1106_ipc_sdk | 1 +
- 4 files changed, 170 insertions(+)
- create mode 100644 .clang-format
- create mode 100644 .gitmodules
- create mode 100755 README.md
- create mode 160000 rv1106_ipc_sdk
-$ git submodule update --init
------------------------------
-Submodule 'rv1106_ipc_sdk' (git@gitee.com:shenzhen-jiuyilian/ipc-rk1106.git) registered for path 'rv1106_ipc_sdk'
-Cloning into '/home/xiaojiazhu/project/rkipc/ipc_20240517/project/app/component/fastboot_server/rv1106_ipc_sdk'...
-Submodule path 'rv1106_ipc_sdk': checked out 'ff8da760b201d365300aed78190de8564f0d2171'
-```
-
-## 1.5. 存疑
-
-* 不同的分支之间如何同步某个文件?
diff --git a/doc/huntting_project_report.md b/doc/huntting_project_report.md
deleted file mode 100644
index e8d0360..0000000
--- a/doc/huntting_project_report.md
+++ /dev/null
@@ -1,20 +0,0 @@
-# 1. 项目进度汇总
-
-## 1.1. 软件开发进度
-
-```mermaid
-gantt
-dateFormat YYYY-MM-DD
-title 软件进度-3月
-section 3月
-6帧探RTSP推流 : done, rtsp_media, 2024-03-18,3d
-SC230AI快启验证(快启报错) : crit, active, 2024-03-21,3d
-6帧探视频回放 : active, 2024-03-25,3d
-```
-
-### 1.1.1. 总结
-
-* 截至2024-3-25:
-1. 6侦探协议框架含http和tcp,http协议框架开发完成,rtsp推流到手机APP完成;
-2. 存在问题:rtsp推流存在卡顿问题,待优化;
-3. 更换SC230AI调试快启,快启报错,需要提问题单找原厂协助;
\ No newline at end of file
diff --git a/doc/markdown_user_guide.md b/doc/markdown_user_guide.md
deleted file mode 100644
index 4cb0f9b..0000000
--- a/doc/markdown_user_guide.md
+++ /dev/null
@@ -1,101 +0,0 @@
-# 1. Markdown使用手册
-
-## 1.1. 概述
-
-使用markdown编辑开发文档有以下好处:
-
-* markdown语法是一种语言,类似代码一样可以方便git管理,查看修改记录;
-* 对代码显示支持良好;
-* 可以进行UML类图和时序图的编辑/迭代/维护(强烈推荐);
-
-## 1.2. 如何使用Markdown
-
-此处介绍基于vscode编辑环境下使用Markdown的方法:
-
-* 首先安装vscode插件:
- 1. Markdown All in One
- 2. Markdown Preview Enhanced
-* 使用Markdown语法编辑开发文档,并使用vscode预览;
-* 右键使用浏览器打开并打印可生成PDF文档;
-
-## 1.3. 基本语法介绍
-
-提供常用语法参考,直接copy模块代码进行编辑。
-
-### 1.3.1. 常用命令
-
-```
-Markdown All in One: Create Table of Contents 创建目录
-Markdown All in One: Update Table of Contents 更新目录
-Markdown All in One: Add/Update section numbers 添加 / 更新章节编号
-Markdown All in One: Remove section numbers 删除章节编号
-Markdown All in One: Toggle code span 触发设置代码范围(`code`)
-Markdown All in One: Toggle code block 触发设置代码块(```codes```)
-Markdown All in One: Print current document to HTML
-Markdown All in One: Toggle math environment 触发设置数学环境
-Markdown All in One: Toggle list 触发设置列表环境
-```
-
-### 1.3.2. 代码段
-
-```
-/*This is your code.*/
-#include
-int main()
-{
- return 0;
-}
-```
-
-### 1.3.3. UML类图语法
-
-```mermaid
-classDiagram
- Animal <|-- Fish:继承
- Animal <|.. Zebra:实现
- Animal : +int age
- Animal : +String gender
- Animal: +isMammal()
- Animal: +mate()
- class Animal{
- <>
- +call() int
- }
- class Fish{
- -int sizeInFeet
- -canEat()
- }
- class Zebra{
- <>
- -func(int, int) int
- +bool is_wild
- +run(void)
- }
-```
-
-实现:一般指对抽象类的实例类 \
-继承:一般指对普通功能基类的派生/重载
-
-### 1.3.4. UML时序图
-
-```mermaid
-sequenceDiagram
-Alice->>+Jhon:Call function
-Jhon->>Jhon:handle
-Jhon-->>-Alice:Call return
-note left of Alice:function
-
-Alice->>+Jhon:Call function
-Jhon->>+Fancy:Call
-Fancy-->>-Jhon:Call return
-Jhon-->>-Alice:Call return
-
-Alice->>+Jhon:Call function
-Jhon->>+Fancy:Call
-Fancy->>-Fancy:End
-Jhon-->>-Alice:Call return
-```
-
-### 1.3.5. 踩坑记录
-
-1. 状态图不能使用default关键字作为一个状态名称,无法画图;
\ No newline at end of file
diff --git a/doc/sdk_build_guide.md b/doc/sdk_build_guide.md
deleted file mode 100644
index cecfbd8..0000000
--- a/doc/sdk_build_guide.md
+++ /dev/null
@@ -1,9 +0,0 @@
-# 1. SDK构建设计文档
-
-## 1.1. 概述
-
- SDK使用cmake构建,把分层解耦合的独立模块编译成静态库,应用程序根据依赖关系进行自动关联链接。
-
-## 1.2. 启用/禁用功能模块
-
- 根据不同的产品需求来启用/禁用功能模块,避免编译不需要的模块。
diff --git a/doc/vscode_ssh_guide.md b/doc/vscode_ssh_guide.md
deleted file mode 100644
index 60b5f6b..0000000
--- a/doc/vscode_ssh_guide.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# 1. vscode使用ssh链接虚拟机服务器
-
-# 2. 前言
-
- 在vscode使用ssh工具远程登录虚拟机服务器进行代码编辑。
-
-| 内容 | 时间 | 作者 | 备注 |
-|----|----|----|----|
-| 首版 | 2024-2-26 | xjz | - |
-
-## 2.1. Windows系统
-
-* 安装ssh
-
- 直接安装git工具即可支持ssh
-
-安装完后确认:
-```
-xiaojiazhu@ubuntu:~/project/rkipc/battery/ipc-rk1106/ipc-sdk/cmake-shell$ ssh
-usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
- [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
- [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
- [-i identity_file] [-J [user@]host[:port]] [-L address]
- [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
- [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
- [-w local_tun[:remote_tun]] destination [command]
-```
-
-* vscode安装ssh插件
-
- 使用 Remote - SSH 插件
-
-* ssh密钥配置
-
-1. Windows生成密钥;
-2. 把xxx.pub文件内容拷贝到虚拟机的ssh目录下的authorized_keys文件;
-此处是:
-
-```
-xiaojiazhu@ubuntu:~/project/.ssh$ pwd
-/home/xiaojiazhu/project/.ssh
-xiaojiazhu@ubuntu:~/project/.ssh$ ls
-authorized_keys id_rsa id_rsa.pub
-```
-
-这样设置后,每次登录ssh无需手动输入密码;
-
-3. 在Windows远程登录虚拟机:
-
-参考命令:ssh xiaojiazhu@192.168.1.29
-
-```
-PS C:\Users\xjz\.ssh> ssh xiaojiazhu@192.168.1.29
-Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 5.15.0-94-generic x86_64)
-
- * Documentation: https://help.ubuntu.com
- * Management: https://landscape.canonical.com
- * Support: https://ubuntu.com/advantage
-
-Expanded Security Maintenance for Applications is not enabled.
-
-75 updates can be applied immediately.
-To see these additional updates run: apt list --upgradable
-
-9 additional security updates can be applied with ESM Apps.
-Learn more about enabling ESM Apps service at https://ubuntu.com/esm
-
-New release '22.04.3 LTS' available.
-Run 'do-release-upgrade' to upgrade to it.
-
-Your Hardware Enablement Stack (HWE) is supported until April 2025.
-*** System restart required ***
-Last login: Sun Feb 25 17:20:04 2024 from 192.168.1.29
-xiaojiazhu@ubuntu:~$
-```
-## 2.2. vscode设置
-
-配置文件参考
-
-```
-Host dgiot // 自定义的主机名
- HostName 192.168.1.29 // 远端的IP地址
- User xiaojiazhu 用户名
- Port 22
- IdentityFile "C:\Users\xjz\.ssh\id_ed25519" // 本端的私钥文件路径
- ForwardAgent yes // 忽略
-```
-
-多个远端IP复制即可。
diff --git a/test/application/MissionManager/tool/CMakeLists.txt b/test/application/MissionManager/tool/CMakeLists.txt
deleted file mode 100644
index 8cf7113..0000000
--- a/test/application/MissionManager/tool/CMakeLists.txt
+++ /dev/null
@@ -1,71 +0,0 @@
-include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
-include(${MIDDLEWARE_SOURCE_PATH}/HuntingUpgrade/build/hunting_upgrade.cmake)
-include(${HAL_SOURCE_PATH}/build/hal.cmake)
-set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
-set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
-
-include_directories(
- ./src
- ./include
- ${APPLICATION_SOURCE_PATH}/MissionManager/include
- ${APPLICATION_SOURCE_PATH}/MissionManager/src
- ${MIDDLEWARE_SOURCE_PATH}/AppManager/include
- ${MIDDLEWARE_SOURCE_PATH}/MediaManager/include
- ${MIDDLEWARE_SOURCE_PATH}/StateMachine/include
- ${MIDDLEWARE_SOURCE_PATH}/McuManager/include
- ${MIDDLEWARE_SOURCE_PATH}/StorageManager/include
- ${MIDDLEWARE_SOURCE_PATH}/StorageManager/src
- ${MIDDLEWARE_SOURCE_PATH}/FilesManager/include
- ${MIDDLEWARE_SOURCE_PATH}/DeviceManager/include
- ${UTILS_SOURCE_PATH}/StatusCode/include
- ${UTILS_SOURCE_PATH}/Log/include
- ${UTILS_SOURCE_PATH}/LinuxApi/include
- ${UTILS_SOURCE_PATH}/UpgradeTool/include
- ${UTILS_SOURCE_PATH}/KeyControl/include
- ${TEST_SOURCE_PATH}
- ${TEST_SOURCE_PATH}/middleware/AppManager/tool/include
- ${TEST_SOURCE_PATH}/middleware/AppManager/tool/src
- ${TEST_SOURCE_PATH}/middleware/MediaManager/tool/include
- ${TEST_SOURCE_PATH}/middleware/MediaManager/tool/src
- ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include
- ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include
-)
-# link_directories(
-# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs
-# )
-
-aux_source_directory(./src TEST_TOOL_SRC_FILES)
-set(TEST_TOOL_TARGET MissionManagerTestTool)
-add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES})
-target_link_libraries(${TEST_TOOL_TARGET} MissionManager AppManagerTestTool MediaManagerTestTool KeyControl UpgradeTool StatusCode Log)
-
-if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
-add_custom_target(
- MissionManagerTestTool_code_check
- COMMAND ${CLANG_TIDY_EXE}
- -checks='${CLANG_TIDY_CHECKS}'
- --header-filter=.*
- --system-headers=false
- ${TEST_TOOL_SRC_FILES}
- ${CLANG_TIDY_CONFIG}
- -p ${PLATFORM_PATH}/cmake-shell
- WORKING_DIRECTORY ${TEST_SOURCE_PATH}/application/MissionManager/tool
-)
-file(GLOB_RECURSE HEADER_FILES *.h)
-add_custom_target(
- MissionManagerTestTool_code_format
- COMMAND ${CLANG_FORMAT_EXE}
- -style=file
- -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES}
- WORKING_DIRECTORY ${TEST_SOURCE_PATH}/application/MissionManager/tool
-)
-add_custom_command(
- TARGET ${TEST_TOOL_TARGET}
- PRE_BUILD
- COMMAND make MissionManagerTestTool_code_check
- COMMAND make MissionManagerTestTool_code_format
- WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
-)
-endif()
-
-define_file_name(${TEST_TOOL_TARGET})
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp b/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp
deleted file mode 100644
index 5a17d83..0000000
--- a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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 "MissionManagerMakePtrTest.h"
-#include "ILog.h"
-#include "OnMissionStateMock.h"
-#include "PirTriggeredMissionStateMock.h"
-#include "TestMissionStateMock.h"
-#include "TopStateMock.h"
-void OverrideMissionManagerMakePtrObject(std::shared_ptr &appManagerMock)
-{
- std::shared_ptr impl = std::make_shared();
- std::shared_ptr test = std::dynamic_pointer_cast(impl);
- if (test) {
- test->mMissionManagerMock = appManagerMock;
- }
- MissionManagerMakePtr::GetInstance(&impl);
-}
-void CancelOverrideMissionManagerMakePtrObject(void)
-{
- std::shared_ptr tmp = MissionManagerMakePtr::GetInstance();
- std::shared_ptr test = std::dynamic_pointer_cast(tmp);
- if (test) {
- test->mMissionManagerMock.reset();
- }
- tmp.reset();
- test.reset();
- std::shared_ptr impl = std::make_shared();
- MissionManagerMakePtr::GetInstance(&impl);
-}
-MissionManagerMakePtrTest::MissionManagerMakePtrTest()
-{
-}
-MissionManagerMakePtrTest::~MissionManagerMakePtrTest()
-{
- mMissionManagerMock.reset();
-}
-std::shared_ptr MissionManagerMakePtrTest::CreateTopState(void)
-{
- std::shared_ptr state = std::make_shared();
- return state;
-}
-std::shared_ptr MissionManagerMakePtrTest::CreateMissionState(const IpcMission &mission)
-{
- 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();
- break;
- case IpcMission::ON:
- LogInfo("Create OnMissionStateMock.\n");
- state = std::make_shared();
- break;
-
- default:
- LogWarning("Unknown mission.\n");
- state = std::make_shared();
- break;
- }
- return state;
-}
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.h b/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.h
deleted file mode 100644
index 2587029..0000000
--- a/test/application/MissionManager/tool/src/MissionManagerMakePtrTest.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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 MISSION_MANAGER_MAKE_PTR_TEST_H
-#define MISSION_MANAGER_MAKE_PTR_TEST_H
-#include "MissionManagerMakePtr.h"
-#include "MissionManagerMock.h"
-#include "MissionManagerTestTool.h"
-void OverrideMissionManagerMakePtrObject(std::shared_ptr &appManagerMock);
-void CancelOverrideMissionManagerMakePtrObject(void);
-class MissionManagerMakePtrTest : public MissionManagerMakePtr
-{
-public:
- MissionManagerMakePtrTest();
- virtual ~MissionManagerMakePtrTest();
- std::shared_ptr CreateTopState(void) override;
- std::shared_ptr CreateMissionState(const IpcMission &mission) override;
-
-public:
- std::shared_ptr mMissionManagerMock;
-};
-#endif
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/MissionManagerMock.cpp b/test/application/MissionManager/tool/src/MissionManagerMock.cpp
deleted file mode 100644
index 278c86a..0000000
--- a/test/application/MissionManager/tool/src/MissionManagerMock.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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 "MissionManagerMock.h"
-#include "ILog.h"
-// const StatusCode MissionManagerTest::SetAppMonitor(std::shared_ptr &monitor)
-// {
-// LogInfo("MissionManagerTest::SetAppMonitor\n");
-// StatusCode code = SetAppMonitorTrace(monitor);
-// if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
-// return MissionManager::SetAppMonitor(monitor);
-// }
-// return code;
-// }
-// const StatusCode MissionManagerTest::SetAppMonitorTrace(std::shared_ptr &monitor)
-// {
-// LogInfo("MissionManagerTest::SetAppMonitorTrace\n");
-// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-// }
-// StatusCode MissionManagerTest::GetAllLedsTrace(std::map> &allLeds)
-// {
-// LogInfo("MissionManagerTest::GetAllLedsTrace\n");
-// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-// }
-// StatusCode MissionManagerTest::GetAllKeysTrace(std::map> &allKeys)
-// {
-// LogInfo("MissionManagerTest::GetAllKeysTrace\n");
-// return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-// }
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/MissionManagerMock.h b/test/application/MissionManager/tool/src/MissionManagerMock.h
deleted file mode 100644
index e9a4ee4..0000000
--- a/test/application/MissionManager/tool/src/MissionManagerMock.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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 MISSION_MANAGER_MOCK_H
-#define MISSION_MANAGER_MOCK_H
-#include "MissionManager.h"
-#include "MissionManagerTestTool.h"
-class MissionManagerTest : public MissionManager
-{
-public:
- MissionManagerTest() = default;
- virtual ~MissionManagerTest() = default;
- // const StatusCode SetAppMonitor(std::shared_ptr &monitor) override;
-
-protected:
- // virtual const StatusCode SetAppMonitorTrace(std::shared_ptr &monitor);
-};
-class MissionManagerMock : public MissionManagerTest
-{
-public:
- MissionManagerMock() = default;
- virtual ~MissionManagerMock() = default;
- // MOCK_METHOD1(SetAppMonitorTrace, const StatusCode(std::shared_ptr &));
-};
-#endif
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/MissionManagerTestTool.cpp b/test/application/MissionManager/tool/src/MissionManagerTestTool.cpp
deleted file mode 100644
index 5c1e174..0000000
--- a/test/application/MissionManager/tool/src/MissionManagerTestTool.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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 "MissionManagerTestTool.h"
-#include "ILog.h"
-#include "LinuxApi.h"
-#include "MissionManagerMakePtrTest.h"
-#include "MissionManagerMock.h"
-#include "UpgradeTool.h"
-void MissionManagerTestTool::Init(void)
-{
- mMissionManagerMock = std::make_shared();
- std::shared_ptr mock = std::dynamic_pointer_cast(mMissionManagerMock);
- OverrideMissionManagerMakePtrObject(mock);
-}
-void MissionManagerTestTool::UnInit(void)
-{
- mMissionManagerMock.reset();
- CancelOverrideMissionManagerMakePtrObject();
-}
-void MissionManagerTestTool::CreateUpgradeFile(void)
-{
- fx_system("touch " SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test");
- UpgradeTool::GetInstance()->PackFile(SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH "-test",
- SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH,
- "1.0.0.0",
- "hunting",
- "dgiot",
- "app");
-}
-void MissionManagerTestTool::RemoveUpgradeFile(void)
-{
- fx_system("rm " SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH);
-}
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/OnMissionStateMock.cpp b/test/application/MissionManager/tool/src/OnMissionStateMock.cpp
deleted file mode 100644
index 8b64a89..0000000
--- a/test/application/MissionManager/tool/src/OnMissionStateMock.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * 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 "OnMissionStateMock.h"
-#include "ILog.h"
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/OnMissionStateMock.h b/test/application/MissionManager/tool/src/OnMissionStateMock.h
deleted file mode 100644
index 77ecbb7..0000000
--- a/test/application/MissionManager/tool/src/OnMissionStateMock.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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 ON_MISSION_STATE_MOCK_H
-#define ON_MISSION_STATE_MOCK_H
-#include "MissionManagerTestTool.h"
-#include "OnMissionState.h"
-class OnMissionStateTest : public OnMissionState
-{
-public:
- OnMissionStateTest() = default;
- virtual ~OnMissionStateTest() = default;
-
-protected:
-};
-class OnMissionStateMock : public OnMissionStateTest
-{
-public:
- OnMissionStateMock() = default;
- virtual ~OnMissionStateMock() = default;
-};
-#endif
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp b/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp
deleted file mode 100644
index cc245e0..0000000
--- a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.cpp
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 29acdaf..0000000
--- a/test/application/MissionManager/tool/src/PirTriggeredMissionStateMock.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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
diff --git a/test/application/MissionManager/tool/src/SdCardHandleStateMock.cpp b/test/application/MissionManager/tool/src/SdCardHandleStateMock.cpp
deleted file mode 100644
index 1ef9deb..0000000
--- a/test/application/MissionManager/tool/src/SdCardHandleStateMock.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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 "SdCardHandleStateMock.h"
-#include "ILog.h"
-#include "StatusCode.h"
-SdCardHandleStateTest::SdCardHandleStateTest()
-{
-}
-bool SdCardHandleStateTest::SdCardEventHandle(VStateMachineData *msg)
-{
- std::shared_ptr message = std::dynamic_pointer_cast(msg->GetMessageObj());
- std::shared_ptr> data =
- std::dynamic_pointer_cast>(message->mMissionData);
- if (StorageEvent::SD_CARD_INSERT == data->mData) {
- const std::string realSavePah = SD_CARD_MOUNT_PATH APPLICATION_CHECK_PATH;
- bool directoryExist = StorageBase::CheckDirectory(realSavePah.c_str());
- if (false == directoryExist) {
- LogWarning("Directory not exist.\n");
- }
- }
- return SdCardHandleState::SdCardEventHandle(msg);
-}
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/SdCardHandleStateMock.h b/test/application/MissionManager/tool/src/SdCardHandleStateMock.h
deleted file mode 100644
index 5f06a26..0000000
--- a/test/application/MissionManager/tool/src/SdCardHandleStateMock.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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 SD_CARD_HANDLE_STATE_MOCK_H
-#define SD_CARD_HANDLE_STATE_MOCK_H
-#include "MediaMonitorMock.h"
-#include "MissionManagerTestTool.h"
-#include "SdCardHandleState.h"
-#include "StorageBase.h"
-class SdCardHandleStateTest : public SdCardHandleState, virtual public MediaMonitorTrace, public StorageBase
-{
-public:
- SdCardHandleStateTest();
- virtual ~SdCardHandleStateTest() = default;
-
-private:
- bool SdCardEventHandle(VStateMachineData *msg);
-};
-class SdCardHandleStateMock : public MediaMonitorMock, public SdCardHandleStateTest
-{
-public:
- SdCardHandleStateMock() = default;
- virtual ~SdCardHandleStateMock() = default;
-};
-#endif
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/TestMissionStateMock.cpp b/test/application/MissionManager/tool/src/TestMissionStateMock.cpp
deleted file mode 100644
index 13a58cc..0000000
--- a/test/application/MissionManager/tool/src/TestMissionStateMock.cpp
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * 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 "TestMissionStateMock.h"
-#include "AppMonitorMock.h"
-#include "ILog.h"
-StatusCode TestMissionStateTest::GetProductInfo(AppGetProductInfo ¶m)
-{
- LogInfo("TestMissionStateTest::GetProductInfo\n");
- StatusCode code = GetProductInfoTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetProductInfo(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetDeviceAttr(AppGetDeviceAttr ¶m)
-{
- LogInfo("TestMissionStateTest::GetDeviceAttr\n");
- StatusCode code = GetDeviceAttrTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetDeviceAttr(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetMediaInfo(AppGetMediaInfo ¶m)
-{
- LogInfo("TestMissionStateTest::GetMediaInfo\n");
- StatusCode code = GetMediaInfoTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetMediaInfo(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetSdCardInfo(AppGetSdCardInfo ¶m)
-{
- LogInfo("TestMissionStateTest::GetSdCardInfo\n");
- StatusCode code = GetSdCardInfoTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetSdCardInfo(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetBatteryInfo(AppGetBatteryInfo ¶m)
-{
- LogInfo("TestMissionStateTest::GetBatteryInfo\n");
- StatusCode code = GetBatteryInfoTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetBatteryInfo(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetParamValue(AppParamValue ¶m)
-{
- LogInfo("TestMissionStateTest::GetParamValue\n");
- StatusCode code = GetParamValueTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetParamValue(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetCapability(AppGetCapability ¶m)
-{
- LogInfo("TestMissionStateTest::GetCapability\n");
- StatusCode code = GetCapabilityTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetCapability(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetLockVideoStatus(LockVideoStatus ¶m)
-{
- LogInfo("TestMissionStateTest::GetLockVideoStatus\n");
- StatusCode code = GetLockVideoStatusTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetLockVideoStatus(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetStorageInfo(std::vector ¶m)
-{
- LogInfo("TestMissionStateTest::GetStorageInfo\n");
- StatusCode code = GetStorageInfoTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetStorageInfo(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m)
-{
- LogInfo("TestMissionStateTest::GetStorageFileList\n");
- StatusCode code = GetStorageFileListTrace(fileInfo, param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::GetStorageFileList(fileInfo, param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::SetDateTime(const AppSetDateTime ¶m)
-{
- LogInfo("TestMissionStateTest::SetDateTime\n");
- LogInfo("mYear = %u\n", param.mYear);
- LogInfo("mMonth = %02u\n", param.mMonth);
- LogInfo("mDay = %02u\n", param.mDay);
- LogInfo("mHour = %02u\n", param.mHour);
- LogInfo("mMinute = %02u\n", param.mMinute);
- LogInfo("mSecond = %02u\n", param.mSecond);
- StatusCode code = SetDateTimeTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::SetDateTime(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::SetTimeZone(const unsigned int &zone)
-{
- LogInfo("TestMissionStateTest::SetTimeZone = %u\n", zone);
- StatusCode code = SetTimeZoneTrace(zone);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::SetTimeZone(zone);
- }
- return code;
-}
-StatusCode TestMissionStateTest::SetParamValue(const AppSetParamValue ¶m)
-{
- LogInfo("TestMissionStateTest::SetParamValue.\n");
- StatusCode code = SetParamValueTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::SetParamValue(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::EnterRecorder(void)
-{
- LogInfo("TestMissionStateTest::EnterRecorder.\n");
- StatusCode code = EnterRecorderTrace();
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::EnterRecorder();
- }
- return code;
-}
-StatusCode TestMissionStateTest::AppPlayback(const PlayBackEvent &event)
-{
- LogInfo("TestMissionStateTest::AppPlayback.\n");
- StatusCode code = AppPlaybackTrace(event);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::AppPlayback(event);
- }
- return code;
-}
-StatusCode TestMissionStateTest::UploadFile(AppUploadFile ¶m)
-{
- LogInfo("TestMissionStateTest::UploadFile\n");
- StatusCode code = UploadFileTrace(param);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::UploadFile(param);
- }
- return code;
-}
-StatusCode TestMissionStateTest::AppClientConnected(std::shared_ptr &client)
-{
- LogInfo("TestMissionStateTest::AppClientConnected\n");
- StatusCode code = AppClientConnectedTrace(client);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return AppMonitor::AppClientConnected(client);
- }
- return code;
-}
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/TestMissionStateMock.h b/test/application/MissionManager/tool/src/TestMissionStateMock.h
deleted file mode 100644
index 3590c2b..0000000
--- a/test/application/MissionManager/tool/src/TestMissionStateMock.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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 TEST_MISSION_STATE_MOCK_H
-#define TEST_MISSION_STATE_MOCK_H
-#include "AppMonitorMock.h"
-#include "MissionManagerTestTool.h"
-#include "TestMissionState.h"
-class TestMissionStateTest : public TestMissionState, virtual public AppMonitorTrace
-{
-public:
- TestMissionStateTest() = default;
- virtual ~TestMissionStateTest() = default;
- StatusCode GetProductInfo(AppGetProductInfo ¶m) override;
- StatusCode GetDeviceAttr(AppGetDeviceAttr ¶m) override;
- StatusCode GetMediaInfo(AppGetMediaInfo ¶m) override;
- StatusCode GetSdCardInfo(AppGetSdCardInfo ¶m) override;
- StatusCode GetBatteryInfo(AppGetBatteryInfo ¶m) override;
- StatusCode GetParamValue(AppParamValue ¶m) override;
- StatusCode GetCapability(AppGetCapability ¶m) override;
- StatusCode GetLockVideoStatus(LockVideoStatus ¶m) override;
- StatusCode GetStorageInfo(std::vector ¶m) override;
- StatusCode GetStorageFileList(const AppGetFileInfo &fileInfo, std::vector ¶m) override;
- StatusCode SetDateTime(const AppSetDateTime ¶m) override;
- StatusCode SetTimeZone(const unsigned int &zone) override;
- StatusCode SetParamValue(const AppSetParamValue ¶m) override;
- StatusCode EnterRecorder(void) override;
- StatusCode AppPlayback(const PlayBackEvent &event) override;
- StatusCode UploadFile(AppUploadFile ¶m) override;
- StatusCode AppClientConnected(std::shared_ptr &client) override;
-
-protected:
-};
-class TestMissionStateMock : public AppMonitorMock, public TestMissionStateTest
-{
-public:
- TestMissionStateMock() = default;
- virtual ~TestMissionStateMock() = default;
-};
-#endif
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/TopStateMock.cpp b/test/application/MissionManager/tool/src/TopStateMock.cpp
deleted file mode 100644
index 183ca74..0000000
--- a/test/application/MissionManager/tool/src/TopStateMock.cpp
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * 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 "TopStateMock.h"
\ No newline at end of file
diff --git a/test/application/MissionManager/tool/src/TopStateMock.h b/test/application/MissionManager/tool/src/TopStateMock.h
deleted file mode 100644
index a54480f..0000000
--- a/test/application/MissionManager/tool/src/TopStateMock.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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 TOP_STATE_MOCK_H
-#define TOP_STATE_MOCK_H
-#include "MediaMonitorMock.h"
-#include "MissionManagerTestTool.h"
-#include "TopState.h"
-class TopStateTest : public TopState, virtual public MediaMonitorTrace
-{
-public:
- TopStateTest() = default;
- virtual ~TopStateTest() = default;
-
-protected:
-};
-class TopStateMock : public MediaMonitorMock, public TopStateTest
-{
-public:
- TopStateMock() = default;
- virtual ~TopStateMock() = default;
-};
-#endif
\ No newline at end of file
diff --git a/test/hal/tool/CMakeLists.txt b/test/hal/tool/CMakeLists.txt
deleted file mode 100644
index 88566d5..0000000
--- a/test/hal/tool/CMakeLists.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
-include(${HAL_SOURCE_PATH}/build/hal.cmake)
-set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
-set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
-
-include_directories(
- ./src
- ./include
- ${UTILS_SOURCE_PATH}/StatusCode/include
- ${UTILS_SOURCE_PATH}/Log/include
- ${UTILS_SOURCE_PATH}/KeyControl/include
- ${UTILS_SOURCE_PATH}/LedControl/include
- ${HAL_SOURCE_PATH}/src
- ${TEST_SOURCE_PATH}
- ${TEST_SOURCE_PATH}/utils/LinuxApiMock/include
-)
-# link_directories(
-# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs
-# )
-
-aux_source_directory(./src TEST_TOOL_SRC_FILES)
-set(TEST_TOOL_TARGET HalTestTool)
-add_library(${TEST_TOOL_TARGET} STATIC ${TEST_TOOL_SRC_FILES})
-target_link_libraries(${TEST_TOOL_TARGET} Hal KeyControl LedControl LinuxApiMock Log)
-
-if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
-add_custom_target(
- HalTestTool_code_check
- COMMAND ${CLANG_TIDY_EXE}
- -checks='${CLANG_TIDY_CHECKS}'
- --header-filter=.*
- --system-headers=false
- ${TEST_TOOL_SRC_FILES}
- ${CLANG_TIDY_CONFIG}
- -p ${PLATFORM_PATH}/cmake-shell
- WORKING_DIRECTORY ${TEST_SOURCE_PATH}/hal/tool
-)
-file(GLOB_RECURSE HEADER_FILES *.h)
-add_custom_target(
- HalTestTool_code_format
- COMMAND ${CLANG_FORMAT_EXE}
- -style=file
- -i ${TEST_TOOL_SRC_FILES} ${HEADER_FILES}
- WORKING_DIRECTORY ${TEST_SOURCE_PATH}/hal/tool
-)
-add_custom_command(
- TARGET ${TEST_TOOL_TARGET}
- PRE_BUILD
- COMMAND make HalTestTool_code_check
- COMMAND make HalTestTool_code_format
- WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
-)
-endif()
-
-define_file_name(${TEST_TOOL_TARGET})
\ No newline at end of file
diff --git a/test/hal/tool/src/CameraHalMock.cpp b/test/hal/tool/src/CameraHalMock.cpp
deleted file mode 100644
index 2531b05..0000000
--- a/test/hal/tool/src/CameraHalMock.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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 "CameraHalMock.h"
-#include "HalCppMock.h"
-#include "ILog.h"
-CameraHalTest::CameraHalTest(const CameraType &cameraType) : mCameraType(cameraType)
-{
-}
-void CameraHalTest::SetCameraMonitor(std::shared_ptr &monitor)
-{
- LogInfo("CameraHalTest::SetCameraMonitor.\n");
- mMonitor = monitor;
- SetCameraMonitorTrace(monitor);
- if (nullptr != mFastBootEvent) {
- monitor->ReportEvent(*(mFastBootEvent.get()));
- }
-}
-void CameraHalTest::SetCameraMonitorTrace(std::shared_ptr &monitor)
-{
- LogWarning("SetCameraMonitorTrace.\n");
-}
-StatusCode CameraHalTest::StartSingleTask(const CameraTaskParam ¶m)
-{
- LogInfo("CameraHalTest::StartSingleTask\n");
- StatusCode code = StartSingleTaskTrace(param);
- // if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- // return HalCpp::GetAllKeys(allKeys);
- // }
- return code;
-}
-StatusCode CameraHalTest::StartSingleTaskTrace(const CameraTaskParam ¶m)
-{
- LogInfo("CameraHalTest::StartSingleTaskTrace\n");
- return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-}
-CameraHalMock::CameraHalMock(const CameraType &cameraType) : CameraHalTest(cameraType)
-{
-}
-void CameraHalMock::MockReportCameraEvent(const CameraReportEvent &event)
-{
- auto monitor = mMonitor.lock();
- if (mMonitor.expired()) {
- LogWarning("monitor is nullptr.\n");
- mFastBootEvent = std::make_shared(event.mFileName, event.mCameraType);
- return;
- }
- monitor->ReportEvent(event);
-}
\ No newline at end of file
diff --git a/test/hal/tool/src/CameraHalMock.h b/test/hal/tool/src/CameraHalMock.h
deleted file mode 100644
index c8144ba..0000000
--- a/test/hal/tool/src/CameraHalMock.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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 CAMERA_HAL_MOCK_H
-#define CAMERA_HAL_MOCK_H
-#include "HalCpp.h"
-#include "HalTestTool.h"
-class CameraHalTest : public VCameraHal
-{
-public:
- CameraHalTest(const CameraType &cameraType);
- virtual ~CameraHalTest() = default;
- void SetCameraMonitor(std::shared_ptr &monitor) override;
- StatusCode StartSingleTask(const CameraTaskParam ¶m) override;
-
-private:
- virtual void SetCameraMonitorTrace(std::shared_ptr &monitor);
- virtual StatusCode StartSingleTaskTrace(const CameraTaskParam ¶m);
-
-protected:
- const CameraType mCameraType;
- std::weak_ptr mMonitor;
- std::shared_ptr mFastBootEvent;
-};
-class CameraHalMock : public CameraHalTest
-{
-public:
- CameraHalMock(const CameraType &cameraType);
- virtual ~CameraHalMock() = default;
- void MockReportCameraEvent(const CameraReportEvent &event);
- MOCK_METHOD1(SetCameraMonitorTrace, void(std::shared_ptr &));
- MOCK_METHOD1(StartSingleTaskTrace, StatusCode(const CameraTaskParam &));
-};
-#endif
\ No newline at end of file
diff --git a/test/hal/tool/src/HalCppMock.cpp b/test/hal/tool/src/HalCppMock.cpp
deleted file mode 100644
index 0c17208..0000000
--- a/test/hal/tool/src/HalCppMock.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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 "HalCppMock.h"
-#include "ILog.h"
-StatusCode HalCppTest::GetAllLeds(std::map> &allLeds)
-{
- LogInfo("HalCppTest::GetAllLeds\n");
- StatusCode code = GetAllLedsTrace(allLeds);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return HalCpp::GetAllLeds(allLeds);
- }
- return code;
-}
-StatusCode HalCppTest::GetAllLedsTrace(std::map> &allLeds)
-{
- LogInfo("HalCppTest::GetAllLedsTrace\n");
- return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-}
-StatusCode HalCppTest::GetAllKeys(std::map> &allKeys)
-{
- LogInfo("HalCppTest::GetAllKeys\n");
- StatusCode code = GetAllKeysTrace(allKeys);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return HalCpp::GetAllKeys(allKeys);
- }
- return code;
-}
-StatusCode HalCppTest::GetAllKeysTrace(std::map> &allKeys)
-{
- LogInfo("HalCppTest::GetAllKeysTrace\n");
- return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-}
-StatusCode HalCppTest::GetWifiHal(std::shared_ptr &wifi)
-{
- LogInfo("HalCppTest::GetAllKeys\n");
- StatusCode code = GetWifiHalTrace(wifi);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return HalCpp::GetWifiHal(wifi);
- }
- return code;
-}
-StatusCode HalCppTest::GetCameraHal(std::map> &allCameras)
-{
- LogInfo("HalCppTest::GetCameraHal\n");
- StatusCode code = GetCameraHalTrace(allCameras);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- return HalCpp::GetCameraHal(allCameras);
- }
- return code;
-}
-StatusCode HalCppTest::GetWifiHalTrace(std::shared_ptr &wifi)
-{
- LogInfo("HalCppTest::GetWifiHalTrace\n");
- return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-}
-StatusCode HalCppTest::GetCameraHalTrace(std::map> &allCameras)
-{
- LogInfo("HalCppTest::GetCameraHalTrace\n");
- return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-}
\ No newline at end of file
diff --git a/test/hal/tool/src/HalCppMock.h b/test/hal/tool/src/HalCppMock.h
deleted file mode 100644
index 46926eb..0000000
--- a/test/hal/tool/src/HalCppMock.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * 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 HAL_CPP_MOCK_H
-#define HAL_CPP_MOCK_H
-#include "HalCpp.h"
-#include "HalTestTool.h"
-class HalCppTest : public HalCpp
-{
-public:
- HalCppTest() = default;
- virtual ~HalCppTest() = default;
- StatusCode GetAllLeds(std::map> &allLeds) override;
- StatusCode GetAllKeys(std::map> &allKeys) override;
- StatusCode GetWifiHal(std::shared_ptr &wifi) override;
- StatusCode GetCameraHal(std::map> &allCameras) override;
-
-protected:
- virtual StatusCode GetAllLedsTrace(std::map> &allLeds);
- virtual StatusCode GetAllKeysTrace(std::map> &allKeys);
- virtual StatusCode GetWifiHalTrace(std::shared_ptr &wifi);
- virtual StatusCode GetCameraHalTrace(std::map> &allCameras);
-};
-class HalCppMock : public HalCppTest
-{
-public:
- HalCppMock() = default;
- virtual ~HalCppMock() = default;
- MOCK_METHOD1(GetAllLedsTrace, StatusCode(std::map> &));
- MOCK_METHOD1(GetAllKeysTrace, StatusCode(std::map> &));
- MOCK_METHOD1(GetWifiHalTrace, StatusCode(std::shared_ptr &));
- MOCK_METHOD1(GetCameraHalTrace, StatusCode(std::map> &));
-};
-#endif
\ No newline at end of file
diff --git a/test/hal/tool/src/HalMakePtrTest.cpp b/test/hal/tool/src/HalMakePtrTest.cpp
deleted file mode 100644
index 49ecd77..0000000
--- a/test/hal/tool/src/HalMakePtrTest.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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 "HalMakePtrTest.h"
-#include "ILog.h"
-void OverrideHalMakePtrObject(std::shared_ptr &halMock, std::shared_ptr &sdCardHalMock)
-{
- std::shared_ptr impl = std::make_shared();
- std::shared_ptr test = std::dynamic_pointer_cast(impl);
- if (test) {
- test->mHalCppMock = halMock;
- test->mSdCardHalMock = sdCardHalMock;
- }
- HalMakePtr::GetInstance(&impl);
-}
-void CancelOverrideHalMakePtrObject(void)
-{
- std::shared_ptr tmp = HalMakePtr::GetInstance();
- std::shared_ptr test = std::dynamic_pointer_cast(tmp);
- if (test) {
- test->mHalCppMock.reset();
- test->mSdCardHalMock.reset();
- }
- std::shared_ptr impl = std::make_shared();
- HalMakePtr::GetInstance(&impl);
-}
-HalMakePtrTest::HalMakePtrTest()
-{
-}
-HalMakePtrTest::~HalMakePtrTest()
-{
- mHalCppMock.reset();
- mSdCardHalMock.reset();
-}
-StatusCode HalMakePtrTest::CreateHalSharePtr(std::shared_ptr &impl)
-{
- if (mHalCppMock) {
- LogInfo("CreateHalSharePtr mHalCppMock\n");
- impl = mHalCppMock;
- }
- else {
- LogWarning("CreateMcuManager failed:mHalCppMock is nullptr.\n");
- }
- return CreateStatusCode(STATUS_CODE_OK);
-}
-StatusCode HalMakePtrTest::CreateSdCardHal(std::shared_ptr &impl)
-{
- impl = mSdCardHalMock;
- return CreateStatusCode(STATUS_CODE_OK);
-}
-StatusCode HalMakePtrTest::CreateAllKeyHal(std::vector> &keys)
-{
- if (mKeysMock.size() > 0) {
- LogInfo("Create mock keys.size = %d\n", mKeysMock.size());
- keys = mKeysMock;
- }
- else {
- HalMakePtr::CreateAllKeyHal(keys);
- }
- return CreateStatusCode(STATUS_CODE_OK);
-}
\ No newline at end of file
diff --git a/test/hal/tool/src/HalMakePtrTest.h b/test/hal/tool/src/HalMakePtrTest.h
deleted file mode 100644
index d2ca99d..0000000
--- a/test/hal/tool/src/HalMakePtrTest.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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 HAL_MAKE_PTR_TEST_H
-#define HAL_MAKE_PTR_TEST_H
-#include "HalCppMock.h"
-#include "HalMakePtr.h"
-#include "HalTestTool.h"
-#include "KeyControlMock.h"
-#include "SdCardHalMock.h"
-void OverrideHalMakePtrObject(std::shared_ptr &halMock, std::shared_ptr &sdCardHalMock);
-void CancelOverrideHalMakePtrObject(void);
-class HalMakePtrTest : public HalMakePtr
-{
-public:
- HalMakePtrTest();
- virtual ~HalMakePtrTest();
- StatusCode CreateHalSharePtr(std::shared_ptr &impl) override;
- StatusCode CreateSdCardHal(std::shared_ptr &impl) override;
- StatusCode CreateAllKeyHal(std::vector> &keys) override;
-
-public:
- std::shared_ptr mHalCppMock;
- std::shared_ptr mSdCardHalMock;
- std::vector> mKeysMock;
-};
-#endif
\ No newline at end of file
diff --git a/test/hal/tool/src/HalTestTool.cpp b/test/hal/tool/src/HalTestTool.cpp
deleted file mode 100644
index c1d9b6d..0000000
--- a/test/hal/tool/src/HalTestTool.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * 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 "HalTestTool.h"
-#include "CameraHalMock.h"
-#include "HalCppMock.h"
-#include "HalMakePtrTest.h"
-#include "ILog.h"
-#include "KeyControl.h"
-#include "KeyControlMock.h"
-#include "LedControlMock.h"
-#include "SdCardHalMock.h"
-#include "WifiHalMock.h"
-#include
-void HalTestTool::Init(void)
-{
- mHalMock = std::make_shared();
- mSdCardHal = std::make_shared();
- HalMockInit(mHalMock);
- // TODO: 初始化mSdCardHal
- std::shared_ptr halMock = std::dynamic_pointer_cast(mHalMock);
- std::shared_ptr sdCardHalMock = std::dynamic_pointer_cast(mSdCardHal);
- OverrideHalMakePtrObject(halMock, sdCardHalMock);
-}
-void HalTestTool::InitSdCardHal(std::shared_ptr &mock)
-{
- std::shared_ptr sdCardHal = std::dynamic_pointer_cast(mSdCardHal);
- if (nullptr == sdCardHal) {
- LogError("SdCardHalMock is null.\n");
- return;
- }
- sdCardHal->SetLinuxTest(mock);
-}
-void HalTestTool::UnInit(void)
-{
- mHalMock.reset();
- CancelOverrideHalMakePtrObject();
- mAllKeys.clear();
- mAllLeds.clear();
-}
-void HalTestTool::SetAllKeysResult(std::map> &allKeys)
-{
- std::shared_ptr halMock = mHalMock;
- SetAllKeysResult(halMock, allKeys);
- mAllKeys = allKeys;
-}
-void HalTestTool::SetAllLedsResult(std::map> &allLeds)
-{
- std::shared_ptr halMock = mHalMock;
- SetAllLedsResult(halMock, allLeds);
- mAllLeds = allLeds;
-}
-void HalTestTool::SetAllCamerasResult(std::map> &allCameras)
-{
- std::shared_ptr halMock = mHalMock;
- SetAllCamerasResult(halMock, allCameras);
- mAllCameras = allCameras;
-}
-void HalTestTool::MockKeyClick(const std::string &keyName, const unsigned int &pressingTimeMs)
-{
- std::shared_ptr key = SearchKey(keyName);
- if (!key) {
- LogError("Can't mock key event, key not found.\n");
- return;
- }
- std::shared_ptr keyMock = std::dynamic_pointer_cast(key);
- if (keyMock) {
- if (keyMock->MockKeyClick(pressingTimeMs)) {
- DeviceManagerNotice(keyName, pressingTimeMs);
- }
- }
- else {
- LogWarning("Key mock error.\n");
- }
-}
-void HalTestTool::SetLedStateExpectations(const std::string &ledName, const LedState &state,
- const unsigned int &aliveTimeMs, const unsigned int &blinkTimeMs)
-{
- std::shared_ptr &led = SearchLed(ledName);
- // if (!led) {
- // LogError("Can't set led state, led not found.\n");
- // return;
- // }
- // std::shared_ptr ledMock = std::dynamic_pointer_cast(led);
- // if (ledMock) {
- // LedControlMock::SetLedStateMock(ledMock, state, aliveTimeMs, blinkTimeMs);
- // }
- // else {
- // LogWarning("led mock error.\n");
- // }
- LedControlMock::SetLedStateMock(led, state, aliveTimeMs, blinkTimeMs);
-}
-void HalTestTool::MockReportCameraEvent(const std::string &fileName, const CameraType &cameraType)
-{
- std::shared_ptr camera = SearchCamera(cameraType);
- if (!camera) {
- LogError("Can't mock camera event, camera not found.\n");
- return;
- }
- std::shared_ptr cameraMock = std::dynamic_pointer_cast(camera);
- if (cameraMock) {
- CameraReportEvent report(fileName, cameraType);
- cameraMock->MockReportCameraEvent(report);
- }
- else {
- LogWarning("camera mock error.\n");
- }
-}
-void HalTestTool::DeviceManagerNotice(const std::string &keyName, const unsigned int &pressingTimeMs)
-{
-}
-void HalTestTool::KeyEventHappendOnce(std::shared_ptr &vMock, const unsigned int &pressingTimeMs)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- constexpr int CLICK_EVENT_HAPPENED_ONLY_ONCE = 1;
- if (KEY_ACTION_SHORT_CLICK <= pressingTimeMs && pressingTimeMs < KEY_ACTION_HOLD_DWON) {
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::SHORT_CLICK, _))
- .Times(CLICK_EVENT_HAPPENED_ONLY_ONCE)
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- }
- if (KEY_ACTION_HOLD_DWON <= pressingTimeMs) {
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_DOWN, _))
- .Times(AtLeast(1))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- }
-}
-std::shared_ptr HalTestTool::SearchKey(const std::string &keyName)
-{
- std::shared_ptr mock;
- std::map>::iterator iter;
- iter = mAllKeys.find(keyName);
- if (iter != mAllKeys.end()) {
- mock = std::dynamic_pointer_cast(mAllKeys[keyName]);
- }
- else {
- LogWarning("Can't found the key control.\n");
- }
- return mock;
-}
-void HalTestTool::InitAllKeysMock(std::map> &allKeys)
-{
- std::map>::iterator iter;
- for (iter = allKeys.begin(); iter != allKeys.end(); ++iter) {
- std::shared_ptr keyHal = iter->second;
- InitKeysMock(keyHal);
- }
-}
-void HalTestTool::InitKeysMock(std::shared_ptr &vMock)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- constexpr int KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT = 0;
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _)).Times(KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT);
-}
-void HalTestTool::HalMockInit(std::shared_ptr &vMock)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- EXPECT_CALL(*mock.get(), GetAllLedsTrace(_))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- EXPECT_CALL(*mock.get(), GetAllKeysTrace(_))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- std::shared_ptr wifiHal = std::make_shared();
- std::shared_ptr wifiHalMock = std::dynamic_pointer_cast(wifiHal);
- EXPECT_CALL(*wifiHalMock.get(), OpenApMode()).WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_OK))));
- EXPECT_CALL(*mock.get(), GetWifiHalTrace(_))
- .WillRepeatedly(DoAll(SetArgReferee<0>(wifiHal), Return(CreateStatusCode(STATUS_CODE_OK))));
- EXPECT_CALL(*mock.get(), GetCameraHalTrace(_))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
-}
-void HalTestTool::SetAllKeysResult(std::shared_ptr &vMock,
- std::map> &allKeys)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- // EXPECT_CALL(*mock.get(), GetAllKeysTrace(_))
- // .WillRepeatedly(DoAll(SetArgReferee<0>(allKeys), Return(CreateStatusCode(STATUS_CODE_OK))));
- // InitAllKeysMock(allKeys);
- std::vector> keysMock;
- std::shared_ptr impl = HalMakePtr::GetInstance();
- std::shared_ptr test = std::dynamic_pointer_cast(impl);
- if (test) {
- for (auto &key : allKeys) {
- std::shared_ptr keyMock = std::dynamic_pointer_cast(key.second);
- if (keyMock) {
- keysMock.push_back(keyMock);
- LogInfo("Create key mock. name = %s\n", keyMock->GetKeyName().c_str());
- }
- else {
- LogWarning("Can't create key mock.\n");
- }
- }
- test->mKeysMock = keysMock;
- LogInfo("Create all keys mock. size = %d\n", keysMock.size());
- }
-}
-void HalTestTool::SetAllLedsResult(std::shared_ptr &vMock,
- std::map> &allLeds)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- /**
- * @brief
- * Note: The SetArgReference function cannot be used here, as it will prevent the smart pointer from being released
- * within the TEST range, resulting in an error only being reported after all test cases have finished running.
- * Can't use:
- * EXPECT_CALL(*mock.get(), GetAllLedsTrace(_))
- * .WillRepeatedly(DoAll(SetArgReferee<0>(allLeds), Return(CreateStatusCode(STATUS_CODE_OK))));
- */
- auto getAllLeds = [=, &allLeds](std::map> &setAllLeds) {
- setAllLeds = allLeds;
- };
- EXPECT_CALL(*mock.get(), GetAllLedsTrace(_))
- .WillRepeatedly(DoAll(WithArgs<0>(Invoke(getAllLeds)), Return(CreateStatusCode(STATUS_CODE_OK))));
- InitAllLedsMock(allLeds);
-}
-std::shared_ptr &HalTestTool::SearchLed(const std::string &ledName)
-{
- static std::shared_ptr noLed = std::make_shared();
- std::shared_ptr mock;
- std::map>::iterator iter;
- iter = mAllLeds.find(ledName);
- if (iter != mAllLeds.end()) {
- // mock = std::dynamic_pointer_cast(mAllLeds[ledName]);
- std::shared_ptr &existLed = mAllLeds[ledName];
- return existLed;
- }
- LogWarning("Can't found the led control.\n");
- return noLed;
-}
-void HalTestTool::InitAllLedsMock(std::map> &allLeds)
-{
- std::map>::iterator iter;
- for (iter = allLeds.begin(); iter != allLeds.end(); ++iter) {
- std::shared_ptr ledHal = iter->second;
- InitLedsMock(ledHal);
- }
-}
-void HalTestTool::InitLedsMock(std::shared_ptr &vMock)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- constexpr int LED_SHOULD_NOT_BE_CONTROLED_WHEN_NOBODY_CONTROL_IT = 0;
- EXPECT_CALL(*mock.get(), SetLedStateTrace(_)).Times(LED_SHOULD_NOT_BE_CONTROLED_WHEN_NOBODY_CONTROL_IT);
-}
-void HalTestTool::SetAllCamerasResult(std::shared_ptr &vMock,
- std::map> &allCameras)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- /**
- * @brief
- * Note: The SetArgReference function cannot be used here, as it will prevent the smart pointer from being released
- * within the TEST range, resulting in an error only being reported after all test cases have finished running.
- * Can't use:
- * EXPECT_CALL(*mock.get(), GetCameraHalTrace(_))
- * .WillRepeatedly(DoAll(SetArgReferee<0>(allCameras), Return(CreateStatusCode(STATUS_CODE_OK))));
- */
- auto getAllCameras = [=, &allCameras](std::map> &setAllCameras) {
- setAllCameras = allCameras;
- };
- EXPECT_CALL(*mock.get(), GetCameraHalTrace(_))
- .WillRepeatedly(DoAll(WithArgs<0>(Invoke(getAllCameras)), Return(CreateStatusCode(STATUS_CODE_OK))));
- InitAllCamerasMock(allCameras);
-}
-std::shared_ptr HalTestTool::SearchCamera(const CameraType &cameraType)
-{
- std::shared_ptr mock;
- std::map>::iterator iter;
- iter = mAllCameras.find(cameraType);
- if (iter != mAllCameras.end()) {
- mock = std::dynamic_pointer_cast(mAllCameras[cameraType]);
- }
- else {
- LogWarning("Can't found the camera control.\n");
- }
- return mock;
-}
-void HalTestTool::InitAllCamerasMock(std::map> &allCameras)
-{
- std::map>::iterator iter;
- for (iter = allCameras.begin(); iter != allCameras.end(); ++iter) {
- std::shared_ptr cameraHal = iter->second;
- InitCamerasMock(cameraHal);
- }
-}
-void HalTestTool::InitCamerasMock(std::shared_ptr &vMock)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("vMock error.\n");
- return;
- }
- constexpr int USER_SHOULD_SET_CAMERA_MONITER = 1;
- // constexpr int SINGLE_TASK_DEFAULT_TIMES = 0;
- EXPECT_CALL(*mock.get(), SetCameraMonitorTrace(_)).Times(USER_SHOULD_SET_CAMERA_MONITER);
- EXPECT_CALL(*mock.get(), StartSingleTaskTrace(_))
- .Times(AnyNumber())
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_OK))));
-}
-void HalTestTool::MockSdCardRemove(std::shared_ptr &mock)
-{
- std::shared_ptr sdCardHal = std::dynamic_pointer_cast(mSdCardHal);
- if (nullptr == sdCardHal) {
- LogError("SdCardHalMock is null.\n");
- return;
- }
- sdCardHal->MockSdCardRemove(mock);
-}
-void HalTestTool::MockSdCardInsert(std::shared_ptr &mock)
-{
- std::shared_ptr sdCardHal = std::dynamic_pointer_cast(mSdCardHal);
- if (nullptr == sdCardHal) {
- LogError("SdCardHalMock is null.\n");
- return;
- }
- sdCardHal->MockSdCardInsert(mock);
-}
-std::shared_ptr HalTestTool::MakeKeyHalTest(const std::string &keyName)
-{
- std::shared_ptr key = std::make_shared(keyName);
- std::dynamic_pointer_cast(key)->InitKeyControlMock();
- return key;
-}
-std::shared_ptr HalTestTool::MakeLedHalTest(const std::string &ledName)
-{
- std::shared_ptr led = std::make_shared(ledName);
- return led;
-}
-std::shared_ptr HalTestTool::MakeCameraHalTest(const CameraType &type)
-{
- std::shared_ptr camera = std::make_shared(type);
- return camera;
-}
\ No newline at end of file
diff --git a/test/hal/tool/src/KeyControlMock.cpp b/test/hal/tool/src/KeyControlMock.cpp
deleted file mode 100644
index 6bb42aa..0000000
--- a/test/hal/tool/src/KeyControlMock.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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 "KeyControlMock.h"
-#include "ILog.h"
-unsigned int KeyControlTest::GetStatusCheckPeriodMs(void)
-{
- return PERIPHERAL_CHECK_PERIOD_MS;
-}
-KeyControlTest::KeyControlTest(const std::string &keyName) : mKeyName(keyName)
-{
-}
-void KeyControlTest::SetKeyMonitor(std::shared_ptr &monitor)
-{
- mMonitor = monitor;
-}
-void KeyControlMock::CheckKeyStatus(void)
-{
- KeyHalEvent pinValue = mKeyStatus;
- // LogInfo("KeyContrl::CheckKeyValue pin = %d, pinValue = %d\n", mGpioPin, pinValue);
- if (pinValue == KeyHalEvent::NOT_PRESSING && KeyHalEvent::NOT_PRESSING != mLastKeyStatus) {
- KeyControl::KeyHalEventTrigger(KeyHalEvent::NOT_PRESSING);
- }
- else if (pinValue != KeyHalEvent::NOT_PRESSING && KeyHalEvent::NOT_PRESSING == mLastKeyStatus) {
- KeyControl::KeyHalEventTrigger(KeyHalEvent::PRESSING);
- }
- else {
- KeyControl::TimerKeyEventTrigger(KeyHalEvent::PRESSING);
- }
- mLastKeyStatus = pinValue;
-}
-void KeyControlTest::KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs)
-{
- // LogInfo("KeyEventTrigger keyName = %s, event = %s, time = %u\n", keyName.c_str(), PrintKeyEvent(event), timeMs);
- KeyEventTriggerTrace(keyName, event, timeMs);
- auto monitor = mMonitor.lock();
- if (mMonitor.expired()) {
- LogError("monitor is nullptr.\n");
- return;
- }
- monitor->KeyEventHappened(keyName, static_cast(event), timeMs);
-}
-const std::string KeyControlTest::GetKeyName(void)
-{
- return mKeyName;
-}
-StatusCode KeyControlTest::KeyEventTriggerTrace(const std::string &keyName, const KeyEvent &event,
- const unsigned int &timeMs)
-{
- return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-}
-KeyControlMock::KeyControlMock(const std::string &keyName)
- : KeyControlTest(keyName), mKeyStatus(KeyHalEvent::NOT_PRESSING), mLastKeyStatus(KeyHalEvent::NOT_PRESSING)
-{
-}
-void KeyControlMock::InitKeyControlMock(void)
-{
- std::shared_ptr mock = std::dynamic_pointer_cast(KeyControl::shared_from_this());
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), _, _))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
-}
-void KeyControlMock::SetKeyEvent(const KeyHalEvent &event)
-{
- KeyHalEventTrigger(event);
-}
-bool KeyControlMock::MockKeyClick(const unsigned int &pressingTimeMs)
-{
- if (mMutex.try_lock()) {
- auto keyClickThread = [=](std::shared_ptr key) {
- KeyEventHappendOnce(key, pressingTimeMs);
- // key->KeyHalEventTrigger(KeyHalEvent::PRESSING);
- mKeyStatus = KeyHalEvent::PRESSING;
- std::this_thread::sleep_for(std::chrono::milliseconds(pressingTimeMs));
- // key->KeyHalEventTrigger(KeyHalEvent::NOT_PRESSING);
- mKeyStatus = KeyHalEvent::NOT_PRESSING;
- mMutex.unlock();
- };
- std::shared_ptr tmp = KeyControl::shared_from_this();
- std::shared_ptr key = std::dynamic_pointer_cast(tmp);
- std::thread clickThread = std::thread(keyClickThread, key);
- clickThread.detach();
- return true;
- }
- LogWarning("MockKeyClick failed, becase key was lock.\n");
- return false;
-}
-void KeyControlMock::KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs)
-{
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(_, _, _))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- constexpr int CLICK_EVENT_HAPPENED_ONLY_ONCE = 1;
- constexpr int HOLD_UP_EVENT_HAPPENED_ONLY_ONCE = 1;
- if (KEY_ACTION_SHORT_CLICK <= pressingTimeMs && pressingTimeMs < KEY_ACTION_HOLD_DWON) {
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::SHORT_CLICK, _))
- .Times(CLICK_EVENT_HAPPENED_ONLY_ONCE)
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- return;
- }
- if (KEY_ACTION_HOLD_DWON <= pressingTimeMs) {
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_DOWN, _))
- .Times(AtLeast(1))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), KeyEvent::HOLD_UP, _))
- .Times(HOLD_UP_EVENT_HAPPENED_ONLY_ONCE)
- .WillOnce(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- return;
- }
- constexpr int KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT = 0;
- EXPECT_CALL(*mock.get(), KeyEventTriggerTrace(mock->GetKeyName(), _, _))
- .Times(KEY_SHOULD_NOT_TRIGGER_WHEN_NOBODY_SET_KEY_RESULT);
-}
\ No newline at end of file
diff --git a/test/hal/tool/src/KeyControlMock.h b/test/hal/tool/src/KeyControlMock.h
deleted file mode 100644
index 6d53c24..0000000
--- a/test/hal/tool/src/KeyControlMock.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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 KEY_CONTROL_MOCK_H
-#define KEY_CONTROL_MOCK_H
-#include "HalTestTool.h"
-#include "IHalCpp.h"
-#include "KeyControl.h"
-#include
-class KeyControlTest : public KeyControl, public VKeyHal
-{
-public:
- KeyControlTest(const std::string &keyName);
- virtual ~KeyControlTest() = default;
- unsigned int GetStatusCheckPeriodMs(void) override;
- void SetKeyMonitor(std::shared_ptr &monitor) override;
- // void CheckKeyStatus(void) override;
- void KeyEventTrigger(const std::string &keyName, const KeyEvent &event, const unsigned int &timeMs) override;
- const std::string GetKeyName(void) override;
-
-private:
- virtual StatusCode KeyEventTriggerTrace(const std::string &keyName, const KeyEvent &event,
- const unsigned int &timeMs);
-
-private:
- const std::string mKeyName;
- std::weak_ptr mMonitor;
-};
-class KeyControlMock : public KeyControlTest
-{
-public:
- KeyControlMock(const std::string &keyName);
- virtual ~KeyControlMock() = default;
- void CheckKeyStatus(void) override;
- void InitKeyControlMock(void);
- void SetKeyEvent(const KeyHalEvent &event);
- bool MockKeyClick(const unsigned int &pressingTimeMs = 200);
- MOCK_METHOD3(KeyEventTriggerTrace, StatusCode(const std::string &, const KeyEvent &, const unsigned int &));
-
-private:
- void KeyEventHappendOnce(std::shared_ptr &mock, const unsigned int &pressingTimeMs);
-
-private:
- std::mutex mMutex;
- KeyHalEvent mKeyStatus;
- KeyHalEvent mLastKeyStatus;
-};
-#endif
\ No newline at end of file
diff --git a/test/hal/tool/src/LedControlMock.cpp b/test/hal/tool/src/LedControlMock.cpp
deleted file mode 100644
index 13417e0..0000000
--- a/test/hal/tool/src/LedControlMock.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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 "LedControlMock.h"
-#include "ILog.h"
-LedControlTest::LedControlTest(const std::string &ledName) : mLedName(ledName)
-{
- //
-}
-LedControlMock::LedControlMock(const std::string &ledName) : LedControlTest(ledName)
-{
- //
-}
-StatusCode LedControlTest::SetLedState(const LedState &state)
-{
- LogInfo("SetLedState mLedName = %s, state = %s\n", mLedName.c_str(), PrintLedState(state));
- StatusCode code = SetLedStateTrace(state);
- if (StatusCodeEqual(code, "STATUS_CODE_VIRTUAL_FUNCTION")) {
- // return SetLedState(state);
- }
- return code;
-}
-StatusCode LedControlTest::SetLedStateTrace(const LedState &state)
-{
- return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
-}
-void LedControlMock::SetLedStateMock(std::shared_ptr &vMock, const LedState &state,
- const unsigned int &aliveTimeMs, const unsigned int &blinkTimeMs)
-{
- LogInfo("LedControlMock::SetLedState\n");
- std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- if (!mock) {
- LogError("Can't set led state, led not found.\n");
- return;
- }
- constexpr int SOMEBODY_CONTROL_LED = 1;
- EXPECT_CALL(*mock.get(), SetLedStateTrace(_))
- .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- auto defaultExpectations = [=, &vMock]() {
- // std::shared_ptr mock = std::dynamic_pointer_cast(vMock);
- // if (!mock) {
- // LogError("Can't set led state, led not found.\n");
- // return;
- // }
- // EXPECT_CALL(*mock.get(), SetLedStateTrace(state))
- // .WillRepeatedly(DoAll(Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- };
- if (blinkTimeMs == LED_NOT_BLINK) {
- EXPECT_CALL(*mock.get(), SetLedStateTrace(state))
- .Times(SOMEBODY_CONTROL_LED)
- .WillRepeatedly(DoAll(Invoke(defaultExpectations), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- }
- else {
- EXPECT_CALL(*mock.get(), SetLedStateTrace(state))
- .Times(AtLeast(SOMEBODY_CONTROL_LED))
- .WillRepeatedly(DoAll(Invoke(defaultExpectations), Return(CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION))));
- }
-}
\ No newline at end of file
diff --git a/test/hal/tool/src/LedControlMock.h b/test/hal/tool/src/LedControlMock.h
deleted file mode 100644
index 2f566ac..0000000
--- a/test/hal/tool/src/LedControlMock.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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 LED_CONTROL_MOCK_H
-#define LED_CONTROL_MOCK_H
-#include "HalTestTool.h"
-#include "IHalCpp.h"
-#include "LedControl.h"
-class LedControlTest : public LedControl, public VLedHal
-{
-public:
- LedControlTest(const std::string &ledName);
- virtual ~LedControlTest() = default;
- StatusCode SetLedState(const LedState &state) override;
-
-protected:
- virtual StatusCode SetLedStateTrace(const LedState &state);
-
-private:
- const std::string mLedName;
-};
-class LedControlMock : public LedControlTest
-{
-public:
- LedControlMock(const std::string &ledName);
- virtual ~LedControlMock() = default;
- MOCK_METHOD1(SetLedStateTrace, StatusCode(const LedState &));
-
-public:
- static void SetLedStateMock(std::shared_ptr &vMock, const LedState &state, const unsigned int &aliveTimeMs,
- const unsigned int &blinkTimeMs);
-};
-#endif
\ No newline at end of file
diff --git a/test/hal/tool/src/SdCardHalMock.cpp b/test/hal/tool/src/SdCardHalMock.cpp
deleted file mode 100644
index d332901..0000000
--- a/test/hal/tool/src/SdCardHalMock.cpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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 "SdCardHalMock.h"
-#include "ILog.h"
-extern const char *SD_CARD_DEVICE;
-constexpr int FSTAT_SUCCESS = 0;
-constexpr int FILE_EXIST = 0;
-constexpr int FILE_NOT_EXIST = -1;
-SdCardHalMock::SdCardHalMock()
-{
- mDevFd = -1;
-}
-void SdCardHalMock::SetLinuxTest(std::shared_ptr &mock)
-{
- mLinuxTest = mock;
- mDevFd = mLinuxTest->GetHandleForMock();
- EXPECT_CALL(*mock.get(), fx_access(SD_CARD_DEVICE, F_OK)).WillRepeatedly(DoAll(Return(FILE_EXIST)));
- EXPECT_CALL(*mock.get(), fx_open(SD_CARD_DEVICE, _)).WillRepeatedly(DoAll((Return(mDevFd))));
- auto fstatFunc = [=, &mock](int fd, struct stat *statbuf) {
- statbuf->st_mode = S_IFBLK | 0600;
- };
- EXPECT_CALL(*mock.get(), fx_fstat(mDevFd, _))
- .WillRepeatedly(DoAll(WithArgs<0, 1>(Invoke(fstatFunc)), Return(FSTAT_SUCCESS)));
-}
-void SdCardHalMock::MockSdCardRemove(std::shared_ptr