diff options
author | ronan Le Martret <ronan.lemartret@iot.bzh> | 2017-11-30 14:19:39 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@automotivelinux.org> | 2017-11-30 14:19:39 +0000 |
commit | 9938a19818ad6fd555b4c46f405141ae2059f9f1 (patch) | |
tree | 136ca573d6dd60d72cb6427220d0643198e0d2f0 /alsa-binding | |
parent | 2a8b7aeed1b5217a608032ce1afabadd1166e7c3 (diff) | |
parent | 37bd97c96ac79206518e95abc34933bd8b0f6369 (diff) |
Merge "Change initial volume to be in % in place of absolute values"
Diffstat (limited to 'alsa-binding')
-rw-r--r-- | alsa-binding/Alsa-AddCtl.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/alsa-binding/Alsa-AddCtl.c b/alsa-binding/Alsa-AddCtl.c index 82a6dac..a1da706 100644 --- a/alsa-binding/Alsa-AddCtl.c +++ b/alsa-binding/Alsa-AddCtl.c @@ -25,6 +25,7 @@ #include <alsa/sound/tlv.h> #include <systemd/sd-event.h> #include <sys/ioctl.h> +#include <math.h> #include "Alsa-ApiHat.h" @@ -299,7 +300,17 @@ UpdateDefaultVal: // Set Value to default snd_ctl_elem_value_alloca(&elemValue); for (int idx = 0; idx < snd_ctl_elem_info_get_count(elemInfo); idx++) { - snd_ctl_elem_value_set_integer(elemValue, idx, ctlValue); + + // initial default value should be a percentage for integer + if (snd_ctl_elem_info_get_type(elemInfo) == SND_CTL_ELEM_TYPE_INTEGER) { + double min = (double)snd_ctl_elem_info_get_min(elemInfo); + double max = (double)snd_ctl_elem_info_get_max(elemInfo); + double normValue = ceil((ctlValue) * (max - min) * 0.01 + min); + snd_ctl_elem_value_set_integer(elemValue, idx, (int)normValue); + + } else { + snd_ctl_elem_value_set_integer(elemValue, idx, ctlValue); + } } // write default values in newly created control |