// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md #pragma once #include "AlarmOperations.hpp" #include #include #include namespace stm { class ServiceTime; } namespace alarms { class AlarmMessageHandler { public: AlarmMessageHandler(stm::ServiceTime *service, std::unique_ptr &&alarmOperations); auto handleTimeUpdate(TimePoint time) -> void; auto handleGetAlarm(AlarmGetRequestMessage *request) -> std::shared_ptr; auto handleGetAlarmWithStatus(AlarmGetWithStatusRequestMessage *request) -> std::shared_ptr; auto handleAddAlarm(AlarmAddRequestMessage *request) -> std::shared_ptr; auto handleUpdateAlarm(AlarmUpdateRequestMessage *request) -> std::shared_ptr; auto handleRemoveAlarm(AlarmRemoveRequestMessage *request) -> std::shared_ptr; auto handleGetAlarmsInRange(AlarmsGetInRangeRequestMessage *request) -> std::shared_ptr; auto handleGetNextSingleEvents(AlarmGetNextSingleEventsRequestMessage *request) -> std::shared_ptr; auto handleTurnOffRingingAlarm(RingingAlarmTurnOffRequestMessage *request) -> std::shared_ptr; auto handleTurnOffSnooze(TurnOffSnoozeRequestMessage *request) -> std::shared_ptr; auto handleSnoozeRingingAlarm(RingingAlarmSnoozeRequestMessage *request) -> std::shared_ptr; auto handlePostponeSnooze(PostponeSnoozeRequestMessage *request) -> std::shared_ptr; auto handleMinuteUpdated() -> void; auto handleStopAllSnoozedAlarms() -> void; auto handleAddSnoozedAlarmCountChangeCallback(AlarmOperationsCommon::OnSnoozedAlarmsCountChange callback) -> void; auto handleAddActiveAlarmCountChangeCallback(AlarmOperationsCommon::OnActiveAlarmCountChange callback) -> void; auto handleToggleAll(AlarmToggleAllRequestMessage *request) -> std::shared_ptr; auto handleGetSnoozedAlarms(GetSnoozedAlarmsRequestMessage *request) -> std::shared_ptr; auto handleBatteryStateChange(sevm::BatteryStateChangeMessage *request) -> void; auto handleTurnOffPreWakeUp(TurnOffPreWakeUpRequestMessage *request) -> std::shared_ptr; private: stm::ServiceTime *service = nullptr; std::unique_ptr alarmOperations; template auto handleWithCallback(RequestType *request, const std::function)> &alarmOperationsCallback) -> std::shared_ptr; }; } // namespace alarms