From 0c02a4e3d23c7b5d03215f1bfaba9f70ed11e9b7 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 18 Aug 2008 12:39:26 +0200 Subject: [PATCH] alsactl init - add ATTR{dBmin} and ATTR{dBmax} Signed-off-by: Jaroslav Kysela --- alsactl/alsactl_init.xml | 12 ++++++++++++ alsactl/init/test | 20 ++++++++++++++++++++ alsactl/init_parse.c | 22 +++++++++++++++++++++- 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/alsactl/alsactl_init.xml b/alsactl/alsactl_init.xml index f0ed9a4..c902fc8 100644 --- a/alsactl/alsactl_init.xml +++ b/alsactl/alsactl_init.xml @@ -239,6 +239,18 @@ Value range - step value + + + + Value range - minimum dB value + + + + + + Value range - maximum dB value + + diff --git a/alsactl/init/test b/alsactl/init/test index d1f4f11..024787d 100644 --- a/alsactl/init/test +++ b/alsactl/init/test @@ -76,6 +76,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" CTL{search}="mixer", CTL{name}="*", PROGRAM!="__ctl_search 1", GOTO="skip_first_ten_search" @@ -93,6 +95,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" CTL{search}="mixer", CTL{name}="*", PROGRAM!="__ctl_search 2", GOTO="skip_first_ten_search" @@ -110,6 +114,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" LABEL="skip_first_ten_search" @@ -127,6 +133,8 @@ PRINT=" CTL{owner}=\"$ctl{owner}\"\n" PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" @@ -146,6 +154,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" LABEL="skip_first_ten_search" @@ -164,6 +174,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" LABEL="skip_first_ten_search" @@ -182,6 +194,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" LABEL="skip_first_ten_search" @@ -200,6 +214,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" LABEL="skip_first_ten_search" @@ -218,6 +234,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" LABEL="skip_first_ten_search" @@ -236,6 +254,8 @@ PRINT=" CTL{count}=\"$ctl{count}\"\n" PRINT=" CTL{min}=\"$ctl{min}\"\n" PRINT=" CTL{max}=\"$ctl{max}\"\n" PRINT=" CTL{step}=\"$ctl{step}\"\n" +PRINT=" CTL{dBmin}=\"$ctl{dBmin}\"\n" +PRINT=" CTL{dBmax}=\"$ctl{dBmax}\"\n" PRINT=" CTL{items}=\"$ctl{items}\"\n" PRINT=" CTL{value}=\"$ctl{value}\"\n" LABEL="skip_first_ten_search" diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c index 08af01c..b93cf78 100644 --- a/alsactl/init_parse.c +++ b/alsactl/init_parse.c @@ -478,7 +478,7 @@ static const char *elemid_get(struct space *space, const char *attr) { long long val; snd_ctl_elem_type_t type; - static char res[16]; + static char res[32]; if (strncasecmp(attr, "numid", 5) == 0) { val = snd_ctl_elem_id_get_numid(space->ctl_id); @@ -597,6 +597,26 @@ static const char *elemid_get(struct space *space, const char *attr) return NULL; return get_ctl_value(space); } + if (strncasecmp(attr, "dBmin", 5) == 0) { + long min, max; + if (check_id_changed(space, 1)) + return NULL; + if (snd_ctl_get_dB_range(snd_hctl_ctl(space->ctl_handle), space->ctl_id, &min, &max) < 0) + goto empty; + val = min; +dbvalue: + sprintf(res, "%li.%02idB", (long)(val / 100), (int)abs(val % 100)); + return res; + } + if (strncasecmp(attr, "dBmax", 5) == 0) { + long min, max; + if (check_id_changed(space, 1)) + return NULL; + if (snd_ctl_get_dB_range(snd_hctl_ctl(space->ctl_handle), space->ctl_id, &min, &max) < 0) + goto empty; + val = max; + goto dbvalue; + } Perror(space, "unknown ctl{} attribute '%s'", attr); return NULL; value: -- 2.47.1