]> sigrok.org Git - libsigrok.git/commitdiff
output/vcd: Extend output stream to last sample.
authorDaniel Elstner <redacted>
Tue, 4 Feb 2014 23:56:49 +0000 (00:56 +0100)
committerDaniel Elstner <redacted>
Wed, 5 Feb 2014 00:18:05 +0000 (01:18 +0100)
(receive): Write a dummy timestamp after the last sample
to indicate the length of the sampled stream.

output/vcd.c

index c98c18056df9d72aa0483251669889d4fdd4067c..79145c1ae0b4f8d9e41dc3d58dea47b04b5f0168 100644 (file)
@@ -165,9 +165,6 @@ static int receive(struct sr_output *o, const struct sr_dev_inst *sdi,
                return SR_ERR_BUG;
        ctx = o->internal;
 
-       if (packet->type != SR_DF_LOGIC)
-               return SR_OK;
-
        if (ctx->header) {
                /* The header is still here, this must be the first packet. */
                *out = ctx->header;
@@ -177,6 +174,15 @@ static int receive(struct sr_output *o, const struct sr_dev_inst *sdi,
                *out = g_string_sized_new(512);
        }
 
+       if (packet->type != SR_DF_LOGIC) {
+               if (packet->type == SR_DF_END)
+                       /* Write final timestamp as length indicator. */
+                       g_string_append_printf(*out, "#%.0f\n",
+                               (double)ctx->samplecount /
+                                       ctx->samplerate * ctx->period);
+               return SR_OK;
+       }
+
        logic = packet->payload;
        for (i = 0; i <= logic->length - logic->unitsize; i += logic->unitsize) {
                sample = logic->data + i;