~aleteoryx/muditaos

muditaos/module-bluetooth/Bluetooth/WorkerController.hpp -rw-r--r-- 3.3 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// 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 "AbstractController.hpp"
#include "CommandHandler.hpp"
#include "interface/BluetoothDriver.hpp"
#include <command/event/Events.hpp>

#include <functional>
#include <memory>

namespace bluetooth
{
    using DeviceRegistrationFunction = std::function<Result::Code()>;

    class StatefulController : public AbstractController
    {
      public:
        StatefulController(std::shared_ptr<AbstractDriver> driver,
                           std::shared_ptr<AbstractCommandHandler> handler,
                           DeviceRegistrationFunction registerDevice,
                           std::shared_ptr<bluetooth::SettingsHolder> settings,
                           std::shared_ptr<std::vector<Devicei>> pairedDevices,
                           std::shared_ptr<bluetooth::BaseProfileManager> profileManager);
        StatefulController()                                = delete;
        StatefulController(const StatefulController &other) = delete;
        StatefulController(StatefulController &&other) noexcept;
        StatefulController &operator=(const StatefulController &other) = delete;
        StatefulController &operator                                   =(StatefulController &&other) noexcept;

        ~StatefulController() noexcept override;

        void handle(const bluetooth::event::Base &evt) override;
        void handle(const bluetooth::event::StartScan &evt) override;
        void handle(const bluetooth::event::StopScan &evt) override;
        void handle(const bluetooth::event::GetDevicesAvailable &evt) override;
        void handle(const bluetooth::event::VisibilityOn &evt) override;
        void handle(const bluetooth::event::VisibilityOff &evt) override;
        void handle(const bluetooth::event::Connect &evt) override;
        void handle(const bluetooth::event::Disconnect &evt) override;
        void handle(const bluetooth::event::PowerOn &evt) override;
        void handle(const bluetooth::event::PowerOff &evt) override;
        void handle(const bluetooth::event::ShutDown &evt) override;
        void handle(const bluetooth::event::Pair &evt) override;
        void handle(const bluetooth::event::Unpair &evt) override;
        void handle(const bluetooth::event::StartStream &evt) override;
        void handle(const bluetooth::event::StopStream &evt) override;
        void handle(const bluetooth::event::CallAnswered &evt) override;
        void handle(const bluetooth::event::CallTerminated &evt) override;
        void handle(const bluetooth::event::CallMissed &evt) override;
        void handle(const bluetooth::event::OutgoingCallStarted &evt) override;
        void handle(const bluetooth::event::IncomingCallStarted &evt) override;
        void handle(const bluetooth::event::IncomingCallNumber &evt) override;
        void handle(const bluetooth::event::SignalStrengthData &evt) override;
        void handle(const bluetooth::event::OperatorNameData &evt) override;
        void handle(const bluetooth::event::BatteryLevelData &evt) override;
        void handle(const bluetooth::event::NetworkStatusData &evt) override;

        class Impl;

      private:
        std::unique_ptr<Impl> pimpl;
    };
} // namespace bluetooth