summaryrefslogtreecommitdiff
path: root/src/drivers/include
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-02-06 13:36:37 +1100
committerjacqueline <me@jacqueline.id.au>2024-02-06 13:37:20 +1100
commit0bb12912bc185d78114ccebb5d6e7aae67cb1728 (patch)
tree7327885f836af2e88dc203381a9207474faa1695 /src/drivers/include
parent99c56641e9ee531a0553ff19422009dd667a3add (diff)
downloadtangara-fw-0bb12912bc185d78114ccebb5d6e7aae67cb1728.tar.gz
Implement basic volume control for bt outputs
Diffstat (limited to 'src/drivers/include')
-rw-r--r--src/drivers/include/bluetooth.hpp9
1 files changed, 9 insertions, 0 deletions
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 <freertos/FreeRTOS.h>
#include <freertos/stream_buffer.h>
+#include <stdint.h>
#include "bluetooth_types.hpp"
#include "esp_a2dp_api.h"
#include "esp_avrc_api.h"
@@ -48,6 +49,8 @@ class Bluetooth {
auto PreferredDevice() -> std::optional<bluetooth::MacAndName>;
auto SetSource(StreamBufferHandle_t) -> void;
+ auto SetVolume(uint8_t) -> void;
+
auto SetEventHandler(std::function<void(bluetooth::Event)> 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<BluetoothState> {
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_;
};