~aleteoryx/muditaos

ref: a5f621bc834dcfc15c776d4dd33ad86464ee2f64 muditaos/module-bluetooth/Bluetooth/WorkerController.hpp -rw-r--r-- 3.1 KiB
a5f621bc — Lefucjusz [MOS-487] Added call events state machine 3 years 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
67
// 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 "AbstractController.hpp"
#include "CommandHandler.hpp"
#include "interface/BluetoothDriver.hpp"
#include <command/event/Events.hpp>

#include <functional>
#include <memory>

namespace bluetooth
{
    using DeviceRegistrationFunction = std::function<Error::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 bt::evt::Base &evt) override;
        void handle(const bt::evt::StartScan &evt) override;
        void handle(const bt::evt::StopScan &evt) override;
        void handle(const bt::evt::GetDevicesAvailable &evt) override;
        void handle(const bt::evt::VisibilityOn &evt) override;
        void handle(const bt::evt::VisibilityOff &evt) override;
        void handle(const bt::evt::ConnectAudio &evt) override;
        void handle(const bt::evt::DisconnectAudio &evt) override;
        void handle(const bt::evt::PowerOn &evt) override;
        void handle(const bt::evt::PowerOff &evt) override;
        void handle(const bt::evt::ShutDown &evt) override;
        void handle(const bt::evt::Pair &evt) override;
        void handle(const bt::evt::Unpair &evt) override;
        void handle(const bt::evt::StartRinging &evt) override;
        void handle(const bt::evt::StopRinging &evt) override;
        void handle(const bt::evt::StartRouting &evt) override;
        void handle(const bt::evt::StartStream &evt) override;
        void handle(const bt::evt::StopStream &evt) override;
        void handle(const bt::evt::CallAnswered &evt) override;
        void handle(const bt::evt::CallTerminated &evt) override;
        void handle(const bt::evt::CallStarted &evt) override;
        void handle(const bt::evt::IncomingCallNumber &evt) override;
        void handle(const bt::evt::SignalStrengthData &evt) override;
        void handle(const bt::evt::OperatorNameData &evt) override;
        void handle(const bt::evt::BatteryLevelData &evt) override;
        void handle(const bt::evt::NetworkStatusData &evt) override;

        class Impl;

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