From 54281f481fe0549ff80829476674aa994bfff8bd Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Wed, 1 Oct 2014 09:01:01 +0200 Subject: Add enum swicth functions. Bump version to 1.0.1 --- src/mixer.cc | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/mixer.cc') diff --git a/src/mixer.cc b/src/mixer.cc index 5a6efb7..00cf156 100644 --- a/src/mixer.cc +++ b/src/mixer.cc @@ -161,6 +161,22 @@ bool Mixer::isEnum() void Mixer::setEnumValue(std::string value) { if(!isEnum()) return; + + int i, items; + unsigned int idx; + char itemname[40]; + + // TODO: Alaways MONO for enums? + snd_mixer_selem_channel_id_t channel_id = SND_MIXER_SCHN_MONO; + + items = snd_mixer_selem_get_enum_items(elem); + for (i = 0; i < items; i++) { + snd_mixer_selem_get_enum_item_name(elem, i, sizeof(itemname) - 1, itemname); + if(value == itemname) { + snd_mixer_selem_set_enum_item(elem, channel_id, i); + return; + } + } } std::string Mixer::enumValue() @@ -170,9 +186,11 @@ std::string Mixer::enumValue() int i; unsigned int idx; char itemname[40]; - for(i = 0; !snd_mixer_selem_get_enum_item(elem, - (snd_mixer_selem_channel_id_t)i, - &idx); i++) { + + // TODO: Alaways MONO for enums? + snd_mixer_selem_channel_id_t channel_id = SND_MIXER_SCHN_MONO; + + if(!snd_mixer_selem_get_enum_item(elem, channel_id, &idx)) { snd_mixer_selem_get_enum_item_name(elem, idx, sizeof(itemname) - 1, itemname); return itemname; @@ -190,8 +208,7 @@ std::vector Mixer::enumValues() char itemname[40]; items = snd_mixer_selem_get_enum_items(elem); for (i = 0; i < items; i++) { - snd_mixer_selem_get_enum_item_name(elem, (snd_mixer_selem_channel_id_t)i, - sizeof(itemname) - 1, itemname); + snd_mixer_selem_get_enum_item_name(elem, i, sizeof(itemname) - 1, itemname); values.push_back(itemname); } -- cgit v1.2.3