Add ffmpeg.

This commit is contained in:
Fancy code 2024-06-19 22:24:16 +08:00
commit f6173a8786
98 changed files with 827 additions and 336 deletions

View File

@ -31,7 +31,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
HuntingCamera_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -44,12 +43,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${APPLICATION_SOURCE_PATH}/HuntingCamera
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make HuntingCamera_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
HuntingCamera_code_format
@ -58,6 +51,7 @@ add_custom_target(
-i ${SRC_FILES} ${MAIN_SRC_FILE_THIS} ${HEADER_FILES}
WORKING_DIRECTORY ${APPLICATION_SOURCE_PATH}/HuntingCamera
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -32,7 +32,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} McuAskBase StateMachine MediaManager StorageManager DeviceManager HuntingUpgrade KeyControl LedControl StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
MissionManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -44,12 +43,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${APPLICATION_SOURCE_PATH}/MissionManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make MissionManager_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
MissionManager_code_format
@ -58,6 +51,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${APPLICATION_SOURCE_PATH}/MissionManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -35,7 +35,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
ipc_x86_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -55,6 +54,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES} ${MAIN_SRC_FILE_THIS}
WORKING_DIRECTORY ${APPLICATION_SOURCE_PATH}/main
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -192,7 +192,7 @@ origin git@gitee.com:shenzhen-jiuyilian/ipc.git (fetch)
origin git@gitee.com:shenzhen-jiuyilian/ipc.git (push)
```
### 1.4.5. git删除一个远端分支
### 1.4.5. git删除远端分支
```code
# git push <remote-name> --delete <branch-name>
@ -210,6 +210,34 @@ To gitee.com:shenzhen-jiuyilian/ipc.git
- [deleted] Branch_QT
```
### 1.4.6. git删除本地分支
```code
# git branch -d <branch-name>
$ git branch -a
----------------
=-a
master
* sdk-202405
remotes/origin/HEAD -> origin/master
remotes/origin/app_test
remotes/origin/master
remotes/origin/sdk-202402
remotes/origin/sdk-202405
$ git branch -d =-a
--------------------
Deleted branch =-a (was c29b4f5).
$ git branch -a
---------------
master
* sdk-202405
remotes/origin/HEAD -> origin/master
remotes/origin/app_test
remotes/origin/master
remotes/origin/sdk-202402
remotes/origin/sdk-202405
```
## 1.5. 多仓库管理
### 1.5.1. 合并两个无关联记录的仓库

View File

@ -1,26 +1,43 @@
set(FFMPEG_INSTALL_PATH "${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg")
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
set(CONFIGURE_COMMAND "--enable-cross-compile --target-os=linux --arch=linux \
--cc=${CMAKE_C_COMPILER} \
--cxx=${CMAKE_CXX_COMPILER} \
--prefix=${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg \
--enable-parsers --enable-decoder=h264 \
--enable-ffmpeg --enable-static \
--enable-gpl --enable-nonfree --enable-version3 --enable-small \
--enable-muxer=mov --enable-muxer=mp4 \
--enable-decoder=aac --enable-decoder=pcm_alaw --enable-encoder=pcm_alaw \
--enable-demuxer=mov \
--enable-protocol=file --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb --enable-bsf=hevc_mp4toannexb")
else()
set(CONFIGURE_COMMAND "--enable-cross-compile --target-os=linux --arch=arm64 \
--cc=${CMAKE_C_COMPILER} \
--cxx=${CMAKE_CXX_COMPILER} \
--prefix=${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg \
--disable-asm --enable-parsers --disable-decoders --enable-decoder=h264 \
--disable-debug --enable-ffmpeg --enable-shared --enable-static --disable-stripping --disable-doc \
--enable-gpl --enable-nonfree --enable-version3 --enable-small \
--disable-mipsdsp --disable-mipsdspr2 \
--disable-encoders \
--disable-muxers --enable-muxer=mov --enable-muxer=mp4 \
--disable-decoders --enable-decoder=aac \
--disable-filters \
--disable-demuxers --enable-demuxer=mov \
--disable-parsers \
--disable-protocols --enable-protocol=file \
--disable-bsfs --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb --enable-bsf=hevc_mp4toannexb \
--disable-indevs \
--disable-outdevs --disable-ffprobe --disable-ffmpeg --disable-ffplay --disable-debug")
endif()
message("Compile ffmpeg comand : ${CONFIGURE_COMMAND}")
add_custom_target(
ffmpeg
COMMAND echo "Now compile ffmpeg, please wait..."
COMMAND test -f ${EXTERNAL_SOURCE_PATH}/ffmpeg/Makefile || tar -xf ffmpeg_6.1.1.orig.tar.xz
COMMAND chmod 777 -R ffmpeg-6.1.1
COMMAND cd ffmpeg-6.1.1 && ./configure --enable-cross-compile --target-os=linux --arch=arm64
--cc=${CMAKE_C_COMPILER}
--cxx=${CMAKE_CXX_COMPILER}
--prefix=${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg
--disable-asm --enable-parsers --disable-decoders --enable-decoder=h264
--disable-debug --enable-ffmpeg --enable-shared --enable-static --disable-stripping --disable-doc
--enable-gpl --enable-nonfree --enable-version3 --enable-small
--disable-mipsdsp --disable-mipsdspr2
--disable-encoders
--disable-muxers --enable-muxer=mov --enable-muxer=mp4
--disable-decoders --enable-decoder=aac
--disable-filters
--disable-demuxers --enable-demuxer=mov
--disable-parsers
--disable-protocols --enable-protocol=file
--disable-bsfs --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb --enable-bsf=hevc_mp4toannexb
--disable-indevs
--disable-outdevs --disable-ffprobe --disable-ffmpeg --disable-ffplay --disable-debug
COMMAND cd ffmpeg-6.1.1 && bash -c "./configure ${CONFIGURE_COMMAND}"
COMMAND cd ffmpeg-6.1.1 && make
COMMAND cd ffmpeg-6.1.1 && make install
COMMAND cd ffmpeg-6.1.1 && make clean

39
external/ffmpeg/README.md vendored Normal file
View File

@ -0,0 +1,39 @@
# 1. ffmpeg开发文档
## 1.1. ffplay命令使用
* 播放G711a音频文件
```code
$ ffplay -i audio.g711a -f alaw -ac 1 -ar 8000
```
ffmpeg -i input.g711a -acodec alaw output.wav
* 播放h264视频文件
```code
$ ffplay video.h264
```
## 1.2. 问题记录
### 1.2.1. avformat_open_input执行失败
&emsp;&emsp;在执行avformat_open_input时返回-1094995529<0错误
解决在Ubuntu编译时使能所有的编译选项并且把--arch=赋值为linux
```code
# 详见://external/ffmpeg/CMakeLists.txt
set(CONFIGURE_COMMAND "--enable-cross-compile --target-os=linux --arch=linux \
--cc=${CMAKE_C_COMPILER} \
--cxx=${CMAKE_CXX_COMPILER} \
--prefix=${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg \
--enable-parsers --enable-decoder=h264 \
--enable-ffmpeg --enable-shared --enable-static \
--enable-gpl --enable-nonfree --enable-version3 --enable-small \
--enable-muxer=mov --enable-muxer=mp4 \
--enable-decoder=aac \
--enable-demuxer=mov \
--enable-protocol=file --enable-bsf=aac_adtstoasc --enable-bsf=h264_mp4toannexb --enable-bsf=hevc_mp4toannexb")
```

View File

@ -1,4 +1,30 @@
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
include(${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/goahead.cmake)
set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH})
set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH})
include(${UTILS_SOURCE_PATH}/WebServer/build/webserver.cmake)
add_custom_target(
goahead-5.2.0
COMMAND test -f ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/Makefile || tar zxvf goahead-5.2.0.tar.gz
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/modify/http.c ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/src
COMMAND chmod 777 -R GoAhead
COMMAND cd GoAhead && make CC=${CMAKE_C_COMPILER} ARCH=${SET_ARCH} PROFILE=${LIB_TYPE} ME_GOAHEAD_UPLOAD_DIR=\"${GOAHEAD_UPLOAD_TMP_PATH}\"
ME_GOAHEAD_SSL_KEY=\"${GOAHEAD_CONFIG_FILE_PATH}/self.key\" ME_GOAHEAD_SSL_CERTIFICATE=\"${GOAHEAD_CONFIG_FILE_PATH}/self.crt\"
${ME_GOAHEAD_LIMIT_POST} -f ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/modify/goahead-linux-static-fancy.mk
COMMAND echo "Copy goahead lib to output path."
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgo.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libmbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libmbedtls.a
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgoahead-mbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgoahead-mbedtls.a
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.crt ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.key ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/route.txt ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/auth.txt ${PLATFORM_PATH}/cmake-shell/
WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/
)
add_custom_target(
remove_goahead_source_files
COMMAND rm -rf GoAhead
WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/
)
# cleanclean_script
add_dependencies(sdk_clean remove_goahead_source_files)

View File

@ -29,8 +29,6 @@ target_link_libraries(${ABSTRACT_TARGET} LinuxApi KeyControl LedControl StatusCo
add_library(${IMPL_TARGET} STATIC ${IMPL_SRC_FILES})
target_link_libraries(${IMPL_TARGET} ${ABSTRACT_TARGET})
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
Hal_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -51,6 +49,7 @@ add_custom_target(
-i ${ABSTRACT_SRC_FILES} ${IMPL_SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${HAL_SOURCE_PATH}
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${IMPL_TARGET}
PRE_BUILD

View File

@ -14,6 +14,7 @@
*/
#include "CameraHal.h"
#include "IHalCpp.h"
#include "ILog.h"
#include "StatusCode.h"
CameraHal::CameraHal() : mTaskRuning(false), mAudioStreamCallback(nullptr), mVideoStreamCallback(nullptr)
{
@ -26,6 +27,7 @@ void CameraHal::UnInit(void)
}
StatusCode CameraHal::StartSingleTask(const CameraTaskParam &param)
{
LogInfo("StartSingleTask.\n");
mTaskRuning = true;
return CreateStatusCode(STATUS_CODE_OK);
}

View File

@ -89,10 +89,11 @@ StatusCode HalMakePtr::CreateWifiHal(std::shared_ptr<VWifiHal> &impl)
impl = std::make_shared<WifiHal>();
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode HalMakePtr::CreateCameraHal(std::shared_ptr<VCameraHal> &impl)
std::shared_ptr<VCameraHal> HalMakePtr::CreateCameraHal(const CameraType &type)
{
LogWarning("CreateCameraHal.\n");
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION.\n");
auto camera = std::make_shared<VCameraHal>();
return camera;
}
StatusCode HalMakePtr::CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl)
{

View File

@ -26,18 +26,10 @@ public:
HalMakePtr() = default;
virtual ~HalMakePtr() = default;
static std::shared_ptr<HalMakePtr> &GetInstance(std::shared_ptr<HalMakePtr> *impl = nullptr);
virtual StatusCode Init()
{
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
}
virtual StatusCode UnInit()
{
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
}
virtual StatusCode CreateHalPtr(IHal **hal);
virtual StatusCode CreateHalSharePtr(std::shared_ptr<IHalCpp> &impl);
virtual StatusCode CreateWifiHal(std::shared_ptr<VWifiHal> &impl);
virtual StatusCode CreateCameraHal(std::shared_ptr<VCameraHal> &impl);
virtual std::shared_ptr<VCameraHal> CreateCameraHal(const CameraType &type);
virtual StatusCode CreateSdCardHal(std::shared_ptr<VSdCardHal> &impl);
virtual StatusCode CreateAllKeysHal(std::vector<std::shared_ptr<VKeyControl>> &keys);
virtual StatusCode CreateAllLedsHal(std::vector<std::shared_ptr<VLedControl>> &leds);

View File

@ -27,7 +27,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} WebServer TcpModule Hal cjson-static StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
AppManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -47,6 +46,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/AppManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -22,7 +22,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} LedControl Hal StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
DeviceManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -42,6 +41,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/DeviceManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -24,7 +24,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} sqlite3 StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
FilesManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -36,12 +35,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/FilesManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make FilesManager_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
FilesManager_code_format
@ -50,6 +43,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/FilesManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -23,7 +23,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} UpgradeBase StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
HuntingUpgrade_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -43,6 +42,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/HuntingUpgrade
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -23,7 +23,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} LinuxApi ConfigBase StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
IpcConfig_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -35,12 +34,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/IpcConfig
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make IpcConfig_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
IpcConfig_code_format
@ -49,6 +42,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/IpcConfig
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -31,7 +31,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} McuManager StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
McuAskBase_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -43,12 +42,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/McuAskBase
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make McuAskBase_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
McuAskBase_code_format
@ -57,6 +50,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/McuAskBase
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -28,7 +28,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} UartDevice McuAskBase McuProtocol StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
McuManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,12 +39,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/McuManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make McuManager_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
McuManager_code_format
@ -54,6 +47,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/McuManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -29,7 +29,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} Hal StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
MediaManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -41,12 +40,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/MediaManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make MediaManager_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
MediaManager_code_format
@ -55,6 +48,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/MediaManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -22,8 +22,8 @@ SaveStream::SaveStream() : mFileAudio(nullptr), mFileVideo(nullptr)
}
void SaveStream::Init(void)
{
mFileAudio = fopen("/tmp/audio.g711", "a+"); // TODO:
mFileVideo = fopen("/tmp/video.h264", "a+"); // TODO:
mFileAudio = fopen("./audio.g711", "a+"); // TODO:
mFileVideo = fopen("./video.h264", "a+"); // TODO:
}
void SaveStream::UnInit(void)
{
@ -39,6 +39,7 @@ void SaveStream::UnInit(void)
void SaveStream::GetVideoStream(const void *stream, const unsigned int &length, const unsigned long long &timeStamp)
{
if (mFileVideo) {
// LogInfo("Get video stream, length: %d\n", length);
size_t writeLength = fwrite(stream, 1, length, mFileVideo);
if (writeLength != length) {
LogError("Write video stream failed.\n");
@ -49,6 +50,7 @@ void SaveStream::GetVideoStream(const void *stream, const unsigned int &length,
void SaveStream::GetAudioStream(const void *stream, const unsigned int &length, const unsigned long long &timeStamp)
{
if (mFileAudio) {
// LogInfo("Get audio stream, length: %d\n", length);
size_t writeLength = fwrite(stream, 1, length, mFileAudio);
if (writeLength != length) {
LogError("Write video stream failed.\n");

View File

@ -23,7 +23,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES} ${SRC_FILES_OPENHARMONY})
target_link_libraries(${TARGET_NAME} Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
StateMachine_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -35,12 +34,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/StateMachine
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make StateMachine_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
StateMachine_code_format
@ -49,6 +42,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/StateMachine
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -26,7 +26,6 @@ add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
StorageManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -38,12 +37,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/StorageManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make StorageManager_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
StorageManager_code_format
@ -52,6 +45,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${MIDDLEWARE_SOURCE_PATH}/StorageManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -32,28 +32,7 @@ endif()
# Mock Linux api.
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_LINUX_MOCK}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TEST_LINUX_MOCK}")
# build gtest and gmock
# add_custom_command(
# OUTPUT ${EXTERNAL_LIBS_OUTPUT_PATH}/libgtest.a
# OUTPUT ${EXTERNAL_LIBS_OUTPUT_PATH}/libgmock.a
# COMMAND echo "Build google test for test code."
# COMMAND sh build_gtest.sh ${TARGET_PLATFORM} ${PLATFORM_PATH} ${PLATFORM_PATH}
# COMMAND mv ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/lib/libgtest.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgtest.a
# COMMAND mv ${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/lib/libgmock.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgmock.a
# WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/gtest/
# )
# # add_custom_target(
# # google_test
# # DEPENDS libgtest.a libgmock.a
# # )
# add_custom_target(
# libgtest.a
# DEPENDS ${EXTERNAL_LIBS_OUTPUT_PATH}/libgtest.a
# )
# add_custom_target(
# libgmock.a
# DEPENDS ${EXTERNAL_LIBS_OUTPUT_PATH}/libgmock.a
# )
add_definitions(-DTEST_SOURCE_PATH="${TEST_SOURCE_PATH}")
add_subdirectory(all)
add_subdirectory(application)

View File

@ -47,5 +47,6 @@ using ::testing::Unused;
using ::testing::WithArgs;
using ::testing::internal::BuiltInDefaultValue;
// using ::testing::Mock::VerifyAndClearExpectations;
using ::testing::Between;
using ::testing::Mock;
#endif

View File

@ -1,6 +1,8 @@
# include(${CMAKE_SOURCE_DIR}/build/independent_source.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
include(${APPLICATION_SOURCE_PATH}/HuntingCamera/build/hunting_camera.cmake)
include(${UTILS_SOURCE_PATH}/WebServer/build/webserver.cmake)
include(${UTILS_SOURCE_PATH}/MediaBase/build/mediabase.cmake)
set(EXECUTABLE_OUTPUT_PATH ${TEST_OUTPUT_PATH}/bin)
include_directories(
@ -33,6 +35,7 @@ link_directories(
${EXTERNAL_LIBS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}/libconfig/lib
${TEST_TOOLS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
)
aux_source_directory(. SRC_FILES_MAIN)
@ -43,15 +46,15 @@ endif()
set(TARGET_NAME HuntingCameraTest)
add_executable(${TARGET_NAME} ${SRC_FILES_MAIN} ${SRC_FILES})
target_link_libraries(${TARGET_NAME} McuProtocolTestTool UartDeviceTestTool)
target_link_libraries(${TARGET_NAME} HuntingMainLib MissionManagerTestTool McuManagerTestTool McuAskBaseTestTool
AppManagerTestTool HalTestTool DeviceManagerTestTool TestManager UartDevice Hal LinuxApiMock gtest gmock pthread)
target_link_libraries(${TARGET_NAME} UpgradeTool Servers)
target_link_libraries(${TARGET_NAME}# -Wl,--start-group
HuntingMainLib MissionManagerTestTool McuManagerTestTool McuAskBaseTestTool
AppManagerTestTool HalTestTool DeviceManagerTestTool TestManager
# -Wl,--end-group
gtest gmock pthread)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
HuntingCameraTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -66,12 +69,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/application/HuntingCamera
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make HuntingCameraTest_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
@ -81,6 +78,7 @@ add_custom_target(
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/application/HuntingCamera
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -40,10 +40,10 @@ void HuntingCameraTest::TearDownTestCase()
}
void HuntingCameraTest::SetUp()
{
CreateAllCamerasMcok();
std::shared_ptr<MainThread> mainThread = std::make_shared<MainThreadTest>();
MainThread::GetInstance(&mainThread);
HalTestTool::Init();
CreateAllCamerasMcok();
CreateAllKeysMcok();
CreateAllLedsMcok();
AppManagerTestTool::Init();
@ -68,13 +68,13 @@ void HuntingCameraTest::TearDown()
std::shared_ptr<LinuxApiMock> test = std::make_shared<LinuxApiMock>();
LinuxApiMock::GetInstance(&test);
McuManagerTestTool::UnInit();
MainThread::GetInstance()->UnInit();
std::shared_ptr<MainThread> mainThread = std::make_shared<MainThread>();
MainThread::GetInstance(&mainThread);
DeviceManagerTestTool::UnInit();
DestroyAllCamerasMock();
DestroyAllKeysMock();
DestroyAllLedsMock();
MainThread::GetInstance()->UnInit();
std::shared_ptr<MainThread> mainThread = std::make_shared<MainThread>();
MainThread::GetInstance(&mainThread);
}
void HuntingCameraTest::CreateAllCamerasMcok(void)
{
@ -83,6 +83,7 @@ void HuntingCameraTest::CreateAllCamerasMcok(void)
}
void HuntingCameraTest::DestroyAllCamerasMock(void)
{
HalTestTool::DestroyCameraHalTest(mAllCamerasMock);
mAllCamerasMock.clear();
}
void HuntingCameraTest::CreateAllKeysMcok(void)

View File

@ -44,7 +44,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
VersionReleaseTool_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -74,6 +73,7 @@ add_custom_target(
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/application/VersionRelease
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -13,6 +13,7 @@ link_directories(
${LIBS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}
${TEST_TOOLS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
)
aux_source_directory(. SRC_FILES)

View File

@ -76,6 +76,7 @@ public:
static std::shared_ptr<VKeyHal> MakeKeyHalTest(const std::string &keyName);
static std::shared_ptr<VLedHal> MakeLedHalTest(const std::string &ledName);
static std::shared_ptr<VCameraHal> MakeCameraHalTest(const CameraType &type);
static void DestroyCameraHalTest(std::map<CameraType, std::shared_ptr<VCameraHal>> &allCamerasMock);
private:
std::shared_ptr<IHalCpp> mHalMock;

View File

@ -26,6 +26,7 @@ link_directories(
${LIBS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}
${TEST_TOOLS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
)
aux_source_directory(. SRC_FILES_MAIN)
@ -42,7 +43,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
AppManagerTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -56,12 +56,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make AppManagerTest_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
@ -71,6 +65,7 @@ add_custom_target(
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -24,6 +24,7 @@ link_directories(
${LIBS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}
${TEST_TOOLS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
)
aux_source_directory(. SRC_FILES_MAIN)
@ -40,7 +41,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
DeviceManagerTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -54,12 +54,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/DeviceManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make DeviceManagerTest_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
@ -69,6 +63,7 @@ add_custom_target(
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/DeviceManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -39,7 +39,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
HuntingUpgradeTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -53,12 +52,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/HuntingUpgrade
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make HuntingUpgradeTest_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
@ -68,6 +61,7 @@ add_custom_target(
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/HuntingUpgrade
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -40,7 +40,6 @@ target_link_libraries(${TARGET_NAME} IpcConfig LinuxApiMock)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
IpcConfigTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -54,12 +53,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/IpcConfig
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make IpcConfigTest_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
@ -69,6 +62,7 @@ add_custom_target(
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/IpcConfig
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -48,7 +48,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
McuManagerTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -62,12 +61,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/McuManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make McuManagerTest_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
@ -77,6 +70,7 @@ add_custom_target(
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/McuManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -25,6 +25,7 @@ link_directories(
${LIBS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}
${TEST_TOOLS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
)
aux_source_directory(. SRC_FILES_MAIN)
@ -41,7 +42,6 @@ if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
MediaManagerTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -53,13 +53,7 @@ add_custom_target(
# --line-filter='[{\"name\":\"${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include/getest/gtest.h\"}]'
--line-filter='[{\"name\":\"${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include/getest/*.h\"}]'
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make MediaManagerTest_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/MediaManager
)
file(GLOB_RECURSE HEADER_FILES *.h)
@ -68,8 +62,9 @@ add_custom_target(
COMMAND ${CLANG_FORMAT_EXE}
-style=file
-i ${SRC_FILES} ${SRC_FILES_MAIN} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/AppManager
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/middleware/MediaManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -0,0 +1,49 @@
/*
* 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 "MediaManagerTest.h"
void MediaManagerTest::SetUpTestCase()
{
CreateLogModule();
ILogInit(LOG_INSTANCE_TYPE_END);
}
void MediaManagerTest::TearDownTestCase()
{
ILogUnInit();
}
void MediaManagerTest::SetUp()
{
CreateAllCamerasMcok();
HalTestTool::Init();
MediaManagerTestTool::Init();
CreateHalCppModule();
CreateMediaManagerModule();
}
void MediaManagerTest::TearDown()
{
MediaManagerTestTool::UnInit();
HalTestTool::UnInit();
DestroyMediaManagerModule();
DestroyHalCppModule();
DestroyAllCamerasMock();
}
void MediaManagerTest::CreateAllCamerasMcok(void)
{
std::shared_ptr<VCameraHal> camera = HalTestTool::MakeCameraHalTest(CameraType::MAIN_CAMERA);
mAllCamerasMock[CameraType::MAIN_CAMERA] = camera;
}
void MediaManagerTest::DestroyAllCamerasMock(void)
{
mAllCamerasMock.clear();
}

View File

@ -0,0 +1,46 @@
/*
* 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 MEDIA_MANAGER_TEST_H
#define MEDIA_MANAGER_TEST_H
#include "GtestUsing.h"
#include "HalTestTool.h"
#include "ILog.h"
#include "IMediaManager.h"
#include "MediaManagerTestTool.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <thread>
class MediaManagerTest : public testing::Test, public MediaManagerTestTool, public HalTestTool
{
public:
MediaManagerTest()
{
}
virtual ~MediaManagerTest()
{
}
static void SetUpTestCase();
static void TearDownTestCase();
virtual void SetUp();
virtual void TearDown();
private:
void CreateAllCamerasMcok(void);
void DestroyAllCamerasMock(void);
protected:
std::map<CameraType, std::shared_ptr<VCameraHal>> mAllCamerasMock;
};
#endif

View File

@ -16,62 +16,13 @@
#include "HalTestTool.h"
#include "ILog.h"
#include "IMediaManager.h"
#include "MediaManagerTest.h"
#include "MediaManagerTestTool.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <thread>
namespace MediaManagerTest
namespace MediaManager_Test
{
class MediaManagerTest : public testing::Test, public MediaManagerTestTool, public HalTestTool
{
public:
MediaManagerTest()
{
}
virtual ~MediaManagerTest()
{
}
static void SetUpTestCase()
{
CreateLogModule();
ILogInit(LOG_INSTANCE_TYPE_END);
}
static void TearDownTestCase()
{
ILogUnInit();
}
virtual void SetUp()
{
CreateAllCamerasMcok();
HalTestTool::Init();
MediaManagerTestTool::Init();
CreateHalCppModule();
CreateMediaManagerModule();
}
virtual void TearDown()
{
MediaManagerTestTool::UnInit();
HalTestTool::UnInit();
DestroyMediaManagerModule();
DestroyHalCppModule();
DestroyAllCamerasMock();
}
private:
void CreateAllCamerasMcok(void)
{
std::shared_ptr<VCameraHal> camera = HalTestTool::MakeCameraHalTest(CameraType::MAIN_CAMERA);
mAllCamerasMock[CameraType::MAIN_CAMERA] = camera;
}
void DestroyAllCamerasMock(void)
{
mAllCamerasMock.clear();
}
protected:
// const AppParam mAppParam;
std::map<CameraType, std::shared_ptr<VCameraHal>> mAllCamerasMock;
};
// ../output_files/test/bin/MediaManagerTest --gtest_filter=MediaManagerTest.INTEGRATION_MediaManager_EXAMPLE_Demo0
TEST_F(MediaManagerTest, INTEGRATION_MediaManager_EXAMPLE_Demo0)
{
@ -81,11 +32,6 @@ TEST_F(MediaManagerTest, INTEGRATION_MediaManager_EXAMPLE_Demo0)
IMediaManager::GetInstance()->SetMediaMonitor(monitor);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
MockReportCameraEvent("test name", CameraType::MAIN_CAMERA);
// MockAppClientConnect();
// std::this_thread::sleep_for(std::chrono::milliseconds(100));
// MockSetRecordingStatus(RecordingStatus::RECORDING_START);
// std::this_thread::sleep_for(std::chrono::milliseconds(2000));
// IAppManager::GetInstance()->UnInit();
IMediaManager::GetInstance()->UnInit();
}
} // namespace MediaManagerTest
} // namespace MediaManager_Test

View File

@ -8,4 +8,5 @@ add_subdirectory(LinuxApiMock)
add_subdirectory(McuProtocol)
add_subdirectory(FxHttpServer)
add_subdirectory(TestManager)
add_subdirectory(TcpModule)
add_subdirectory(TcpModule)
add_subdirectory(MediaBase)

View File

@ -27,7 +27,6 @@ target_link_libraries(${TARGET_NAME} ConfigBase gtest gmock pthread)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
ConfigTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -41,6 +40,7 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/Config
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -24,7 +24,6 @@ target_link_libraries(${TARGET_NAME} FxHttpServer gtest gmock pthread Log)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
FxHttpServerTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -46,6 +45,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/FxHttpServer
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -20,7 +20,6 @@ set(TARGET_NAME LinuxApiMock)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} LinuxApi gtest gmock Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
LinuxApiMock_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +39,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/LinuxApiMock
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -13,9 +13,16 @@
* limitations under the License.
*/
#include "LinuxApiMock.h"
#include "ILog.h"
#include "LinuxTestImpl.h"
#include "WrapApi.h"
// #include <bits/types/struct_timeval.h>
#include <cstddef>
#include <memory>
#include <stdio.h>
#include <sys/select.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <termios.h>
std::shared_ptr<LinuxApiMock> &LinuxApiMock::GetInstance(std::shared_ptr<LinuxApiMock> *impl)
{
static auto instance = std::make_shared<LinuxApiMock>();

View File

@ -13,7 +13,17 @@
* limitations under the License.
*/
#include "LinuxTestImpl.h"
#include "GtestUsing.h"
#include "ILog.h"
#include "LinuxApiMock.h"
#include "WrapApi.h"
// #include <bits/types/struct_timeval.h>
#include <gmock/gmock-spec-builders.h>
#include <memory>
#include <stdio.h>
#include <sys/select.h>
#include <sys/stat.h>
#include <termios.h>
#include <thread>
/**
* @brief The simulated interface has been subjected to lock serial processing to ensure that the return value can be

View File

@ -14,7 +14,10 @@
*/
#include "WrapApi.h"
#include "LinuxApiMock.h"
// #include <bits/types/struct_timeval.h>
#include <mutex>
#include <stdio.h>
#include <sys/select.h>
#ifdef __cplusplus
extern "C" {
#endif

View File

@ -25,7 +25,6 @@ target_link_libraries(${TARGET_NAME} Log gtest gmock pthread)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
LogTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -39,6 +38,7 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/Log
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -0,0 +1,71 @@
# include(${CMAKE_SOURCE_DIR}/build/independent_source.cmake)
include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake)
set(EXECUTABLE_OUTPUT_PATH ${TEST_OUTPUT_PATH}/bin)
include_directories(
./tool/include
${UTILS_SOURCE_PATH}/StatusCode/include
${UTILS_SOURCE_PATH}/Log/include
${UTILS_SOURCE_PATH}/MediaBase/include
${TEST_SOURCE_PATH}/utils/LinuxApiMock/include
${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include
${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googlemock/include
)
link_directories(
${LIBS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/lib
)
aux_source_directory(. SRC_FILES)
aux_source_directory(./src SRC_FILES)
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
aux_source_directory(./src_mock SRC_FILES)
endif()
set(TARGET_NAME MediaBaseTest)
add_executable(${TARGET_NAME} ${SRC_FILES})
target_link_libraries(${TARGET_NAME} MediaBase gtest gmock pthread Log)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
target_link_libraries(${TARGET_NAME} LinuxApiMock)
endif()
add_custom_target(
MediaBaseTest_code_check
COMMAND ${CLANG_TIDY_EXE}
-checks='${CLANG_TIDY_CHECKS}'
--header-filter=.*
--system-headers=false
${SRC_FILES}
${CLANG_TIDY_CONFIG}
# --line-filter='[{\"name\":\"${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include/getest/gtest.h\"}]'
--line-filter='[{\"name\":\"${EXTERNAL_SOURCE_PATH}/gtest/googletest-release-1.11.0/googletest/include/getest/*.h\"}]'
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/MediaBase
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
MediaBaseTest_code_format
COMMAND ${CLANG_FORMAT_EXE}
-style=file
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/MediaBase
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make MediaBaseTest_code_check
COMMAND make MediaBaseTest_code_format
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
endif()
define_file_name(${TARGET_NAME})
# if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/tool/CMakeLists.txt")
# add_subdirectory(tool)
# endif()

View File

@ -0,0 +1,23 @@
/*
* 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 <gmock/gmock.h>
#include <gtest/gtest.h>
#include <thread>
#include <unistd.h>
int main(int argc, char *argv[])
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View File

@ -0,0 +1,32 @@
/*
* 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 "ILog.h"
#include "MediaBase.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <thread>
namespace MediaBaseTest
{
// ../output_files/test/bin/MediaBaseTest --gtest_filter=MediaBaseTest.UNIT_MediaBase_EXAMPLE_Demo
TEST(MediaBaseTest, UNIT_MediaBase_EXAMPLE_Demo)
{
CreateLogModule();
ILogInit(LOG_INSTANCE_TYPE_END);
void *readH264 = ICreateMediaBase(MEDIA_HANDLE_TYPE_READ_H264);
IStartReadFile(readH264, TEST_SOURCE_PATH "/support_test/video.h264");
IMediaBaseFree(readH264);
ILogUnInit();
}
} // namespace MediaBaseTest

View File

@ -28,7 +28,6 @@ target_link_libraries(${TARGET_NAME} SharedData gtest gmock pthread Log)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
SharedDataTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -50,6 +49,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/SharedData
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -32,7 +32,6 @@ endif()
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
target_link_libraries(${TARGET_NAME} LinuxApiMock)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
TcpModuleTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -54,6 +53,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/TcpModule
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -21,7 +21,6 @@ set(TARGET_NAME TestManager)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} LinuxApi gtest gmock Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
TestManager_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -41,6 +40,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/TestManager
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -15,6 +15,9 @@
#include "TestManager.h"
#include "ILog.h"
#include "MainThread.h"
#include <chrono>
#include <mutex>
#include <thread>
constexpr int TIMER_SLEEP_MS = 100;
void TestManager::Init(void)
{

View File

@ -34,7 +34,6 @@ endif()
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
target_link_libraries(${TARGET_NAME} LinuxApiMock)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
UartDeviceTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -56,6 +55,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/UartDevice
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -24,7 +24,6 @@ target_link_libraries(${TARGET_NAME} WebServer gtest gmock pthread Log)
if(${TEST_COVERAGE} MATCHES "true")
target_link_libraries(${TARGET_NAME} gcov)
endif()
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
WebServerTest_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -46,6 +45,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${TEST_SOURCE_PATH}/utils/WebServer
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -20,7 +20,6 @@ set(TARGET_NAME ConfigBase)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log libconfig.a)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
Config_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -46,6 +45,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/Config
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -21,7 +21,6 @@ set(TARGET_NAME ConfigBase)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log config)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
ConfigBase_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -33,12 +32,6 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/ConfigBase
)
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
COMMAND make ConfigBase_code_check
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
file(GLOB_RECURSE HEADER_FILES *.h)
add_custom_target(
ConfigBase_code_format
@ -47,6 +40,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/ConfigBase
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -23,9 +23,8 @@ aux_source_directory(./src SRC_FILES)
set(TARGET_NAME FxHttpServer)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log -Wl,--start-group httpsrv -Wl,--end-group)
target_link_libraries(${TARGET_NAME} StatusCode Log httpsrv)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
FxHttpServer_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -45,6 +44,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/FxHttpServer
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -22,7 +22,6 @@ set(TARGET_NAME KeyControl)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
KeyControl_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -42,6 +41,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/KeyControl
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -22,7 +22,6 @@ set(TARGET_NAME LedControl)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
LedControl_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -42,6 +41,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/LedControl
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -19,7 +19,6 @@ set(TARGET_NAME LinuxApi)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
LinuxApi_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -39,6 +38,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/LinuxApi
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -27,7 +27,6 @@ add_library(${ABSTRACT_TARGET} STATIC ${ABSTRACT_SRC_FILES})
add_library(${IMPL_TARGET} STATIC ${IMPL_SRC_FILES} ${EASYLOGGING_SRC_FILES})
target_link_libraries(${IMPL_TARGET} ${ABSTRACT_TARGET})
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
Log_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +39,7 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/Log
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${IMPL_TARGET}
PRE_BUILD

View File

@ -22,7 +22,6 @@ set(TARGET_NAME McuProtocol)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} ModBusCRC16 StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
McuProtocol_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -42,6 +41,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/McuProtocol
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -20,7 +20,6 @@ set(TARGET_NAME MediaAdapter)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
MediaAdapter_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +39,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/MediaAdapter
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -9,6 +9,7 @@ include_directories(
${UTILS_SOURCE_PATH}/StatusCode/include
${UTILS_SOURCE_PATH}/ModBusCRC16/include
${UTILS_SOURCE_PATH}/Log/include
${EXTERNAL_LIBS_OUTPUT_PATH}/ffmpeg/include
)
# link_directories(
# ${EXTERNAL_SOURCE_PATH}/libconfig/libconfig-1.7.3/lib/.libs
@ -18,9 +19,13 @@ aux_source_directory(./src SRC_FILES)
set(TARGET_NAME MediaBase)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX})
target_link_libraries(${TARGET_NAME} avformat avcodec avutil swresample avdevice avfilter swscale postproc z StatusCode Log)
else()
target_link_libraries(${TARGET_NAME} avformat avcodec avutil swresample avdevice avfilter swscale postproc StatusCode Log)
endif()
add_custom_target(
MediaBase_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +45,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/MediaBase
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -0,0 +1,2 @@
set(FFMPEG_EXTERNAL_LIBS avformat avcodec avutil swresample avdevice avfilter swscale postproc z)

View File

@ -21,9 +21,18 @@ extern "C" {
enum MediaHandleType
{
MEDIA_HANDLE_TYPE_READ_H264 = 0,
MEDIA_HANDLE_TYPE_READ_G711A,
MEDIA_HANDLE_TYPE_END
};
typedef void (*ReadVideoFileCallback)(const void *, const unsigned int, void *);
typedef void (*ReadAudioFileCallback)(const void *, const unsigned int, void *);
void *ICreateMediaBase(const MediaHandleType type);
// StatusCode Init(void *object);
// StatusCode UnInit(void *object);
StatusCode ISetReadVideoCallback(void *object, ReadVideoFileCallback callback, void *context);
StatusCode ISetReadAudioCallback(void *object, ReadVideoFileCallback callback, void *context);
StatusCode IStartReadFile(void *object, const char *path);
StatusCode IStopReadFile(void *object);
void IMediaBaseFree(void *object);
#ifdef __cplusplus
}

View File

@ -14,19 +14,45 @@
*/
#include "IMediaBase.h"
#include "ILog.h"
#include "MediaBase.h"
#include "MediaBaseMakePtr.h"
#include "StatusCode.h"
#include <cstdlib>
#include <memory>
#include <string.h>
#include <string>
StatusCode IMediaBase::StartReadFile(const std::string &path)
{
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
}
StatusCode IMediaBase::StopReadFile(void)
{
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
}
StatusCode IMediaBase::SetReadVideoCallback(ReadVideoFileCallback callback, void *context)
{
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
}
StatusCode IMediaBase::SetReadAudioCallback(ReadVideoFileCallback callback, void *context)
{
LogWarning("STATUS_CODE_VIRTUAL_FUNCTION\n");
return CreateStatusCode(STATUS_CODE_VIRTUAL_FUNCTION);
}
static const char *MEDIA_BASE_NAME = "media_adapter";
const char inline *GetMediaBaseModuleName(void)
const char *GetMediaBaseModuleName(void)
{
return MEDIA_BASE_NAME;
}
std::shared_ptr<IMediaBase> *NewIMediaBase(const MediaHandleType &type)
{
LogInfo("Create the midia base object.\n");
LogInfo("Create the midia base object, type = %d.\n", type);
MeidaAdapter *impl = (MeidaAdapter *)malloc(sizeof(MeidaAdapter));
MeidaAdapter tmp;
memcpy((void *)impl, (void *)&tmp, sizeof(MeidaAdapter));
impl->mHeader.mCheckName = MEDIA_BASE_NAME;
impl->mIMediaBase = std::make_shared<IMediaBase>();
impl->mIMediaBase = MediaBaseMakePtr::GetInstance()->CreateMediaBase(type);
return (std::shared_ptr<IMediaBase> *)(((char *)impl) + sizeof(MediaBaseHeader));
}

View File

@ -21,6 +21,10 @@ class IMediaBase
public:
IMediaBase() = default;
virtual ~IMediaBase() = default;
virtual StatusCode StartReadFile(const std::string &path);
virtual StatusCode StopReadFile(void);
virtual StatusCode SetReadVideoCallback(ReadVideoFileCallback callback, void *context);
virtual StatusCode SetReadAudioCallback(ReadVideoFileCallback callback, void *context);
};
typedef struct media_base_header
{

View File

@ -15,6 +15,10 @@
#include "MediaBase.h"
#include "ILog.h"
#include "IMediaBase.h"
#include "StatusCode.h"
#include <cstdio>
#include <cstdlib>
#include <memory>
void *ICreateMediaBase(const MediaHandleType type)
{
return NewIMediaBase(type);
@ -31,6 +35,34 @@ static bool ObjectCheck(void *object)
}
return true;
}
StatusCode ISetReadVideoCallback(void *object, ReadVideoFileCallback callback, void *context)
{
if (ObjectCheck(object) == true) {
return (*(std::shared_ptr<IMediaBase> *)object)->SetReadVideoCallback(callback, context);
}
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode ISetReadAudioCallback(void *object, ReadVideoFileCallback callback, void *context)
{
if (ObjectCheck(object) == true) {
return (*(std::shared_ptr<IMediaBase> *)object)->SetReadAudioCallback(callback, context);
}
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode IStartReadFile(void *object, const char *path)
{
if (ObjectCheck(object) == true) {
return (*(std::shared_ptr<IMediaBase> *)object)->StartReadFile(path);
}
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode IStopReadFile(void *object)
{
if (ObjectCheck(object) == true) {
return (*(std::shared_ptr<IMediaBase> *)object)->StopReadFile();
}
return CreateStatusCode(STATUS_CODE_OK);
}
void IMediaBaseFree(void *object)
{
if (ObjectCheck(object) == true) {

View File

@ -12,4 +12,162 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "MediaBaseImpl.h"
#include "MediaBaseImpl.h"
#include "ILog.h"
#include "MediaBase.h"
#include "StatusCode.h"
#include <cstdlib>
#include <string>
#ifdef __cplusplus
extern "C" {
#endif
// #include <libavcodec/avcodec.h>
#include <libavcodec/packet.h>
#include <libavformat/avformat.h>
#include <libavutil/avutil.h>
// #include <libswscale/swscale.h>
#ifdef __cplusplus
}
#endif
MediaBaseImpl::MediaBaseImpl(const MediaHandleType &type)
: mType(type), mReadVideoCallback(nullptr), mReadVideoCallbackContext(nullptr), mTaskRuning(false)
{
MediaTypeConvert();
}
StatusCode MediaBaseImpl::StartReadFile(const std::string &path)
{
InitFfmpeg();
int result = 0;
const AVInputFormat *iformat = av_find_input_format(InputFormat(mType));
AVFormatContext *pFormatCtx = nullptr;
if ((result = avformat_open_input(&pFormatCtx, path.c_str(), iformat, nullptr)) < 0) {
char error_str[AV_ERROR_MAX_STRING_SIZE];
av_make_error_string(error_str, AV_ERROR_MAX_STRING_SIZE, result);
LogError("Couldn't open file: %s, result=%s\n", path.c_str(), error_str);
return CreateStatusCode(STATUS_CODE_NOT_OK);
}
if (avformat_find_stream_info(pFormatCtx, nullptr) < 0) {
LogError("Couldn't find stream information.\n");
avformat_close_input(&pFormatCtx);
return CreateStatusCode(STATUS_CODE_NOT_OK);
}
int mediaStreamIndex = -1;
for (unsigned int i = 0; i < pFormatCtx->nb_streams; i++) {
if (pFormatCtx->streams[i]->codecpar->codec_type == mFFmpegMediaType) {
mediaStreamIndex = i;
break;
}
}
if (mediaStreamIndex == -1) {
LogError("Didn't find a stream.\n");
avformat_close_input(&pFormatCtx);
return CreateStatusCode(STATUS_CODE_NOT_OK);
}
auto taskTimerThread = [=](std::shared_ptr<MediaBaseImpl> media) {
LogInfo("ReadFileThread start.\n");
media->ReadFileThread(pFormatCtx, mediaStreamIndex);
};
std::shared_ptr<MediaBaseImpl> media = shared_from_this();
mTaskTimerThread = std::thread(taskTimerThread, media);
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode MediaBaseImpl::StopReadFile(void)
{
mTaskRuning = false;
if (mTaskTimerThread.joinable()) {
mTaskTimerThread.join();
}
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode MediaBaseImpl::SetReadVideoCallback(ReadVideoFileCallback callback, void *context)
{
mReadVideoCallback = callback;
mReadVideoCallbackContext = context;
return CreateStatusCode(STATUS_CODE_OK);
}
StatusCode MediaBaseImpl::SetReadAudioCallback(ReadVideoFileCallback callback, void *context)
{
mReadAudioCallback = callback;
mReadAudioCallbackContext = context;
return CreateStatusCode(STATUS_CODE_OK);
}
void MediaBaseImpl::InitFfmpeg(void)
{
}
void MediaBaseImpl::UnInitFfmpeg(void)
{
}
void MediaBaseImpl::ReadFileThread(AVFormatContext *pFormatCtx, int mediaStreamIndex)
{
mTaskRuning = true;
if (AVMEDIA_TYPE_VIDEO == mFFmpegMediaType && nullptr == mReadVideoCallback) {
LogWarning("ReadVideoCallback is null.\n");
}
if (AVMEDIA_TYPE_AUDIO == mFFmpegMediaType && nullptr == mReadVideoCallback) {
LogWarning("ReadVideoCallback is null.\n");
}
AVPacket packet;
unsigned int playTimeMs = 0;
// av_new_packet(&packet, AV_INPUT_BUFFER_MIN_SIZE);
while (av_read_frame(pFormatCtx, &packet) >= 0) {
if (nullptr == mReadVideoCallback) {
av_packet_unref(&packet);
continue;
}
if (false == mTaskRuning) {
LogInfo("Stop read file thread.\n");
break;
}
// Checks whether the packet belongs to a video stream.
if (packet.stream_index == mediaStreamIndex) {
playTimeMs = (packet.duration * pFormatCtx->streams[mediaStreamIndex]->time_base.num * 1000) /
pFormatCtx->streams[mediaStreamIndex]->time_base.den;
// LogInfo("Frame data address: %p, length: %zu\n", packet.data, packet.size);
LogInfo("Play time ms:%d\n", playTimeMs);
ReadFrame(&packet);
std::this_thread::sleep_for(std::chrono::milliseconds(playTimeMs));
}
// Release the data packet.
av_packet_unref(&packet);
}
av_packet_unref(&packet);
avformat_close_input(&pFormatCtx);
}
void inline MediaBaseImpl::ReadFrame(AVPacket *packet)
{
if (AVMEDIA_TYPE_VIDEO == mFFmpegMediaType) {
mReadVideoCallback(packet->data, packet->size, mReadVideoCallbackContext);
}
else if (AVMEDIA_TYPE_AUDIO == mFFmpegMediaType) {
mReadVideoCallback(packet->data, packet->size, mReadVideoCallbackContext);
}
}
void MediaBaseImpl::MediaTypeConvert(void)
{
switch (mType) {
case MediaHandleType::MEDIA_HANDLE_TYPE_READ_H264:
mFFmpegMediaType = AVMEDIA_TYPE_VIDEO;
break;
case MediaHandleType::MEDIA_HANDLE_TYPE_READ_G711A:
mFFmpegMediaType = AVMEDIA_TYPE_AUDIO;
break;
default:
LogError("Unknown media type.\n");
break;
}
}
const char *MediaBaseImpl::InputFormat(const MediaHandleType &type)
{
switch (type) {
case MEDIA_HANDLE_TYPE_READ_H264:
LogInfo("InputFormat: h264.\n");
return "h264";
case MEDIA_HANDLE_TYPE_READ_G711A:
LogInfo("InputFormat: alaw.\n");
return "alaw";
default:
LogError("Unknown media type.\n");
return nullptr;
}
}

View File

@ -15,10 +15,44 @@
#ifndef MEDIA_BASE_IMPL_H
#define MEDIA_BASE_IMPL_H
#include "IMediaBase.h"
class MediaBaseImpl : public IMediaBase
#ifdef __cplusplus
extern "C" {
#endif
// #include <libavcodec/avcodec.h>
#include <libavcodec/packet.h>
#include <libavformat/avformat.h>
#include <libavutil/avutil.h>
// #include <libswscale/swscale.h>
#ifdef __cplusplus
}
#endif
#include <thread>
class MediaBaseImpl : public IMediaBase, public std::enable_shared_from_this<MediaBaseImpl>
{
public:
MediaBaseImpl() = default;
MediaBaseImpl(const MediaHandleType &type);
virtual ~MediaBaseImpl() = default;
StatusCode StartReadFile(const std::string &path) override;
StatusCode StopReadFile(void) override;
StatusCode SetReadVideoCallback(ReadVideoFileCallback callback, void *context) override;
StatusCode SetReadAudioCallback(ReadVideoFileCallback callback, void *context) override;
private:
void InitFfmpeg(void);
void UnInitFfmpeg(void);
void ReadFileThread(AVFormatContext *pFormatCtx, int video_stream_index);
void ReadFrame(AVPacket *packet);
void MediaTypeConvert(void);
const char *InputFormat(const MediaHandleType &type);
private:
const MediaHandleType mType;
enum AVMediaType mFFmpegMediaType;
ReadVideoFileCallback mReadVideoCallback;
void *mReadVideoCallbackContext;
ReadVideoFileCallback mReadAudioCallback;
void *mReadAudioCallbackContext;
bool mTaskRuning;
std::thread mTaskTimerThread;
};
#endif

View File

@ -0,0 +1,39 @@
/*
* 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 "MediaBaseMakePtr.h"
#include "ILog.h"
#include "IMediaBase.h"
#include "MediaBaseImpl.h"
#include <memory>
std::shared_ptr<MediaBaseMakePtr> &MediaBaseMakePtr::GetInstance(std::shared_ptr<MediaBaseMakePtr> *impl)
{
static auto instance = std::make_shared<MediaBaseMakePtr>();
if (impl) {
if (instance.use_count() == 1) {
LogInfo("Instance changed succeed.\n");
instance = *impl;
}
else {
LogError("Can't changing the instance becase of using by some one.\n");
}
}
return instance;
}
std::shared_ptr<IMediaBase> MediaBaseMakePtr::CreateMediaBase(const MediaHandleType &type)
{
LogInfo("MediaBaseMakePtr::CreateMediaBase, type = %d.\n", type);
auto tmp = std::make_shared<MediaBaseImpl>(type);
return tmp;
}

View File

@ -0,0 +1,28 @@
/*
* 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 MEDIA_BASE_MAKEPTR_H
#define MEDIA_BASE_MAKEPTR_H
#include "IMediaBase.h"
#include "StatusCode.h"
#include <memory>
class MediaBaseMakePtr
{
public:
MediaBaseMakePtr() = default;
virtual ~MediaBaseMakePtr() = default;
static std::shared_ptr<MediaBaseMakePtr> &GetInstance(std::shared_ptr<MediaBaseMakePtr> *impl = nullptr);
virtual std::shared_ptr<IMediaBase> CreateMediaBase(const MediaHandleType &type);
};
#endif

View File

@ -21,7 +21,6 @@ set(TARGET_NAME ModBusCRC16)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
ModBusCRC16_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -33,6 +32,7 @@ add_custom_target(
-p ${PLATFORM_PATH}/cmake-shell
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/ModBusCRC16
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -20,7 +20,6 @@ set(TARGET_NAME MultiProcess)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
MultiProcess_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +39,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/MultiProcess
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -108,7 +108,6 @@ add_custom_command(
WORKING_DIRECTORY ${PROJECT_ROOT_PATH}/cmake-shell/
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
Servers_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -128,6 +127,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/Servers
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -19,7 +19,6 @@ set(TARGET_NAME SharedData)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log LinuxApi)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
SharedData_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -39,6 +38,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/SharedData
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -20,7 +20,6 @@ set(TARGET_NAME StatusCode)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
StatusCode_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +39,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/StatusCode
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -20,7 +20,6 @@ set(TARGET_NAME TcpModule)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} LinuxApi hv_static StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
TcpModule_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +39,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/TcpModule
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -117,6 +117,8 @@ void TcpServerImpl::Init(void)
hio_t *listenio = hloop_create_tcp_server(mLoop, mParam.mIp, mParam.mPort, on_accept);
if (nullptr == listenio) {
LogError("hloop_create_tcp_server failed\n");
hloop_free(&mLoop);
mLoop = nullptr;
return;
}
LogInfo("listenfd=%d\n", hio_fd(listenio));

View File

@ -19,7 +19,6 @@ set(TARGET_NAME UartDevice)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} LinuxApi StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
UartDevice_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -39,6 +38,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/UartDevice
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -19,7 +19,6 @@ set(TARGET_NAME UpgradeBase)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
UpgradeBase_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -39,6 +38,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/UpgradeBase
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -20,7 +20,6 @@ set(TARGET_NAME UpgradeTool)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} LinuxApi StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
UpgradeTool_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -40,6 +39,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/UpgradeTool
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD

View File

@ -40,9 +40,8 @@ aux_source_directory(./src SRC_FILES)
set(TARGET_NAME WebServer)
add_library(${TARGET_NAME} STATIC ${SRC_FILES})
target_link_libraries(${TARGET_NAME} StatusCode Log -Wl,--start-group libgo.a libmbedtls.a libgoahead-mbedtls.a -Wl,--end-group)
target_link_libraries(${TARGET_NAME} libgo.a libmbedtls.a libgoahead-mbedtls.a libgo.a StatusCode Log)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_target(
WebServer_code_check
COMMAND ${CLANG_TIDY_EXE}
@ -62,6 +61,7 @@ add_custom_target(
-i ${SRC_FILES} ${HEADER_FILES}
WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/WebServer
)
if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true")
add_custom_command(
TARGET ${TARGET_NAME}
PRE_BUILD
@ -72,56 +72,17 @@ add_custom_command(
endif()
# build goahead before make libgo.a
add_custom_command(
OUTPUT ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/Makefile
COMMAND echo "tar zxvf goahead-5.2.0.tar.gz"
COMMAND tar zxvf goahead-5.2.0.tar.gz
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/modify/http.c ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/src
WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/
)
add_custom_command(
OUTPUT ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
DEPENDS ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/Makefile
COMMAND make CC=${CMAKE_C_COMPILER} ARCH=${SET_ARCH} PROFILE=${LIB_TYPE} ME_GOAHEAD_UPLOAD_DIR=\"${GOAHEAD_UPLOAD_TMP_PATH}\"
ME_GOAHEAD_SSL_KEY=\"${GOAHEAD_CONFIG_FILE_PATH}/self.key\" ME_GOAHEAD_SSL_CERTIFICATE=\"${GOAHEAD_CONFIG_FILE_PATH}/self.crt\"
${ME_GOAHEAD_LIMIT_POST} -f ../modify/goahead-linux-static-fancy.mk
# COMMAND make CC=${CMAKE_C_COMPILER} ARCH=${SET_ARCH} PROFILE=${LIB_TYPE} -f ../modify/goahead-linux-static-fancy.mk // TODO:
COMMAND echo "Copy goahead lib to output path."
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgo.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libmbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libmbedtls.a
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgoahead-mbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgoahead-mbedtls.a
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.crt ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.key ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/route.txt ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/auth.txt ${PLATFORM_PATH}/cmake-shell/
WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead
)
add_custom_target(
libgo.a
DEPENDS ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
# COMMAND mkdir ${GOAHEAD_UPLOAD_TMP_PATH}
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/modify/http.c ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/src
COMMAND touch ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/src/http.c
COMMAND echo "Did not found goahead libs in output_files, now compile goahead."
COMMAND make goahead-5.2.0
WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/
)
add_custom_target(
goahead_compile
COMMAND test ! -f ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a || rm ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
COMMAND test ! -f ${EXTERNAL_LIBS_OUTPUT_PATH}/libmbedtls.a || rm ${EXTERNAL_LIBS_OUTPUT_PATH}/libmbedtls.a
COMMAND test ! -f ${EXTERNAL_LIBS_OUTPUT_PATH}/libgoahead-mbedtls.a || rm ${EXTERNAL_LIBS_OUTPUT_PATH}/libgoahead-mbedtls.a
COMMAND make CC=${CMAKE_C_COMPILER} ARCH=${SET_ARCH} PROFILE=${LIB_TYPE} ME_GOAHEAD_UPLOAD_DIR=\"${GOAHEAD_UPLOAD_TMP_PATH}\"
ME_GOAHEAD_SSL_KEY=\"${GOAHEAD_CONFIG_FILE_PATH}/self.key\" ME_GOAHEAD_SSL_CERTIFICATE=\"${GOAHEAD_CONFIG_FILE_PATH}/self.crt\"
${ME_GOAHEAD_LIMIT_POST} -f ../modify/goahead-linux-static-fancy.mk
COMMAND echo "Copy goahead lib to output path."
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgo.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libmbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libmbedtls.a
COMMAND mv ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/libgoahead-mbedtls.a ${EXTERNAL_LIBS_OUTPUT_PATH}/libgoahead-mbedtls.a
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.crt ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/build/${GOAHEAD_INCLUDE_PATH}/bin/self.key ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/route.txt ${PLATFORM_PATH}/cmake-shell/
COMMAND cp ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead/test/auth.txt ${PLATFORM_PATH}/cmake-shell/
WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/goahead-5.2.0/GoAhead
compile_goahead
DEPENDS ${EXTERNAL_LIBS_OUTPUT_PATH}/libgo.a
)
add_dependencies(${TARGET_NAME} compile_goahead)
define_file_name(${TARGET_NAME})

View File

@ -8,4 +8,6 @@ if (NOT DEFINED GOAHEAD_CONFIG_FILE_PATH)
else()
add_definitions(-DGOAHEAD_CONFIG_FILE_PATH=\"${GOAHEAD_CONFIG_FILE_PATH}\") # 使
endif()
add_definitions(-DGOAHEAD_DOCUMENTS_PATH=\"${GOAHEAD_DOCUMENTS_PATH}\")
add_definitions(-DGOAHEAD_DOCUMENTS_PATH=\"${GOAHEAD_DOCUMENTS_PATH}\")
set(GOAHEAD_EXTERNAL_LIBS go mbedtls goahead-mbedtls)

View File

@ -208,7 +208,9 @@ StatusCode WebServerInit(const WebServerParam webParam)
return CreateStatusCode(STATUS_CODE_NOT_OK);
}
if (websListen(listen) < 0) {
return CreateStatusCode(STATUS_CODE_NOT_OK);
// TODO: delected memory leaks.
finished = 1;
goto EXIT;
}
if (nullptr != webParam.mHttpRequestHandle) {
gHttpHandle = webParam.mHttpRequestHandle;
@ -219,6 +221,7 @@ StatusCode WebServerInit(const WebServerParam webParam)
websDefineHandler("AppGetThumbnail", 0, AppGetThumbnail, 0, 0);
websAddRoute("/app/getthumbnail", "AppGetThumbnail", 0);
}
EXIT:
websServiceEvents(&finished);
logmsg(1, "Instructed to exit\n");
websClose();