X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Foutput%2Fanalog.c;h=ed480ca0335385af204804cad0f5d0003b228da6;hb=2c24077466a299ead689c90f01f55f6d86c7386b;hp=4018ec888659f797231f48fbca4d97eb2df1be62;hpb=fa74a26bc94c718bf1b965d553e89c29b4d7133c;p=libsigrok.git diff --git a/src/output/analog.c b/src/output/analog.c index 4018ec88..ed480ca0 100644 --- a/src/output/analog.c +++ b/src/output/analog.c @@ -68,7 +68,7 @@ static int init(struct sr_output *o, GHashTable *options) return SR_OK; } -static void si_printf(float value, GString *out, char *unitstr) +static void si_printf(float value, GString *out, const char *unitstr) { float v; @@ -278,8 +278,8 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p GString **out) { struct context *ctx; + const struct sr_datafeed_analog_old *analog_old; const struct sr_datafeed_analog *analog; - const struct sr_datafeed_analog2 *analog2; struct sr_channel *ch; GSList *l; float *fdata; @@ -299,45 +299,45 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p case SR_DF_FRAME_END: *out = g_string_new("FRAME-END\n"); break; - case SR_DF_ANALOG: - analog = packet->payload; - fdata = (float *)analog->data; + case SR_DF_ANALOG_OLD: + analog_old = packet->payload; + fdata = (float *)analog_old->data; *out = g_string_sized_new(512); - num_channels = g_slist_length(analog->channels); - for (si = 0; si < analog->num_samples; si++) { - for (l = analog->channels, c = 0; l; l = l->next, c++) { + num_channels = g_slist_length(analog_old->channels); + for (si = 0; si < analog_old->num_samples; si++) { + for (l = analog_old->channels, c = 0; l; l = l->next, c++) { ch = l->data; g_string_append_printf(*out, "%s: ", ch->name); - fancyprint(analog->unit, analog->mqflags, + fancyprint(analog_old->unit, analog_old->mqflags, fdata[si * num_channels + c], *out); } } break; - case SR_DF_ANALOG2: - analog2 = packet->payload; - num_channels = g_slist_length(analog2->meaning->channels); + case SR_DF_ANALOG: + analog = packet->payload; + num_channels = g_slist_length(analog->meaning->channels); if (!(fdata = g_try_malloc( - analog2->num_samples * num_channels * sizeof(float)))) + analog->num_samples * num_channels * sizeof(float)))) return SR_ERR_MALLOC; - if ((ret = sr_analog_to_float(analog2, fdata)) != SR_OK) + if ((ret = sr_analog_to_float(analog, fdata)) != SR_OK) return ret; *out = g_string_sized_new(512); - if (analog2->encoding->is_digits_decimal) { + if (analog->encoding->is_digits_decimal) { if (ctx->digits == DIGITS_ALL) - digits = analog2->encoding->digits; + digits = analog->encoding->digits; else - digits = analog2->spec->spec_digits; + digits = analog->spec->spec_digits; } else { /* TODO we don't know how to print by number of bits yet. */ digits = 6; } - sr_analog_unit_to_string(analog2, &suffix); - for (i = 0; i < analog2->num_samples; i++) { - for (l = analog2->meaning->channels, c = 0; l; l = l->next, c++) { + 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++) { ch = l->data; g_string_append_printf(*out, "%s: ", ch->name); - sr_analog_float_to_string(fdata[i * num_channels + c], - digits, &number); + number = g_strdup_printf("%.*f", digits, + fdata[i * num_channels + c]); g_string_append(*out, number); g_free(number); g_string_append(*out, " ");