139 for (
int i = 0; i < 50; i++) {
153 int value = enable ? 0x3C : 0;
165 reg = (reg & 0x04) >> 2;
172 AD_LOGD(
"es8388_set_mic_gain: %d", gain);
174 gain_n = (int)gain / 3;
175 gain_n = (gain_n << 4) + gain_n;
208 if (*volume == 99) *volume = 100;
227 AD_LOGI(
"output_device: %d", output_device);
234 switch (output_device) {
237 AD_LOGI(
"DAC_OUTPUT_LINE2: 0x%x", reg | value);
241 AD_LOGI(
"DAC_OUTPUT_LINE1: 0x%x", reg | value);
246 AD_LOGI(
"DAC_OUTPUT_ALL: 0x%x", reg | value);
250 AD_LOGI(
"DAC_OUTPUT_NONE: 0x%x", reg | value);
270 uint8_t mixer_sel = 0x00;
279 AD_LOGE(
"route: unsupported input %d", in);
452#ifdef CONFIG_ESP_LYRAT_V4_3_BOARD
453 headphone_detect_deinit();
461 AD_LOGD(
"es8388_ctrl_state_active: %d, %d", mode, ctrl_state_active);
479 AD_LOGW(
"Codec mode not support, default is decode mode");
482 if (!ctrl_state_active) {
486 AD_LOGD(
"start default is decode mode:%d", es_mode_t);
492 &data,
sizeof(data));
501 AD_LOGD(
"es8388_set_adc_dac_volume: %d.%d", volume, dot);
503 if (volume < -96 || volume > 0) {
504 AD_LOGW(
"Warning: volume < -96! or > 0!");
510 dot = (dot >= 5 ? 1 : 0);
511 volume = (-volume << 1) + dot;
524 AD_LOGD(
"es8388_set_voice_volume: %d", volume);
528 else if (volume > 100)
541 AD_LOGD(
"es8388_set_voice_volume (HACK 1): %d", volume);
545 else if (volume > 100)
561 AD_LOGD(
"es8388_set_voice_volume (HACK 2): %d", volume);
565 else if (volume > 100)
567 volume = (volume * 63) / 100;
584 uint8_t prev_data = 0, data = 0;
603 if (prev_data != data) {
612 AD_LOGD(
"es8388_start default is mode:%d", mode);
618 AD_LOGD(
"es8388_start default is mode:%d", mode);
696 int bits = (int)bit_per_sample;
#define ES8388_DEFAULT_INPUT_GAIN
Definition ConfigAudioDriver.h:27
#define AI_THINKER_ES8388_VOLUME_HACK
Definition ConfigAudioDriver.h:20
#define RESULT_OK
Definition DriverCommon.h:74
#define RESULT_FAIL
Definition DriverCommon.h:75
#define AD_LOGD(...)
Definition Logger.h:12
#define AD_LOGI(...)
Definition Logger.h:13
#define AD_LOGE(...)
Definition Logger.h:15
#define AD_LOGW(...)
Definition Logger.h:14
#define AD_TRACED()
Definition Logger.h:17
Header-only driver class for the ES8388 codec chip.
Definition ES8388.h:64
static constexpr uint8_t ES8388_ADCCONTROL11
Definition ES8388.h:86
static constexpr uint8_t ES8388_ADCCONTROL2
Definition ES8388.h:77
error_t configFmt(codec_mode_t mod, i2s_format_t cfg)
Configure ES8388 I2S format.
Definition ES8388.h:662
int getVolumeHack()
Provides the volume hack in use.
Definition ES8388.h:134
error_t writeReg(uint8_t reg_add, uint8_t data)
Definition ES8388.h:490
static constexpr uint8_t ES8388_DACCONTROL6
Definition ES8388.h:95
static constexpr uint8_t ES8388_ADCCONTROL9
Definition ES8388.h:84
static constexpr uint8_t ES8388_DACCONTROL22
Definition ES8388.h:111
static constexpr uint8_t ES8388_ADCCONTROL13
Definition ES8388.h:88
static constexpr uint8_t ES8388_CHIPPOWER
Definition ES8388.h:69
error_t ctrlStateActive(codec_mode_t mode, bool ctrl_state_active)
Control ES8388 codec chip.
Definition ES8388.h:460
error_t setBitsPerSample(codec_mode_t mode, sample_bits_t bit_per_sample)
Configure ES8388 data sample bits.
Definition ES8388.h:692
static constexpr uint8_t ES8388_DACCONTROL25
Definition ES8388.h:114
static constexpr uint8_t ES8388_DACCONTROL5
Definition ES8388.h:94
static constexpr uint8_t ES8388_ADCCONTROL8
Definition ES8388.h:83
void setAddress(int addr)
Defines the I2C device address.
Definition ES8388.h:126
static constexpr uint8_t ES8388_DACCONTROL3
Definition ES8388.h:92
static constexpr uint8_t ES8388_ADCCONTROL3
Definition ES8388.h:78
error_t deinit(void)
Deinitialize ES8388 codec chip.
Definition ES8388.h:448
static constexpr uint8_t ES8388_ADCCONTROL4
Definition ES8388.h:79
error_t setVoiceMute(bool enable)
Configure ES8388 DAC mute or not.
Definition ES8388.h:147
error_t start(codec_mode_t mode)
Start ES8388 codec chip.
Definition ES8388.h:581
static constexpr uint8_t ES8388_DACCONTROL30
Definition ES8388.h:119
static constexpr uint8_t ES8388_DACCONTROL20
Definition ES8388.h:109
static constexpr uint8_t ES8388_CHIPLOPOW2
Definition ES8388.h:73
static constexpr uint8_t ES8388_DACCONTROL28
Definition ES8388.h:117
static constexpr uint8_t ES8388_ADCCONTROL5
Definition ES8388.h:80
static constexpr uint8_t ES8388_DACCONTROL13
Definition ES8388.h:102
static constexpr uint8_t ES8388_DACCONTROL7
Definition ES8388.h:96
static constexpr uint8_t ES8388_ADCCONTROL12
Definition ES8388.h:87
static constexpr int ES8388_ADDR
Definition ES8388.h:66
static constexpr uint8_t ES8388_ADCCONTROL6
Definition ES8388.h:81
int volume_hack
Definition ES8388.h:715
int i2c_addr
Definition ES8388.h:713
static constexpr uint8_t ES8388_DACCONTROL18
Definition ES8388.h:107
error_t setVoiceVolume0(int volume)
Definition ES8388.h:523
error_t configI2S(codec_mode_t mode, I2SDefinition *iface)
Configure ES8388 codec mode and I2S interface.
Definition ES8388.h:328
static constexpr uint8_t ES8388_DACCONTROL24
Definition ES8388.h:113
void setVolumeHack(int volumeHack)
Defines the volume hack to use (see AI_THINKER_ES8388_VOLUME_HACK)
Definition ES8388.h:131
static constexpr uint8_t ES8388_ADCPOWER
Definition ES8388.h:70
error_t readReg(uint8_t reg_add, uint8_t *p_data)
Definition ES8388.h:495
static constexpr uint8_t ES8388_DACCONTROL17
Definition ES8388.h:106
static constexpr uint8_t ES8388_DACCONTROL16
Definition ES8388.h:105
static constexpr uint8_t ES8388_ADCCONTROL7
Definition ES8388.h:82
error_t setAdcDacVolume(int mode, int volume, int dot)
Definition ES8388.h:500
static constexpr uint8_t ES8388_DACCONTROL4
Definition ES8388.h:93
static constexpr uint8_t ES8388_ADCCONTROL14
Definition ES8388.h:89
void setWire(i2c_bus_handle_t handle)
Defines the I2C bus instance to be used.
Definition ES8388.h:123
static constexpr uint8_t ES8388_DACCONTROL14
Definition ES8388.h:103
static constexpr uint8_t ES8388_DACCONTROL15
Definition ES8388.h:104
static constexpr uint8_t ES8388_DACCONTROL10
Definition ES8388.h:99
error_t configOutputDevice(output_device_t output_device)
Set ES8388 dac output mode.
Definition ES8388.h:225
int dac_power
Definition ES8388.h:714
static constexpr uint8_t ES8388_DACCONTROL11
Definition ES8388.h:100
static constexpr uint8_t ES8388_DACCONTROL27
Definition ES8388.h:116
error_t setVoiceVolume2(int volume)
Definition ES8388.h:560
static constexpr uint8_t ES8388_CONTROL2
Definition ES8388.h:68
void readAll()
Print all ES8388 registers.
Definition ES8388.h:137
static constexpr uint8_t ES8388_CONTROL1
Definition ES8388.h:67
i2c_bus_handle_t i2c_handle
Definition ES8388.h:712
error_t configInputDevice(es8388_input_device_t input)
Set ES8388 adc input mode.
Definition ES8388.h:214
static constexpr uint8_t ES8388_DACCONTROL23
Definition ES8388.h:112
error_t routeIn2toOut1()
Routes LIN2/RIN2 directly to LOUT1/ROUT1 (analog passthrough)
Definition ES8388.h:325
error_t getVoiceMute(void)
Get ES8388 DAC mute status.
Definition ES8388.h:159
static constexpr uint8_t ES8388_CHIPLOPOW1
Definition ES8388.h:72
error_t init(codec_config_t *cfg, int volumeHack)
Initialize ES8388 codec chip.
Definition ES8388.h:345
error_t route(input_device_t in, output_device_t out)
Routes an analog input directly to an analog output, bypassing the ADC/DAC (e.g. for an analog monito...
Definition ES8388.h:265
error_t setVoiceVolume(int volume)
Set voice volume.
Definition ES8388.h:184
error_t stop(codec_mode_t mode)
Stop ES8388 codec chip.
Definition ES8388.h:625
static constexpr uint8_t ES8388_ADCCONTROL1
Definition ES8388.h:76
static constexpr uint8_t ES8388_DACCONTROL19
Definition ES8388.h:108
static constexpr uint8_t ES8388_DACCONTROL9
Definition ES8388.h:98
error_t setVoiceVolume1(int volume)
Definition ES8388.h:540
static constexpr uint8_t ES8388_DACCONTROL26
Definition ES8388.h:115
error_t setMicGain(es_mic_gain_t gain)
Set ES8388 mic gain.
Definition ES8388.h:171
static constexpr uint8_t ES8388_DACCONTROL2
Definition ES8388.h:91
static constexpr uint8_t ES8388_DACPOWER
Definition ES8388.h:71
static constexpr uint8_t ES8388_ANAVOLMANAG
Definition ES8388.h:74
static constexpr uint8_t ES8388_DACCONTROL12
Definition ES8388.h:101
static constexpr uint8_t ES8388_DACCONTROL8
Definition ES8388.h:97
error_t getVoiceVolume(int *volume)
Get voice volume (0~100)
Definition ES8388.h:198
static constexpr uint8_t ES8388_DACCONTROL21
Definition ES8388.h:110
static constexpr uint8_t ES8388_ADCCONTROL10
Definition ES8388.h:85
static constexpr uint8_t ES8388_DACCONTROL29
Definition ES8388.h:118
static constexpr uint8_t ES8388_DACCONTROL1
Definition ES8388.h:90
error_t i2sConfigClock(es_i2s_clock_t cfg)
Configure I2S clock in MASTER mode.
Definition ES8388.h:680
static constexpr uint8_t ES8388_MASTERMODE
Definition ES8388.h:75
Namespace for audio driver components.
Definition AudioBoard.h:5
es_output_device_t
Definition ES8388.h:38
@ ES8388_OUTPUT_MIN
Definition ES8388.h:39
@ ES8388_OUTPUT_SPK
Definition ES8388.h:42
@ ES8388_OUTPUT_LOUT1
Definition ES8388.h:40
@ ES8388_OUTPUT_ALL
Definition ES8388.h:45
@ ES8388_OUTPUT_MAX
Definition ES8388.h:46
@ ES8388_OUTPUT_LOUT2
Definition ES8388.h:43
@ ES8388_OUTPUT_ROUT2
Definition ES8388.h:44
@ ES8388_OUTPUT_ROUT1
Definition ES8388.h:41
input_device_t
Definition DriverCommon.h:170
@ ADC_INPUT_LINE1
Definition DriverCommon.h:172
@ ADC_INPUT_LINE2
Definition DriverCommon.h:173
sample_bits_t
Definition DriverCommon.h:235
@ BIT_LENGTH_24BITS
Definition DriverCommon.h:240
@ BIT_LENGTH_32BITS
Definition DriverCommon.h:241
@ BIT_LENGTH_16BITS
Definition DriverCommon.h:237
codec_mode_t
Definition DriverCommon.h:290
@ CODEC_MODE_ENCODE
Definition DriverCommon.h:293
@ CODEC_MODE_BOTH
Definition DriverCommon.h:295
@ CODEC_MODE_DECODE
Definition DriverCommon.h:294
@ CODEC_MODE_LINE_IN
Definition DriverCommon.h:296
int error_t
Definition DriverCommon.h:150
output_device_t
Definition DriverCommon.h:186
@ DAC_OUTPUT_LINE1
Definition DriverCommon.h:188
@ DAC_OUTPUT_ALL
Definition DriverCommon.h:190
@ DAC_OUTPUT_NONE
Definition DriverCommon.h:187
@ DAC_OUTPUT_LINE2
Definition DriverCommon.h:189
es_mic_gain_t
Definition DriverCommon.h:305
i2s_format_t
Definition DriverCommon.h:250
es8388_input_device_t
Definition ES8388.h:49
@ ESP8388_INPUT_LINPUT2_RINPUT2
Definition ES8388.h:54
@ ESP8388_INPUT_DIFFERENCE
Definition ES8388.h:55
@ ESP8388_INPUT_MIC1
Definition ES8388.h:52
@ ESP8388_INPUT_LINPUT1_RINPUT1
Definition ES8388.h:51
@ ESP8388_INPUT_MIC2
Definition ES8388.h:53
@ ESP8388_INPUT_MIN
Definition ES8388.h:50
@ ESP8388_INPUT_MAX
Definition ES8388.h:56
void * i2c_bus_handle_t
Definition DriverCommon.h:155
I2S interface parameters for the audio codec.
Definition DriverCommon.h:384
i2s_format_t fmt
Definition DriverCommon.h:386
i2s_master_slave_t mode
Definition DriverCommon.h:385
sample_bits_t bits
Definition DriverCommon.h:388
Top-level codec configuration passed to the audio driver at init.
Definition DriverCommon.h:397
output_device_t output_device
Definition DriverCommon.h:399
I2SDefinition i2s
Definition DriverCommon.h:400
input_device_t input_device
Definition DriverCommon.h:398
i2s clock configuration structure for es8388 and es8374
Definition CodecConstants.h:78
es_lclk_div_t lclk_div
Definition CodecConstants.h:80
es_sclk_div_t sclk_div
Definition CodecConstants.h:79