audio: hal: Add property to disable keep alive

-This property needs to be enabled for measuring KPI on hdmi device
 otherwise KPI values are not correct as keep alive thread insterts
 silence.

Change-Id: I25198d29962b0b85d38cbfa03b15d6189a080cbf
diff --git a/hal/audio_extn/keep_alive.c b/hal/audio_extn/keep_alive.c
index 8bd1da1..3e9a91c 100644
--- a/hal/audio_extn/keep_alive.c
+++ b/hal/audio_extn/keep_alive.c
@@ -49,6 +49,7 @@
     STATE_DEINIT = -1,
     STATE_IDLE,
     STATE_ACTIVE,
+    STATE_DISABLED,
 } state_t;
 
 typedef enum {
@@ -93,6 +94,13 @@
     ka.userdata = adev;
     ka.state = STATE_IDLE;
     ka.pcm = NULL;
+
+    if (property_get_bool("audio.keep_alive.disabled", false)) {
+        ALOGE("keep alive disabled");
+        ka.state = STATE_DISABLED;
+        return;
+    }
+
     pthread_mutex_init(&ka.lock, (const pthread_mutexattr_t *) NULL);
     pthread_cond_init(&ka.cond, (const pthread_condattr_t *) NULL);
     pthread_cond_init(&ka.wake_up_cond, (const pthread_condattr_t *) NULL);
@@ -108,7 +116,7 @@
 
 static void send_cmd_l(request_t r)
 {
-    if (ka.state == STATE_DEINIT)
+    if (ka.state == STATE_DEINIT || ka.state == STATE_DISABLED)
         return;
 
     struct keep_alive_cmd *cmd =
@@ -193,6 +201,9 @@
     struct audio_usecase *usecase;
     int32_t sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE;
 
+    if (ka.state == STATE_DISABLED)
+        return;
+
     pthread_mutex_lock(&ka.lock);
 
     if (ka.state == STATE_DEINIT) {
@@ -317,6 +328,9 @@
 {
     struct audio_device * adev = (struct audio_device *)ka.userdata;
 
+    if (ka.state == STATE_DISABLED)
+        return;
+
     pthread_mutex_lock(&ka.lock);
 
     if ((ka.state == STATE_DEINIT) || (ka.state == STATE_IDLE))
@@ -359,6 +373,9 @@
     char value[32];
     int ret;
 
+    if (ka.state == STATE_DISABLED)
+        return;
+
     ret = str_parms_get_str(parms, AUDIO_PARAMETER_DEVICE_CONNECT, value, sizeof(value));
     if (ret >= 0) {
         int val = atoi(value);