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)
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 08a8fad..17f838c 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -6303,7 +6303,7 @@
                       (devices != AUDIO_DEVICE_OUT_USB_ACCESSORY);
     bool direct_dev = is_hdmi || is_usb_dev;
     bool use_db_as_primary =
-                audio_feature_manager_is_feature_enabled(USE_DEEP_BUFFER_AS_PRIMARY_OUTPUT);
+           audio_feature_manager_is_feature_enabled(USE_DEEP_BUFFER_AS_PRIMARY_OUTPUT);
 
     if (is_usb_dev && (!audio_extn_usb_connected(NULL))) {
         is_usb_dev = false;
@@ -6932,7 +6932,7 @@
                                                 devices, out->flags, out->hal_op_format, out->sample_rate,
                                                 out->bit_width, out->channel_mask, out->profile,
                                                 &out->app_type_cfg);
-    if ((out->usecase == GET_USECASE_AUDIO_PLAYBACK_PRIMARY(use_db_as_primary)) ||
+    if ((out->usecase == (audio_usecase_t)(GET_USECASE_AUDIO_PLAYBACK_PRIMARY(use_db_as_primary))) ||
         (flags & AUDIO_OUTPUT_FLAG_PRIMARY)) {
         /* Ensure the default output is not selected twice */
         if(adev->primary_output == NULL)
diff --git a/hal/voice_extn/voice_extn.c b/hal/voice_extn/voice_extn.c
index b6a1879..8ab7b1e 100644
--- a/hal/voice_extn/voice_extn.c
+++ b/hal/voice_extn/voice_extn.c
@@ -429,7 +429,6 @@
     adev->voice.session[VOWLAN_SESS_IDX].vsid = VOWLAN_VSID;
     adev->voice.session[MMODE1_SESS_IDX].vsid = VOICEMMODE1_VSID;
     adev->voice.session[MMODE2_SESS_IDX].vsid = VOICEMMODE2_VSID;
-    voice_extn_feature_init();
 }
 
 void compr_voip_feature_init(bool is_feature_enabled)
@@ -698,7 +697,7 @@
 int voice_extn_compress_voip_set_parameters(struct audio_device *adev,
                                              struct str_parms *parms) 
 {
-    int ret = -1;
+    int ret = -ENOSYS;
     if(voice_extn_compress_voip_enabled)
         ret = compress_voip_set_parameters(adev, parms);
     else