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