summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2010-10-12 13:29:05 +0200
committerJaroslav Kysela <perex@perex.cz>2010-10-12 13:29:05 +0200
commit3a3439450864c8706e4e20d392fd43ecf935153f (patch)
tree5893d46c2048c1212b868e5da1cf41bb19c3d034
parent0ae6c43b8615b7df466408e3e041744b788e1fb8 (diff)
downloadalsa-lib-3a3439450864c8706e4e20d392fd43ecf935153f.tar.gz
ucm: unify snd_use_case_geti(), add snd_use_case_card_list() template
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--include/use-case.h23
-rw-r--r--src/ucm/main.c19
2 files changed, 34 insertions, 8 deletions
diff --git a/include/use-case.h b/include/use-case.h
index dffcd346..d5ca361b 100644
--- a/include/use-case.h
+++ b/include/use-case.h
@@ -245,14 +245,16 @@ int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
* \brief Get current - integer
* \param uc_mgr Use case manager
* \param identifier
- * \return Value if success, otherwise a negative error code
+ * \param value result
+ * \return Zero if success, otherwise a negative error code
*
* Known identifiers:
* _devstatus/<device> - return status for given device
* _modstatus/<modifier> - return status for given modifier
*/
-long snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
- const char *identifier);
+int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
+ const char *identifier,
+ long *value);
/**
* \brief Set new
@@ -310,6 +312,21 @@ int snd_use_case_mgr_close(snd_use_case_mgr_t *uc_mgr);
*/
int snd_use_case_mgr_reset(snd_use_case_mgr_t *uc_mgr);
+/*
+ * helper functions
+ */
+
+/**
+ * \brief Obtain a list of cards
+ * \param uc_mgr Use case manager (may be NULL - card list)
+ * \param list Returned allocated list
+ * \return Number of list entries if success, otherwise a negative error code
+ */
+static inline int snd_use_case_card_list(const char **list[])
+{
+ return snd_use_case_get_list(NULL, NULL, list);
+}
+
/**
* \}
*/
diff --git a/src/ucm/main.c b/src/ucm/main.c
index e06e3fb7..88389764 100644
--- a/src/ucm/main.c
+++ b/src/ucm/main.c
@@ -944,8 +944,9 @@ long modifier_status(snd_use_case_mgr_t *uc_mgr,
* \param identifier
* \return Value if success, otherwise a negative error code
*/
-long snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
- const char *identifier)
+int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
+ const char *identifier,
+ long *value)
{
char *str, *str1;
long err;
@@ -964,11 +965,19 @@ long snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
} else {
str = NULL;
}
- if (check_identifier(identifier, "_devstatus"))
+ if (check_identifier(identifier, "_devstatus")) {
err = device_status(uc_mgr, str);
- else if (check_identifier(identifier, "_modstatus"))
+ if (err >= 0) {
+ *value = err;
+ err = 0;
+ }
+ } else if (check_identifier(identifier, "_modstatus")) {
err = modifier_status(uc_mgr, str);
- else
+ if (err >= 0) {
+ *value = err;
+ err = 0;
+ }
+ } else
err = -EINVAL;
if (str)
free(str);