@@ -337,7 +337,7 @@ class AudioDriverAC101Class : public AudioDriver {
337
337
public:
338
338
bool setMute (bool mute) { return ac101_set_voice_mute (mute); }
339
339
bool setVolume (int volume) {
340
- return ac101_set_voice_volume (limitValue (volume));
340
+ return ac101_set_voice_volume (limitValue (volume, 0 , 100 ));
341
341
};
342
342
int getVolume () {
343
343
int vol;
@@ -606,7 +606,7 @@ class AudioDriverES7210Class : public AudioDriver {
606
606
bool setMute (bool mute) { return es7210_set_mute (mute) == RESULT_OK; }
607
607
bool setVolume (int volume) {
608
608
this ->volume = volume;
609
- return es7210_adc_set_volume (limitValue (volume)) == RESULT_OK;
609
+ return es7210_adc_set_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
610
610
}
611
611
int getVolume () { return volume; }
612
612
@@ -637,7 +637,7 @@ class AudioDriverES7243Class : public AudioDriver {
637
637
return es7243_adc_set_voice_mute (mute) == RESULT_OK;
638
638
}
639
639
bool setVolume (int volume) {
640
- return es7243_adc_set_voice_volume (limitValue (volume)) == RESULT_OK;
640
+ return es7243_adc_set_voice_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
641
641
}
642
642
int getVolume () {
643
643
int vol;
@@ -672,7 +672,7 @@ class AudioDriverES7243eClass : public AudioDriver {
672
672
}
673
673
bool setVolume (int volume) {
674
674
this ->volume = volume;
675
- return es7243e_adc_set_voice_volume (limitValue (volume)) == RESULT_OK;
675
+ return es7243e_adc_set_voice_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
676
676
}
677
677
int getVolume () {
678
678
int vol;
@@ -708,7 +708,7 @@ class AudioDriverES8156Class : public AudioDriver {
708
708
}
709
709
bool setVolume (int volume) {
710
710
AD_LOGD (" volume %d" , volume);
711
- return es8156_codec_set_voice_volume (limitValue (volume)) == RESULT_OK;
711
+ return es8156_codec_set_voice_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
712
712
}
713
713
int getVolume () {
714
714
int vol;
@@ -740,7 +740,7 @@ class AudioDriverES8311Class : public AudioDriver {
740
740
AudioDriverES8311Class (int i2cAddr = 0 ) { i2c_address = i2cAddr; }
741
741
bool setMute (bool mute) { return es8311_set_voice_mute (mute) == RESULT_OK; }
742
742
bool setVolume (int volume) {
743
- return es8311_codec_set_voice_volume (limitValue (volume)) == RESULT_OK;
743
+ return es8311_codec_set_voice_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
744
744
}
745
745
int getVolume () {
746
746
int vol;
@@ -785,7 +785,7 @@ class AudioDriverES8374Class : public AudioDriver {
785
785
bool setMute (bool mute) { return es8374_set_voice_mute (mute) == RESULT_OK; }
786
786
bool setVolume (int volume) {
787
787
AD_LOGD (" volume %d" , volume);
788
- return es8374_codec_set_voice_volume (limitValue (volume)) == RESULT_OK;
788
+ return es8374_codec_set_voice_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
789
789
}
790
790
int getVolume () {
791
791
int vol;
@@ -847,7 +847,7 @@ class AudioDriverES8388Class : public AudioDriver {
847
847
}
848
848
bool setVolume (int volume) {
849
849
AD_LOGD (" volume %d" , volume);
850
- return es8388_set_voice_volume (limitValue (volume)) == RESULT_OK;
850
+ return es8388_set_voice_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
851
851
}
852
852
int getVolume () {
853
853
int vol;
@@ -856,14 +856,36 @@ class AudioDriverES8388Class : public AudioDriver {
856
856
}
857
857
858
858
bool setInputVolume (int volume) {
859
- // map values from 0 - 100 to 0 to 9 MIC_GAIN_MIN = -1,
859
+ // map values from 0 - 100 to 0 to 8
860
+
861
+ // es_mic_gain_t: MIC_GAIN_MIN = -1, 0,3,6,9,12,15,18,21,24 MIC_GAIN_MAX = 25
862
+
863
+ // Vol: 0, 12.5, 25, 37.5, 50, 62.5, 75, 87.5, 100
864
+ // idx: 0, 1, 2, 3, 4, 5, 6, 7, 8
865
+ // dB/gain: 0, 3, 6, 9, 12, 15, 18, 21, 24
866
+ // factor: 1, 2, 4, 8, 16, 32, 63, 126, 252
867
+
868
+ // es8388 Register 9 – ADC Control 1
869
+ // dB MicL MicR
870
+ // 0 0000 0000
871
+ // 3 0001 0001
872
+ // 6 0010 0010
873
+ // 9 0011 0011
874
+ // 12 0100 0100
875
+ // 15 0101 0101
876
+ // 18 0110 0110
877
+ // 21 0111 0111
878
+ // 24 1000 1000
879
+
860
880
es_mic_gain_t gains[] = {MIC_GAIN_0DB, MIC_GAIN_3DB, MIC_GAIN_6DB,
861
881
MIC_GAIN_9DB, MIC_GAIN_12DB, MIC_GAIN_15DB,
862
- MIC_GAIN_18DB, MIC_GAIN_21DB, MIC_GAIN_24DB,
863
- MIC_GAIN_MAX};
864
- int idx = limitValue (volume / 10 , 9 );
882
+ MIC_GAIN_18DB, MIC_GAIN_21DB, MIC_GAIN_24DB};
883
+
884
+ int vol = limitValue (volume, 0 , 100 );
885
+ int idx = map (vol, 0 , 100 , 0 , 8 );
886
+
865
887
es_mic_gain_t gain = gains[idx];
866
- AD_LOGD (" input volume: %d -> gain %d" , volume, gain);
888
+ AD_LOGD (" input volume: %d -> gain %d [dB] (idx: %d of 0..8) " , volume, gain, idx );
867
889
return setMicrophoneGain (gain);
868
890
}
869
891
@@ -899,7 +921,7 @@ class AudioDriverTAS5805MClass : public AudioDriver {
899
921
bool setMute (bool mute) { return tas5805m_set_mute (mute) == RESULT_OK; }
900
922
bool setVolume (int volume) {
901
923
AD_LOGD (" volume %d" , volume);
902
- return tas5805m_set_volume (limitValue (volume)) == RESULT_OK;
924
+ return tas5805m_set_volume (limitValue (volume, 0 , 100 )) == RESULT_OK;
903
925
}
904
926
int getVolume () {
905
927
int vol;
0 commit comments