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

Commit 1648db73 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "hal: control multi voice session with property"

parents 6a6d1291 095e4442
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -786,6 +786,10 @@ done:
void voice_init(struct audio_device *adev)
{
    int i = 0;
    int max_voice_sessions = MAX_VOICE_SESSIONS;

    if (!voice_extn_is_multi_session_supported())
        max_voice_sessions = 1;

    memset(&adev->voice, 0, sizeof(adev->voice));
    adev->voice.tty_mode = TTY_MODE_OFF;
@@ -793,7 +797,7 @@ void voice_init(struct audio_device *adev)
    adev->voice.volume = 1.0f;
    adev->voice.mic_mute = false;
    adev->voice.in_call = false;
    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
    for (i = 0; i < max_voice_sessions; i++) {
        adev->voice.session[i].pcm_rx = NULL;
        adev->voice.session[i].pcm_tx = NULL;
        adev->voice.session[i].state.current = CALL_INACTIVE;
+87 −35
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ struct pcm_config pcm_config_incall_music = {
static bool voice_extn_compress_voip_enabled = false;
static bool voice_extn_dynamic_ecns_feature_enabled = false;
static bool voice_extn_incall_music_enabled = false;
static bool voice_extn_multi_session_enabled = false;

int voice_extn_is_call_state_active(struct audio_device *adev, bool *is_call_active);

@@ -184,8 +185,12 @@ static uint32_t get_session_id_with_state(struct audio_device *adev,
    struct voice_session *session = NULL;
    int i = 0;
    uint32_t session_id = 0;
    int max_voice_sessions = MAX_VOICE_SESSIONS;

    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
    if (!voice_extn_is_multi_session_supported())
        max_voice_sessions = 1;

    for (i = 0; i < max_voice_sessions; i++) {
        session = &adev->voice.session[i];
        if (session->state.current == call_state){
            session_id = session->vsid;
@@ -203,10 +208,13 @@ static int update_calls(struct audio_device *adev)
    enum voice_lch_mode lch_mode;
    struct voice_session *session = NULL;
    int ret = 0;
    int max_voice_sessions = MAX_VOICE_SESSIONS;

    ALOGD("%s: enter:", __func__);
    if (!voice_extn_is_multi_session_supported())
        max_voice_sessions = 1;

    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
    for (i = 0; i < max_voice_sessions; i++) {
        usecase_id = voice_extn_get_usecase_for_session_idx(i);
        session = &adev->voice.session[i];
        ALOGD("%s: cur_state=%d new_state=%d vsid=%x",
@@ -334,8 +342,12 @@ static int update_call_states(struct audio_device *adev,
    struct voice_session *session = NULL;
    int i = 0;
    bool is_call_active;
    int max_voice_sessions = MAX_VOICE_SESSIONS;

    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
    if (!voice_extn_is_multi_session_supported())
        max_voice_sessions = 1;

    for (i = 0; i < max_voice_sessions; i++) {
        if (vsid == adev->voice.session[i].vsid) {
            session = &adev->voice.session[i];
            break;
@@ -370,6 +382,9 @@ static int update_call_states(struct audio_device *adev,
int voice_extn_get_active_session_id(struct audio_device *adev,
                                     uint32_t *session_id)
{
    if (!voice_extn_is_multi_session_supported())
        return -ENOSYS;

    *session_id = get_session_id_with_state(adev, CALL_ACTIVE);
    return 0;
}
@@ -378,8 +393,11 @@ int voice_extn_is_call_state_active(struct audio_device *adev, bool *is_call_act
{
    struct voice_session *session = NULL;
    int i = 0;
    *is_call_active = false;

    if (!voice_extn_is_multi_session_supported())
        return -ENOSYS;

    *is_call_active = false;
    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
        session = &adev->voice.session[i];
        if (session->state.current != CALL_INACTIVE){
@@ -403,14 +421,17 @@ bool voice_extn_is_dynamic_ecns_enabled()
    return voice_extn_dynamic_ecns_feature_enabled;
}

// START: INCALL_MUSIC ===================================================================
void incall_music_feature_init(bool is_feature_enabled)
{
    voice_extn_incall_music_enabled = is_feature_enabled;
    ALOGV("%s: ---- Feature INCALL_MUSIC is %s----", __func__,
                                is_feature_enabled ? "ENABLED" : "NOT ENABLED");
}
// END: INCALL_MUSIC ===================================================================

bool voice_extn_is_incall_music_enabled()
{
    return voice_extn_incall_music_enabled;
}

void compr_voip_feature_init(bool is_feature_enabled)
{
@@ -424,6 +445,18 @@ bool voice_extn_is_compress_voip_supported()
    return voice_extn_compress_voip_enabled;
}

void multi_voice_session_feature_init(bool is_feature_enabled)
{
    voice_extn_multi_session_enabled = is_feature_enabled;
    ALOGV("%s:: ---- Feature MULTI VOICE SESSION is %s ----", __func__,
                                is_feature_enabled ? "ENABLED" : "NOT ENABLED");
}

bool voice_extn_is_multi_session_supported()
{
    return voice_extn_multi_session_enabled;
}

void voice_extn_feature_init()
{
    // Register feature function here
@@ -437,10 +470,17 @@ void voice_extn_feature_init()
    incall_music_feature_init(
       property_get_bool("vendor.audio.feature.incall_music.enable",
                          true));
    multi_voice_session_feature_init(
       property_get_bool("vendor.audio.feature.multi_voice_session.enable",
                          true));

}

void voice_extn_init(struct audio_device *adev)
{
    if (!voice_extn_is_multi_session_supported())
        return;

    adev->voice.session[VOICE_SESS_IDX].vsid =  VOICE_VSID;
    adev->voice.session[VOICE2_SESS_IDX].vsid = VOICE2_VSID;
    adev->voice.session[VOLTE_SESS_IDX].vsid =  VOLTE_VSID;
@@ -454,6 +494,8 @@ int voice_extn_get_session_from_use_case(struct audio_device *adev,
                                         const audio_usecase_t usecase_id,
                                         struct voice_session **session)
{
    if (!voice_extn_is_multi_session_supported())
        return -ENOSYS;

    switch(usecase_id)
    {
@@ -500,6 +542,9 @@ int voice_extn_start_call(struct audio_device *adev)
     * udpated.
     */
    ALOGV("%s: enter:", __func__);
    if (!voice_extn_is_multi_session_supported())
        return -ENOSYS;

    return update_calls(adev);
}

@@ -510,6 +555,9 @@ int voice_extn_stop_call(struct audio_device *adev)

    ALOGV("%s: enter:", __func__);

    if (!voice_extn_is_multi_session_supported())
        return -ENOSYS;

    /* If BT device is enabled and voice calls are ended, telephony will call
     * set_mode(AUDIO_MODE_NORMAL) which will trigger audio policy manager to
     * set routing with device BT A2DP profile. Hence end all voice calls when
@@ -616,8 +664,12 @@ static int get_all_call_states_str(const struct audio_device *adev,
    int ret = 0;
    char *cur_ptr = value;
    int i, len=0;
    int max_voice_sessions = MAX_VOICE_SESSIONS;

    for (i = 0; i < MAX_VOICE_SESSIONS; i++) {
    if (!voice_extn_is_multi_session_supported())
        max_voice_sessions = 1;

    for (i = 0; i < max_voice_sessions; i++) {
        snprintf(cur_ptr, VOICE_EXTN_PARAMETER_VALUE_MAX_LEN - len,
                 "%d:%d,",adev->voice.session[i].vsid,
                 adev->voice.session[i].state.current);
+6 −2
Original line number Diff line number Diff line
@@ -78,10 +78,14 @@ bool voice_extn_compress_voip_is_format_supported(audio_format_t format);
bool voice_extn_compress_voip_is_config_supported(struct audio_config *config);
bool voice_extn_compress_voip_is_started(struct audio_device *adev);
void voice_extn_feature_init();
void compr_voip_feature_init(bool is_feature_enabled);
bool voice_extn_is_compress_voip_supported();
void dynamic_ecns_feature_init(bool is_feature_enabled);
bool voice_extn_is_dynamic_ecns_enabled();
void incall_music_feature_init(bool is_feature_enabled);
bool voice_extn_is_incall_music_enabled();
void compr_voip_feature_init(bool is_feature_enabled);
bool voice_extn_is_compress_voip_supported();
void multi_voice_session_feature_init(bool is_feature_enabled);
bool voice_extn_is_multi_session_supported();


#endif //VOICE_EXTN_H