arduino-audio-tools
Loading...
Searching...
No Matches
I2SConfigSTD.h
Go to the documentation of this file.
1#pragma once
2#include "AudioToolsConfig.h"
4
5#ifndef PIN_I2S_MCK
6# define PIN_I2S_MCK -1
7#endif
8
9#ifndef PIN_I2S_BCK
10# define PIN_I2S_BCK -1
11#endif
12
13#ifndef PIN_I2S_WS
14# define PIN_I2S_WS -1
15#endif
16
17#ifndef PIN_I2S_DATA_IN
18# define PIN_I2S_DATA_IN -1
19#endif
20
21#ifndef PIN_I2S_DATA_OUT
22# define PIN_I2S_DATA_OUT -1
23#endif
24
25namespace audio_tools {
26
33class I2SConfigStd : public AudioInfo {
34 public:
35
36 I2SConfigStd() = default;
38 I2SConfigStd(const I2SConfigStd &cfg) = default;
39
45 rx_tx_mode = mode;
46
47#ifndef STM32
48 switch(mode){
49 case RX_MODE:
51 break;
52 case TX_MODE:
54 break;
55 default:
58 break;
59 }
60#endif
61 }
62
65 bool is_master = true;
69
72 int pin_data = -1; // rx or tx pin dependent on mode: tx pin for RXTX_MODE
73 int pin_data_rx = -1; // rx pin for RXTX_MODE
75#ifdef STM32
77#endif
78
79#if defined(RP2040_HOWER)
81 int mck_multiplier = 64;
82 I2SSignalType signal_type = Digital; // e.g. the RP2040 supports digial or PDM
83#endif
84
85#if defined(USE_ALT_PIN_SUPPORT)
86 bool is_arduino_pin_numbers = true;
87#endif
88
89 void logInfo(const char* source="") {
90 AudioInfo::logInfo(source);
91 LOGI("rx/tx mode: %s", RxTxModeNames[rx_tx_mode]);
92 //LOGI("port_no: %d", port_no);
93 LOGI("is_master: %s", is_master ? "Master":"Slave");
94 LOGI("sample rate: %d", (int)sample_rate);
95 LOGI("bits per sample: %d", (int)bits_per_sample);
96 LOGI("number of channels: %d", (int)channels);
97 LOGI("i2s_format: %s", i2s_formats[i2s_format]);
98 LOGI("buffer_count:%d",buffer_count);
99 LOGI("buffer_size:%d",buffer_size);
100
101#ifndef STM32
102 if (pin_mck!=-1)
103 LOGI("pin_mck: %d", pin_mck);
104 if (pin_bck!=-1)
105 LOGI("pin_bck: %d", pin_bck);
106 if (pin_ws!=-1)
107 LOGI("pin_ws: %d", pin_ws);
108 if (pin_data!=-1)
109 LOGI("pin_data: %d", pin_data);
110 if (pin_data_rx!=-1 && rx_tx_mode==RXTX_MODE){
111 LOGI("pin_data_rx: %d", pin_data_rx);
112 }
113#endif
114 }
115
116};
117
118using I2SConfig = I2SConfigStd;
119
120}
121
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define DEFAULT_BITS_PER_SAMPLE
Definition AudioToolsConfig.h:104
#define I2S_BUFFER_SIZE
Definition AudioToolsConfig.h:112
#define DEFAULT_CHANNELS
Definition AudioToolsConfig.h:100
#define I2S_BUFFER_COUNT
Definition AudioToolsConfig.h:116
#define DEFAULT_SAMPLE_RATE
Definition AudioToolsConfig.h:96
#define PIN_I2S_MCK
Definition I2SConfigESP32.h:6
#define PIN_I2S_DATA_IN
Definition I2SConfigSTD.h:18
#define PIN_I2S_WS
Definition I2SConfigSTD.h:14
#define PIN_I2S_BCK
Definition I2SConfigSTD.h:10
#define PIN_I2S_DATA_OUT
Definition I2SConfigSTD.h:22
Configuration for i2s.
Definition I2SConfigSTD.h:33
int buffer_count
Definition I2SConfigSTD.h:67
int pin_mck
Definition I2SConfigSTD.h:74
RxTxMode rx_tx_mode
public settings
Definition I2SConfigSTD.h:64
int pin_ws
Definition I2SConfigSTD.h:70
I2SConfigStd(const I2SConfigStd &cfg)=default
Default Copy Constructor.
int pin_data
Definition I2SConfigSTD.h:72
int pin_data_rx
Definition I2SConfigSTD.h:73
int pin_alt_function
Definition I2SConfigSTD.h:76
bool is_master
Definition I2SConfigSTD.h:65
int pin_bck
Definition I2SConfigSTD.h:71
I2SFormat i2s_format
Definition I2SConfigSTD.h:66
I2SConfigStd(RxTxMode mode)
Constructor.
Definition I2SConfigSTD.h:41
void logInfo(const char *source="")
Definition I2SConfigSTD.h:89
int buffer_size
Definition I2SConfigSTD.h:68
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition AudioTypes.h:26
@ RXTX_MODE
Definition AudioTypes.h:26
@ TX_MODE
Definition AudioTypes.h:26
@ RX_MODE
Definition AudioTypes.h:26
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
I2SSignalType
I2S Signal Types: Digital, Analog, PDM.
Definition AudioTypes.h:437
@ Digital
Definition AudioTypes.h:438
I2SConfigESP32 I2SConfig
Definition I2SConfigESP32.h:114
static const char * RxTxModeNames[4]
Text string (description) for RxTxMode.
Definition AudioTypes.h:38
I2SFormat
I2S Formats.
Definition AudioTypes.h:416
@ I2S_STD_FORMAT
Definition AudioTypes.h:417
static const char * i2s_formats[]
Definition AudioTypes.h:426
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:508
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
virtual void logInfo(const char *source="")
Definition AudioTypes.h:121