From 0bb12912bc185d78114ccebb5d6e7aae67cb1728 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 6 Feb 2024 13:36:37 +1100 Subject: Implement basic volume control for bt outputs --- src/drivers/include/bluetooth.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/drivers/include') diff --git a/src/drivers/include/bluetooth.hpp b/src/drivers/include/bluetooth.hpp index 291d049d..00ddb0c0 100644 --- a/src/drivers/include/bluetooth.hpp +++ b/src/drivers/include/bluetooth.hpp @@ -11,6 +11,7 @@ #include #include +#include #include "bluetooth_types.hpp" #include "esp_a2dp_api.h" #include "esp_avrc_api.h" @@ -48,6 +49,8 @@ class Bluetooth { auto PreferredDevice() -> std::optional; auto SetSource(StreamBufferHandle_t) -> void; + auto SetVolume(uint8_t) -> void; + auto SetEventHandler(std::function cb) -> void; }; @@ -63,6 +66,9 @@ struct DiscoveryChanged : public tinyfsm::Event {}; struct DeviceDiscovered : public tinyfsm::Event { const Device& device; }; +struct ChangeVolume : public tinyfsm::Event { + const uint8_t volume; +}; namespace internal { struct Gap : public tinyfsm::Event { @@ -129,6 +135,7 @@ class BluetoothState : public tinyfsm::Fsm { virtual void react(const events::PreferredDeviceChanged& ev){}; virtual void react(const events::SourceChanged& ev){}; virtual void react(const events::DiscoveryChanged&); + virtual void react(const events::ChangeVolume&) {} virtual void react(const events::DeviceDiscovered&); @@ -198,6 +205,7 @@ class Connected : public BluetoothState { void react(const events::PreferredDeviceChanged& ev) override; void react(const events::SourceChanged& ev) override; + void react(const events::ChangeVolume&) override; void react(const events::Disable& ev) override; void react(const events::internal::Gap& ev) override; @@ -207,6 +215,7 @@ class Connected : public BluetoothState { using BluetoothState::react; private: + uint8_t transaction_num_; mac_addr_t connected_to_; }; -- cgit v1.2.3