ucm: unify snd_use_case_geti(), add snd_use_case_card_list() template

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2010-10-12 13:29:05 +02:00
parent 0ae6c43b86
commit 3a34394508
2 changed files with 34 additions and 8 deletions

View file

@ -245,14 +245,16 @@ int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
* \brief Get current - integer * \brief Get current - integer
* \param uc_mgr Use case manager * \param uc_mgr Use case manager
* \param identifier * \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: * Known identifiers:
* _devstatus/<device> - return status for given device * _devstatus/<device> - return status for given device
* _modstatus/<modifier> - return status for given modifier * _modstatus/<modifier> - return status for given modifier
*/ */
long snd_use_case_geti(snd_use_case_mgr_t *uc_mgr, int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
const char *identifier); const char *identifier,
long *value);
/** /**
* \brief Set new * \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); 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);
}
/** /**
* \} * \}
*/ */

View file

@ -944,8 +944,9 @@ long modifier_status(snd_use_case_mgr_t *uc_mgr,
* \param identifier * \param identifier
* \return Value if success, otherwise a negative error code * \return Value if success, otherwise a negative error code
*/ */
long snd_use_case_geti(snd_use_case_mgr_t *uc_mgr, int snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
const char *identifier) const char *identifier,
long *value)
{ {
char *str, *str1; char *str, *str1;
long err; long err;
@ -964,11 +965,19 @@ long snd_use_case_geti(snd_use_case_mgr_t *uc_mgr,
} else { } else {
str = NULL; str = NULL;
} }
if (check_identifier(identifier, "_devstatus")) if (check_identifier(identifier, "_devstatus")) {
err = device_status(uc_mgr, str); 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); err = modifier_status(uc_mgr, str);
else if (err >= 0) {
*value = err;
err = 0;
}
} else
err = -EINVAL; err = -EINVAL;
if (str) if (str)
free(str); free(str);