arduino-audio-tools
I2SSAMD.h
1 #pragma once
2 
3 #if defined(ARDUINO_ARCH_SAMD)
4 #include <I2S.h>
5 #include "AudioTools/CoreAudio/AudioI2S/I2SConfig.h"
6 
7 #define IS_I2S_IMPLEMENTED
8 
9 namespace audio_tools {
10 
18  friend class I2SStream;
19 
20  public:
23  I2SConfigStd c(mode);
24  return c;
25  }
26 
28  bool setAudioInfo(AudioInfo) { return false; }
29 
31  bool begin(RxTxMode mode) { return begin(defaultConfig(mode)); }
32 
34  bool begin(I2SConfigStd cfg) {
35  this->cfg = cfg;
36  return I2S.begin(cfg.i2s_format, cfg.sample_rate, cfg.bits_per_sample);
37  }
38 
39  bool begin() { return begin(cfg); }
40 
42  void end() { I2S.end(); }
43 
45  I2SConfigStd config() { return cfg; }
46 
47  size_t writeBytes(const void *src, size_t size_bytes) {
48  return I2S.write((const uint8_t *)src, size_bytes);
49  }
50 
51  size_t readBytes(void *src, size_t size_bytes) {
52  return I2S.read(src, size_bytes);
53  }
54 
55  int available() { return I2S.available(); }
56 
57  int availableForWrite() { return I2S.availableForWrite(); }
58 
59  protected:
60  I2SConfigStd cfg;
61 };
62 
63 using I2SDriver = I2SDriverSAMD;
64 
65 } // namespace audio_tools
66 
67 #endif
Configuration for i2s.
Definition: I2SConfigStd.h:17
Basic I2S API - for the SAMD.
Definition: I2SSAMD.h:17
bool setAudioInfo(AudioInfo)
Potentially updates the sample rate (if supported)
Definition: I2SSAMD.h:28
I2SConfigStd config()
provides the actual configuration
Definition: I2SSAMD.h:45
I2SConfigStd defaultConfig(RxTxMode mode)
Provides the default configuration.
Definition: I2SSAMD.h:22
bool begin(I2SConfigStd cfg)
starts the DAC
Definition: I2SSAMD.h:34
void end()
stops the I2C and unistalls the driver
Definition: I2SSAMD.h:42
bool begin(RxTxMode mode)
starts the DAC with the default config
Definition: I2SSAMD.h:31
We support the Stream interface for the I2S access. In addition we allow a separate mute pin which mi...
Definition: I2SStream.h:33
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition: AudioTypes.h:28
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition: AudioConfig.h:868
Basic Audio information which drives e.g. I2S.
Definition: AudioTypes.h:52
sample_rate_t sample_rate
Sample Rate: e.g 44100.
Definition: AudioTypes.h:55
uint8_t bits_per_sample
Number of bits per sample (int16_t = 16 bits)
Definition: AudioTypes.h:59