// 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 "Application.hpp" #include #include extern "C" { #include } class BluetoothSettingsModel { public: explicit BluetoothSettingsModel(sys::Service *service); void requestStatus(); void updateStatus(bool desiredBluetoothState, bool desiredVisibility); void setStatus(bool desiredBluetoothState, bool desiredVisibility); void requestDeviceName(); void setDeviceName(const UTF8 &deviceName); void requestBondedDevices(); void requestScan(); void stopScan(); void requestDevicePair(const Devicei &device); void requestDeviceUnpair(const Devicei &device); void requestConnection(const Devicei &device); void requestDisconnection(); void replaceDevicesList(const std::vector &devicesList); void setActiveDeviceState(const DeviceState &state); auto getActiveDevice() -> std::optional>; auto getSelectedDevice() -> std::optional>; void setActiveDevice(const Devicei &device); void setSelectedDevice(const Devicei &device); auto getDevices() -> std::vector &; auto isDeviceConnecting() -> bool; auto getStatus() const -> const BluetoothStatus; auto isDeviceListEmpty() const -> bool; Devicei pinRequestor; private: std::vector devices{}; std::uint16_t activeDeviceIndex = 0; std::uint16_t selectedDeviceIndex = 0; sys::Service *service = nullptr; BluetoothStatus status{}; };