X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Foutput%2Fanalog.c;h=cd1764b842fd7c23d0e8fd2a91e3aaf762a3160c;hb=68fefbd75c6fd7a27b96c7a979870547fb7ad5ff;hp=5e2b7cd527b6ce0c60c7b1f3bafbb44e60d862ed;hpb=962172e4950f3fbc42d5a79cdf63dc179d7513be;p=libsigrok.git diff --git a/src/output/analog.c b/src/output/analog.c index 5e2b7cd5..cd1764b8 100644 --- a/src/output/analog.c +++ b/src/output/analog.c @@ -79,7 +79,7 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p GSList *l; float *fdata; unsigned int i; - int num_channels, c, ret, digits; + int num_channels, c, ret, digits, actual_digits; char *number, *suffix; *out = NULL; @@ -113,14 +113,18 @@ 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; } + gboolean si_friendly = sr_analog_si_prefix_friendly(analog->meaning->unit); sr_analog_unit_to_string(analog, &suffix); for (i = 0; i < analog->num_samples; i++) { for (l = analog->meaning->channels, c = 0; l; l = l->next, c++) { float value = fdata[i * num_channels + c]; - const char *prefix = sr_analog_si_prefix(&value, &digits); + const char *prefix = ""; + actual_digits = digits; + if (si_friendly) + prefix = sr_analog_si_prefix(&value, &actual_digits); ch = l->data; g_string_append_printf(*out, "%s: ", ch->name); - number = g_strdup_printf("%.*f", MAX(digits, 0), value); + number = g_strdup_printf("%.*f", MAX(actual_digits, 0), value); g_string_append(*out, number); g_free(number); g_string_append(*out, " ");