From 6e0c4844f85ec82510b53dcb60c3d4c0f40c2965 Mon Sep 17 00:00:00 2001 From: Mateusz Grzegorzek Date: Fri, 13 Aug 2021 14:28:07 +0200 Subject: [PATCH] [BH-739] Split EventManager Renaming: - rename EventManager to EventManagerCommon, - rename PureEventManager and BellEventManager to EventManager --- CMakeLists.txt | 4 -- cmake/modules/AddCatch2Executable.cmake | 65 ----------------- .../application-clock/ApplicationClock.cpp | 2 +- .../model/ApplicationManager.cpp | 4 +- .../service-desktop/ServiceDesktop.cpp | 2 +- .../service-evtmgr/EventManager.cpp | 30 ++++---- ...ventManager.hpp => EventManagerCommon.hpp} | 6 +- .../service-evtmgr/WorkerEvent.hpp | 2 +- module-services/service-time/RTCcommand.cpp | 2 +- .../service-time/doc/time_date_flow.puml | 2 +- .../service-time/doc/time_date_flow.svg | 18 ++--- module-sys/CMakeLists.txt | 5 -- module-utils/log/doc/logging_engine.md | 2 +- products/BellHybrid/BellHybridMain.cpp | 4 +- products/BellHybrid/CMakeLists.txt | 7 +- products/BellHybrid/services/CMakeLists.txt | 1 + .../BellHybrid/services/evtmgr/CMakeLists.txt | 19 +++++ ...{BellEventManager.cpp => EventManager.cpp} | 6 +- .../evtmgr/EventManager.hpp} | 6 +- products/PurePhone/CMakeLists.txt | 11 +-- products/PurePhone/PurePhoneMain.cpp | 4 +- .../PurePhone/services/evtmgr/CMakeLists.txt | 17 +++-- ...{PureEventManager.cpp => EventManager.cpp} | 22 +++--- ...{PureEventManager.hpp => EventManager.hpp} | 10 +-- products/PurePhone/test/CMakeLists.txt | 1 - .../test/test-settings/CMakeLists.txt | 2 +- .../test-service-db-settings-api.cpp | 6 +- test/CMakeLists.txt | 69 ++++++++++++++++++- 28 files changed, 171 insertions(+), 158 deletions(-) delete mode 100644 cmake/modules/AddCatch2Executable.cmake rename module-services/service-evtmgr/service-evtmgr/{EventManager.hpp => EventManagerCommon.hpp} (93%) create mode 100644 products/BellHybrid/services/CMakeLists.txt create mode 100644 products/BellHybrid/services/evtmgr/CMakeLists.txt rename products/BellHybrid/services/evtmgr/{BellEventManager.cpp => EventManager.cpp} (84%) rename products/BellHybrid/services/evtmgr/{BellEventManager.hpp => include/evtmgr/EventManager.hpp} (77%) rename products/PurePhone/services/evtmgr/{PureEventManager.cpp => EventManager.cpp} (92%) rename products/PurePhone/services/evtmgr/include/evtmgr/{PureEventManager.hpp => EventManager.hpp} (76%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 682217b13fa9e701c7ae0f6bcc0116f68a66aaae..6452b552b59f4594477b09853d81f91a27fdaec4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,12 +41,8 @@ endif() if (${ENABLE_TESTS}) enable_testing() - add_custom_target(unittests) add_custom_target(check ${CMAKE_CTEST_COMMAND} -V) add_subdirectory(test) - if (EXISTS products/${PRODUCT}/test) - add_subdirectory(products/${PRODUCT}/test) - endif () include(PureCoverage) endif () diff --git a/cmake/modules/AddCatch2Executable.cmake b/cmake/modules/AddCatch2Executable.cmake deleted file mode 100644 index fba38df165a4dd1e76f16bfc8995e1715e417001..0000000000000000000000000000000000000000 --- a/cmake/modules/AddCatch2Executable.cmake +++ /dev/null @@ -1,65 +0,0 @@ -function(add_catch2_executable) - cmake_parse_arguments( - _TEST_ARGS - "USE_FS" - "NAME" - "SRCS;INCLUDE;LIBS;DEFS;DEPS" - ${ARGN} - ) - - if(NOT _TEST_ARGS_NAME) - message(FATAL_ERROR "You must provide a test name") - endif(NOT _TEST_ARGS_NAME) - set(_TESTNAME "catch2-${_TEST_ARGS_NAME}") - - if(NOT _TEST_ARGS_SRCS) - message(FATAL_ERROR "You must provide test sources for ${_TESTNAME}") - endif(NOT _TEST_ARGS_SRCS) - - get_directory_property(_TEST_ENTITY TEST_ENTITY) - - add_executable(${_TESTNAME} EXCLUDE_FROM_ALL ${_TEST_ARGS_SRCS}) - - target_compile_options(${_TESTNAME} PUBLIC "-fsanitize=address") - target_link_options(${_TESTNAME} PUBLIC "-fsanitize=address") - - # disable logs in unit tests - if (NOT ${ENABLE_TEST_LOGS} AND NOT ${_TESTNAME} STREQUAL "catch2-utils-log") - target_sources(${_TESTNAME} PRIVATE ${ROOT_TEST_DIR}/mock-logs.cpp) - target_sources(${_TESTNAME} PRIVATE ${ROOT_TEST_DIR}/mock-freertos-tls.cpp) - endif (NOT ${ENABLE_TEST_LOGS} AND NOT ${_TESTNAME} STREQUAL "catch2-utils-log") - - set(_TEST_LABELS "") - if(_TEST_ARGS_USE_FS) - enable_test_filesystem() - endif() - - target_link_libraries(${_TESTNAME} PRIVATE Catch2::Catch2 log) - foreach(lib ${_TEST_ARGS_LIBS}) - target_link_libraries(${_TESTNAME} PRIVATE ${lib}) - endforeach(lib) - foreach(include ${_TEST_ARGS_INCLUDE}) - target_include_directories(${_TESTNAME} PRIVATE ${include}) - endforeach(include) - - foreach(def ${_TEST_ARGS_DEFS}) - target_compile_definitions(${_TESTNAME} PRIVATE ${def}) - endforeach(def) - - foreach(dep ${_TEST_ARGS_DEPS}) - add_dependencies(${_TESTNAME} ${dep}) - endforeach(dep) - - add_dependencies(unittests ${_TESTNAME}) - add_dependencies(check ${_TESTNAME}) - - if(_TEST_ENTITY) - add_dependencies(unittests-${_TEST_ENTITY} ${_TESTNAME}) - list(APPEND _TEST_LABELS ${_TEST_ENTITY}) - endif() - - catch_discover_tests(${_TESTNAME} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - PROPERTIES LABELS ${_TEST_LABELS} - ) -endfunction() diff --git a/module-apps/application-clock/ApplicationClock.cpp b/module-apps/application-clock/ApplicationClock.cpp index 31fc8a03f767c4e45f1f43ca7ef9f2f8cd56fb4b..86322c8e05a0f0eaaf5d7ded3ea4db4324e2502b 100644 --- a/module-apps/application-clock/ApplicationClock.cpp +++ b/module-apps/application-clock/ApplicationClock.cpp @@ -8,7 +8,7 @@ // module-utils #include #include -#include +#include #include #include // MessageType diff --git a/module-services/service-appmgr/model/ApplicationManager.cpp b/module-services/service-appmgr/model/ApplicationManager.cpp index 675a09ec7c30f65ea2cc361348e2921db07dd740..41269a509847768bb9c10a6b1b712db2d5fdbf63 100644 --- a/module-services/service-appmgr/model/ApplicationManager.cpp +++ b/module-services/service-appmgr/model/ApplicationManager.cpp @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include @@ -1036,7 +1036,7 @@ namespace app::manager app.blockClosing = false; app.setState(ApplicationHandle::State::ACTIVE_FORGROUND); setState(State::Running); - EventManager::messageSetApplication(this, app.name()); + EventManagerCommon::messageSetApplication(this, app.name()); onLaunchFinished(app); return true; } diff --git a/module-services/service-desktop/ServiceDesktop.cpp b/module-services/service-desktop/ServiceDesktop.cpp index f6cde46b4020d6f97955dbde07d843e4bc058120..dd528762abc09fc3df7c5d1b330460675870688a 100644 --- a/module-services/service-desktop/ServiceDesktop.cpp +++ b/module-services/service-desktop/ServiceDesktop.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/module-services/service-evtmgr/EventManager.cpp b/module-services/service-evtmgr/EventManager.cpp index c53bfabc3f20e05b2caa294e3c14ef0c4948fb81..f1a3e97ba38603df6cdfe0bf2ad5350ce2e18005 100644 --- a/module-services/service-evtmgr/EventManager.cpp +++ b/module-services/service-evtmgr/EventManager.cpp @@ -5,7 +5,7 @@ #include "service-evtmgr/EVMessages.hpp" #include "service-evtmgr/KbdMessage.hpp" #include "service-evtmgr/Constants.hpp" -#include "service-evtmgr/EventManager.hpp" +#include "service-evtmgr/EventManagerCommon.hpp" #include "service-evtmgr/WorkerEvent.hpp" #include "battery-level-check/BatteryLevelCheck.hpp" @@ -47,7 +47,7 @@ namespace constexpr auto loggerTimerName = "Logger"; } // namespace -EventManager::EventManager(const std::string &name) +EventManagerCommon::EventManagerCommon(const std::string &name) : sys::Service(name, "", stackDepth), loggerTimer{sys::TimerFactory::createPeriodicTimer( this, loggerTimerName, @@ -62,7 +62,7 @@ EventManager::EventManager(const std::string &name) loggerTimer.start(); } -EventManager::~EventManager() +EventManagerCommon::~EventManagerCommon() { if (EventWorker != nullptr) { EventWorker->close(); @@ -70,7 +70,7 @@ EventManager::~EventManager() } // Invoked upon receiving data message -sys::MessagePointer EventManager::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) +sys::MessagePointer EventManagerCommon::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) { bool handled = false; @@ -114,7 +114,7 @@ sys::MessagePointer EventManager::DataReceivedHandler(sys::DataMessage *msgl, sy } // Invoked during initialization -sys::ReturnCodes EventManager::InitHandler() +sys::ReturnCodes EventManagerCommon::InitHandler() { settings->init(service::ServiceProxy(shared_from_this())); @@ -200,7 +200,7 @@ sys::ReturnCodes EventManager::InitHandler() return sys::ReturnCodes::Success; } -sys::ReturnCodes EventManager::DeinitHandler() +sys::ReturnCodes EventManagerCommon::DeinitHandler() { settings->deinit(); @@ -211,13 +211,13 @@ sys::ReturnCodes EventManager::DeinitHandler() return sys::ReturnCodes::Success; } -void EventManager::ProcessCloseReason(sys::CloseReason closeReason) +void EventManagerCommon::ProcessCloseReason(sys::CloseReason closeReason) { bsp::torch::turn(bsp::torch::State::off); sendCloseReadyMessage(this); } -sys::ReturnCodes EventManager::SwitchPowerModeHandler(const sys::ServicePowerMode mode) +sys::ReturnCodes EventManagerCommon::SwitchPowerModeHandler(const sys::ServicePowerMode mode) { LOG_FATAL("[ServiceEvtMgr] PowerModeHandler: %s", c_str(mode)); @@ -232,13 +232,13 @@ sys::ReturnCodes EventManager::SwitchPowerModeHandler(const sys::ServicePowerMod return sys::ReturnCodes::Success; } -bool EventManager::messageSetApplication(sys::Service *sender, const std::string &applicationName) +bool EventManagerCommon::messageSetApplication(sys::Service *sender, const std::string &applicationName) { auto msg = std::make_shared(applicationName); return sender->bus.sendUnicast(msg, service::name::evt_manager); } -void EventManager::handleKeyEvent(sys::Message *msg) +void EventManagerCommon::handleKeyEvent(sys::Message *msg) { auto kbdMessage = dynamic_cast(msg); auto message = std::make_shared(); @@ -259,7 +259,7 @@ void EventManager::handleKeyEvent(sys::Message *msg) app::manager::Controller::preventBlockingDevice(this); } -int EventManager::dumpLogsToFile() +int EventManagerCommon::dumpLogsToFile() { const auto logPath = purefs::dir::getUserDiskPath() / LOG_FILE_NAME; const auto ts = cpp_freertos::Ticks::TicksToMs(cpp_freertos::Ticks::GetTicks()); @@ -269,7 +269,7 @@ int EventManager::dumpLogsToFile() return Log::Logger::get().dumpToFile(std::move(logPath)); } -void EventManager::handleMinuteUpdate(time_t timestamp) +void EventManagerCommon::handleMinuteUpdate(time_t timestamp) { if (!targetApplication.empty()) { auto message = std::make_shared(MessageType::EVMMinuteUpdated); @@ -278,7 +278,7 @@ void EventManager::handleMinuteUpdate(time_t timestamp) } } -void EventManager::processRTCFromTmRequest(struct tm &newTime) +void EventManagerCommon::processRTCFromTmRequest(struct tm &newTime) { if (bsp::rtc::setDateTime(&newTime) != bsp::rtc::ErrorCode::OK) { LOG_ERROR("Setting RTC failed."); @@ -290,7 +290,7 @@ void EventManager::processRTCFromTmRequest(struct tm &newTime) bus.sendMulticast(std::move(notification), sys::BusChannel::ServiceEvtmgrNotifications); } -void EventManager::processRTCFromTimestampRequest(time_t &newTime) +void EventManagerCommon::processRTCFromTimestampRequest(time_t &newTime) { if (bsp::rtc::setDateTimeFromTimestamp(newTime) != bsp::rtc::ErrorCode::OK) { LOG_ERROR("Setting RTC failed."); @@ -301,7 +301,7 @@ void EventManager::processRTCFromTimestampRequest(time_t &newTime) bus.sendMulticast(std::move(notification), sys::BusChannel::ServiceEvtmgrNotifications); } -void EventManager::processTimezoneRequest(const std::string &timezone) +void EventManagerCommon::processTimezoneRequest(const std::string &timezone) { if (setenv("TZ", timezone.c_str(), 1) != 0) { LOG_ERROR("Setting timezone failed."); diff --git a/module-services/service-evtmgr/service-evtmgr/EventManager.hpp b/module-services/service-evtmgr/service-evtmgr/EventManagerCommon.hpp similarity index 93% rename from module-services/service-evtmgr/service-evtmgr/EventManager.hpp rename to module-services/service-evtmgr/service-evtmgr/EventManagerCommon.hpp index 9505c5e5b99633d548b1030d537ae76511bb8a7e..c18b59fd8d37c4cbd7efc7c405ca4a9cd5011805 100644 --- a/module-services/service-evtmgr/service-evtmgr/EventManager.hpp +++ b/module-services/service-evtmgr/service-evtmgr/EventManagerCommon.hpp @@ -22,7 +22,7 @@ class WorkerEvent; -class EventManager : public sys::Service +class EventManagerCommon : public sys::Service { private: static constexpr auto stackDepth = 4096; @@ -52,8 +52,8 @@ class EventManager : public sys::Service bool alarmIsValid = false; public: - explicit EventManager(const std::string &name = service::name::evt_manager); - ~EventManager(); + explicit EventManagerCommon(const std::string &name = service::name::evt_manager); + ~EventManagerCommon(); sys::MessagePointer DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) override; diff --git a/module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp b/module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp index 9f0aea0e3d46e6b79e01923b64fd024c11d7b44b..ac6ce0db4f356b5d0a24e13e5285e579a2a1a6fd 100644 --- a/module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp +++ b/module-services/service-evtmgr/service-evtmgr/WorkerEvent.hpp @@ -3,7 +3,7 @@ #pragma once -#include "EventManager.hpp" +#include "EventManagerCommon.hpp" #include #include diff --git a/module-services/service-time/RTCcommand.cpp b/module-services/service-time/RTCcommand.cpp index daae429950d2010f6cbebb7b0748e55f78f146ea..fe6e3796a163c90c9e5abe94d6946004e7f24617 100644 --- a/module-services/service-time/RTCcommand.cpp +++ b/module-services/service-time/RTCcommand.cpp @@ -4,7 +4,7 @@ #include "service-time/RTCCommand.hpp" #include -#include +#include void RTCCommand::setTime(const struct tm &time) { diff --git a/module-services/service-time/doc/time_date_flow.puml b/module-services/service-time/doc/time_date_flow.puml index ccdd5d5bdb1dc8b9d3515c61ade22d3ff719eee4..f97eea971745d7d429318d7706dc615662d9e001 100644 --- a/module-services/service-time/doc/time_date_flow.puml +++ b/module-services/service-time/doc/time_date_flow.puml @@ -4,7 +4,7 @@ participant ServiceTime as time participant TimeManager as manager participant SettingsApp as settings participant SettingsDB as db -participant EventManager as event +participant EventManagerCommon as event participant bspRTC as rtc participant OS as os diff --git a/module-services/service-time/doc/time_date_flow.svg b/module-services/service-time/doc/time_date_flow.svg index 517f51604126f53819a462ebb7cdedd4009cc241..e134f8579e9b8e10f931fdc538ceac9f3341b94b 100644 --- a/module-services/service-time/doc/time_date_flow.svg +++ b/module-services/service-time/doc/time_date_flow.svg @@ -1,4 +1,4 @@ -ServiceCellularServiceCellularServiceTimeServiceTimeTimeManagerTimeManagerSettingsAppSettingsAppSettingsDBSettingsDBEventManagerEventManagerbspRTCbspRTCOSOSNetwork time sync enabledSettings: Network time synchronisation Network time sync enabledCTZE notification: time updateUpdate timeStore new timeStore new timeTime updated notificationDisabling / Enabling Network time synchonisationTime synchronisation disabled / enabledStore new settingsSetting storedSetting changedhandle settings changed ( Enable / Disable Network time reporting)Network time synchronisation disabled, manually setting date / timeNew date / time is setUpdate timeStore new timeStore new timeTime updated notification \ No newline at end of file diff --git a/module-sys/CMakeLists.txt b/module-sys/CMakeLists.txt index b075559c9e7579463baa922b6f543251e24b8199..7a11bfcf88d840495f5914de644a3817ed614e26 100644 --- a/module-sys/CMakeLists.txt +++ b/module-sys/CMakeLists.txt @@ -58,11 +58,6 @@ target_compile_definitions(${PROJECT_NAME} PUBLIC ${PROJECT_TARGET}) target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_INCLUDES}) target_include_directories(${PROJECT_NAME} PUBLIC ../module-services ) -target_include_directories(${PROJECT_NAME} - PUBLIC - ${CMAKE_SOURCE_DIR} -) - if (${ENABLE_TESTS}) add_subdirectory(SystemManager/tests) add_subdirectory(Service/tests) diff --git a/module-utils/log/doc/logging_engine.md b/module-utils/log/doc/logging_engine.md index 835c1e0f5e5f2403ef53229728c18a2d96ca57c5..5dde3c7d13bf43a573b6d85ee9f7d425a574a5b8 100644 --- a/module-utils/log/doc/logging_engine.md +++ b/module-utils/log/doc/logging_engine.md @@ -25,7 +25,7 @@ In such a case, proper `lost message info` is added to `msg` received from the b ## Dumping to a file -Logs from `Circular buffer` are dumped to a file named `MuditaOS.log` every 10 sec by `EventManager` timer. +Logs from `Circular buffer` are dumped to a file named `MuditaOS.log` every 10 sec by `EventManagerCommon` timer. Current max log file size is 50 MB (after reaching this size no more logs are dumped). diff --git a/products/BellHybrid/BellHybridMain.cpp b/products/BellHybrid/BellHybridMain.cpp index 9242eccc74d0e41433e5074fe60767b14d5fc82d..87eb40d56e7e54d397045159eb5af25e65535dd4 100644 --- a/products/BellHybrid/BellHybridMain.cpp +++ b/products/BellHybrid/BellHybridMain.cpp @@ -9,7 +9,7 @@ #include // services -#include +#include #include #include #include @@ -57,7 +57,7 @@ int main() } std::vector> systemServices; - systemServices.emplace_back(sys::CreatorFor()); + systemServices.emplace_back(sys::CreatorFor()); #if ENABLE_FILEINDEXER_SERVICE systemServices.emplace_back(sys::CreatorFor()); #endif diff --git a/products/BellHybrid/CMakeLists.txt b/products/BellHybrid/CMakeLists.txt index c07d0dc1508b8c638337dd7abb2c8e4c999fb381..99ab128da89552ee897ad7ab68f5a5f8710b170b 100644 --- a/products/BellHybrid/CMakeLists.txt +++ b/products/BellHybrid/CMakeLists.txt @@ -19,8 +19,6 @@ target_sources(BellHybrid PRIVATE BellHybridMain.cpp PlatformFactory.cpp - services/evtmgr/BellEventManager.cpp - services/evtmgr/BellEventManager.hpp ) target_include_directories(BellHybrid @@ -28,7 +26,6 @@ target_include_directories(BellHybrid ${TARGET_DIR_INCLUDES} ${PROJECT_INCLUDES} ${CMAKE_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} ) set_target_properties(BellHybrid @@ -39,10 +36,11 @@ set_target_properties(BellHybrid target_link_libraries(BellHybrid PRIVATE + application-bell-alarm application-bell-main application-bell-settings - application-bell-alarm application-music-player + evtmgr messagetype module-apps module-bsp @@ -84,3 +82,4 @@ add_version_json(BellHybrid) add_standalone_image(BellHybrid) add_update_package(BellHybrid) +add_subdirectory(services) diff --git a/products/BellHybrid/services/CMakeLists.txt b/products/BellHybrid/services/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..730345a5fa91f22c7a52894339b4e5b5664218a0 --- /dev/null +++ b/products/BellHybrid/services/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(evtmgr) diff --git a/products/BellHybrid/services/evtmgr/CMakeLists.txt b/products/BellHybrid/services/evtmgr/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..399c793bc7feed6a2a3a52eef5f0b13d2f8fabfd --- /dev/null +++ b/products/BellHybrid/services/evtmgr/CMakeLists.txt @@ -0,0 +1,19 @@ +add_library(evtmgr STATIC) + +target_sources(evtmgr + PRIVATE + EventManager.cpp + PUBLIC + include/evtmgr/EventManager.hpp +) + +target_include_directories(evtmgr + PUBLIC + $ +) + +target_link_libraries(evtmgr + PRIVATE + module-utils + service-evtmgr +) diff --git a/products/BellHybrid/services/evtmgr/BellEventManager.cpp b/products/BellHybrid/services/evtmgr/EventManager.cpp similarity index 84% rename from products/BellHybrid/services/evtmgr/BellEventManager.cpp rename to products/BellHybrid/services/evtmgr/EventManager.cpp index e0481938ebe046e8e0643d4b1f7649013323893e..0125003744d031953b94bbcff9f9836dbca69b61 100644 --- a/products/BellHybrid/services/evtmgr/BellEventManager.cpp +++ b/products/BellHybrid/services/evtmgr/EventManager.cpp @@ -1,13 +1,13 @@ // Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md -#include "BellEventManager.hpp" +#include #include -sys::ReturnCodes BellEventManager::InitHandler() +sys::ReturnCodes EventManager::InitHandler() { - EventManager::InitHandler(); + EventManagerCommon::InitHandler(); using namespace std::string_literals; std::list list; diff --git a/products/BellHybrid/services/evtmgr/BellEventManager.hpp b/products/BellHybrid/services/evtmgr/include/evtmgr/EventManager.hpp similarity index 77% rename from products/BellHybrid/services/evtmgr/BellEventManager.hpp rename to products/BellHybrid/services/evtmgr/include/evtmgr/EventManager.hpp index 355f8623e7a4d2a14647d8ee5d12a622a9cc5053..0b2107158f6c3653bbd51b8a8a2f1b4ebac66f9b 100644 --- a/products/BellHybrid/services/evtmgr/BellEventManager.hpp +++ b/products/BellHybrid/services/evtmgr/include/evtmgr/EventManager.hpp @@ -3,9 +3,9 @@ #pragma once -#include +#include -class BellEventManager : public EventManager +class EventManager : public EventManagerCommon { private: sys::ReturnCodes InitHandler() override; @@ -13,7 +13,7 @@ class BellEventManager : public EventManager namespace sys { - template <> struct ManifestTraits + template <> struct ManifestTraits { static auto GetManifest() -> ServiceManifest { diff --git a/products/PurePhone/CMakeLists.txt b/products/PurePhone/CMakeLists.txt index 477c9c88b23bd83ac6a934af047b169ff5f15e49..7107d0875adb686b4a6d54d6c62e4b2bda31e1d4 100644 --- a/products/PurePhone/CMakeLists.txt +++ b/products/PurePhone/CMakeLists.txt @@ -32,7 +32,6 @@ target_include_directories(PurePhone ${TARGET_DIR_INCLUDES} ${PROJECT_INCLUDES} ${CMAKE_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} ) set_target_properties(PurePhone @@ -45,9 +44,9 @@ target_link_libraries(PurePhone PRIVATE application-antenna application-calculator - application-calllog application-calendar application-call + application-calllog application-desktop application-meditation application-messages @@ -56,16 +55,16 @@ target_link_libraries(PurePhone application-phonebook application-settings application-special-input + evtmgr messagetype module-apps module-bsp module-vfs + platform service-audio service-bluetooth service-desktop service-lwip - platform - PurePhone-evtmgr ${LWIP_LIBRARIES} "$<$:iosyscalls>" "$<$:CrashCatcher::CrashCatcher>" @@ -105,3 +104,7 @@ github_message_standalone() github_message_update() add_subdirectory(services) + +if (${ENABLE_TESTS}) + add_subdirectory(test) +endif () diff --git a/products/PurePhone/PurePhoneMain.cpp b/products/PurePhone/PurePhoneMain.cpp index d5611130fb567cbfe6256d10ec212ad6c726a204..1e22278a2c893f5aceb076c973e61c4dfdc9939b 100644 --- a/products/PurePhone/PurePhoneMain.cpp +++ b/products/PurePhone/PurePhoneMain.cpp @@ -22,7 +22,7 @@ #include // services -#include +#include #include #include #include @@ -78,7 +78,7 @@ int main() } std::vector> systemServices; - systemServices.emplace_back(sys::CreatorFor()); + systemServices.emplace_back(sys::CreatorFor()); #if ENABLE_FILEINDEXER_SERVICE systemServices.emplace_back(sys::CreatorFor()); #endif diff --git a/products/PurePhone/services/evtmgr/CMakeLists.txt b/products/PurePhone/services/evtmgr/CMakeLists.txt index 42daeef0a30b0df94ef5bc62c18f28ea018aa99b..4930f3b45487663655da2d15d6841bfea28a7c7c 100644 --- a/products/PurePhone/services/evtmgr/CMakeLists.txt +++ b/products/PurePhone/services/evtmgr/CMakeLists.txt @@ -1,19 +1,18 @@ -add_library(PurePhone-evtmgr STATIC) +add_library(evtmgr STATIC) -target_sources(PurePhone-evtmgr +target_sources(evtmgr PRIVATE - PureEventManager.cpp - include/evtmgr/PureEventManager.hpp + EventManager.cpp + PUBLIC + include/evtmgr/EventManager.hpp ) -target_include_directories(PurePhone-evtmgr - PRIVATE - include/evtmgr +target_include_directories(evtmgr PUBLIC - include + $ ) -target_link_libraries(PurePhone-evtmgr +target_link_libraries(evtmgr PRIVATE module-bsp module-sys diff --git a/products/PurePhone/services/evtmgr/PureEventManager.cpp b/products/PurePhone/services/evtmgr/EventManager.cpp similarity index 92% rename from products/PurePhone/services/evtmgr/PureEventManager.cpp rename to products/PurePhone/services/evtmgr/EventManager.cpp index 562f83032db160f0cfc81d8f42cd038c3df6cb5a..dc8da9991136d1fad5dc08e16b15b483b92d9a0f 100644 --- a/products/PurePhone/services/evtmgr/PureEventManager.cpp +++ b/products/PurePhone/services/evtmgr/EventManager.cpp @@ -1,7 +1,7 @@ // Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md -#include "PureEventManager.hpp" +#include #include #include @@ -23,7 +23,7 @@ namespace } } // namespace -bool PureEventManager::processVibraRequest(bsp::vibrator::Action act, std::chrono::milliseconds RepetitionTime) +bool EventManager::processVibraRequest(bsp::vibrator::Action act, std::chrono::milliseconds RepetitionTime) { switch (act) { case bsp::vibrator::Action::pulse: @@ -42,9 +42,9 @@ bool PureEventManager::processVibraRequest(bsp::vibrator::Action act, std::chron return true; } -sys::ReturnCodes PureEventManager::InitHandler() +sys::ReturnCodes EventManager::InitHandler() { - EventManager::InitHandler(); + EventManagerCommon::InitHandler(); backlightHandler.init(); @@ -125,14 +125,14 @@ sys::ReturnCodes PureEventManager::InitHandler() return sys::ReturnCodes::Success; } -void PureEventManager::toggleTorchOnOff() +void EventManager::toggleTorchOnOff() { auto state = bsp::torch::getState(); auto newState = (state.second == bsp::torch::State::off) ? bsp::torch::State::on : bsp::torch::State::off; bsp::torch::turn(newState, bsp::torch::ColourTemperature::coldest); } -void PureEventManager::toggleTorchColor() +void EventManager::toggleTorchColor() { auto state = bsp::torch::getState(); if (state.second == bsp::torch::State::on) { @@ -143,11 +143,11 @@ void PureEventManager::toggleTorchColor() } } -sys::MessagePointer PureEventManager::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) +sys::MessagePointer EventManager::DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp) { auto responseMessage = - std::static_pointer_cast(EventManager::DataReceivedHandler(msgl, resp)); + std::static_pointer_cast(EventManagerCommon::DataReceivedHandler(msgl, resp)); if (responseMessage->retCode != sys::ReturnCodes::Unresolved) { return responseMessage; @@ -186,9 +186,9 @@ sys::MessagePointer PureEventManager::DataReceivedHandler(sys::DataMessage *msgl } } -void PureEventManager::handleKeyEvent(sys::Message *msg) +void EventManager::handleKeyEvent(sys::Message *msg) { - EventManager::handleKeyEvent(msg); + EventManagerCommon::handleKeyEvent(msg); auto kbdMessage = dynamic_cast(msg); @@ -201,7 +201,7 @@ void PureEventManager::handleKeyEvent(sys::Message *msg) } } -void PureEventManager::handleKeyMoveEvent(RawKey key) +void EventManager::handleKeyMoveEvent(RawKey key) { if (isSliderKeyCode(key.keyCode)) { LOG_INFO("Slider position: %s", magic_enum::enum_name(key.keyCode).data()); diff --git a/products/PurePhone/services/evtmgr/include/evtmgr/PureEventManager.hpp b/products/PurePhone/services/evtmgr/include/evtmgr/EventManager.hpp similarity index 76% rename from products/PurePhone/services/evtmgr/include/evtmgr/PureEventManager.hpp rename to products/PurePhone/services/evtmgr/include/evtmgr/EventManager.hpp index cbf329f7d80f53f1ae15dbee5449f08d140fbf08..a8393fe8e44a46d5e869c7a8830b511e626dfabf 100644 --- a/products/PurePhone/services/evtmgr/include/evtmgr/PureEventManager.hpp +++ b/products/PurePhone/services/evtmgr/include/evtmgr/EventManager.hpp @@ -3,17 +3,17 @@ #pragma once -#include +#include #include #include #include -class PureEventManager : public EventManager +class EventManager : public EventManagerCommon { public: - explicit PureEventManager(const std::string &name = service::name::evt_manager) - : EventManager(name), Vibra(std::make_unique(this)), backlightHandler(settings, this) + explicit EventManager(const std::string &name = service::name::evt_manager) + : EventManagerCommon(name), Vibra(std::make_unique(this)), backlightHandler(settings, this) {} private: @@ -33,7 +33,7 @@ class PureEventManager : public EventManager namespace sys { - template <> struct ManifestTraits + template <> struct ManifestTraits { static auto GetManifest() -> ServiceManifest { diff --git a/products/PurePhone/test/CMakeLists.txt b/products/PurePhone/test/CMakeLists.txt index ece28546ff127853503f1285b5f5dcdcd0e41e1b..ea98a3bf2ee484e21971aeff92a2e8110a89fb27 100644 --- a/products/PurePhone/test/CMakeLists.txt +++ b/products/PurePhone/test/CMakeLists.txt @@ -1,2 +1 @@ -include(AddCatch2Executable) add_subdirectory(test-settings) diff --git a/products/PurePhone/test/test-settings/CMakeLists.txt b/products/PurePhone/test/test-settings/CMakeLists.txt index ec09c6f6ddd06aa0570a9d7e7223f6128c5b9ac6..7d585b15c18efe5537d8039d0802f71bb212903f 100644 --- a/products/PurePhone/test/test-settings/CMakeLists.txt +++ b/products/PurePhone/test/test-settings/CMakeLists.txt @@ -6,12 +6,12 @@ add_catch2_executable( main.cpp test-service-db-settings-api.cpp LIBS + evtmgr module-audio module-cellular module-vfs service-audio service-cellular - PurePhone-evtmgr DEPS module-sys ) diff --git a/products/PurePhone/test/test-settings/test-service-db-settings-api.cpp b/products/PurePhone/test/test-settings/test-service-db-settings-api.cpp index 4b2757724976eaf14439e4b06785deeb528e49a7..e738de3e4fff7220ae533079293babb5d28afad6 100644 --- a/products/PurePhone/test/test-settings/test-service-db-settings-api.cpp +++ b/products/PurePhone/test/test-settings/test-service-db-settings-api.cpp @@ -8,11 +8,11 @@ #include #include // for Message_t, ResponseMessage, DataMessage, Message +#include #include #include #include -#include #include "test-service-db-settings-testmsgs.hpp" #include "test-service-db-settings-testservices.hpp" @@ -36,8 +36,8 @@ TEST_CASE("SettingsApi") testStart = std::make_shared(); testStart->lock(); std::cout << "start thr_id: " << std::this_thread::get_id() << std::endl << std::flush; - auto ret = sys::SystemManager::RunSystemService( - std::make_shared(service::name::evt_manager), manager.get()); + auto ret = sys::SystemManager::RunSystemService(std::make_shared(service::name::evt_manager), + manager.get()); ret &= sys::SystemManager::RunSystemService(std::make_shared(), manager.get()); varWritter = std::make_shared("writterVar"); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d0a9162a389d48548a6eff122676e860e17bee15..4f4b89fa5f6203eaae29d1d4a122ddd4e8fb697d 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -17,7 +17,8 @@ include(Catch) include(CMakeParseArguments) include(DiskImage) include(GoogleTest) -include(AddCatch2Executable) + +add_custom_target(unittests) set(ROOT_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE) set(TEST_ASSETS_DEST_DIR ${CMAKE_BINARY_DIR}/test-sysroot/sys) @@ -112,6 +113,72 @@ function(add_gtest_executable) set_tests_properties(${_TEST_LIST} PROPERTIES LABELS ${_TEST_LABELS}) endfunction() +function(add_catch2_executable) + cmake_parse_arguments( + _TEST_ARGS + "USE_FS" + "NAME" + "SRCS;INCLUDE;LIBS;DEFS;DEPS" + ${ARGN} + ) + + if(NOT _TEST_ARGS_NAME) + message(FATAL_ERROR "You must provide a test name") + endif(NOT _TEST_ARGS_NAME) + set(_TESTNAME "catch2-${_TEST_ARGS_NAME}") + + if(NOT _TEST_ARGS_SRCS) + message(FATAL_ERROR "You must provide test sources for ${_TESTNAME}") + endif(NOT _TEST_ARGS_SRCS) + + get_directory_property(_TEST_ENTITY TEST_ENTITY) + + add_executable(${_TESTNAME} EXCLUDE_FROM_ALL ${_TEST_ARGS_SRCS}) + + target_compile_options(${_TESTNAME} PUBLIC "-fsanitize=address") + target_link_options(${_TESTNAME} PUBLIC "-fsanitize=address") + + # disable logs in unit tests + if (NOT ${ENABLE_TEST_LOGS} AND NOT ${_TESTNAME} STREQUAL "catch2-utils-log") + target_sources(${_TESTNAME} PRIVATE ${ROOT_TEST_DIR}/mock-logs.cpp) + target_sources(${_TESTNAME} PRIVATE ${ROOT_TEST_DIR}/mock-freertos-tls.cpp) + endif (NOT ${ENABLE_TEST_LOGS} AND NOT ${_TESTNAME} STREQUAL "catch2-utils-log") + + set(_TEST_LABELS "") + if(_TEST_ARGS_USE_FS) + enable_test_filesystem() + endif() + + target_link_libraries(${_TESTNAME} PRIVATE Catch2::Catch2 log) + foreach(lib ${_TEST_ARGS_LIBS}) + target_link_libraries(${_TESTNAME} PRIVATE ${lib}) + endforeach(lib) + foreach(include ${_TEST_ARGS_INCLUDE}) + target_include_directories(${_TESTNAME} PRIVATE ${include}) + endforeach(include) + + foreach(def ${_TEST_ARGS_DEFS}) + target_compile_definitions(${_TESTNAME} PRIVATE ${def}) + endforeach(def) + + foreach(dep ${_TEST_ARGS_DEPS}) + add_dependencies(${_TESTNAME} ${dep}) + endforeach(dep) + + add_dependencies(unittests ${_TESTNAME}) + add_dependencies(check ${_TESTNAME}) + + if(_TEST_ENTITY) + add_dependencies(unittests-${_TEST_ENTITY} ${_TESTNAME}) + list(APPEND _TEST_LABELS ${_TEST_ENTITY}) + endif() + + catch_discover_tests(${_TESTNAME} + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + PROPERTIES LABELS ${_TEST_LABELS} + ) +endfunction() + function(add_test_entity) cmake_parse_arguments( _ARGS