hal: use consistent in call indication
Use voice_is_in_call() instead of mode == MODE_IN_CALL
as a valid indication that we are in call to choose sound
devices.
Bug: 18058600
Change-Id: Iefa968ee463d4ade6c7d09626be667faab6eda98
diff --git a/hal/msm8960/platform.c b/hal/msm8960/platform.c
index bc38b1d..4eaf488 100644
--- a/hal/msm8960/platform.c
+++ b/hal/msm8960/platform.c
@@ -445,7 +445,8 @@
struct platform_data *my_data = (struct platform_data *)platform;
int ret = 0;
- if (my_data->csd_client != NULL) {
+ if (my_data->csd_client != NULL &&
+ voice_is_in_call(my_data->adev)) {
/* This must be called before disabling the mixer controls on APQ side */
if (my_data->csd_disable_device == NULL) {
ALOGE("%s: dlsym error for csd_disable_device", __func__);
@@ -596,7 +597,7 @@
goto exit;
}
- if (mode == AUDIO_MODE_IN_CALL) {
+ if (voice_is_in_call(adev)) {
if (devices & AUDIO_DEVICE_OUT_WIRED_HEADPHONE ||
devices & AUDIO_DEVICE_OUT_WIRED_HEADSET) {
if (adev->voice.tty_mode == TTY_MODE_FULL)
@@ -693,11 +694,7 @@
ALOGV("%s: enter: out_device(%#x) in_device(%#x)",
__func__, out_device, in_device);
- if (mode == AUDIO_MODE_IN_CALL) {
- if (out_device == AUDIO_DEVICE_NONE) {
- ALOGE("%s: No output device set for voice call", __func__);
- goto exit;
- }
+ if ((out_device != AUDIO_DEVICE_NONE) && voice_is_in_call(adev)) {
if (adev->voice.tty_mode != TTY_MODE_OFF) {
if (out_device & AUDIO_DEVICE_OUT_WIRED_HEADPHONE ||
out_device & AUDIO_DEVICE_OUT_WIRED_HEADSET) {
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 27e39d9..7248098 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -930,7 +930,7 @@
int ret = 0;
if (my_data->csd != NULL &&
- my_data->adev->mode == AUDIO_MODE_IN_CALL) {
+ voice_is_in_call(my_data->adev)) {
/* This must be called before disabling mixer controls on APQ side */
ret = my_data->csd->disable_device();
if (ret < 0) {
@@ -1186,18 +1186,17 @@
goto exit;
}
- if ((mode == AUDIO_MODE_IN_CALL) ||
- (adev->enable_voicerx)) {
+ if (voice_is_in_call(adev) || adev->enable_voicerx) {
if (devices & AUDIO_DEVICE_OUT_WIRED_HEADPHONE ||
devices & AUDIO_DEVICE_OUT_WIRED_HEADSET ||
devices & AUDIO_DEVICE_OUT_LINE) {
- if ((mode == AUDIO_MODE_IN_CALL) &&
+ if (voice_is_in_call(adev) &&
(adev->voice.tty_mode == TTY_MODE_FULL))
snd_device = SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES;
- else if ((mode == AUDIO_MODE_IN_CALL) &&
+ else if (voice_is_in_call(adev) &&
(adev->voice.tty_mode == TTY_MODE_VCO))
snd_device = SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES;
- else if ((mode == AUDIO_MODE_IN_CALL) &&
+ else if (voice_is_in_call(adev) &&
(adev->voice.tty_mode == TTY_MODE_HCO))
snd_device = SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET;
else {
@@ -1308,11 +1307,7 @@
ALOGV("%s: enter: out_device(%#x) in_device(%#x)",
__func__, out_device, in_device);
- if (mode == AUDIO_MODE_IN_CALL) {
- if (out_device == AUDIO_DEVICE_NONE) {
- ALOGE("%s: No output device set for voice call", __func__);
- goto exit;
- }
+ if ((out_device != AUDIO_DEVICE_NONE) && voice_is_in_call(adev)) {
if (adev->voice.tty_mode != TTY_MODE_OFF) {
if (out_device & AUDIO_DEVICE_OUT_WIRED_HEADPHONE ||
out_device & AUDIO_DEVICE_OUT_WIRED_HEADSET ||
diff --git a/hal/voice.c b/hal/voice.c
index 669484c..044dc28 100644
--- a/hal/voice.c
+++ b/hal/voice.c
@@ -327,11 +327,11 @@
{
int ret = 0;
+ adev->voice.in_call = true;
ret = voice_extn_start_call(adev);
if (ret == -ENOSYS) {
ret = voice_start_usecase(adev, USECASE_VOICE_CALL);
}
- adev->voice.in_call = true;
return ret;
}