From: Uwe Hermann Date: Sun, 9 May 2010 18:52:36 +0000 (+0200) Subject: VCD/Gnuplot: Fix incorrect sample counter. X-Git-Tag: libsigrok-0.1.0~506 X-Git-Url: https://sigrok.org/gitaction?a=commitdiff_plain;h=086eac7c7bef114dd96c6ddb639fa2fa35f9182b;p=libsigrok.git VCD/Gnuplot: Fix incorrect sample counter. --- diff --git a/output/output_gnuplot.c b/output/output_gnuplot.c index 2c062397..d2e16d0e 100644 --- a/output/output_gnuplot.c +++ b/output/output_gnuplot.c @@ -143,7 +143,8 @@ static int data(struct output *o, char *data_in, uint64_t length_in, { struct context *ctx; unsigned int i, outsize, p, curbit; - uint64_t sample, count = 0; + uint64_t sample; + static uint64_t samplecount = 0; char *outbuf, *c; ctx = o->internal; @@ -170,7 +171,7 @@ static int data(struct output *o, char *data_in, uint64_t length_in, /* The first column is a counter (needed for gnuplot). */ c = outbuf + strlen(outbuf); - sprintf(c, "%" PRIu64 "\t\t", count++); + sprintf(c, "%" PRIu64 "\t\t", samplecount++); /* The next columns are the values of all channels. */ for (p = 0; p < ctx->num_enabled_probes; p++) { diff --git a/output/output_vcd.c b/output/output_vcd.c index 1acf4a7b..a9f794ad 100644 --- a/output/output_vcd.c +++ b/output/output_vcd.c @@ -158,6 +158,7 @@ static int data(struct output *o, char *data_in, uint64_t length_in, unsigned int i, outsize; int p, curbit, prevbit; uint64_t sample, prevsample; + static uint64_t samplecount = 0; char *outbuf, *c; ctx = o->internal; @@ -180,6 +181,7 @@ static int data(struct output *o, char *data_in, uint64_t length_in, /* TODO: Are disabled probes handled correctly? */ for (i = 0; i <= length_in - ctx->unitsize; i += ctx->unitsize) { + samplecount++; memcpy(&sample, data_in + i, ctx->unitsize); for (p = 0; p < ctx->num_enabled_probes; p++) { curbit = (sample & ((uint64_t) (1 << p))) != 0; @@ -197,9 +199,9 @@ static int data(struct output *o, char *data_in, uint64_t length_in, continue; /* FIXME: Only once per sample? */ - /* TODO: Is 'i' correct here? */ c = outbuf + strlen(outbuf); - sprintf(c, "#%i\n%i%c\n", i, curbit, (char)('!' + p)); + sprintf(c, "#%" PRIu64 "\n%i%c\n", samplecount, + curbit, (char)('!' + p)); } /* TODO: Use realloc() if strlen(outbuf) is almost "full"... */