Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9bf40d3 authored by Narsinga Rao Chella's avatar Narsinga Rao Chella Committed by Gerrit - the friendly Code Review server
Browse files

hal: apply TTY mode change for all voice use cases

Update devices for Voice2, VoLTE and QCHAT sessions
based on the TTY mode. This change is needed to support
enabling/disabling and switching TTY mode during
voice call.

Change-Id: I4f1fde8ce6b20fad0d24e0cd963e2c3709ff25d5
CRs-fixed: 608183
parent d34c67f6
Loading
Loading
Loading
Loading
+1 −16
Original line number Diff line number Diff line
@@ -551,21 +551,6 @@ static int read_hdmi_channel_masks(struct stream_out *out)
    return ret;
}

static void update_devices_for_all_voice_usecases(struct audio_device *adev)
{
    struct listnode *node;
    struct audio_usecase *usecase;

    list_for_each(node, &adev->usecase_list) {
        usecase = node_to_item(node, struct audio_usecase, list);
        if (usecase->type == VOICE_CALL) {
            ALOGV("%s: updating device for usecase:%s", __func__,
                  use_case_table[usecase->id]);
            select_devices(adev, usecase->id);
        }
    }
}

static audio_usecase_t get_voice_usecase_id_from_list(struct audio_device *adev)
{
    struct audio_usecase *usecase;
@@ -1457,7 +1442,7 @@ static int out_set_parameters(struct audio_stream *stream, const char *kvpairs)
            } else if ((adev->mode == AUDIO_MODE_IN_CALL) &&
                            voice_is_in_call(adev) &&
                            (out == adev->primary_output)) {
                update_devices_for_all_voice_usecases(adev);
                voice_update_devices_for_all_voice_usecases(adev);
            }
        }

+16 −2
Original line number Diff line number Diff line
@@ -397,8 +397,7 @@ int voice_set_parameters(struct audio_device *adev, struct str_parms *parms)
            adev->voice.tty_mode = tty_mode;
            adev->acdb_settings = (adev->acdb_settings & TTY_MODE_CLEAR) | tty_mode;
            if (voice_is_in_call(adev))
                //todo: what about voice2, volte and qchat usecases?
                select_devices(adev, USECASE_VOICE_CALL);
               voice_update_devices_for_all_voice_usecases(adev);
        }
    }

@@ -438,4 +437,19 @@ void voice_init(struct audio_device *adev)
    voice_extn_init(adev);
}

void voice_update_devices_for_all_voice_usecases(struct audio_device *adev)
{
    struct listnode *node;
    struct audio_usecase *usecase;

    list_for_each(node, &adev->usecase_list) {
        usecase = node_to_item(node, struct audio_usecase, list);
        if (usecase->type == VOICE_CALL) {
            ALOGV("%s: updating device for usecase:%s", __func__,
                  use_case_table[usecase->id]);
            select_devices(adev, usecase->id);
        }
    }
}

+1 −0
Original line number Diff line number Diff line
@@ -86,4 +86,5 @@ int voice_check_and_set_incall_music_usecase(struct audio_device *adev,
                                             struct stream_out *out);
int voice_check_and_stop_incall_rec_usecase(struct audio_device *adev,
                                            struct stream_in *in);
void voice_update_devices_for_all_voice_usecases(struct audio_device *adev);
#endif //VOICE_H