X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Foutput%2Fwav.c;h=e01f3afdea53bb9fc4dfdc7d3d71a934eea76268;hb=75cb428f9f5f11aaa42499e45679b12cc806b1ce;hp=9bf9843d18cd9333fbf01e26698a68c8f1b8da7d;hpb=950043c30ecd2a0d1d15a14f0d07f29b06157fc6;p=libsigrok.git diff --git a/src/output/wav.c b/src/output/wav.c index 9bf9843d..e01f3afd 100644 --- a/src/output/wav.c +++ b/src/output/wav.c @@ -91,28 +91,10 @@ static int init(struct sr_output *o, GHashTable *options) struct out_context *outc; struct sr_channel *ch; GSList *l; - GHashTableIter iter; - gpointer key, value; outc = g_malloc0(sizeof(struct out_context)); o->priv = outc; - - outc->scale = 0.0; - if (options) { - g_hash_table_iter_init(&iter, options); - while (g_hash_table_iter_next(&iter, &key, &value)) { - if (!strcmp(key, "scale")) { - if (!g_variant_is_of_type(value, G_VARIANT_TYPE_DOUBLE)) { - sr_err("Invalid type for 'scale' option."); - return SR_ERR_ARG; - } - outc->scale = g_variant_get_double(value); - } else { - sr_err("Unknown option '%s'.", key); - return SR_ERR_ARG; - } - } - } + outc->scale = g_variant_get_double(g_hash_table_lookup(options, "scale")); for (l = o->sdi->channels; l; l = l->next) { ch = l->data; @@ -247,6 +229,7 @@ static int check_chanbuf_size(const struct sr_output *o) return size; } + static int receive(const struct sr_output *o, const struct sr_datafeed_packet *packet, GString **out) { @@ -353,15 +336,13 @@ static int cleanup(struct sr_output *o) static struct sr_option options[] = { { "scale", "Scale", "Scale values by factor", NULL, NULL }, - { 0 } + ALL_ZERO }; -static struct sr_option *get_options(void) +static const struct sr_option *get_options(void) { - if (!options[0].def) { - options[0].def = g_variant_new_double(0); - g_variant_ref_sink(options[0].def); - } + if (!options[0].def) + options[0].def = g_variant_ref_sink(g_variant_new_double(0.0)); return options; }