[alsa-devel] [PATCHv4] alsa-lib: ucm: allow values to be read from devices

Margarita Olaya magi at slimlogic.co.uk
Fri Mar 18 18:26:22 CET 2011


This allows devices value to be read using the get_value().
Also fix a little formatting.

Signed-off-by: Margarita Olaya Cabrera <magi at slimlogic.co.uk>
Acked-by: Liam Girdwood <lrg at ti.com>
---
 src/ucm/main.c |   21 ++++++++++++++-------
 1 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/src/ucm/main.c b/src/ucm/main.c
index 42fd373..88f8bf6 100644
--- a/src/ucm/main.c
+++ b/src/ucm/main.c
@@ -1059,24 +1059,31 @@ static int get_value3(const char **value,
  * \param uc_mgr Use case manager
  * \param identifier Value identifier (string)
  * \param value Returned value string
- * \param modifier modifier name (string)
+ * \param item Modifier or Device name (string)
  * \return Zero on success (value is filled), otherwise a negative error code
  */
 static int get_value(snd_use_case_mgr_t *uc_mgr,
-                     const char *identifier,
-                     const char **value,
-                     const char *modifier)
+			const char *identifier,
+			const char **value,
+			const char *item)
 {
-        struct use_case_modifier *mod;
+	struct use_case_modifier *mod;
+	struct use_case_device *dev;
 	int err;

-	if (modifier != NULL) {
-	        mod = find_modifier(uc_mgr, modifier);
+	if (item != NULL) {
+		mod = find_modifier(uc_mgr, item);
 		if (mod != NULL) {
 			err = get_value1(value, &mod->value_list, identifier);
 			if (err >= 0 || err != -ENOENT)
 				return err;
 		}
+		dev = find_device(uc_mgr->active_verb, item);
+		if (dev != NULL) {
+			err = get_value1(value, &dev->value_list, identifier);
+			if (err >= 0 || err != -ENOENT)
+				return err;
+		}
 	}
 	err = get_value1(value, &uc_mgr->active_verb->value_list, identifier);
 	if (err >= 0 || err != -ENOENT)
-- 
1.7.0.4


More information about the Alsa-devel mailing list