4#include "AudioKitHAL.h"
9#error Upgrade the AudioKit library
36 audio_hal_func_t
driver = AUDIO_DRIVER;
77 i2s_pin_config_t i2s_pins = {};
82 pin_ws = i2s_pins.ws_io_num;
95 static const int ia[] = {16, 24, 32};
96 static const audio_hal_iface_bits_t oa[] = {AUDIO_HAL_BIT_LENGTH_16BITS,
97 AUDIO_HAL_BIT_LENGTH_24BITS,
98 AUDIO_HAL_BIT_LENGTH_32BITS};
99 for (
int j = 0; j < 3; j++) {
106 return AUDIO_HAL_BIT_LENGTH_16BITS;
112 static const int ia[] = {8000, 11025, 16000, 22050,
113 24000, 32000, 44100, 48000};
114 static const audio_hal_iface_samples_t oa[] = {
115 AUDIO_HAL_08K_SAMPLES, AUDIO_HAL_11K_SAMPLES, AUDIO_HAL_16K_SAMPLES,
116 AUDIO_HAL_22K_SAMPLES, AUDIO_HAL_24K_SAMPLES, AUDIO_HAL_32K_SAMPLES,
117 AUDIO_HAL_44K_SAMPLES, AUDIO_HAL_48K_SAMPLES};
120 for (
int j = 0; j < 8; j++) {
126 if (new_diff < diff) {
132 LOGE(
"Sample Rate not supported: %d - using %d",
sample_rate, ia[result]);
146 static const audio_hal_iface_format_t oa[] = {
147 AUDIO_HAL_I2S_NORMAL, AUDIO_HAL_I2S_LEFT, AUDIO_HAL_I2S_RIGHT,
148 AUDIO_HAL_I2S_NORMAL, AUDIO_HAL_I2S_RIGHT, AUDIO_HAL_I2S_LEFT,
150 for (
int j = 0; j < 8; j++) {
157 return AUDIO_HAL_I2S_NORMAL;
163 return (
is_master) ? AUDIO_HAL_MODE_SLAVE : AUDIO_HAL_MODE_MASTER;
170 LOGD(
"-> %s",
"AUDIO_HAL_CODEC_MODE_DECODE");
171 return AUDIO_HAL_CODEC_MODE_DECODE;
173 LOGD(
"-> %s",
"AUDIO_HAL_CODEC_MODE_ENCODE");
174 return AUDIO_HAL_CODEC_MODE_ENCODE;
176 LOGD(
"-> %s",
"AUDIO_HAL_CODEC_MODE_BOTH");
177 return AUDIO_HAL_CODEC_MODE_BOTH;
211 if (!
kit.begin(kit_cfg)){
212 LOGE(
"begin faild: please verify your AUDIOKIT_BOARD setting: %d", AUDIOKIT_BOARD);
248 size_t write(
const uint8_t *data,
size_t len)
override {
302 if (vol>100)
LOGW(
"Volume is > 100: %d",vol);
305 return kit.setVolume(vol);
310 if (vol>1.0)
LOGW(
"Volume is > 1.0: %f",vol);
333 return kit.headphoneStatus();
354 void addAction(
int pin,
void (*action)(
bool,
int,
void*),
void* ref=
nullptr ) {
445 AudioKit::actionHeadphoneDetection();
580#if defined(USE_EXT_BUTTON_LOGIC)
581 input_key_service_info_t input_key_info[] = INPUT_KEY_DEFAULT_INFO();
582 int size =
sizeof(input_key_info) /
sizeof(input_key_info[0]);
583 for (
int j=0; j<size; j++){
584 if (pin == input_key_info[j].act_id){
585 switch(input_key_info[j].type){
586 case PERIPH_ID_ADC_BTN:
589 case PERIPH_ID_BUTTON:
592 case PERIPH_ID_TOUCH:
598 LOGW(
"Undefined ActionLogic for pin: %d ",pin);
608 if (! (
cfg.
sd_active && (AUDIOKIT_BOARD==5 || AUDIOKIT_BOARD==6))){
609 LOGD(
"actionStartStop")
612 LOGW(
"Mode Button ignored because of conflict: %d ",
kit.pinInputMode());
617 LOGD(
"actionHeadphoneDetection pin:%d",
kit.pinHeadphoneDetect())
620 LOGW(
"Headphone detection ignored because of conflict: %d ",
kit.pinHeadphoneDetect());
624 if (! (
cfg.
sd_active && (AUDIOKIT_BOARD==1 || AUDIOKIT_BOARD==7))){
625 LOGD(
"actionVolumeDown")
627 LOGD(
"actionVolumeUp")
630 LOGW(
"Volume Buttons ignored because of conflict: %d ",
kit.pinVolumeDown());
#define LOGW(...)
Definition AudioLoggerIDF.h:29
#define TRACEI()
Definition AudioLoggerIDF.h:32
#define TRACED()
Definition AudioLoggerIDF.h:31
#define LOGI(...)
Definition AudioLoggerIDF.h:28
#define LOGD(...)
Definition AudioLoggerIDF.h:27
#define LOGE(...)
Definition AudioLoggerIDF.h:30
#define DEFAULT_BUFFER_SIZE
Definition avr.h:20
void stop()
stops any further processing by spinning in an endless loop
Definition AudioRuntime.h:71
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