diff --git a/application/HuntingCamera/CMakeLists.txt b/application/HuntingCamera/CMakeLists.txt index 504305b2..a402e6b0 100644 --- a/application/HuntingCamera/CMakeLists.txt +++ b/application/HuntingCamera/CMakeLists.txt @@ -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 diff --git a/application/MissionManager/CMakeLists.txt b/application/MissionManager/CMakeLists.txt index 10d17bb1..8c8f30a3 100644 --- a/application/MissionManager/CMakeLists.txt +++ b/application/MissionManager/CMakeLists.txt @@ -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 diff --git a/application/main/CMakeLists.txt b/application/main/CMakeLists.txt index b0d5e124..6f32dd6c 100644 --- a/application/main/CMakeLists.txt +++ b/application/main/CMakeLists.txt @@ -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 diff --git a/doc/git_guide.md b/doc/git_guide.md index f7984770..cda57cd8 100644 --- a/doc/git_guide.md +++ b/doc/git_guide.md @@ -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 --delete @@ -210,6 +210,34 @@ To gitee.com:shenzhen-jiuyilian/ipc.git - [deleted] Branch_QT ``` +### 1.4.6. git删除本地分支 + +```code +# git branch -d +$ 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. 合并两个无关联记录的仓库 diff --git a/external/ffmpeg/CMakeLists.txt b/external/ffmpeg/CMakeLists.txt index 1310e1e3..81e92dd3 100644 --- a/external/ffmpeg/CMakeLists.txt +++ b/external/ffmpeg/CMakeLists.txt @@ -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 diff --git a/external/ffmpeg/README.md b/external/ffmpeg/README.md new file mode 100644 index 00000000..ec0614b0 --- /dev/null +++ b/external/ffmpeg/README.md @@ -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执行失败 + +  在执行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") +``` diff --git a/external/goahead-5.2.0/CMakeLists.txt b/external/goahead-5.2.0/CMakeLists.txt index b746ca48..9ad6b517 100644 --- a/external/goahead-5.2.0/CMakeLists.txt +++ b/external/goahead-5.2.0/CMakeLists.txt @@ -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}) \ No newline at end of file +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/ +) + +# 将clean目标依赖于我们自定义的clean_script目标 +add_dependencies(sdk_clean remove_goahead_source_files) \ No newline at end of file diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt index a299a953..cfaf4a4b 100644 --- a/hal/CMakeLists.txt +++ b/hal/CMakeLists.txt @@ -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 diff --git a/hal/src/CameraHal.cpp b/hal/src/CameraHal.cpp index 5a5bc0f4..c5ae1c77 100644 --- a/hal/src/CameraHal.cpp +++ b/hal/src/CameraHal.cpp @@ -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 ¶m) { + LogInfo("StartSingleTask.\n"); mTaskRuning = true; return CreateStatusCode(STATUS_CODE_OK); } diff --git a/hal/src/HalMakePtr.cpp b/hal/src/HalMakePtr.cpp index 39636e9b..d33fd38d 100644 --- a/hal/src/HalMakePtr.cpp +++ b/hal/src/HalMakePtr.cpp @@ -89,10 +89,11 @@ StatusCode HalMakePtr::CreateWifiHal(std::shared_ptr &impl) impl = std::make_shared(); return CreateStatusCode(STATUS_CODE_OK); } -StatusCode HalMakePtr::CreateCameraHal(std::shared_ptr &impl) +std::shared_ptr 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(); + return camera; } StatusCode HalMakePtr::CreateSdCardHal(std::shared_ptr &impl) { diff --git a/hal/src/HalMakePtr.h b/hal/src/HalMakePtr.h index 6001ed26..4bcee05d 100644 --- a/hal/src/HalMakePtr.h +++ b/hal/src/HalMakePtr.h @@ -26,18 +26,10 @@ public: HalMakePtr() = default; virtual ~HalMakePtr() = default; static std::shared_ptr &GetInstance(std::shared_ptr *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 &impl); virtual StatusCode CreateWifiHal(std::shared_ptr &impl); - virtual StatusCode CreateCameraHal(std::shared_ptr &impl); + virtual std::shared_ptr CreateCameraHal(const CameraType &type); virtual StatusCode CreateSdCardHal(std::shared_ptr &impl); virtual StatusCode CreateAllKeysHal(std::vector> &keys); virtual StatusCode CreateAllLedsHal(std::vector> &leds); diff --git a/middleware/AppManager/CMakeLists.txt b/middleware/AppManager/CMakeLists.txt index fb405201..5dfba487 100644 --- a/middleware/AppManager/CMakeLists.txt +++ b/middleware/AppManager/CMakeLists.txt @@ -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 diff --git a/middleware/DeviceManager/CMakeLists.txt b/middleware/DeviceManager/CMakeLists.txt index 37344b31..ab52d6a4 100644 --- a/middleware/DeviceManager/CMakeLists.txt +++ b/middleware/DeviceManager/CMakeLists.txt @@ -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 diff --git a/middleware/FilesManager/CMakeLists.txt b/middleware/FilesManager/CMakeLists.txt index 66522da3..9379882d 100644 --- a/middleware/FilesManager/CMakeLists.txt +++ b/middleware/FilesManager/CMakeLists.txt @@ -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 diff --git a/middleware/HuntingUpgrade/CMakeLists.txt b/middleware/HuntingUpgrade/CMakeLists.txt index c86ea279..b9a2a7ad 100644 --- a/middleware/HuntingUpgrade/CMakeLists.txt +++ b/middleware/HuntingUpgrade/CMakeLists.txt @@ -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 diff --git a/middleware/IpcConfig/CMakeLists.txt b/middleware/IpcConfig/CMakeLists.txt index 9bf3c391..45b45e4e 100644 --- a/middleware/IpcConfig/CMakeLists.txt +++ b/middleware/IpcConfig/CMakeLists.txt @@ -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 diff --git a/middleware/McuAskBase/CMakeLists.txt b/middleware/McuAskBase/CMakeLists.txt index 1b0e51a3..3f82ef45 100644 --- a/middleware/McuAskBase/CMakeLists.txt +++ b/middleware/McuAskBase/CMakeLists.txt @@ -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 diff --git a/middleware/McuManager/CMakeLists.txt b/middleware/McuManager/CMakeLists.txt index adcca1a2..b7f68a1b 100644 --- a/middleware/McuManager/CMakeLists.txt +++ b/middleware/McuManager/CMakeLists.txt @@ -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 diff --git a/middleware/MediaManager/CMakeLists.txt b/middleware/MediaManager/CMakeLists.txt index b053f835..f1884ce7 100644 --- a/middleware/MediaManager/CMakeLists.txt +++ b/middleware/MediaManager/CMakeLists.txt @@ -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 diff --git a/middleware/MediaManager/src/SaveStream.cpp b/middleware/MediaManager/src/SaveStream.cpp index 81b07f7e..0d79f94f 100644 --- a/middleware/MediaManager/src/SaveStream.cpp +++ b/middleware/MediaManager/src/SaveStream.cpp @@ -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"); diff --git a/middleware/StateMachine/CMakeLists.txt b/middleware/StateMachine/CMakeLists.txt index 04e67cdb..a4e8d794 100644 --- a/middleware/StateMachine/CMakeLists.txt +++ b/middleware/StateMachine/CMakeLists.txt @@ -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 diff --git a/middleware/StorageManager/CMakeLists.txt b/middleware/StorageManager/CMakeLists.txt index 85a63795..513ef01d 100644 --- a/middleware/StorageManager/CMakeLists.txt +++ b/middleware/StorageManager/CMakeLists.txt @@ -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 diff --git a/output_files/libs/test_tools/libAppManagerTestTool.a b/output_files/libs/test_tools/libAppManagerTestTool.a index 8a094a9a..1ec0ecb1 100644 Binary files a/output_files/libs/test_tools/libAppManagerTestTool.a and b/output_files/libs/test_tools/libAppManagerTestTool.a differ diff --git a/output_files/libs/test_tools/libDeviceManagerTestTool.a b/output_files/libs/test_tools/libDeviceManagerTestTool.a index 4856dd6c..fdb0ff03 100644 Binary files a/output_files/libs/test_tools/libDeviceManagerTestTool.a and b/output_files/libs/test_tools/libDeviceManagerTestTool.a differ diff --git a/output_files/libs/test_tools/libHalTestTool.a b/output_files/libs/test_tools/libHalTestTool.a index d36ceb56..56bbba29 100644 Binary files a/output_files/libs/test_tools/libHalTestTool.a and b/output_files/libs/test_tools/libHalTestTool.a differ diff --git a/output_files/libs/test_tools/libHuntingUpgradeTestTool.a b/output_files/libs/test_tools/libHuntingUpgradeTestTool.a index abae798e..a574b3f1 100644 Binary files a/output_files/libs/test_tools/libHuntingUpgradeTestTool.a and b/output_files/libs/test_tools/libHuntingUpgradeTestTool.a differ diff --git a/output_files/libs/test_tools/libIpcConfigTestTool.a b/output_files/libs/test_tools/libIpcConfigTestTool.a index 724f8aa5..6d8f5c0e 100644 Binary files a/output_files/libs/test_tools/libIpcConfigTestTool.a and b/output_files/libs/test_tools/libIpcConfigTestTool.a differ diff --git a/output_files/libs/test_tools/libMcuAskBaseTestTool.a b/output_files/libs/test_tools/libMcuAskBaseTestTool.a index bdcb7b02..f40a8a3f 100644 Binary files a/output_files/libs/test_tools/libMcuAskBaseTestTool.a and b/output_files/libs/test_tools/libMcuAskBaseTestTool.a differ diff --git a/output_files/libs/test_tools/libMcuManagerTestTool.a b/output_files/libs/test_tools/libMcuManagerTestTool.a index c3a8df30..701d415a 100644 Binary files a/output_files/libs/test_tools/libMcuManagerTestTool.a and b/output_files/libs/test_tools/libMcuManagerTestTool.a differ diff --git a/output_files/libs/test_tools/libMcuProtocolTestTool.a b/output_files/libs/test_tools/libMcuProtocolTestTool.a index 1337e716..cac24b16 100644 Binary files a/output_files/libs/test_tools/libMcuProtocolTestTool.a and b/output_files/libs/test_tools/libMcuProtocolTestTool.a differ diff --git a/output_files/libs/test_tools/libMediaManagerTestTool.a b/output_files/libs/test_tools/libMediaManagerTestTool.a index bcea574c..8926a9c1 100644 Binary files a/output_files/libs/test_tools/libMediaManagerTestTool.a and b/output_files/libs/test_tools/libMediaManagerTestTool.a differ diff --git a/output_files/libs/test_tools/libMissionManagerTestTool.a b/output_files/libs/test_tools/libMissionManagerTestTool.a index f52b1f76..0b44fef0 100644 Binary files a/output_files/libs/test_tools/libMissionManagerTestTool.a and b/output_files/libs/test_tools/libMissionManagerTestTool.a differ diff --git a/output_files/libs/test_tools/libUartDeviceTestTool.a b/output_files/libs/test_tools/libUartDeviceTestTool.a index 5d546664..7b0855ad 100644 Binary files a/output_files/libs/test_tools/libUartDeviceTestTool.a and b/output_files/libs/test_tools/libUartDeviceTestTool.a differ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cbd8e4cb..921a6cfe 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -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) diff --git a/test/GtestUsing.h b/test/GtestUsing.h index e829a58e..44fa4e7b 100644 --- a/test/GtestUsing.h +++ b/test/GtestUsing.h @@ -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 \ No newline at end of file diff --git a/test/application/HuntingCamera/CMakeLists.txt b/test/application/HuntingCamera/CMakeLists.txt index da59f582..b05048bc 100644 --- a/test/application/HuntingCamera/CMakeLists.txt +++ b/test/application/HuntingCamera/CMakeLists.txt @@ -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 diff --git a/test/application/HuntingCamera/src_mock/HuntingCameraTest.cpp b/test/application/HuntingCamera/src_mock/HuntingCameraTest.cpp index 579e0adb..ecd026bb 100644 --- a/test/application/HuntingCamera/src_mock/HuntingCameraTest.cpp +++ b/test/application/HuntingCamera/src_mock/HuntingCameraTest.cpp @@ -40,10 +40,10 @@ void HuntingCameraTest::TearDownTestCase() } void HuntingCameraTest::SetUp() { - CreateAllCamerasMcok(); std::shared_ptr mainThread = std::make_shared(); MainThread::GetInstance(&mainThread); HalTestTool::Init(); + CreateAllCamerasMcok(); CreateAllKeysMcok(); CreateAllLedsMcok(); AppManagerTestTool::Init(); @@ -68,13 +68,13 @@ void HuntingCameraTest::TearDown() std::shared_ptr test = std::make_shared(); LinuxApiMock::GetInstance(&test); McuManagerTestTool::UnInit(); - MainThread::GetInstance()->UnInit(); - std::shared_ptr mainThread = std::make_shared(); - MainThread::GetInstance(&mainThread); DeviceManagerTestTool::UnInit(); DestroyAllCamerasMock(); DestroyAllKeysMock(); DestroyAllLedsMock(); + MainThread::GetInstance()->UnInit(); + std::shared_ptr mainThread = std::make_shared(); + 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) diff --git a/test/application/VersionReleaseTool/CMakeLists.txt b/test/application/VersionReleaseTool/CMakeLists.txt index c75b2c16..89a761a7 100644 --- a/test/application/VersionReleaseTool/CMakeLists.txt +++ b/test/application/VersionReleaseTool/CMakeLists.txt @@ -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 diff --git a/test/hal/CMakeLists.txt b/test/hal/CMakeLists.txt index 044fbda9..94e197b2 100644 --- a/test/hal/CMakeLists.txt +++ b/test/hal/CMakeLists.txt @@ -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) diff --git a/test/hal/tool/include/HalTestTool.h b/test/hal/tool/include/HalTestTool.h index 0235b277..52d619eb 100644 --- a/test/hal/tool/include/HalTestTool.h +++ b/test/hal/tool/include/HalTestTool.h @@ -76,6 +76,7 @@ public: static std::shared_ptr MakeKeyHalTest(const std::string &keyName); static std::shared_ptr MakeLedHalTest(const std::string &ledName); static std::shared_ptr MakeCameraHalTest(const CameraType &type); + static void DestroyCameraHalTest(std::map> &allCamerasMock); private: std::shared_ptr mHalMock; diff --git a/test/middleware/AppManager/CMakeLists.txt b/test/middleware/AppManager/CMakeLists.txt index ea265eb8..75117cbb 100644 --- a/test/middleware/AppManager/CMakeLists.txt +++ b/test/middleware/AppManager/CMakeLists.txt @@ -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 diff --git a/test/middleware/DeviceManager/CMakeLists.txt b/test/middleware/DeviceManager/CMakeLists.txt index c159c9e9..806054cc 100644 --- a/test/middleware/DeviceManager/CMakeLists.txt +++ b/test/middleware/DeviceManager/CMakeLists.txt @@ -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 diff --git a/test/middleware/HuntingUpgrade/CMakeLists.txt b/test/middleware/HuntingUpgrade/CMakeLists.txt index ae94240e..2405e8c9 100644 --- a/test/middleware/HuntingUpgrade/CMakeLists.txt +++ b/test/middleware/HuntingUpgrade/CMakeLists.txt @@ -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 diff --git a/test/middleware/IpcConfig/CMakeLists.txt b/test/middleware/IpcConfig/CMakeLists.txt index 10b205ca..a3f95502 100644 --- a/test/middleware/IpcConfig/CMakeLists.txt +++ b/test/middleware/IpcConfig/CMakeLists.txt @@ -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 diff --git a/test/middleware/McuManager/CMakeLists.txt b/test/middleware/McuManager/CMakeLists.txt index c1ef7051..b2dc624e 100644 --- a/test/middleware/McuManager/CMakeLists.txt +++ b/test/middleware/McuManager/CMakeLists.txt @@ -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 diff --git a/test/middleware/MediaManager/CMakeLists.txt b/test/middleware/MediaManager/CMakeLists.txt index 75ce039e..ac38e281 100644 --- a/test/middleware/MediaManager/CMakeLists.txt +++ b/test/middleware/MediaManager/CMakeLists.txt @@ -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 diff --git a/test/middleware/MediaManager/src/MediaManagerTest.cpp b/test/middleware/MediaManager/src/MediaManagerTest.cpp new file mode 100644 index 00000000..5c294802 --- /dev/null +++ b/test/middleware/MediaManager/src/MediaManagerTest.cpp @@ -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 camera = HalTestTool::MakeCameraHalTest(CameraType::MAIN_CAMERA); + mAllCamerasMock[CameraType::MAIN_CAMERA] = camera; +} +void MediaManagerTest::DestroyAllCamerasMock(void) +{ + mAllCamerasMock.clear(); +} \ No newline at end of file diff --git a/test/middleware/MediaManager/src/MediaManagerTest.h b/test/middleware/MediaManager/src/MediaManagerTest.h new file mode 100644 index 00000000..d2985b7c --- /dev/null +++ b/test/middleware/MediaManager/src/MediaManagerTest.h @@ -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 +#include +#include +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> mAllCamerasMock; +}; +#endif \ No newline at end of file diff --git a/test/middleware/MediaManager/src/MediaManager_Test.cpp b/test/middleware/MediaManager/src/MediaManager_Test.cpp index 720b9ecf..ff3c19dc 100644 --- a/test/middleware/MediaManager/src/MediaManager_Test.cpp +++ b/test/middleware/MediaManager/src/MediaManager_Test.cpp @@ -16,62 +16,13 @@ #include "HalTestTool.h" #include "ILog.h" #include "IMediaManager.h" +#include "MediaManagerTest.h" #include "MediaManagerTestTool.h" #include #include #include -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 camera = HalTestTool::MakeCameraHalTest(CameraType::MAIN_CAMERA); - mAllCamerasMock[CameraType::MAIN_CAMERA] = camera; - } - void DestroyAllCamerasMock(void) - { - mAllCamerasMock.clear(); - } - -protected: - // const AppParam mAppParam; - std::map> 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 \ No newline at end of file +} // namespace MediaManager_Test \ No newline at end of file diff --git a/test/utils/CMakeLists.txt b/test/utils/CMakeLists.txt index 251acc6d..5a21e7a2 100644 --- a/test/utils/CMakeLists.txt +++ b/test/utils/CMakeLists.txt @@ -8,4 +8,5 @@ add_subdirectory(LinuxApiMock) add_subdirectory(McuProtocol) add_subdirectory(FxHttpServer) add_subdirectory(TestManager) -add_subdirectory(TcpModule) \ No newline at end of file +add_subdirectory(TcpModule) +add_subdirectory(MediaBase) \ No newline at end of file diff --git a/test/utils/Config/CMakeLists.txt b/test/utils/Config/CMakeLists.txt index 08fb3f86..803d1864 100644 --- a/test/utils/Config/CMakeLists.txt +++ b/test/utils/Config/CMakeLists.txt @@ -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 diff --git a/test/utils/FxHttpServer/CMakeLists.txt b/test/utils/FxHttpServer/CMakeLists.txt index 906b109b..17a0878c 100644 --- a/test/utils/FxHttpServer/CMakeLists.txt +++ b/test/utils/FxHttpServer/CMakeLists.txt @@ -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 diff --git a/test/utils/LinuxApiMock/CMakeLists.txt b/test/utils/LinuxApiMock/CMakeLists.txt index f921bacb..560a09b7 100644 --- a/test/utils/LinuxApiMock/CMakeLists.txt +++ b/test/utils/LinuxApiMock/CMakeLists.txt @@ -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 diff --git a/test/utils/LinuxApiMock/src/LinuxApiMock.cpp b/test/utils/LinuxApiMock/src/LinuxApiMock.cpp index 3af63f02..2a3906fc 100644 --- a/test/utils/LinuxApiMock/src/LinuxApiMock.cpp +++ b/test/utils/LinuxApiMock/src/LinuxApiMock.cpp @@ -13,9 +13,16 @@ * limitations under the License. */ #include "LinuxApiMock.h" -#include "ILog.h" #include "LinuxTestImpl.h" #include "WrapApi.h" +// #include +#include +#include +#include +#include +#include +#include +#include std::shared_ptr &LinuxApiMock::GetInstance(std::shared_ptr *impl) { static auto instance = std::make_shared(); diff --git a/test/utils/LinuxApiMock/src/LinuxTestImpl.cpp b/test/utils/LinuxApiMock/src/LinuxTestImpl.cpp index 5fc68e4f..b3cf17ac 100644 --- a/test/utils/LinuxApiMock/src/LinuxTestImpl.cpp +++ b/test/utils/LinuxApiMock/src/LinuxTestImpl.cpp @@ -13,7 +13,17 @@ * limitations under the License. */ #include "LinuxTestImpl.h" +#include "GtestUsing.h" #include "ILog.h" +#include "LinuxApiMock.h" +#include "WrapApi.h" +// #include +#include +#include +#include +#include +#include +#include #include /** * @brief The simulated interface has been subjected to lock serial processing to ensure that the return value can be diff --git a/test/utils/LinuxApiMock/src/WrapApi.cpp b/test/utils/LinuxApiMock/src/WrapApi.cpp index 731ffeaa..02ce3bbc 100644 --- a/test/utils/LinuxApiMock/src/WrapApi.cpp +++ b/test/utils/LinuxApiMock/src/WrapApi.cpp @@ -14,7 +14,10 @@ */ #include "WrapApi.h" #include "LinuxApiMock.h" +// #include #include +#include +#include #ifdef __cplusplus extern "C" { #endif diff --git a/test/utils/Log/CMakeLists.txt b/test/utils/Log/CMakeLists.txt index f15f9dac..277058e2 100644 --- a/test/utils/Log/CMakeLists.txt +++ b/test/utils/Log/CMakeLists.txt @@ -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 diff --git a/test/utils/MediaBase/CMakeLists.txt b/test/utils/MediaBase/CMakeLists.txt new file mode 100644 index 00000000..e6f6492a --- /dev/null +++ b/test/utils/MediaBase/CMakeLists.txt @@ -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() \ No newline at end of file diff --git a/test/utils/MediaBase/mainTest.cpp b/test/utils/MediaBase/mainTest.cpp new file mode 100644 index 00000000..475ceee4 --- /dev/null +++ b/test/utils/MediaBase/mainTest.cpp @@ -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 +#include +#include +#include +int main(int argc, char *argv[]) +{ + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} \ No newline at end of file diff --git a/test/utils/MediaBase/src/MediaBase_Test.cpp b/test/utils/MediaBase/src/MediaBase_Test.cpp new file mode 100644 index 00000000..79b4b5ad --- /dev/null +++ b/test/utils/MediaBase/src/MediaBase_Test.cpp @@ -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 +#include +#include +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 \ No newline at end of file diff --git a/test/utils/SharedData/CMakeLists.txt b/test/utils/SharedData/CMakeLists.txt index 2f59cae1..4f3b70e8 100644 --- a/test/utils/SharedData/CMakeLists.txt +++ b/test/utils/SharedData/CMakeLists.txt @@ -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 diff --git a/test/utils/TcpModule/CMakeLists.txt b/test/utils/TcpModule/CMakeLists.txt index 0619c71a..8c737a76 100644 --- a/test/utils/TcpModule/CMakeLists.txt +++ b/test/utils/TcpModule/CMakeLists.txt @@ -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 diff --git a/test/utils/TestManager/CMakeLists.txt b/test/utils/TestManager/CMakeLists.txt index 7b2b91ba..fcefe5a8 100644 --- a/test/utils/TestManager/CMakeLists.txt +++ b/test/utils/TestManager/CMakeLists.txt @@ -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 diff --git a/test/utils/TestManager/src/TestManager.cpp b/test/utils/TestManager/src/TestManager.cpp index 819d153a..f3f1d7c0 100644 --- a/test/utils/TestManager/src/TestManager.cpp +++ b/test/utils/TestManager/src/TestManager.cpp @@ -15,6 +15,9 @@ #include "TestManager.h" #include "ILog.h" #include "MainThread.h" +#include +#include +#include constexpr int TIMER_SLEEP_MS = 100; void TestManager::Init(void) { diff --git a/test/utils/UartDevice/CMakeLists.txt b/test/utils/UartDevice/CMakeLists.txt index 62952dd5..eef71286 100644 --- a/test/utils/UartDevice/CMakeLists.txt +++ b/test/utils/UartDevice/CMakeLists.txt @@ -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 diff --git a/test/utils/WebServer/CMakeLists.txt b/test/utils/WebServer/CMakeLists.txt index 5a84238b..a19ecddf 100644 --- a/test/utils/WebServer/CMakeLists.txt +++ b/test/utils/WebServer/CMakeLists.txt @@ -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 diff --git a/utils/Config/CMakeLists.txt b/utils/Config/CMakeLists.txt index f6f1e999..60a87808 100644 --- a/utils/Config/CMakeLists.txt +++ b/utils/Config/CMakeLists.txt @@ -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 diff --git a/utils/ConfigBase/CMakeLists.txt b/utils/ConfigBase/CMakeLists.txt index 40703219..40aed0d3 100644 --- a/utils/ConfigBase/CMakeLists.txt +++ b/utils/ConfigBase/CMakeLists.txt @@ -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 diff --git a/utils/FxHttpServer/CMakeLists.txt b/utils/FxHttpServer/CMakeLists.txt index 8fba0ba7..30cccdee 100644 --- a/utils/FxHttpServer/CMakeLists.txt +++ b/utils/FxHttpServer/CMakeLists.txt @@ -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 diff --git a/utils/KeyControl/CMakeLists.txt b/utils/KeyControl/CMakeLists.txt index 102e6a1d..0b0a5efe 100644 --- a/utils/KeyControl/CMakeLists.txt +++ b/utils/KeyControl/CMakeLists.txt @@ -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 diff --git a/utils/LedControl/CMakeLists.txt b/utils/LedControl/CMakeLists.txt index 6f212f65..3b2f9ad1 100644 --- a/utils/LedControl/CMakeLists.txt +++ b/utils/LedControl/CMakeLists.txt @@ -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 diff --git a/utils/LinuxApi/CMakeLists.txt b/utils/LinuxApi/CMakeLists.txt index ea8af247..0e8eecdf 100644 --- a/utils/LinuxApi/CMakeLists.txt +++ b/utils/LinuxApi/CMakeLists.txt @@ -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 diff --git a/utils/Log/CMakeLists.txt b/utils/Log/CMakeLists.txt index b65eb640..6b9e528b 100644 --- a/utils/Log/CMakeLists.txt +++ b/utils/Log/CMakeLists.txt @@ -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 diff --git a/utils/McuProtocol/CMakeLists.txt b/utils/McuProtocol/CMakeLists.txt index 0b37a80a..c9be68df 100644 --- a/utils/McuProtocol/CMakeLists.txt +++ b/utils/McuProtocol/CMakeLists.txt @@ -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 diff --git a/utils/MediaAdapter/CMakeLists.txt b/utils/MediaAdapter/CMakeLists.txt index 02285eab..ece81b73 100644 --- a/utils/MediaAdapter/CMakeLists.txt +++ b/utils/MediaAdapter/CMakeLists.txt @@ -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 diff --git a/utils/MediaBase/CMakeLists.txt b/utils/MediaBase/CMakeLists.txt index 7c1e51d8..50fc931e 100644 --- a/utils/MediaBase/CMakeLists.txt +++ b/utils/MediaBase/CMakeLists.txt @@ -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 diff --git a/utils/MediaBase/build/mediabase.cmake b/utils/MediaBase/build/mediabase.cmake new file mode 100644 index 00000000..438146fd --- /dev/null +++ b/utils/MediaBase/build/mediabase.cmake @@ -0,0 +1,2 @@ + +set(FFMPEG_EXTERNAL_LIBS avformat avcodec avutil swresample avdevice avfilter swscale postproc z) \ No newline at end of file diff --git a/utils/MediaBase/include/MediaBase.h b/utils/MediaBase/include/MediaBase.h index a5df302f..a312042f 100644 --- a/utils/MediaBase/include/MediaBase.h +++ b/utils/MediaBase/include/MediaBase.h @@ -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 } diff --git a/utils/MediaBase/src/IMediaBase.cpp b/utils/MediaBase/src/IMediaBase.cpp index 5a36544d..cc719b25 100644 --- a/utils/MediaBase/src/IMediaBase.cpp +++ b/utils/MediaBase/src/IMediaBase.cpp @@ -14,19 +14,45 @@ */ #include "IMediaBase.h" #include "ILog.h" +#include "MediaBase.h" +#include "MediaBaseMakePtr.h" +#include "StatusCode.h" +#include +#include #include +#include +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 *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(); + impl->mIMediaBase = MediaBaseMakePtr::GetInstance()->CreateMediaBase(type); return (std::shared_ptr *)(((char *)impl) + sizeof(MediaBaseHeader)); } \ No newline at end of file diff --git a/utils/MediaBase/src/IMediaBase.h b/utils/MediaBase/src/IMediaBase.h index 092899eb..aa450142 100644 --- a/utils/MediaBase/src/IMediaBase.h +++ b/utils/MediaBase/src/IMediaBase.h @@ -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 { diff --git a/utils/MediaBase/src/MediaBase.cpp b/utils/MediaBase/src/MediaBase.cpp index 9d41dc08..8b1c256f 100644 --- a/utils/MediaBase/src/MediaBase.cpp +++ b/utils/MediaBase/src/MediaBase.cpp @@ -15,6 +15,10 @@ #include "MediaBase.h" #include "ILog.h" #include "IMediaBase.h" +#include "StatusCode.h" +#include +#include +#include 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 *)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 *)object)->SetReadAudioCallback(callback, context); + } + return CreateStatusCode(STATUS_CODE_OK); +} +StatusCode IStartReadFile(void *object, const char *path) +{ + if (ObjectCheck(object) == true) { + return (*(std::shared_ptr *)object)->StartReadFile(path); + } + return CreateStatusCode(STATUS_CODE_OK); +} +StatusCode IStopReadFile(void *object) +{ + if (ObjectCheck(object) == true) { + return (*(std::shared_ptr *)object)->StopReadFile(); + } + return CreateStatusCode(STATUS_CODE_OK); +} void IMediaBaseFree(void *object) { if (ObjectCheck(object) == true) { diff --git a/utils/MediaBase/src/MediaBaseImpl.cpp b/utils/MediaBase/src/MediaBaseImpl.cpp index 632636a8..13c322ce 100644 --- a/utils/MediaBase/src/MediaBaseImpl.cpp +++ b/utils/MediaBase/src/MediaBaseImpl.cpp @@ -12,4 +12,162 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "MediaBaseImpl.h" \ No newline at end of file +#include "MediaBaseImpl.h" +#include "ILog.h" +#include "MediaBase.h" +#include "StatusCode.h" +#include +#include +#ifdef __cplusplus +extern "C" { +#endif +// #include +#include +#include +#include +// #include +#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 media) { + LogInfo("ReadFileThread start.\n"); + media->ReadFileThread(pFormatCtx, mediaStreamIndex); + }; + std::shared_ptr 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; + } +} \ No newline at end of file diff --git a/utils/MediaBase/src/MediaBaseImpl.h b/utils/MediaBase/src/MediaBaseImpl.h index 39d2598a..395bcc20 100644 --- a/utils/MediaBase/src/MediaBaseImpl.h +++ b/utils/MediaBase/src/MediaBaseImpl.h @@ -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 +#include +#include +#include +// #include +#ifdef __cplusplus +} +#endif +#include +class MediaBaseImpl : public IMediaBase, public std::enable_shared_from_this { 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 \ No newline at end of file diff --git a/utils/MediaBase/src/MediaBaseMakePtr.cpp b/utils/MediaBase/src/MediaBaseMakePtr.cpp new file mode 100644 index 00000000..09eaa998 --- /dev/null +++ b/utils/MediaBase/src/MediaBaseMakePtr.cpp @@ -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 +std::shared_ptr &MediaBaseMakePtr::GetInstance(std::shared_ptr *impl) +{ + static auto instance = std::make_shared(); + 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 MediaBaseMakePtr::CreateMediaBase(const MediaHandleType &type) +{ + LogInfo("MediaBaseMakePtr::CreateMediaBase, type = %d.\n", type); + auto tmp = std::make_shared(type); + return tmp; +} \ No newline at end of file diff --git a/utils/MediaBase/src/MediaBaseMakePtr.h b/utils/MediaBase/src/MediaBaseMakePtr.h new file mode 100644 index 00000000..fb6f59ff --- /dev/null +++ b/utils/MediaBase/src/MediaBaseMakePtr.h @@ -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 +class MediaBaseMakePtr +{ +public: + MediaBaseMakePtr() = default; + virtual ~MediaBaseMakePtr() = default; + static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr); + virtual std::shared_ptr CreateMediaBase(const MediaHandleType &type); +}; +#endif \ No newline at end of file diff --git a/utils/ModBusCRC16/CMakeLists.txt b/utils/ModBusCRC16/CMakeLists.txt index a60d4dc4..c475c95f 100644 --- a/utils/ModBusCRC16/CMakeLists.txt +++ b/utils/ModBusCRC16/CMakeLists.txt @@ -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 diff --git a/utils/MultiProcess/CMakeLists.txt b/utils/MultiProcess/CMakeLists.txt index 59ff909d..949ad512 100644 --- a/utils/MultiProcess/CMakeLists.txt +++ b/utils/MultiProcess/CMakeLists.txt @@ -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 diff --git a/utils/Servers/CMakeLists.txt b/utils/Servers/CMakeLists.txt index 1e356c4c..eb4eb669 100755 --- a/utils/Servers/CMakeLists.txt +++ b/utils/Servers/CMakeLists.txt @@ -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 diff --git a/utils/SharedData/CMakeLists.txt b/utils/SharedData/CMakeLists.txt index 2bd1ce4f..32fb0a75 100644 --- a/utils/SharedData/CMakeLists.txt +++ b/utils/SharedData/CMakeLists.txt @@ -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 diff --git a/utils/StatusCode/CMakeLists.txt b/utils/StatusCode/CMakeLists.txt index 3f2d415e..7e9b9b32 100644 --- a/utils/StatusCode/CMakeLists.txt +++ b/utils/StatusCode/CMakeLists.txt @@ -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 diff --git a/utils/TcpModule/CMakeLists.txt b/utils/TcpModule/CMakeLists.txt index a3d94d2e..613358d3 100644 --- a/utils/TcpModule/CMakeLists.txt +++ b/utils/TcpModule/CMakeLists.txt @@ -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 diff --git a/utils/TcpModule/src/TcpServerImpl.cpp b/utils/TcpModule/src/TcpServerImpl.cpp index 7455c03d..d82bdf1e 100644 --- a/utils/TcpModule/src/TcpServerImpl.cpp +++ b/utils/TcpModule/src/TcpServerImpl.cpp @@ -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)); diff --git a/utils/UartDevice/CMakeLists.txt b/utils/UartDevice/CMakeLists.txt index eafbfeba..130ae203 100644 --- a/utils/UartDevice/CMakeLists.txt +++ b/utils/UartDevice/CMakeLists.txt @@ -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 diff --git a/utils/UpgradeBase/CMakeLists.txt b/utils/UpgradeBase/CMakeLists.txt index e34986ce..77051ed3 100644 --- a/utils/UpgradeBase/CMakeLists.txt +++ b/utils/UpgradeBase/CMakeLists.txt @@ -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 diff --git a/utils/UpgradeTool/CMakeLists.txt b/utils/UpgradeTool/CMakeLists.txt index 9665d8b0..fdd797ec 100644 --- a/utils/UpgradeTool/CMakeLists.txt +++ b/utils/UpgradeTool/CMakeLists.txt @@ -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 diff --git a/utils/WebServer/CMakeLists.txt b/utils/WebServer/CMakeLists.txt index 4b0c8150..1dcc0cc0 100644 --- a/utils/WebServer/CMakeLists.txt +++ b/utils/WebServer/CMakeLists.txt @@ -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}) diff --git a/utils/WebServer/build/webserver.cmake b/utils/WebServer/build/webserver.cmake index 9ff2327d..5a7fa842 100644 --- a/utils/WebServer/build/webserver.cmake +++ b/utils/WebServer/build/webserver.cmake @@ -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}\") \ No newline at end of file +add_definitions(-DGOAHEAD_DOCUMENTS_PATH=\"${GOAHEAD_DOCUMENTS_PATH}\") + +set(GOAHEAD_EXTERNAL_LIBS go mbedtls goahead-mbedtls) \ No newline at end of file diff --git a/utils/WebServer/src/WebServer.cpp b/utils/WebServer/src/WebServer.cpp index e20b982f..13423325 100644 --- a/utils/WebServer/src/WebServer.cpp +++ b/utils/WebServer/src/WebServer.cpp @@ -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();