arduino-audio-tools
Loading...
Searching...
No Matches
AnalogAudioStream.h
Go to the documentation of this file.
1#pragma once
2#include <algorithm>
3#include "AudioToolsConfig.h"
4
5// Support AnalogAudioStream
6#if defined(USE_ANALOG)
7# include "AnalogDriverBase.h"
8# include "AnalogDriverESP32.h"
9# include "AnalogDriverESP32V1.h"
10# include "AnalogDriverMBED.h"
11# include "AnalogDriverZephyr.h"
12# include "AnalogDriverArduino.h"
13
14namespace audio_tools {
15
25 public:
30
33 end();
34 }
35
38 TRACED();
39 AnalogConfig config(mode);
40 return config;
41 }
42
57
59 bool begin() override {
60 return begin(adc_config);
61 }
62
64 bool begin(AnalogConfig cfg) {
65 TRACEI();
66 return p_driver->begin(cfg);
67 }
68
70 void end() override {
71 TRACEI();
72 p_driver->end();
73 }
74
76 return adc_config;
77 }
78
80 size_t write(const uint8_t *data, size_t len) override {
81 TRACED();
82 const size_t max_write_size = 1024;
83 size_t open = len;
84 size_t written = 0;
85 while (open > 0) {
86 size_t to_write = std::min(open, max_write_size);
87 size_t result = p_driver->write(data + written, to_write);
88 written += result;
89 open -= result;
90 if (result < to_write) break;
91 }
92 return written;
93 }
94
95 size_t readBytes(uint8_t *data, size_t len) override {
96 return p_driver->readBytes(data, len);
97 }
98
99 int available() override {
100 return p_driver->available();
101 }
102
103 int availableForWrite() override {
104 return p_driver->availableForWrite();
105 }
106
109 return p_driver;
110 }
111
112protected:
116};
117
118}
119
120#endif
121
122// Support AnalogAudioArduino
123#if defined(USE_TIMER) && defined(ARDUINO)
124# include "AnalogAudioArduino.h"
125#endif
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define TRACED()
Definition AudioLoggerIDF.h:31
ESP32: A very fast ADC and DAC using the ESP32 I2S interface. For all other architectures we support ...
Definition AnalogAudioStream.h:24
AnalogConfig adc_config
Definition AnalogAudioStream.h:115
size_t readBytes(uint8_t *data, size_t len) override
Definition AnalogAudioStream.h:95
bool begin(AnalogConfig cfg)
starts the DAC
Definition AnalogAudioStream.h:64
void end() override
stops the I2S and unistalls the analog
Definition AnalogAudioStream.h:70
AnalogDriver analog_driver
Definition AnalogAudioStream.h:113
int available() override
Definition AnalogAudioStream.h:99
AnalogConfig & config()
Definition AnalogAudioStream.h:75
AnalogAudioStream(AnalogDriverBase &driver)
Constructor with alternative driver.
Definition AnalogAudioStream.h:29
size_t write(const uint8_t *data, size_t len) override
ESP32 only: writes the data to the I2S interface.
Definition AnalogAudioStream.h:80
int availableForWrite() override
Definition AnalogAudioStream.h:103
virtual void setAudioInfo(AudioInfo info)
updates the sample rate dynamically
Definition AnalogAudioStream.h:44
AnalogAudioStream()=default
Default constructor.
AnalogDriverBase * p_driver
Definition AnalogAudioStream.h:114
AnalogDriverBase * driver()
Provides access to the driver.
Definition AnalogAudioStream.h:108
virtual ~AnalogAudioStream()
Destructor.
Definition AnalogAudioStream.h:32
AnalogConfig defaultConfig(RxTxMode mode=TX_MODE)
Provides the default configuration.
Definition AnalogAudioStream.h:37
bool begin() override
Reopen with last config.
Definition AnalogAudioStream.h:59
ESP32 specific configuration for i2s input via adc. The default input pin is GPIO34....
Definition AnalogConfigESP32.h:22
void logInfo()
Definition AnalogConfigESP32.h:62
Please use the AnalogAudioStream: Reading Analog Data using a timer and the Arduino analogRead() meth...
Definition AnalogDriverArduino.h:23
Definition AnalogDriverBase.h:9
virtual size_t write(const uint8_t *src, size_t size_bytes)
Definition AnalogDriverBase.h:13
virtual bool begin(AnalogConfig cfg)=0
virtual int availableForWrite()
Definition AnalogDriverBase.h:16
virtual size_t readBytes(uint8_t *dest, size_t size_bytes)=0
Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...
Definition BaseStream.h:120
AudioInfo info
Definition BaseStream.h:171
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition AudioTypes.h:26
@ TX_MODE
Definition AudioTypes.h:26
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition LMSEchoCancellationStream.h:6
Basic Audio information which drives e.g. I2S.
Definition AudioTypes.h:51
sample_rate_t sample_rate
Sample Rate: e.g 44100.
Definition AudioTypes.h:53
uint16_t channels
Number of channels: 2=stereo, 1=mono.
Definition AudioTypes.h:55
uint8_t bits_per_sample
Number of bits per sample (int16_t = 16 bits)
Definition AudioTypes.h:57