hal: Add support to set SVA execution mode
Pass SVA execution mode to sound trigger HAL received
as part of setparameters.
Add support for getparameters in soundtrigger and return
SVA execution mode status from sound trigger HAL when
queried.
Change-Id: I63c482920ee778beb806e3138c93e005e15ca897
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index f159083..d2e5434 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -813,6 +813,7 @@
audio_extn_hpx_get_parameters(query, reply);
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);
if (adev->offload_effects_get_parameters != NULL)
adev->offload_effects_get_parameters(query, reply);
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index 8bf165a..9a2f825 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -302,6 +302,7 @@
#define audio_extn_sound_trigger_update_device_status(snd_dev, event) (0)
#define audio_extn_sound_trigger_update_stream_status(uc_info, event) (0)
#define audio_extn_sound_trigger_set_parameters(adev, parms) (0)
+#define audio_extn_sound_trigger_get_parameters(adev, query, reply) (0)
#define audio_extn_sound_trigger_check_and_get_session(in) (0)
#define audio_extn_sound_trigger_stop_lab(in) (0)
#define audio_extn_sound_trigger_read(in, buffer, bytes) (0)
@@ -327,6 +328,8 @@
void audio_extn_sound_trigger_stop_lab(struct stream_in *in);
int audio_extn_sound_trigger_read(struct stream_in *in, void *buffer,
size_t bytes);
+void audio_extn_sound_trigger_get_parameters(const struct audio_device *adev,
+ struct str_parms *query, struct str_parms *reply);
#endif
#ifndef AUXPCM_BT_ENABLED
diff --git a/hal/audio_extn/soundtrigger.c b/hal/audio_extn/soundtrigger.c
index aff7532..1f9c3a9 100644
--- a/hal/audio_extn/soundtrigger.c
+++ b/hal/audio_extn/soundtrigger.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2014, 2016 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2014, 2016-2017 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -361,6 +361,27 @@
event.u.value = val;
st_dev->st_callback(AUDIO_EVENT_DEVICE_DISCONNECT, &event);
}
+
+ ret = str_parms_get_str(params, "SVA_EXEC_MODE", value, sizeof(value));
+ if (ret >= 0) {
+ strlcpy(event.u.str_value, value, sizeof(event.u.str_value));
+ st_dev->st_callback(AUDIO_EVENT_SVA_EXEC_MODE, &event);
+ }
+}
+
+void audio_extn_sound_trigger_get_parameters(const struct audio_device *adev __unused,
+ struct str_parms *query, struct str_parms *reply)
+{
+ audio_event_info_t event;
+ int ret;
+ char value[32];
+
+ ret = str_parms_get_str(query, "SVA_EXEC_MODE_STATUS", value,
+ sizeof(value));
+ if (ret >= 0) {
+ st_dev->st_callback(AUDIO_EVENT_SVA_EXEC_MODE_STATUS, &event);
+ str_parms_add_int(reply, "SVA_EXEC_MODE_STATUS", event.u.value);
+ }
}
int audio_extn_sound_trigger_init(struct audio_device *adev)