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 f01bff1..2d2853d 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 9eb3e9e..ce04d85 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -976,9 +976,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 49b36c6..f0b8b9a 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 = {
@@ -251,6 +252,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)
{