[alsa-devel] ALSA UCM

Jaroslav Kysela perex at perex.cz
Wed Nov 10 16:11:02 CET 2010


On Tue, 9 Nov 2010, abraham duenas wrote:

> Hello, I think this is missing:
>
> diff --git a/src/ucm/main.c b/src/ucm/main.c
> index e233f41..a73595d 100644
> --- a/src/ucm/main.c
> +++ b/src/ucm/main.c
> @@ -774,9 +774,9 @@ int snd_use_case_get_list(snd_use_case_mgr_t *uc_mgr,
>        pthread_mutex_lock(&uc_mgr->mutex);
>        if (strcmp(identifier, "_verbs") == 0)
>                err = get_verb_list(uc_mgr, list);
> -        else if (strcmp(identifier, "_enadevs"))
> +        else if (strcmp(identifier, "_enadevs") == 0)
>                err = get_enabled_device_list(uc_mgr, list);
> -        else if (strcmp(identifier, "_enamods"))
> +        else if (strcmp(identifier, "_enamods") == 0)
>                err = get_enabled_modifier_list(uc_mgr, list);
>         else {
>                 str1 = strchr(identifier, '/');

I added this fix to my ucm tree. Thaks.

> And changing the "[" for a "{" in the SectionVerb and SectionDevice like this:
> SectionVerb {
>        EnableSequence {
>                cset "name='DL1 Media Playback Volume' 90"
>                cset "name='DL2 Media Playback Volume' 90"
>        }
> ..........
> SectionDevice."Headset".0 {
>        Comment "SDP4430 3.5mm Headset"
>
>        EnableSequence {
>                cset "name='DL1 Mixer Multimedia' 0"
>                cset "name='Sidetone Mixer Playback' 1"
>                cset "name='HS Right Playback' 0"
>                cset "name='HS Left Playback' 0"
>                cset "name='MUX_UL11' 9"
>                cset "name='MUX_UL10' 10"
>        }
> ...........
>
> I'm getting the expected error ONLY for the last element: listed in
> the EnableSequence field:
> e.g:
> ALSA lib main.c:137:(execute_sequence) cset not yet implemented:
> 'name='DL2 Media Playback Volume' 90'
> ALSA lib main.c:137:(execute_sequence) cset not yet implemented:
> 'name='MUX_UL10' 10'
>
> i'll keep on digging as time permits :)

I fixed the sequence parser. It should work now ok. So the only missing 
part is to add the 'snd_ctl_*' backend for cset commands. The parsing 
functions for ctl strings are available in my ucm branch now:

char *snd_ctl_ascii_elem_id_get(snd_ctl_elem_id_t *id);
int snd_ctl_ascii_elem_id_parse(snd_ctl_elem_id_t *dst, const char *str);
int snd_ctl_ascii_value_parse(snd_ctl_t *handle,
                               snd_ctl_elem_value_t *dst,
                               snd_ctl_elem_info_t *info,
                               const char *value);

 						Jaroslav

-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.



More information about the Alsa-devel mailing list