arduino-audio-driver
Loading...
Searching...
No Matches
AudioBoard.h
Go to the documentation of this file.
1#pragma once
2#include "AudioDriver.h"
3#include "DriverDeviceInfo.h"
4
5namespace audio_driver {
6
14 public:
19
24
25 bool begin() {
26 AD_LOGD("AudioBoard::begin");
27 if (p_pins == nullptr) {
28 AD_LOGE("pins are null");
29 return false;
30 }
31 if (!p_driver->begin(codec_cfg, *p_pins)) {
32 AD_LOGE("AudioBoard::driver::begin failed");
33 return false;
34 }
36 is_active = true;
37 return true;
38 }
39
41 bool begin(CodecConfig cfg) {
42 this->codec_cfg = cfg;
43 return begin();
44 }
45
48 this->codec_cfg = cfg;
49 return p_driver->setConfig(cfg);
50 }
51
52 bool end(void) {
53 p_pins->end();
54 is_active = false;
55 return p_driver->end();
56 }
57 bool setMute(bool enable) { return p_driver->setMute(enable); }
58 bool setMute(bool enable, int line) {
59 if (line == power_amp_line) setPAPower(!enable);
60 return p_driver->setMute(enable, line);
61 }
62 bool setVolume(int volume) {
63 AD_LOGD("setVolume: %d", volume);
64 // when we get the volume we make sure that we report the same value
65 // w/o rounding issues
66 this->volume = volume;
67 return (is_active) ? p_driver->setVolume(volume) : false;
68 }
69 int getVolume() {
70#if DRIVER_REPORT_DRIVER_VOLUME
71 return p_driver->getVolume();
72#else
73 return volume >= 0 ? volume : p_driver->getVolume();
74#endif
75 }
76
80
82
84 AudioDriver& driver() { return *p_driver; }
85
86 bool setPAPower(bool enable) {
87 return is_active ? p_driver->setPAPower(enable) : false;
88 }
89
92
93 // platform specific logic to determine if key is pressed
94 bool isKeyPressed(uint8_t key) { return p_pins->isKeyPressed(key); }
95
96 operator bool() {
97 return is_active && p_driver != nullptr && p_pins != nullptr;
98 }
99
100 protected:
105 int volume = -1;
106 bool is_active = false;
107};
108
119
120
121} // namespace audio_driver
122
123// we automatically include all baords using gpios as ints
124#if !defined(__zephyr__)
126#endif
#define DRIVER_DEFAULT_VOLUME
Definition ConfigAudioDriver.h:5
#define ES8388_PA_LINE
Definition ConfigAudioDriver.h:33
#define AD_LOGD(...)
Definition Logger.h:12
#define AD_LOGE(...)
Definition Logger.h:15
Defitintion for audio board pins and an audio driver.
Definition AudioBoard.h:13
void setPins(DriverDeviceInfo &pins)
Definition AudioBoard.h:77
bool end(void)
Definition AudioBoard.h:52
bool setPAPower(bool enable)
Definition AudioBoard.h:86
int power_amp_line
Definition AudioBoard.h:104
bool is_active
Definition AudioBoard.h:106
CodecConfig codec_cfg
Definition AudioBoard.h:103
AudioBoard(AudioDriver &driver, DriverDeviceInfo &pins)
Definition AudioBoard.h:20
bool begin()
Definition AudioBoard.h:25
bool setMute(bool enable)
Definition AudioBoard.h:57
DriverDeviceInfo & getPins()
Definition AudioBoard.h:78
AudioDriver * p_driver
Definition AudioBoard.h:101
bool isKeyPressed(uint8_t key)
Definition AudioBoard.h:94
DriverDeviceInfo & pins()
Definition AudioBoard.h:79
int getVolume()
Definition AudioBoard.h:69
AudioDriver & driver()
Definition AudioBoard.h:84
bool setConfig(CodecConfig cfg)
Updates the CodecConfig values -> reconfigures the codec only.
Definition AudioBoard.h:47
bool setInputVolume(int volume)
set volume for adc: this is only supported on some defined codecs
Definition AudioBoard.h:91
bool setVolume(int volume)
Definition AudioBoard.h:62
AudioBoard(AudioDriver *driver, DriverDeviceInfo *pins)
Definition AudioBoard.h:15
bool setMute(bool enable, int line)
Definition AudioBoard.h:58
void setDriver(AudioDriver &driver)
Definition AudioBoard.h:81
bool begin(CodecConfig cfg)
Starts the processing.
Definition AudioBoard.h:41
AudioDriver * getDriver()
Definition AudioBoard.h:83
int volume
Definition AudioBoard.h:105
DriverDeviceInfo * p_pins
Definition AudioBoard.h:102
Abstract Driver API for codec chips.
Definition AudioDriver.h:182
virtual bool setMute(bool enable)=0
Mutes all output lines.
virtual bool end(void)
Ends the processing: shut down dac and adc.
Definition AudioDriver.h:232
virtual bool setInputVolume(int volume)
Defines the input volume (range: 0-100) if supported.
Definition AudioDriver.h:246
bool setPAPower(bool enable)
Sets the PA Power pin to active or inactive.
Definition AudioDriver.h:257
virtual bool setVolume(int volume)=0
Defines the Volume (in %) if volume is 0, mute is enabled,range is 0-100.
virtual bool setConfig(CodecConfig codecCfg)
changes the configuration
Definition AudioDriver.h:212
virtual int getVolume()=0
Determines the actual volume (range: 0-100)
virtual bool begin(CodecConfig codecCfg, DriverDeviceInfo &pins)
Starts the processing.
Definition AudioDriver.h:185
I2S configuration and definition of input and output with default values.
Definition AudioDriver.h:24
All pins for i2s, spi, i2c and other pins.
Definition DriverDeviceInfo.h:20
void end()
Definition DriverDeviceInfo.h:217
virtual bool isKeyPressed(uint8_t key)
returns true if pressed
Definition DriverDeviceInfo.h:256
static AudioDriverES8311Class AudioDriverES8311
Definition AudioDriver.h:2162
static NoDriverClass NoDriver
Definition AudioDriver.h:2184
static AudioBoard GenericCS43l22
Definition AudioBoard.h:114
static AudioBoard GenericWM8960
Definition AudioBoard.h:112
static AudioBoard GenericES8311
Definition AudioBoard.h:116
static DriverDeviceInfo NoPins
Pins need to be set up in the sketch.
Definition DriverDeviceInfo.h:390
static AudioDriverCS43l22Class AudioDriverCS43l22
Definition AudioDriver.h:2150
static AudioDriverWM8960Class AudioDriverWM8960
Definition AudioDriver.h:2176
static AudioDriverES8388Class AudioDriverES8388
Definition AudioDriver.h:2166
static AudioBoard GenericES8388
Definition AudioBoard.h:118
static AudioBoard NoBoard
Definition AudioBoard.h:110
Namespace for audio driver components.
Definition AudioBoard.h:5