From 3a3439450864c8706e4e20d392fd43ecf935153f Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 12 Oct 2010 13:29:05 +0200 Subject: [PATCH] ucm: unify snd_use_case_geti(), add snd_use_case_card_list() template Signed-off-by: Jaroslav Kysela --- include/use-case.h | 23 ++++++++++++++++++++--- 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/ - return status for given device * _modstatus/ - 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); -- 2.11.0