22 AudioBLEStream(
int defaultMTU) { max_transfer_size = defaultMTU; };
24 virtual void end() = 0;
26 virtual bool connected() = 0;
29 if (is_audio_info_active && this->info != info) {
32 writeAudioInfoCharacteristic(info);
36 operator bool() {
return connected(); }
38 void setServiceUUID(
const char *uuid) { BLE_AUDIO_SERVICE_UUID = uuid; }
40 void setRxUUID(
const char *uuid) { BLE_CH2_UUID = uuid; }
42 void setTxUUID(
const char *uuid) { BLE_CH1_UUID = uuid; }
44 void setAudioInfoUUID(
const char *uuid) { BLE_INFO_UUID = uuid; }
46 void setAudioInfoActive(
bool flag) { is_audio_info_active = flag; }
48 void setFramed(
bool flag) { is_framed = flag; }
50 StrView toStr(AudioInfo info) {
51 snprintf(audio_info_str, 40,
"%d:%d:%d", info.sample_rate, info.channels,
52 info.bits_per_sample);
53 return StrView(audio_info_str);
56 AudioInfo toInfo(
const uint8_t *str) {
58 sscanf((
char*)str,
"%d:%d:%d", &result.sample_rate, &result.channels, &result.bits_per_sample);
64 AudioBLEStream(AudioBLEStream
const &other) =
delete;
66 void operator=(AudioBLEStream
const &other) =
delete;
67 const char *ble_server_name =
nullptr;
68 uint16_t max_transfer_size = 0;
69 bool is_started =
false;
70 bool is_audio_info_active =
false;
71 bool is_framed =
false;
72 char audio_info_str[40];
76 const char *BLE_AUDIO_SERVICE_UUID =
"6e400001-b5a3-f393-e0a9-e50e24dcca9e";
77 const char *BLE_CH1_UUID =
"6e400002-b5a3-f393-e0a9-e50e24dcca9e";
78 const char *BLE_CH2_UUID =
"6e400003-b5a3-f393-e0a9-e50e24dcca9e";
79 const char *BLE_INFO_UUID =
"6e400004-b5a3-f393-e0a9-e50e24dcca9e";
81 virtual int getMTU() = 0;
84 virtual void setAudioInfo(
const uint8_t *data,
size_t size) {
85 if (is_audio_info_active) {
86 AudioInfo ai = toInfo(data);
91 virtual void writeAudioInfoCharacteristic(AudioInfo info) = 0;