audio: enable compilation of qahw_api on Android builds

-Fix compilation errors from qahw_api tests and enable
 compilation of qahw_api on Android builds.

Change-Id: Ifc05ea22f0fd9ac0e6f6e9b22a6c593841acc761
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index df9cb66..fcdcb04 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -53,6 +53,7 @@
 MM_AUDIO_ENABLED_FTM := true
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index 2149a7b..16f248c 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -53,6 +53,7 @@
 MM_AUDIO_ENABLED_FTM := true
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/configs/msm8996/msm8996.mk b/configs/msm8996/msm8996.mk
index 26e0bb1..d1a108a 100644
--- a/configs/msm8996/msm8996.mk
+++ b/configs/msm8996/msm8996.mk
@@ -52,6 +52,7 @@
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
 AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/configs/msm8998/msm8998.mk b/configs/msm8998/msm8998.mk
index 94079aa..6a03696 100644
--- a/configs/msm8998/msm8998.mk
+++ b/configs/msm8998/msm8998.mk
@@ -55,6 +55,7 @@
 TARGET_USES_QCOM_MM_AUDIO := true
 AUDIO_FEATURE_ENABLED_SOURCE_TRACKING := true
 AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
+BOARD_SUPPORTS_QAHW := true
 ##AUDIO_FEATURE_FLAGS
 
 #Audio Specific device overlays
diff --git a/hal/audio_extn/audio_defs.h b/hal/audio_extn/audio_defs.h
index 1baa3a7..94b43ba 100644
--- a/hal/audio_extn/audio_defs.h
+++ b/hal/audio_extn/audio_defs.h
@@ -115,27 +115,27 @@
 /* MAX SECTORS for sourcetracking feature */
 #define MAX_SECTORS 8
 
-struct qahw_source_tracking_param {
+struct source_tracking_param {
     uint8_t   vad[MAX_SECTORS];
     uint16_t  doa_speech;
     uint16_t  doa_noise[3];
     uint8_t   polar_activity[360];
 };
 
-struct qahw_sound_focus_param {
+struct sound_focus_param {
     uint16_t  start_angle[MAX_SECTORS];
     uint8_t   enable[MAX_SECTORS];
     uint16_t  gain_step;
 };
 
 typedef union {
-    struct qahw_source_tracking_param st_params;
-    struct qahw_sound_focus_param sf_params;
-} qahw_param_payload;
+    struct source_tracking_param st_params;
+    struct sound_focus_param sf_params;
+} audio_extn_param_payload;
 
 typedef enum {
-    QAHW_PARAM_SOURCE_TRACK,
-    QAHW_PARAM_SOUND_FOCUS
-} qahw_param_id;
+    AUDIO_EXTN_PARAM_SOURCE_TRACK,
+    AUDIO_EXTN_PARAM_SOUND_FOCUS
+} audio_extn_param_id;
 
 #endif /* AUDIO_DEFS_H */
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index b9402d5..77e03ca 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -742,4 +742,32 @@
 #define audio_extn_cin_configure_input_stream(in) (0)
 #endif
 
+#ifndef SOURCE_TRACKING_ENABLED
+static int __unused audio_extn_get_soundfocus_data(
+                                   const struct audio_device *adev __unused,
+                                   struct sound_focus_param *payload __unused)
+{
+    return -ENOSYS;
+}
+static int __unused audio_extn_get_sourcetrack_data(
+                                   const struct audio_device *adev __unused,
+                                   struct source_tracking_param *payload __unused)
+{
+    return -ENOSYS;
+}
+static int __unused audio_extn_set_soundfocus_data(
+                                   struct audio_device *adev __unused,
+                                   struct sound_focus_param *payload __unused)
+{
+    return -ENOSYS;
+}
+#else
+int audio_extn_get_soundfocus_data(const struct audio_device *adev,
+                                   struct sound_focus_param *payload);
+int audio_extn_get_sourcetrack_data(const struct audio_device *adev,
+                                    struct source_tracking_param *payload);
+int audio_extn_set_soundfocus_data(struct audio_device *adev,
+                                   struct sound_focus_param *payload);
+#endif
+
 #endif /* AUDIO_EXTN_H */
diff --git a/hal/audio_extn/source_track.c b/hal/audio_extn/source_track.c
index a36de80..5bced66 100644
--- a/hal/audio_extn/source_track.c
+++ b/hal/audio_extn/source_track.c
@@ -88,25 +88,11 @@
       BITMASK_AUDIO_PARAMETER_KEY_SOURCE_TRACK_DOA_NOISE |\
       BITMASK_AUDIO_PARAMETER_KEY_SOURCE_TRACK_POLAR_ACTIVITY)
 
-#define MAX_SECTORS                                         8
 #define MAX_STR_SIZE                                       2048
 
 extern struct audio_device_to_audio_interface audio_device_to_interface_table[];
 extern int audio_device_to_interface_table_len;
 
-struct sound_focus_param {
-    uint16_t start_angle[MAX_SECTORS];
-    uint8_t enable[MAX_SECTORS];
-    uint16_t gain_step;
-};
-
-struct source_tracking_param {
-    uint8_t vad[MAX_SECTORS];
-    uint16_t doa_speech;
-    uint16_t doa_noise[3];
-    uint8_t polar_activity[360];
-};
-
 static int add_audio_intf_name_to_mixer_ctl(audio_devices_t device, char *mixer_ctl_name,
                                 struct audio_device_to_audio_interface *table, int len)
 {
diff --git a/hal/audio_hw_extn_api.c b/hal/audio_hw_extn_api.c
index d98a4dc..39d81fb 100644
--- a/hal/audio_hw_extn_api.c
+++ b/hal/audio_hw_extn_api.c
@@ -49,7 +49,8 @@
 #endif
 
 int qahwi_get_param_data(const struct audio_hw_device *adev,
-                         qahw_param_id param_id, qahw_param_payload *payload)
+                         audio_extn_param_id param_id,
+                         audio_extn_param_payload *payload)
 {
     int ret = 0;
     const struct audio_device *dev = (const struct audio_device *)adev;
@@ -65,13 +66,13 @@
     }
 
     switch (param_id) {
-        case QAHW_PARAM_SOUND_FOCUS:
+        case AUDIO_EXTN_PARAM_SOUND_FOCUS:
               ret = audio_extn_get_soundfocus_data(dev,
-                     (struct qahw_sound_focus_param *)payload);
+                     (struct sound_focus_param *)payload);
               break;
-        case QAHW_PARAM_SOURCE_TRACK:
+        case AUDIO_EXTN_PARAM_SOURCE_TRACK:
               ret = audio_extn_get_sourcetrack_data(dev,
-                     (struct qahw_source_tracking_param*)payload);
+                     (struct source_tracking_param*)payload);
               break;
        default:
              ALOGE("%s::INVALID PARAM ID:%d\n",__func__,param_id);
@@ -82,7 +83,8 @@
 }
 
 int qahwi_set_param_data(struct audio_hw_device *adev,
-                         qahw_param_id param_id, qahw_param_payload *payload)
+                         audio_extn_param_id param_id,
+                         audio_extn_param_payload *payload)
 {
     int ret = 0;
     struct audio_device *dev = (struct audio_device *)adev;
@@ -98,9 +100,9 @@
     }
 
     switch (param_id) {
-        case QAHW_PARAM_SOUND_FOCUS:
+        case AUDIO_EXTN_PARAM_SOUND_FOCUS:
               ret = audio_extn_set_soundfocus_data(dev,
-                     (struct qahw_sound_focus_param *)payload);
+                     (struct sound_focus_param *)payload);
               break;
        default:
              ALOGE("%s::INVALID PARAM ID:%d\n",__func__,param_id);
diff --git a/qahw_api/Android.mk b/qahw_api/Android.mk
index 1886262..e9d86a0 100644
--- a/qahw_api/Android.mk
+++ b/qahw_api/Android.mk
@@ -21,6 +21,8 @@
     libhardware \
     libdl
 
+LOCAL_CFLAGS += -Wall -Werror
+
 LOCAL_COPY_HEADERS_TO   := mm-audio/qahw_api/inc
 LOCAL_COPY_HEADERS      := inc/qahw_api.h
 LOCAL_COPY_HEADERS      += inc/qahw_defs.h
diff --git a/qahw_api/Makefile.am b/qahw_api/Makefile.am
index a2139d9..a573552 100644
--- a/qahw_api/Makefile.am
+++ b/qahw_api/Makefile.am
@@ -18,5 +18,6 @@
                      src/qahw_effect.c
 libqahw_la_CFLAGS = $(AM_CFLAGS) -include stddef.h
 libqahw_la_CFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
+libqahw_la_CFLAGS += -Wno-sign-compare -Werror
 libqahw_la_LIBADD = -llog -lcutils -lhardware
 libqahw_la_LDFLAGS = -module -shared -avoid-version
diff --git a/qahw_api/src/qahw.c b/qahw_api/src/qahw.c
index 1cb89ee..393dba9 100644
--- a/qahw_api/src/qahw.c
+++ b/qahw_api/src/qahw.c
@@ -48,7 +48,7 @@
 #define QAHW_MODULE_API_VERSION_CURRENT QAHW_MODULE_API_VERSION_0_0
 
 typedef uint64_t (*qahwi_in_read_v2_t)(audio_stream_in_t *in, void* buffer,
-                                       size_t bytes, uint64_t *timestamp);
+                                       size_t bytes, int64_t *timestamp);
 
 typedef int (*qahwi_get_param_data_t) (const audio_hw_device_t *,
                               qahw_param_id, qahw_param_payload *);
@@ -1142,8 +1142,7 @@
     pthread_mutex_lock(&qahw_module->lock);
     audio_device = qahw_module->audio_device;
     if (qahw_module->audio_device->get_mic_mute) {
-        rc = audio_device->get_mic_mute(qahw_module->audio_device,
-                                                 &state);
+        rc = audio_device->get_mic_mute(qahw_module->audio_device, state);
     } else {
         rc = -ENOSYS;
         ALOGW("%s not supported", __func__);
@@ -1675,7 +1674,6 @@
 error_exit:
     pthread_mutex_unlock(&qahw_module_init_lock);
 
-exit:
     return rc;
 }
 
diff --git a/qahw_api/test/Android.mk b/qahw_api/test/Android.mk
index 1688069..6ee6f4b 100644
--- a/qahw_api/test/Android.mk
+++ b/qahw_api/test/Android.mk
@@ -3,7 +3,8 @@
 # audio_hal_playback_test
 # ==============================================================================
 include $(CLEAR_VARS)
-LOCAL_SRC_FILES := qahw_playback_test.c
+LOCAL_SRC_FILES := qahw_playback_test.c \
+                   qahw_effect_test.c
 LOCAL_MODULE := hal_play_test
 
 hal-play-inc     = $(TARGET_OUT_HEADERS)/mm-audio/qahw_api/inc
diff --git a/qahw_api/test/Makefile.am b/qahw_api/test/Makefile.am
index 5378e0b..abccdce 100644
--- a/qahw_api/test/Makefile.am
+++ b/qahw_api/test/Makefile.am
@@ -1,12 +1,12 @@
 bin_PROGRAMS = hal_play_test
 
 PLAY_CPPFLAGS = -Wno-sign-compare -Werror
+PLAY_CPPFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
 PLAY_INCLUDES = -I $(top_srcdir)/qahw_api/inc
 
 hal_play_test_SOURCES = qahw_playback_test.c \
                         qahw_effect_test.c
 hal_play_test_CPPFLAGS = $(PLAY_CPPFLAGS) $(PLAY_INCLUDES)
-hal_play_test_CPPFLAGS += -D__unused=__attribute__\(\(__unused__\)\)
 hal_play_test_LDADD = -lutils ../libqahw.la
 
 
diff --git a/qahw_api/test/qahw_effect_test.c b/qahw_api/test/qahw_effect_test.c
index d9ce81e..2a24870 100644
--- a/qahw_api/test/qahw_effect_test.c
+++ b/qahw_api/test/qahw_effect_test.c
@@ -31,6 +31,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <unistd.h>
 #include <string.h>
 #include <errno.h>
 
@@ -62,10 +63,12 @@
     "reverb",
 };
 
-void *bassboost_thread_func(void* data) {
+void *bassboost_thread_func(void* data __unused) {
+    return NULL;
 }
 
-void *virtualizer_thread_func(void* data) {
+void *virtualizer_thread_func(void* data __unused) {
+    return NULL;
 }
 
 void *equalizer_thread_func(void* data) {
@@ -151,10 +154,12 @@
     return NULL;
 }
 
-void *visualizer_thread_func(void* data) {
+void *visualizer_thread_func(void* data __unused) {
+    return NULL;
 }
 
-void *reverb_thread_func(void* data) {
+void *reverb_thread_func(void* data __unused) {
+    return NULL;
 }
 
 thread_data_t *create_effect_thread(thread_func_t func_ptr) {
@@ -195,11 +200,9 @@
 
     pthread_mutex_lock(&ethread_data->mutex);
     ethread_data->cmd = cmd;
-    if (cmd_code >= 0) {
-        ethread_data->cmd_code = cmd_code;
-        ethread_data->cmd_size = cmd_size;
-        ethread_data->cmd_data = cmd_data;
-    }
+    ethread_data->cmd_code = cmd_code;
+    ethread_data->cmd_size = cmd_size;
+    ethread_data->cmd_data = cmd_data;
     pthread_mutex_unlock(&ethread_data->mutex);
     pthread_cond_signal(&ethread_data->loop_cond);
 
diff --git a/qahw_api/test/qahw_multi_record_test.c b/qahw_api/test/qahw_multi_record_test.c
index b0b914b..1a61a08 100644
--- a/qahw_api/test/qahw_multi_record_test.c
+++ b/qahw_api/test/qahw_multi_record_test.c
@@ -89,7 +89,7 @@
 static pthread_mutex_t sourcetrack_lock;
 struct qahw_sound_focus_param sound_focus_data;
 
-void stop_signal_handler(int signal)
+void stop_signal_handler(int signal __unused)
 {
    stop_record = true;
 }
@@ -97,7 +97,6 @@
 
 void read_soundfocus_param(void)
 {
-    int i = 0;
     uint16_t start_angle[4] = {0};
     uint8_t enable_sector[4] = {0};
     uint16_t gain_step;
@@ -117,7 +116,7 @@
     memcpy(&sound_focus_data.gain_step, &gain_step, sizeof(gain_step));
 }
 
-void sourcetrack_signal_handler(int signal)
+void sourcetrack_signal_handler(int signal __unused)
 {
 /* Function to read keyboard interupt to enable user to set parameters
    for sourcetracking usecase Dynamically */
diff --git a/qahw_api/test/qahw_playback_test.c b/qahw_api/test/qahw_playback_test.c
index 8da62fb..7aa2b4c 100644
--- a/qahw_api/test/qahw_playback_test.c
+++ b/qahw_api/test/qahw_playback_test.c
@@ -22,6 +22,7 @@
 #include <pthread.h>
 #include <stdlib.h>
 #include <stdio.h>
+#include <unistd.h>
 #include <string.h>
 #include <errno.h>
 #include <time.h>
@@ -156,15 +157,14 @@
                    "music_offload_wma_encode_option2=%d;" \
                    "music_offload_wma_format_tag=%d;"
 
-void stop_signal_handler(int signal)
+void stop_signal_handler(int signal __unused)
 {
    stop_playback = true;
 }
 
 void read_kvpair(char *kvpair, char* kvpair_values, int filetype)
 {
-    char *kvpair_type;
-    char param[100];
+    char *kvpair_type = NULL;
     char *token = NULL;
     int value = 0;
     int len = 0;
@@ -291,6 +291,7 @@
         }
         fprintf(log_file, "pcm data saved to file %s", params->acp.file_name);
     }
+    return 0;
 }
 
 int write_to_hal(qahw_stream_handle_t* out_handle, char *data,
@@ -636,7 +637,7 @@
     FILE *file_stream = NULL;
     char header[44] = {0};
     char* filename = nullptr;
-    qahw_module_handle_t *qahw_mod_handle;
+    qahw_module_handle_t *qahw_mod_handle = NULL;
     const char *mod_name = "audio.primary";
     qahw_stream_handle_t* out_handle = nullptr;
     int rc = 0;