fm: Add getparameter to check FM status

 -FM audio is not working after FM app is killed and
  launched back.
 -add getparamter to let app know FM status and start/stop it.

Change-Id: I295fad5baee838f32d741cdfe874576d55b66957
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index ae1fef7..e03230a 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -971,6 +971,7 @@
     audio_extn_source_track_get_parameters(adev, query, reply);
     audio_extn_fbsp_get_parameters(query, reply);
     audio_extn_sound_trigger_get_parameters(adev, query, reply);
+    audio_extn_fm_get_parameters(query, reply);
     if (adev->offload_effects_get_parameters != NULL)
         adev->offload_effects_get_parameters(query, reply);
     audio_extn_ext_hw_plugin_get_parameters(adev->ext_hw_plugin, query, reply);
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index b2b0e73..6fa6b78 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -963,9 +963,11 @@
 
 #ifndef FM_POWER_OPT
 #define audio_extn_fm_set_parameters(adev, parms) (0)
+#define audio_extn_fm_get_parameters(query, reply) (0)
 #else
 void audio_extn_fm_set_parameters(struct audio_device *adev,
                                    struct str_parms *parms);
+void audio_extn_fm_get_parameters(struct str_parms *query, struct str_parms *reply);
 #endif
 
 #ifndef APTX_DECODER_ENABLED
diff --git a/hal/audio_extn/fm.c b/hal/audio_extn/fm.c
index b635994..0a048cd 100644
--- a/hal/audio_extn/fm.c
+++ b/hal/audio_extn/fm.c
@@ -45,6 +45,7 @@
 #define AUDIO_PARAMETER_KEY_FM_MUTE "fm_mute"
 #define AUDIO_PARAMETER_KEY_FM_RESTORE_VOLUME "fm_restore_volume"
 #define AUDIO_PARAMETER_KEY_FM_ROUTING "fm_routing"
+#define AUDIO_PARAMETER_KEY_FM_STATUS "fm_status"
 #define FM_LOOPBACK_DRAIN_TIME_MS 2
 
 static struct pcm_config pcm_config_fm = {
@@ -252,6 +253,19 @@
     return ret;
 }
 
+void audio_extn_fm_get_parameters(struct str_parms *query, struct str_parms *reply)
+{
+    int ret, val;
+    char value[32]={0};
+
+    ALOGV("%s: enter", __func__);
+    ret = str_parms_get_str(query, AUDIO_PARAMETER_KEY_FM_STATUS, value, sizeof(value));
+    if (ret >= 0) {
+        val = (fmmod.is_fm_running ? 1: 0);
+        str_parms_add_int(reply, AUDIO_PARAMETER_KEY_FM_STATUS, val);
+    }
+}
+
 void audio_extn_fm_set_parameters(struct audio_device *adev,
                                   struct str_parms *parms)
 {