|
arduino-audio-tools
|
A BLE server that implements a serial protocol, so that it can be used to send and receive audio. In BLE terminology this is a Peripheral. This implementation uses the BLE library of the ESP32 Arduino core (Bluedroid or NimBLE). More...
#include <BLESerialServerESP32.h>


Public Member Functions | |
| BLESerialServerESP32 (int mtu=517) | |
| virtual void | addNotifyAudioChange (AudioInfoSupport &bi) |
| Adds target to be notified about audio changes. | |
| virtual AudioInfo | audioInfo () override |
| provides the actual input AudioInfo | |
| virtual AudioInfo | audioInfoOut () |
| int | available () override |
| int | availableForWrite () override |
| virtual bool | begin () |
| bool | begin (const char *name) override |
| starts a BLE server with the indicated name | |
| virtual void | clearNotifyAudioChange () |
| Deletes all change notify subscriptions. | |
| bool | connected () override |
| Returns true if we are connected with the other side. | |
| void | end () override |
| virtual void | flush () override |
| bool | isNotifyActive () |
| Checks if the automatic AudioInfo update is active. | |
| operator bool () override | |
| int | packetSize () |
| size_t | readBytes (uint8_t *data, size_t len) override |
| virtual size_t | readSilence (uint8_t *buffer, size_t length) |
| Source to generate silence: just sets the buffer to 0. | |
| virtual bool | removeNotifyAudioChange (AudioInfoSupport &bi) |
| Removes a target in order not to be notified about audio changes. | |
| void | setAudioInfo (AudioInfo newInfo) override |
| void | setAudioInfoActive (bool flag) |
| Activates the exchange of the audio info. | |
| void | setAudioInfoUUID (const char *uuid) |
| Defines the UUID of the audio info characteristic. | |
| void | setFramed (bool flag) |
| Keeps the write sizes: each write is one BLE packet. | |
| void | setMTU (int mtu) |
| Defines the requested MTU (must be called before begin) | |
| void | setNotifyActive (bool flag) |
| Deactivate/Reactivate automatic AudioInfo updates: (default is active) | |
| void | setRxBufferSize (int bytes, int packets=100) |
| void | setRxUUID (const char *uuid) |
| Defines the UUID of the characteristic which is written by the client. | |
| void | setServiceUUID (const char *uuid) |
| Defines the service UUID. | |
| void | setTxBufferSize (int bytes, int packets=100) |
| void | setTxUUID (const char *uuid) |
| Defines the UUID of the characteristic which is read by the client. | |
| void | setWriteBufferSize (int size) |
| AudioInfo | toInfo (const uint8_t *data, size_t len) |
| Converts the string from the info characteristic to the audio info. | |
| StrView | toStr (AudioInfo info) |
| size_t | write (const uint8_t *data, size_t len) override |
| virtual size_t | write (uint8_t ch) override |
| virtual void | writeSilence (size_t len) |
| Writes len bytes of silence (=0). | |
Protected Member Functions | |
| int | getMTU () override |
| Effective MTU. | |
| virtual int | not_supported (int out, const char *msg="") |
| void | notifyAudioChange (AudioInfo info) |
| void | onConnect (BLEServer *pServer) override |
| void | onDisconnect (BLEServer *pServer) override |
| void | onDisconnected () |
| Called by the implementation when the client has disconnected. | |
| void | onRead (BLECharacteristic *pCharacteristic) override |
| provide the next batch of data | |
| void | onWrite (BLECharacteristic *pCharacteristic) override |
| store the received data | |
| virtual void | poll () |
| Process the BLE events (if necessary) | |
| int | provideData (uint8_t *packet, int maxLen) |
| void | receiveAudioInfo (const uint8_t *data, size_t size) |
| Process the audio info which was received from the other side. | |
| void | receiveData (const uint8_t *data, size_t len) |
| Called by the implementation when the client has written data. | |
| void | refillReadBuffer () |
| Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read() | |
| void | setupBLEService () |
| void | setupBuffers () |
| void | writeAudioInfo (StrView str) override |
| Provides the audio info to the other side. | |
Static Protected Member Functions | |
| static int | getHeader (const uint8_t *packet, int packetLen) |
| Determines the payload length from the 2 byte header. | |
| static void | setHeader (uint8_t *packet, int len) |
| Copies the payload length into the 2 byte header. | |
Protected Attributes | |
| int | _timeout = 10 |
| char | audio_info_str [40] |
| const char * | BLE_CH1_UUID = "6e400002-b5a3-f393-e0a9-e50e24dcca9e" |
| const char * | BLE_CH2_UUID = "6e400003-b5a3-f393-e0a9-e50e24dcca9e" |
| const char * | BLE_INFO_UUID = "6e400004-b5a3-f393-e0a9-e50e24dcca9e" |
| const char * | BLE_SERIAL_SERVICE_UUID = "6e400001-b5a3-f393-e0a9-e50e24dcca9e" |
| BLECharacteristic * | ch01_char = nullptr |
| BLEDescriptor | ch01_desc {"2901"} |
| BLECharacteristic * | ch02_char = nullptr |
| BLEDescriptor | ch02_desc {"2901"} |
| AudioInfo | info |
| BLECharacteristic * | info_char = nullptr |
| BLEDescriptor | info_desc {"2901"} |
| bool | is_audio_info_active = false |
| bool | is_audio_info_defined = false |
| bool | is_framed = false |
| bool | is_notify_active = true |
| int | max_transfer_size = 0 |
| Vector< AudioInfoSupport * > | notify_vector |
| BLEServer * | p_server = nullptr |
| BLEService * | p_service = nullptr |
| Vector< uint8_t > | packet {0} |
| int | receive_timeout_ms = 0 |
| max time in ms to wait for free space in the receive buffer | |
| BLESerialPacketBuffer | rx_buffer |
| int | rx_buffer_size = 4096 |
| Mutex | rx_mutex |
| int | rx_packet_count = 100 |
| RingBuffer< uint8_t > | tmp_in {0} |
| RingBuffer< uint8_t > | tmp_out {0} |
| BLESerialPacketBuffer | tx_buffer |
| int | tx_buffer_size = 4096 |
| Mutex | tx_mutex |
| int | tx_packet_count = 100 |
| int | write_buffer_size = MAX_SINGLE_CHARS |
A BLE server that implements a serial protocol, so that it can be used to send and receive audio. In BLE terminology this is a Peripheral. This implementation uses the BLE library of the ESP32 Arduino core (Bluedroid or NimBLE).
|
inline |
|
inlinevirtualinherited |
Adds target to be notified about audio changes.
Reimplemented in CodecNOP, EncodedAudioOutput, EncodedAudioStream, AACDecoderFDK, DecoderBasic, CodecChain, MP3DecoderHelix, MP3DecoderMAD, OggContainerDecoder, RTSPClient< TcpClient, UdpSocket >, Pipeline, and Pipeline::ModifyingStreamAdapter.
|
inlineoverridevirtualinherited |
provides the actual input AudioInfo
Implements AudioInfoSupport.
Reimplemented in JupyterAudioT< T >, MozziStream, TimerCallbackAudioStream, EncodedAudioStream, PureDataStream, AdapterAudioOutputToAudioStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, and InputMerge< T >.
|
inlinevirtualinherited |
provides the actual output AudioInfo: this is usually the same as audioInfo() unless we use a transforming stream
Reimplemented in MP3EncoderShine, PureDataStream, PWMAudioOutput< PWMDriverT >, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, Pipeline, ResampleStream, ResampleStreamT< TInterpolator >, and SupportedRatesStream.
|
inlineoverridevirtualinherited |
Reimplemented from BaseStream.
|
inlineoverridevirtualinherited |
Reimplemented from BaseStream.
|
inlinevirtualinherited |
Reimplemented in AudioOutputWithCallback, AudioMP34DT05, I2SCodecStream, MozziStream, PureDataStream, SPDIFOutput, VS1053Stream, WM8960Stream, AdaptiveResamplingStream, AudioLoRa, ESPNowStream, USBAudioDeviceBase, USBAudioHostBase, VBANStream, FrequencyDetectorAutoCorrelation, GoertzelStream, AudioEffectStreamT< T >, AudioEffectStream, Equalizer3BandsT< T >, Equalizer3BandsPerChannelT< T >, I2SStream, AudioTimeSourceStream, AudioStreamWrapper, TimerCallbackAudioStream, ResampleStreamT< TInterpolator >, FileLoopT< FileType >, FileLoopT< File >, EncodedAudioStream, AudioBoardStream, AudioKitStream, MiniAudioStream, PortAudioStream, StdioStream, HLSStreamT< URLStream >, NRF24Stream, ReedSolomonFEC< bytecount, additional_bytes >, AutomaticGainControlStream, MeasuringStream, QualityAnalysisStream, VolumeStream, AnalogAudioStream, AdapterAudioOutputToAudioStream, TimedStream, MemoryStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, ProgressStream, Throttle, InputMerge< T >, CallbackStream, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, VolumeMeter, AudioInputMonitor, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, CatStream, QueueStream< T >, QueueStream< uint8_t >, DynamicMemoryStream, Pipeline, Pipeline::ModifyingStreamAdapter, ResampleStream, SupportedRatesStream, AudioFFTBase, and EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >.
|
inlineoverridevirtual |
starts a BLE server with the indicated name
Implements BLESerialServerBase.
|
inlinevirtualinherited |
Deletes all change notify subscriptions.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
inlineoverridevirtual |
Returns true if we are connected with the other side.
Implements BLESerialStream.
|
inlineoverridevirtual |
Implements BLESerialStream.
|
inlineoverridevirtualinherited |
Reimplemented from Print.
Reimplemented in PureDataStream, URLStreamBufferedT< T >, URLStreamBufferedT< ICYStream >, ReformatBaseStream, AudioStreamWrapper, ResampleStream, EncodedAudioStream, BLESerialClientBase, URLStream, BufferedTaskStream, AutomaticGainControlStream, MeasuringStream, QualityAnalysisStream, VolumeStream, AudioEffectStreamT< T >, AudioEffectStream, Equalizer3BandsT< T >, Equalizer3BandsPerChannelT< T >, I2SStream, TimedStream, MemoryStream, RingBufferStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, BufferedStream, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, QueueStream< T >, QueueStream< uint8_t >, FadeStream, Pipeline::ModifyingStreamAdapter, SupportedRatesStream, and EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >.
Determines the payload length from the 2 byte header.
|
inlineoverrideprotectedvirtual |
Effective MTU.
Reimplemented from BLESerialStream.
|
inlineprotectedinherited |
|
inlineoverrideprotected |
|
inlineoverrideprotected |
|
inlineprotectedinherited |
Called by the implementation when the client has disconnected.
|
inlineoverrideprotected |
provide the next batch of data
|
inlineoverrideprotected |
store the received data
|
inlineoverridevirtualinherited |
Reimplemented from AudioStream.
|
inlineinherited |
Max number of payload bytes in one BLE packet: the packets read by the client also contain the length header and a value can not be longer than 512 bytes
|
inlineprotectedvirtualinherited |
Process the BLE events (if necessary)
Reimplemented in BLESerialServerArduinoBLE.
Called by the implementation to fill the next packet which is read by the client: the result contains the length header
Reimplemented from AudioStream.
Source to generate silence: just sets the buffer to 0.
Process the audio info which was received from the other side.
Called by the implementation when the client has written data.
|
inlineprotectedinherited |
Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read()
|
inlinevirtualinherited |
Removes a target in order not to be notified about audio changes.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
inlineoverridevirtualinherited |
Defines the audio info and informs the other side if setAudioInfoActive(true) was called
Reimplemented from AudioStream.
|
inlineinherited |
Activates the exchange of the audio info.
|
inlineinherited |
Defines the UUID of the audio info characteristic.
|
inlineinherited |
Keeps the write sizes: each write is one BLE packet.
Copies the payload length into the 2 byte header.
|
inlineinherited |
Defines the requested MTU (must be called before begin)
|
inlineinherited |
Deactivate/Reactivate automatic AudioInfo updates: (default is active)
Defines the size of the receive buffer and (in framed mode) the max number of packets: must be called before begin
|
inlineinherited |
Defines the UUID of the characteristic which is written by the client.
|
inlineinherited |
Defines the service UUID.
Defines the size of the transmit buffer and (in framed mode) the max number of packets: must be called before begin
|
inlineinherited |
Defines the UUID of the characteristic which is read by the client.
|
inlineprotected |
|
inlineprotectedinherited |
|
inlineinherited |
Converts the string from the info characteristic to the audio info.
Converts the audio info to the string which is used in the info characteristic
Reimplemented from AudioStream.
Reimplemented in MemoryStream, AudioStreamWrapper, BufferedTaskStream, RingBufferStream, BufferedStream, and URLStream.
|
inlineoverrideprotectedvirtual |
Provides the audio info to the other side.
Implements BLESerialStream.
|
inlinevirtualinherited |
Writes len bytes of silence (=0).
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protected |
|
protected |
|
protected |
|
protectedinherited |
|
protected |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protected |
|
protectedinherited |
max time in ms to wait for free space in the receive buffer
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
|
protectedinherited |