~aleteoryx/muditaos

muditaos/module-services/service-time/AlarmEventsDBRepository.hpp -rw-r--r-- 1.6 KiB
a405cad6Aleteoryx trim readme 6 days ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// 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 "AlarmRepository.hpp"

#include <Service/Service.hpp>
#include <time/dateCommon.hpp>

namespace alarms
{
    class AlarmEventsDBRepository : public AbstractAlarmEventsRepository
    {
      private:
        sys::Service *service{};

      public:
        explicit AlarmEventsDBRepository(sys::Service *service);

        auto getAlarmEvent(const std::uint32_t alarmId, const OnGetAlarmEventCallback &callback) -> void override;
        auto getAlarmEnabledEvents(const OnGetAlarmEventsCallback &callback) -> void override;
        auto getAlarmEventsInRange(std::uint32_t offset,
                                   std::uint32_t limit,
                                   const OnGetAlarmEventsInRangeCallback &callback) -> void override;
        auto addAlarmEvent(const AlarmEventRecord &alarmEvent, const OnAddAlarmEventCallback &callback)
            -> void override;
        auto updateAlarmEvent(const AlarmEventRecord &alarmEvent, const OnUpdateAlarmEventCallback &callback)
            -> void override;
        auto removeAlarmEvent(const std::uint32_t id, const OnRemoveAlarmEventCallback &callback) -> void override;
        auto toggleAll(bool toggle, const OnToggleAll &callback) -> void override;

      private:
        template <typename requestT, typename responseT, typename callbackT, typename... Types>
        void sendQueryWithCallback(const callbackT &callback, Types... queryArgs);
    };
} // namespace alarms