Loading hal/voice.c +6 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading hal/voice_extn/voice_extn.c +87 −35 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading @@ -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", Loading Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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){ Loading @@ -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) { Loading @@ -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 Loading @@ -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; Loading @@ -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) { Loading Loading @@ -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); } Loading @@ -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 Loading Loading @@ -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); Loading hal/voice_extn/voice_extn.h +6 −2 Original line number Diff line number Diff line Loading @@ -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 Loading
hal/voice.c +6 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading
hal/voice_extn/voice_extn.c +87 −35 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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; Loading @@ -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", Loading Loading @@ -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; Loading Loading @@ -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; } Loading @@ -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){ Loading @@ -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) { Loading @@ -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 Loading @@ -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; Loading @@ -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) { Loading Loading @@ -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); } Loading @@ -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 Loading Loading @@ -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); Loading
hal/voice_extn/voice_extn.h +6 −2 Original line number Diff line number Diff line Loading @@ -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