diff options
author | Jaroslav Kysela <perex@perex.cz> | 2010-10-12 13:29:05 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2010-10-12 13:29:05 +0200 |
commit | 3a3439450864c8706e4e20d392fd43ecf935153f (patch) | |
tree | 5893d46c2048c1212b868e5da1cf41bb19c3d034 | |
parent | 0ae6c43b8615b7df466408e3e041744b788e1fb8 (diff) | |
download | alsa-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.h | 23 | ||||
-rw-r--r-- | src/ucm/main.c | 19 |
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); |