X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Foutput%2Fanalog.c;h=406d8c6e593c0f8b3f6c0bb2a1707963f7013638;hb=55462b8ba9f48931de9b9a7bfbc182a1d113b3b5;hp=16ae0bd32f620453ce1bd85a397fb13551bea1be;hpb=820c48f8c294d29660bfb2d081c575e138568909;p=libsigrok.git diff --git a/src/output/analog.c b/src/output/analog.c index 16ae0bd3..406d8c6e 100644 --- a/src/output/analog.c +++ b/src/output/analog.c @@ -47,7 +47,7 @@ static int init(struct sr_output *o, GHashTable *options) if (!o || !o->sdi) return SR_ERR_ARG; - o->priv = ctx = g_try_malloc0(sizeof(struct context)); + o->priv = ctx = g_malloc0(sizeof(struct context)); s = g_variant_get_string(g_hash_table_lookup(options, "digits"), NULL); if (!strcmp(s, "all")) ctx->digits = DIGITS_ALL; @@ -173,7 +173,7 @@ static void fancyprint(int unit, int mqflags, float value, GString *out) g_string_append(out, " %oA"); break; case SR_UNIT_CONCENTRATION: - g_string_append_printf(out, "%f ppm", value * 1000000); + g_string_append_printf(out, "%f ppm", value * (1000 * 1000)); break; case SR_UNIT_REVOLUTIONS_PER_MINUTE: si_printf(value, out, "RPM"); @@ -241,7 +241,7 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p float *fdata; unsigned int i; int num_channels, c, ret, si, digits; - char number[32], suffix[32]; + char *number, *suffix; *out = NULL; if (!o || !o->sdi) @@ -285,20 +285,22 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p /* TODO we don't know how to print by number of bits yet. */ digits = 6; } - sr_analog_unit_to_string(analog2, suffix, sizeof(suffix)); + sr_analog_unit_to_string(analog2, &suffix); num_channels = g_slist_length(analog2->meaning->channels); for (i = 0; i < analog2->num_samples; i++) { for (l = analog2->meaning->channels, c = 0; l; l = l->next, c++) { ch = l->data; g_string_append_printf(*out, "%s: ", ch->name); sr_analog_float_to_string(fdata[i * num_channels + c], - digits, number, sizeof(number)); + digits, &number); g_string_append(*out, number); + g_free(number); g_string_append(*out, " "); g_string_append(*out, suffix); g_string_append(*out, "\n"); } } + g_free(suffix); break; } @@ -342,6 +344,7 @@ SR_PRIV struct sr_output_module output_analog = { .id = "analog", .name = "Analog", .desc = "Analog data and types", + .exts = NULL, .options = get_options, .init = init, .receive = receive,