// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include "AlarmEventsDBRepository.hpp" #include "AlarmOperations.hpp" #include "AlarmMessageHandler.hpp" #include "Constants.hpp" #include "service-time/TimeManager.hpp" #include "service-time/ServiceTime.hpp" #include #include #include #include #include #include #include // for allocator, string namespace settings { class Settings; } namespace stm { class ServiceTime : public sys::Service { private: static constexpr auto StackDepth = 2048 * 8; std::unique_ptr timeManager; std::unique_ptr settings; std::unique_ptr alarmMessageHandler; std::shared_ptr alarmOperationsFactory; void registerMessageHandlers(); auto handleSetAutomaticDateAndTimeRequest(sys::Message *request) -> std::shared_ptr; auto handleSetTimeFormatRequest(sys::Message *request) -> std::shared_ptr; auto handleSetDateFormatRequest(sys::Message *request) -> std::shared_ptr; auto handleSetTimezoneRequest(sys::Message *request) -> std::shared_ptr; auto handleCellularTimeNotificationMessage(sys::Message *request) -> std::shared_ptr; auto handleGetAutomaticDateAndTimeRequest() -> std::shared_ptr; void initStaticData(); public: ServiceTime(std::shared_ptr alarmOperationsFactory = std::make_shared()); ~ServiceTime(); sys::ReturnCodes InitHandler() override; sys::ReturnCodes DeinitHandler() override; sys::ReturnCodes SwitchPowerModeHandler(const sys::ServicePowerMode mode) override final; sys::MessagePointer DataReceivedHandler(sys::DataMessage *msgl, sys::ResponseMessage *resp = nullptr) override; }; } /* namespace stm */ namespace sys { template <> struct ManifestTraits { static auto GetManifest() -> ServiceManifest { ServiceManifest manifest; manifest.name = service::name::service_time; manifest.dependencies = {service::name::db}; return manifest; } }; } // namespace sys