|
arduino-audio-tools
|
Generic BLE serial client logic which is independent of the BLE API. In BLE terminology the client is a Central: it scans for a server that provides the service UUID and connects to it. More...
#include <BLESerialStream.h>


Public Member Functions | |
| BLESerialClientBase (int mtu) | |
| 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 *localName, int seconds) |
| virtual void | clearNotifyAudioChange () |
| Deletes all change notify subscriptions. | |
| bool | connected () override |
| Returns true if we are connected with the other side. | |
| virtual void | end ()=0 |
| void | flush () override |
| Sends the buffered data which does not fill a complete packet. | |
| 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 | setConfirmWrite (bool flag) |
| Writes with response: slower but with flow control. | |
| 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) |
| void | setWriteThrottle (int ms) |
| Waits the indicated ms after each write. | |
| 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 | |
| virtual bool | connect ()=0 |
| Connects to the server if it was found: returns true if successful. | |
| virtual int | getMTU () |
| Effective MTU. | |
| virtual bool | isConnected ()=0 |
| Returns true if we are connected. | |
| virtual int | not_supported (int out, const char *msg="") |
| void | notifyAudioChange (AudioInfo info) |
| void | onConnected () |
| Common setup after the connection was established. | |
| virtual bool | readAudioInfo ()=0 |
| Requests the audio info from the server: returns true if successful. | |
| virtual int | readPacket (uint8_t *data, int maxLen)=0 |
| Reads the next packet (incl. header) from the server: returns the size. | |
| void | receiveAudioInfo (const uint8_t *data, size_t size) |
| Process the audio info which was received from the other side. | |
| void | receivePacket () |
| Reads the next packet from the server into the receive buffer. | |
| void | refillReadBuffer () |
| Refill small read buffer (e.g. 8 bytes) to avoid single byte reads when calling read() | |
| bool | sendPacket (const uint8_t *data, size_t len) |
| virtual bool | startClient (const char *localName)=0 |
| Starts BLE and the scanning for the server. | |
| virtual void | writeAudioInfo (StrView info)=0 |
| Provides the audio info to the other side. | |
| virtual bool | writePacket (const uint8_t *data, int len)=0 |
| Writes a packet to the server. | |
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" |
| AudioInfo | info |
| bool | is_audio_info_active = false |
| bool | is_audio_info_defined = false |
| bool | is_framed = false |
| bool | is_notify_active = true |
| bool | is_started = false |
| int | max_transfer_size = 0 |
| Vector< AudioInfoSupport * > | notify_vector |
| Vector< uint8_t > | read_packet {0} |
| BLESerialPacketBuffer | rx_buffer |
| int | rx_buffer_size = 4096 |
| int | rx_packet_count = 100 |
| RingBuffer< uint8_t > | tmp_in {0} |
| RingBuffer< uint8_t > | tmp_out {0} |
| int | tx_buffer_size = 4096 |
| int | tx_packet_count = 100 |
| SingleBuffer< uint8_t > | write_buffer {0} |
| int | write_buffer_size = MAX_SINGLE_CHARS |
| bool | write_confirmation_flag = false |
| int | write_throttle = 0 |
Generic BLE serial client logic which is independent of the BLE API. In BLE terminology the client is a Central: it scans for a server that provides the service UUID and connects to it.
|
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.
|
inlineoverridevirtual |
Reimplemented from BaseStream.
|
inlineoverridevirtual |
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 >.
Starts the BLE client and waits at most the indicated seconds for the connection to the server. With 0 seconds we connect in the background.
|
inlinevirtualinherited |
Deletes all change notify subscriptions.
Reimplemented in RTSPClient< TcpClient, UdpSocket >.
|
protectedpure virtual |
Connects to the server if it was found: returns true if successful.
Implemented in BLESerialClientArduinoBLE, and BLESerialClientESP32.
|
inlineoverridevirtual |
Returns true if we are connected with the other side.
Implements BLESerialStream.
|
pure virtualinherited |
Reimplemented from BaseStream.
Implemented in BLESerialClientArduinoBLE, BLESerialClientESP32, BLESerialServerArduinoBLE, and BLESerialServerESP32.
|
inlineoverridevirtual |
Sends the buffered data which does not fill a complete packet.
Reimplemented from BaseStream.
Determines the payload length from the 2 byte header.
|
inlineprotectedvirtualinherited |
Effective MTU.
Reimplemented in BLESerialClientESP32, and BLESerialServerESP32.
|
protectedpure virtual |
Returns true if we are connected.
Implemented in BLESerialClientArduinoBLE, and BLESerialClientESP32.
|
inlineprotectedinherited |
|
inlineprotected |
Common setup after the connection was established.
|
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
|
protectedpure virtual |
Requests the audio info from the server: returns true if successful.
Implemented in BLESerialClientArduinoBLE, and BLESerialClientESP32.
Reimplemented from AudioStream.
Reads the next packet (incl. header) from the server: returns the size.
Implemented in BLESerialClientArduinoBLE, and BLESerialClientESP32.
Source to generate silence: just sets the buffer to 0.
Process the audio info which was received from the other side.
|
inlineprotected |
Reads the next packet from the server into the receive buffer.
|
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.
|
inline |
Writes with response: slower but with flow control.
|
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.
|
inlineinherited |
|
inline |
Waits the indicated ms after each write.
|
protectedpure virtual |
Starts BLE and the scanning for the server.
Implemented in BLESerialClientArduinoBLE, and BLESerialClientESP32.
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.
|
protectedpure virtualinherited |
Provides the audio info to the other side.
Implemented in BLESerialClientArduinoBLE, BLESerialClientESP32, BLESerialServerArduinoBLE, and BLESerialServerESP32.
Writes a packet to the server.
Implemented in BLESerialClientArduinoBLE, and BLESerialClientESP32.
|
inlinevirtualinherited |
Writes len bytes of silence (=0).
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
protectedinherited |
|
protected |
|
protected |