arduino-audio-tools
Loading...
Searching...
No Matches
src
AudioTools
Sandbox
BLE
AudioBLEStream.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
AudioToolsConfig.h
"
4
#include "
AudioTools/CoreAudio/AudioBasic/Collections/Vector.h
"
5
#include "
AudioTools/CoreAudio/Buffers.h
"
6
#include "
AudioTools/CoreAudio/AudioBasic/StrView.h
"
7
8
9
namespace
audio_tools
{
10
20
class
AudioBLEStream
:
public
AudioStream
{
21
public
:
22
AudioBLEStream
(
int
defaultMTU
) {
max_transfer_size
=
defaultMTU
; };
23
24
virtual
void
end
() = 0;
25
26
virtual
bool
connected
() = 0;
27
28
void
setAudioInfo
(
AudioInfo
info
) {
29
if
(
is_audio_info_active
&& this->info !=
info
) {
30
TRACED
();
31
AudioStream::setAudioInfo
(
info
);
32
writeAudioInfoCharacteristic
(
info
);
33
}
34
}
35
36
operator
bool
() {
return
connected
(); }
37
38
void
setServiceUUID
(
const
char
*
uuid
) {
BLE_AUDIO_SERVICE_UUID
=
uuid
; }
39
40
void
setRxUUID
(
const
char
*
uuid
) {
BLE_CH2_UUID
=
uuid
; }
41
42
void
setTxUUID
(
const
char
*
uuid
) {
BLE_CH1_UUID
=
uuid
; }
43
44
void
setAudioInfoUUID
(
const
char
*
uuid
) {
BLE_INFO_UUID
=
uuid
; }
45
46
void
setAudioInfoActive
(
bool
flag
) {
is_audio_info_active
=
flag
; }
47
48
void
setFramed
(
bool
flag
) {
is_framed
=
flag
; }
49
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
);
54
}
55
56
AudioInfo
toInfo
(
const
uint8_t
*str) {
57
AudioInfo
result;
58
sscanf
((
char
*)str,
"%d:%d:%d"
, &result.
sample_rate
, &result.
channels
, &result.
bits_per_sample
);
59
return
result;
60
}
61
62
protected
:
63
// disable copy constructor
64
AudioBLEStream
(
AudioBLEStream
const
&
other
) =
delete
;
65
// disable assign constructor
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];
73
74
// Bluetooth LE GATT UUIDs for the Nordic UART profile Change UUID here if
75
// required
76
const
char
*
BLE_AUDIO_SERVICE_UUID
=
"6e400001-b5a3-f393-e0a9-e50e24dcca9e"
;
77
const
char
*
BLE_CH1_UUID
=
"6e400002-b5a3-f393-e0a9-e50e24dcca9e"
;
// RX
78
const
char
*
BLE_CH2_UUID
=
"6e400003-b5a3-f393-e0a9-e50e24dcca9e"
;
// TX
79
const
char
*
BLE_INFO_UUID
=
"6e400004-b5a3-f393-e0a9-e50e24dcca9e"
;
80
81
virtual
int
getMTU
() = 0;
82
83
// override to implement your own extended logic
84
virtual
void
setAudioInfo
(
const
uint8_t
*data,
size_t
size) {
85
if
(
is_audio_info_active
) {
86
AudioInfo
ai
=
toInfo
(data);
87
setAudioInfo
(
ai
);
88
}
89
}
90
// override to implement your own extended logic
91
virtual
void
writeAudioInfoCharacteristic
(
AudioInfo
info
) = 0;
92
};
93
94
}
// namespace audio_tools
TRACED
#define TRACED()
Definition
AudioLoggerIDF.h:31
AudioToolsConfig.h
Buffers.h
StrView.h
Vector.h
audio_tools::AudioBLEStream
Transmit and receive data via BLE using a Serial API. The following additional experimental features ...
Definition
AudioBLEStream.h:20
audio_tools::AudioBLEStream::setServiceUUID
void setServiceUUID(const char *uuid)
Definition
AudioBLEStream.h:38
audio_tools::AudioBLEStream::setAudioInfo
virtual void setAudioInfo(const uint8_t *data, size_t size)
Definition
AudioBLEStream.h:84
audio_tools::AudioBLEStream::operator=
void operator=(AudioBLEStream const &other)=delete
audio_tools::AudioBLEStream::setFramed
void setFramed(bool flag)
Definition
AudioBLEStream.h:48
audio_tools::AudioBLEStream::connected
virtual bool connected()=0
audio_tools::AudioBLEStream::toInfo
AudioInfo toInfo(const uint8_t *str)
Definition
AudioBLEStream.h:56
audio_tools::AudioBLEStream::BLE_INFO_UUID
const char * BLE_INFO_UUID
Definition
AudioBLEStream.h:79
audio_tools::AudioBLEStream::is_started
bool is_started
Definition
AudioBLEStream.h:69
audio_tools::AudioBLEStream::setAudioInfo
void setAudioInfo(AudioInfo info)
Defines the input AudioInfo.
Definition
AudioBLEStream.h:28
audio_tools::AudioBLEStream::setRxUUID
void setRxUUID(const char *uuid)
Definition
AudioBLEStream.h:40
audio_tools::AudioBLEStream::AudioBLEStream
AudioBLEStream(int defaultMTU)
Definition
AudioBLEStream.h:22
audio_tools::AudioBLEStream::BLE_CH2_UUID
const char * BLE_CH2_UUID
Definition
AudioBLEStream.h:78
audio_tools::AudioBLEStream::audio_info_str
char audio_info_str[40]
Definition
AudioBLEStream.h:72
audio_tools::AudioBLEStream::end
virtual void end()=0
audio_tools::AudioBLEStream::writeAudioInfoCharacteristic
virtual void writeAudioInfoCharacteristic(AudioInfo info)=0
audio_tools::AudioBLEStream::setAudioInfoActive
void setAudioInfoActive(bool flag)
Definition
AudioBLEStream.h:46
audio_tools::AudioBLEStream::max_transfer_size
uint16_t max_transfer_size
Definition
AudioBLEStream.h:68
audio_tools::AudioBLEStream::setTxUUID
void setTxUUID(const char *uuid)
Definition
AudioBLEStream.h:42
audio_tools::AudioBLEStream::ble_server_name
const char * ble_server_name
Definition
AudioBLEStream.h:67
audio_tools::AudioBLEStream::BLE_AUDIO_SERVICE_UUID
const char * BLE_AUDIO_SERVICE_UUID
Definition
AudioBLEStream.h:76
audio_tools::AudioBLEStream::getMTU
virtual int getMTU()=0
audio_tools::AudioBLEStream::is_audio_info_active
bool is_audio_info_active
Definition
AudioBLEStream.h:70
audio_tools::AudioBLEStream::BLE_CH1_UUID
const char * BLE_CH1_UUID
Definition
AudioBLEStream.h:77
audio_tools::AudioBLEStream::is_framed
bool is_framed
Definition
AudioBLEStream.h:71
audio_tools::AudioBLEStream::setAudioInfoUUID
void setAudioInfoUUID(const char *uuid)
Definition
AudioBLEStream.h:44
audio_tools::AudioBLEStream::toStr
StrView toStr(AudioInfo info)
Definition
AudioBLEStream.h:50
audio_tools::AudioBLEStream::AudioBLEStream
AudioBLEStream(AudioBLEStream const &other)=delete
audio_tools::AudioStream
Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...
Definition
BaseStream.h:123
audio_tools::AudioStream::info
AudioInfo info
Definition
BaseStream.h:174
audio_tools::AudioStream::setAudioInfo
virtual void setAudioInfo(AudioInfo newInfo) override
Defines the input AudioInfo.
Definition
BaseStream.h:131
audio_tools::StrView
A simple wrapper to provide string functions on existing allocated char*. If the underlying char* is ...
Definition
StrView.h:28
audio_tools
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition
AudioCodecsBase.h:10
audio_tools::writeData
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition
AudioTypes.h:512
audio_tools::AudioInfo
Basic Audio information which drives e.g. I2S.
Definition
AudioTypes.h:55
audio_tools::AudioInfo::sample_rate
sample_rate_t sample_rate
Sample Rate: e.g 44100.
Definition
AudioTypes.h:57
audio_tools::AudioInfo::channels
uint16_t channels
Number of channels: 2=stereo, 1=mono.
Definition
AudioTypes.h:59
audio_tools::AudioInfo::bits_per_sample
uint8_t bits_per_sample
Number of bits per sample (int16_t = 16 bits)
Definition
AudioTypes.h:61
Generated by
1.9.8