hal: pass voice volumes to ext speaker driver
Bug: 17203285
Change-Id: I1b9bdc3a49fa162ac85b7b1c1b8de027a20983d2
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 6009366..26c2fb4 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -23,6 +23,7 @@
void audio_extn_extspk_deinit(void *extn);
void audio_extn_extspk_update(void* extn);
void audio_extn_extspk_set_mode(void* extn, audio_mode_t mode);
+void audio_extn_extspk_set_voice_vol(void* extn, float vol);
#ifndef HFP_ENABLED
#define audio_extn_hfp_is_active(adev) (0)
diff --git a/hal/audio_extn/ext_speaker.c b/hal/audio_extn/ext_speaker.c
index 611e916..a551fb3 100644
--- a/hal/audio_extn/ext_speaker.c
+++ b/hal/audio_extn/ext_speaker.c
@@ -30,7 +30,7 @@
typedef void (*set_mode_t)(int);
typedef void (*set_speaker_on_t)(bool);
typedef void (*set_earpiece_on_t)(bool);
-typedef void (*set_voice_vol_t)(int);
+typedef void (*set_voice_vol_t)(float);
struct speaker_data {
struct audio_device *adev;
@@ -147,3 +147,11 @@
if (data)
data->set_mode(mode);
}
+
+void audio_extn_extspk_set_voice_vol(void* extn, float vol)
+{
+ struct speaker_data *data = (struct speaker_data*)extn;
+
+ if (data)
+ data->set_voice_vol(vol);
+}
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 9908b81..c5a4e88 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -2249,6 +2249,8 @@
int ret;
struct audio_device *adev = (struct audio_device *)dev;
+ audio_extn_extspk_set_voice_vol(adev->extspk, volume);
+
pthread_mutex_lock(&adev->lock);
ret = voice_set_volume(adev, volume);
pthread_mutex_unlock(&adev->lock);