From 17edfc4c20cfd855d68e5b0ef044da2e7509f3f3 Mon Sep 17 00:00:00 2001 From: Fulup Ar Foll Date: Mon, 30 Apr 2018 23:30:10 +0200 Subject: On going effort, now load and support LUA+C plugin --- plugins/alsa/alsa-tools-high.c | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 plugins/alsa/alsa-tools-high.c (limited to 'plugins/alsa/alsa-tools-high.c') diff --git a/plugins/alsa/alsa-tools-high.c b/plugins/alsa/alsa-tools-high.c new file mode 100644 index 0000000..a86ba2e --- /dev/null +++ b/plugins/alsa/alsa-tools-high.c @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2018 "IoT.bzh" + * Author Fulup Ar Foll + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#define _GNU_SOURCE // needed for vasprintf + + +#include "alsa-softmixer.h" + + +PUBLIC void AlsaDumpConfig(CtlSourceT *source, snd_config_t *config, int indent) { + snd_config_iterator_t it, next; + + // hugly hack to get minimalist indentation + char *pretty = alloca(indent + 1); + for (int idx = 0; idx < indent; idx++) pretty[idx] = '-'; + pretty[indent] = '\0'; + + snd_config_for_each(it, next, config) { + snd_config_t *node = snd_config_iterator_entry(it); + const char *key; + + // ignore comment en empty lines + if (snd_config_get_id(node, &key) < 0) continue; + + switch (snd_config_get_type(node)) { + long valueI; + const char *valueS; + + case SND_CONFIG_TYPE_INTEGER: + snd_config_get_integer(node, &valueI); + AFB_ApiNotice(source->api, "DumpAlsaConfig: %s %s: %d (int)", pretty, key, (int) valueI); + break; + + case SND_CONFIG_TYPE_STRING: + snd_config_get_string(node, &valueS); + AFB_ApiNotice(source->api, "DumpAlsaConfig: %s %s: %s (str)", pretty, key, valueS); + break; + + case SND_CONFIG_TYPE_COMPOUND: + AFB_ApiNotice(source->api, "DumpAlsaConfig: %s %s { ", pretty, key); + AlsaDumpConfig(source, node, indent + 2); + AFB_ApiNotice(source->api, "DumpAlsaConfig: %s } ", pretty); + break; + + default: + snd_config_get_string(node, &valueS); + AFB_ApiNotice(source->api, "DumpAlsaConfig: %s: key=%s unknown=%s", pretty, key, valueS); + break; + } + } +} -- cgit 1.2.3-korg