[Sound-open-firmware] [RFC PATCH 2/6] tone: add command handler to return tone state and compute tone sample rate

Ranjani Sridharan ranjani.sridharan at linux.intel.com
Thu Jun 14 05:29:53 CEST 2018


This patch adds the get() handler to respond to requests for the current
tone state.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
---
 src/audio/tone.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/src/audio/tone.c b/src/audio/tone.c
index eee6091..d02e35f 100644
--- a/src/audio/tone.c
+++ b/src/audio/tone.c
@@ -462,6 +462,25 @@ static int tone_params(struct comp_dev *dev)
 	return 0;
 }
 
+static int tone_cmd_get_value(struct comp_dev *dev,
+			      struct sof_ipc_ctrl_data *cdata)
+{
+	struct comp_data *cd = comp_get_drvdata(dev);
+	int j;
+
+	trace_tone("mgt");
+
+	if (cdata->cmd == SOF_CTRL_CMD_SWITCH) {
+		for (j = 0; j < cdata->num_elems; j++) {
+			cdata->chanv[j].channel = j;
+			cdata->chanv[j].value = !cd->sg[j].mute;
+			trace_value(j);
+			trace_value(cd->sg[j].mute);
+		}
+	}
+	return 0;
+}
+
 static int tone_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cdata)
 {
 	struct comp_data *cd = comp_get_drvdata(dev);
@@ -480,6 +499,7 @@ static int tone_cmd_set_value(struct comp_dev *dev, struct sof_ipc_ctrl_data *cd
 				trace_tone_error("che");
 				return -EINVAL;
 			}
+
 			if (val)
 				tonegen_unmute(&cd->sg[ch]);
 			else
@@ -583,6 +603,9 @@ static int tone_cmd(struct comp_dev *dev, int cmd, void *data)
 	case COMP_CMD_SET_VALUE:
 		ret = tone_cmd_set_value(dev, cdata);
 		break;
+	case COMP_CMD_GET_VALUE:
+		ret = tone_cmd_get_value(dev, cdata);
+		break;
 	}
 
 	return ret;
-- 
2.17.1



More information about the Sound-open-firmware mailing list