hal: Fixes for dynamic audio HAL feature enable
- Update audio and voice feature init sequence
- Update API names for querying whether feature is enabled
- Fix A2DP audio_extn APIs
- Fix compress VOIP set parameter default return val issue that
was causing no other set param to be processed
- Fix dynamic primary usecase check
Change-Id: I08fa3bc369ec197932347b01491588d42655797c
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index 9ac5476..028a96f 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -2655,7 +2655,7 @@
}
void a2dp_init(void *adev,
- a2dp_offload_init_config_t *init_config)
+ a2dp_offload_init_config_t init_config)
{
a2dp.adev = (struct audio_device*)adev;
a2dp.bt_lib_source_handle = NULL;
@@ -2676,8 +2676,8 @@
// init function pointers
fp_platform_get_pcm_device_id =
- init_config->fp_platform_get_pcm_device_id;
- fp_check_a2dp_restore = init_config->fp_check_a2dp_restore;
+ init_config.fp_platform_get_pcm_device_id;
+ fp_check_a2dp_restore = init_config.fp_check_a2dp_restore;
reset_a2dp_enc_config_params();
reset_a2dp_source_dec_config_params();
@@ -2687,7 +2687,8 @@
a2dp.a2dp_sink_started = false;
a2dp.bt_state_sink = A2DP_STATE_DISCONNECTED;
a2dp.a2dp_sink_total_active_session_requests = 0;
- open_a2dp_sink();
+ if (isRunningWithVendorEnhancedFramework())
+ open_a2dp_sink();
a2dp.is_a2dp_offload_supported = false;
update_offload_codec_capabilities();
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index e0b07c6..8e52e11 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -2330,7 +2330,6 @@
{
//fix-me: check running on vendor enhanced build
//is_running_on_stock_version = !isRunningWithVendorEnhancedFramework();
- audio_extn_feature_init();
aextnmod.anc_enabled = 0;
aextnmod.aanc_enabled = 0;
aextnmod.custom_stereo_enabled = 0;
@@ -3478,7 +3477,7 @@
static void *a2dp_lib_handle = NULL;
-typedef void (*a2dp_init_t)(void *, a2dp_offload_init_config_t *);
+typedef void (*a2dp_init_t)(void *, a2dp_offload_init_config_t);
static a2dp_init_t a2dp_init;
typedef int (*a2dp_start_playback_t)();
@@ -3609,9 +3608,9 @@
void audio_extn_a2dp_init(void *adev)
{
if (a2dp_init) {
- a2dp_offload_init_config_t *a2dp_init_config = NULL;
- a2dp_init_config->fp_platform_get_pcm_device_id = platform_get_pcm_device_id;
- a2dp_init_config->fp_check_a2dp_restore = check_a2dp_restore;
+ a2dp_offload_init_config_t a2dp_init_config;
+ a2dp_init_config.fp_platform_get_pcm_device_id = platform_get_pcm_device_id;
+ a2dp_init_config.fp_check_a2dp_restore = check_a2dp_restore;
a2dp_init(adev, a2dp_init_config);
}
diff --git a/hal/audio_extn/audio_feature_manager.c b/hal/audio_extn/audio_feature_manager.c
index 23de0eb..bf92bd6 100644
--- a/hal/audio_extn/audio_feature_manager.c
+++ b/hal/audio_extn/audio_feature_manager.c
@@ -37,6 +37,9 @@
#include <log/log.h>
#include <unistd.h>
#include <vndfwk-detect.h>
+#include "audio_hw.h"
+#include "audio_extn.h"
+#include "voice_extn.h"
#include "audio_feature_manager.h"
extern AHalValues* confValues;
@@ -47,6 +50,8 @@
audio_extn_ahal_config_helper_init(
isRunningWithVendorEnhancedFramework());
confValues = audio_extn_get_feature_values();
+ audio_extn_feature_init();
+ voice_extn_feature_init();
}
bool audio_feature_manager_is_feature_enabled(audio_ext_feature feature)