// 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
namespace bluetooth::event
{
struct Base;
struct StartScan;
struct StopScan;
struct GetDevicesAvailable;
struct VisibilityOn;
struct VisibilityOff;
struct Connect;
struct Disconnect;
struct PowerOn;
struct PowerOff;
struct ShutDown;
struct Pair;
struct Unpair;
struct StartStream;
struct StopStream;
struct CallAnswered;
struct CallTerminated;
struct CallMissed;
struct OutgoingCallStarted;
struct IncomingCallStarted;
struct IncomingCallNumber;
struct SignalStrengthData;
struct OperatorNameData;
struct BatteryLevelData;
struct NetworkStatusData;
} // namespace bluetooth::event
namespace bluetooth
{
class AbstractController
{
public:
virtual ~AbstractController() noexcept = default;
virtual void handle(const bluetooth::event::Base &evt) = 0;
virtual void handle(const bluetooth::event::StartScan &evt) = 0;
virtual void handle(const bluetooth::event::StopScan &evt) = 0;
virtual void handle(const bluetooth::event::GetDevicesAvailable &evt) = 0;
virtual void handle(const bluetooth::event::VisibilityOn &evt) = 0;
virtual void handle(const bluetooth::event::VisibilityOff &evt) = 0;
virtual void handle(const bluetooth::event::Connect &evt) = 0;
virtual void handle(const bluetooth::event::Disconnect &evt) = 0;
virtual void handle(const bluetooth::event::PowerOn &evt) = 0;
virtual void handle(const bluetooth::event::PowerOff &evt) = 0;
virtual void handle(const bluetooth::event::ShutDown &evt) = 0;
virtual void handle(const bluetooth::event::Pair &evt) = 0;
virtual void handle(const bluetooth::event::Unpair &evt) = 0;
virtual void handle(const bluetooth::event::StartStream &evt) = 0;
virtual void handle(const bluetooth::event::StopStream &evt) = 0;
virtual void handle(const bluetooth::event::CallAnswered &evt) = 0;
virtual void handle(const bluetooth::event::CallTerminated &evt) = 0;
virtual void handle(const bluetooth::event::CallMissed &evt) = 0;
virtual void handle(const bluetooth::event::OutgoingCallStarted &evt) = 0;
virtual void handle(const bluetooth::event::IncomingCallStarted &evt) = 0;
virtual void handle(const bluetooth::event::IncomingCallNumber &evt) = 0;
virtual void handle(const bluetooth::event::SignalStrengthData &evt) = 0;
virtual void handle(const bluetooth::event::OperatorNameData &evt) = 0;
virtual void handle(const bluetooth::event::BatteryLevelData &evt) = 0;
virtual void handle(const bluetooth::event::NetworkStatusData &evt) = 0;
};
}; // namespace bluetooth