arduino-audio-tools
Loading...
Searching...
No Matches
Public Member Functions | Protected Attributes | List of all members
SynchronizedStream Class Reference

Wrapper class that can turn any Stream into a thread save implementation. This is done by adding a Mutex to the Stream. The read and write operations are buffered and the access to the stream is protected by the Mutex. More...

#include <SynchronizedStream.h>

Inheritance diagram for SynchronizedStream:
Stream Print

Public Member Functions

 SynchronizedStream (Stream &stream, MutexBase &mutex)
 
int available () override
 
int availableForWrite () override
 
virtual void flush ()
 
 operator bool ()
 
int peek () override
 
int read () override
 
virtual size_t readBytes (uint8_t *data, size_t len)
 
void setBufferSize (int size)
 Defines the size of the internal buffers.
 
virtual size_t write (const uint8_t *data, size_t len)
 
size_t write (uint8_t data) override
 

Protected Attributes

int _timeout = 10
 
MutexBasep_mutex = nullptr
 
Streamp_stream = nullptr
 
SingleBuffer< uint8_tread_buffer
 
SingleBuffer< uint8_twrite_buffer
 

Detailed Description

Wrapper class that can turn any Stream into a thread save implementation. This is done by adding a Mutex to the Stream. The read and write operations are buffered and the access to the stream is protected by the Mutex.

Author
Phil Schatzmann

Constructor & Destructor Documentation

◆ SynchronizedStream()

SynchronizedStream ( Stream stream,
MutexBase mutex 
)
inline

Member Function Documentation

◆ available()

int available ( )
inlineoverridevirtual

Reimplemented from Stream.

◆ availableForWrite()

int availableForWrite ( )
inlineoverridevirtual

Reimplemented from Print.

◆ flush()

virtual void flush ( )
inlinevirtualinherited

◆ operator bool()

operator bool ( )
inlineinherited

◆ peek()

int peek ( )
inlineoverride

◆ read()

int read ( )
inlineoverride

◆ readBytes()

virtual size_t readBytes ( uint8_t data,
size_t  len 
)
inlinevirtualinherited

Reimplemented in LMSEchoCancellationStream< T >, MDFEchoCancellationStream< Allocator >, HDLCStream, MozziStream, PureDataStream, AudioLoRa, URLStreamBufferedT< T >, URLStreamBufferedT< ICYStream >, AudioStreamWrapper, LoRaStream, EncodedAudioStream, FaustStream< DSP >, AudioFFTBase, AudioKitStream, AudioMP34DT05, I2SCodecStream, MiniAudioStream, PortAudioStream, StdioStream, TfLiteAudioStream, A2DPStream, AdaptiveResamplingStream, ESPNowStream, HammingFEC< bytecount, block_t >, HLSStreamT< URLStream >, ICYStreamT< T >, URLStream, BufferedTaskStream, URLStreamESP32, ReadioHeadStream, ReedSolomonFEC< bytecount, additional_bytes >, UDPStream, VBANStream, AnalogAudioArduino, AnalogAudioStream, AudioEffectStreamT< T >, Equalizer3Bands, Equalizer3BandsPerChannel, I2SStream, ReformatBaseStream, TimedStream, MemoryStream, RingBufferStream, GeneratedSoundStream< T >, GeneratedSoundStream< int16_t >, BufferedStream, ConverterStream< T >, MeasuringStream, ProgressStream, Throttle, InputMixer< T >, InputMerge< T >, CallbackStream, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, VolumeMeter, AudioInputMonitor, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, AudioStream, CatStream, NullStream, QueueStream< T >, QueueStream< uint8_t >, DynamicMemoryStream, FadeStream, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, GoertzelStream, Pipeline, VolumeStream, FileLoopT< FileType >, FileLoopT< File >, VFSFile, AudioBLEClient, AudioBLEClient, AudioBLEServer, AudioBLEServer, EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >, BaseStream, WM8960Stream, AnalogDriverESP32V1::IO16Bit, AnalogDriverESP32V2::IO16Bit, and HttpRequest.

◆ setBufferSize()

void setBufferSize ( int  size)
inline

Defines the size of the internal buffers.

◆ write() [1/2]

virtual size_t write ( const uint8_t data,
size_t  len 
)
inlinevirtualinherited

Reimplemented in URLStream, LMSEchoCancellationStream< T >, MDFEchoCancellationStream< Allocator >, WakeWordDetector< T, N >, NamePrinter, AudioBLEServer, AudioWriterToAudioOutput, AudioESP32ULP, ESP3288AudioOutput, I2SCodecStream, MozziStream, PureDataStream, SPDIFOutput, AudioLoRa, I2SStream, AdapterPrintToAudioOutput, MetaDataOutput, AudioStreamWrapper, ConverterStream< T >, FileLoopT< FileType >, FileLoopT< File >, LoRaStream, EncodedAudioOutput, EncodedAudioStream, OggContainerOutput, OSCContainerEncoder::OSCOutput, FaustStream< DSP >, AudioFFTBase, AudioKitStream, FileOutput, FFTEffect, MiniAudioStream, PortAudioStream, R2ROutput, StdioStream, TfLiteAudioStream, VS1053Stream, A2DPStream, AdaptiveResamplingStream, AudioServerEx, AudioSyncWriter, ESPNowStream, HammingFEC< bytecount, block_t >, HDLCStream, HttpRequest, BufferedTaskStream, URLStreamESP32, ReadioHeadStream, ReedSolomonFEC< bytecount, additional_bytes >, RTSPOutput< Platform >, UDPStream, VBANStream, WebSocketOutput, AnalogAudioArduino, AnalogAudioStream, AudioEffectStreamT< T >, PitchShiftOutput< T, BufferT >, Equalizer3Bands, Equalizer3BandsPerChannel, AdapterAudioStreamToAudioOutput, AdapterAudioOutputToAudioStream, MultiOutput, TimedStream, ChannelsSelectOutput, MetaDataFilter, CsvOutput< T >, HexDumpOutput, OutputMixer< T >, MemoryOutput, ChannelSplitOutput, PWMAudioOutput, MemoryStream, RingBufferStream, BufferedStream, MeasuringStream, ProgressStream, Throttle, CallbackStream, FilteredStream< T, TF >, FilteredStream< int16_t, int16_t >, VolumeMeter, AudioInputMonitor, ChannelFormatConverterStreamT< T >, ChannelFormatConverterStream, NumberFormatConverterStreamT< TFrom, TTo >, NumberFormatConverterStream, FormatConverterStream, AudioStream, NullStream, QueueStream< T >, QueueStream< uint8_t >, DynamicMemoryStream, FadeStream, FrequencyDetectorAutoCorrelation, FrequencyDetectorZeroCrossing, GoertzelStream, Pipeline, Pipeline::ModifyingStreamAdapter, ResampleStream, ResampleStreamT< TInterpolator >, RTTTLOutput< T >, VolumeStream, AudioBLEClient, AudioBLEClient, AudioBLEServer, EqualizerNBands< SampleT, AccT, NUM_TAPS, NUM_BANDS >, AudioOutput, BaseStream, TfLiteAudioStreamBase, WM8960Stream, CatStream, AnalogDriverESP32V1::IO16Bit, AnalogDriverESP32V2::IO16Bit, and VFSFile.

◆ write() [2/2]

size_t write ( uint8_t  data)
inlineoverride

Member Data Documentation

◆ _timeout

int _timeout = 10
protectedinherited

◆ p_mutex

MutexBase* p_mutex = nullptr
protected

◆ p_stream

Stream* p_stream = nullptr
protected

◆ read_buffer

SingleBuffer<uint8_t> read_buffer
protected

◆ write_buffer

SingleBuffer<uint8_t> write_buffer
protected

The documentation for this class was generated from the following file: