From cd4b07ffbdd4612989e63800528b18efe0039ad9 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Tue, 5 Nov 2019 20:04:54 +0100 Subject: [PATCH] ucm: add snd_use_case_parse_ctl_elem_id() Signed-off-by: Jaroslav Kysela --- include/use-case.h | 11 +++++++++++ src/ucm/main.c | 23 +++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/use-case.h b/include/use-case.h index 37d0572a..109502aa 100644 --- a/include/use-case.h +++ b/include/use-case.h @@ -439,6 +439,17 @@ static __inline__ int snd_use_case_verb_list(snd_use_case_mgr_t *uc_mgr, return snd_use_case_get_list(uc_mgr, "_verbs", list); } +/** + * \brief Parse control element identifier + * \param elem_id Element identifier + * \param ucm_id Use case identifier + * \param value String value to be parsed + * \return Zero if success, otherwise a negative error code + */ +int snd_use_case_parse_ctl_elem_id(snd_ctl_elem_id_t *dst, + const char *ucm_id, char *value); + + /** * \} */ diff --git a/src/ucm/main.c b/src/ucm/main.c index 25c02e1e..773c7258 100644 --- a/src/ucm/main.c +++ b/src/ucm/main.c @@ -1920,3 +1920,26 @@ int snd_use_case_set(snd_use_case_mgr_t *uc_mgr, pthread_mutex_unlock(&uc_mgr->mutex); return err; } + +/** + * \brief Parse control element identifier + * \param elem_id Element identifier + * \param ucm_id Use case identifier + * \param value String value to be parsed + * \return Zero if success, otherwise a negative error code + */ +int snd_use_case_parse_ctl_elem_id(snd_ctl_elem_id_t *dst, + const char *ucm_id, char *value) +{ + snd_ctl_elem_iface_t iface; + + snd_ctl_elem_id_clear(dst); + if (strcasestr(ucm_id, "name=")) + return __snd_ctl_ascii_elem_id_parse(dst, value, NULL); + iface = SND_CTL_ELEM_IFACE_MIXER; + if (strcasecmp(ucm_id, "JackControl") == 0) + iface = SND_CTL_ELEM_IFACE_CARD; + snd_ctl_elem_id_set_interface(dst, iface); + snd_ctl_elem_id_set_name(dst, value); + return 0; +} -- 2.47.1