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;
/* 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 = "";
+ 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", digits,
- fdata[i * num_channels + c]);
+ number = g_strdup_printf("%.*f", MAX(actual_digits, 0), value);
g_string_append(*out, number);
g_free(number);
g_string_append(*out, " ");
+ g_string_append(*out, prefix);
g_string_append(*out, suffix);
g_string_append(*out, "\n");
}