X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Finput%2Fvcd.c;h=8d6edd1dcc77594ea31f6cab8c489c1c974a48aa;hb=f9b748615488d0d0f5e07978717a53dcdf79f732;hp=b25c7381b7d32ab1830070c2c80fafc76ab03cab;hpb=1f706c21a2977c768692f72d09b35633628d2b0d;p=libsigrok.git diff --git a/src/input/vcd.c b/src/input/vcd.c index b25c7381..8d6edd1d 100644 --- a/src/input/vcd.c +++ b/src/input/vcd.c @@ -26,7 +26,7 @@ * * skip: Allows skipping until given timestamp in the file. * This can speed up analyzing of long captures. - * + * * Value < 0: Skip until first timestamp listed in * the file. (default) * @@ -93,7 +93,7 @@ struct vcd_channel { /* * Reads a single VCD section from input file and parses it to name/contents. - * e.g. $timescale 1ps $end => "timescale" "1ps" + * e.g. $timescale 1ps $end => "timescale" "1ps" */ static gboolean parse_section(GString *buf, gchar **name, gchar **contents) { @@ -530,7 +530,7 @@ static int process_buffer(struct sr_input *in) inc = in->priv; if (!inc->started) { - std_session_send_df_header(in->sdi, LOG_PREFIX); + std_session_send_df_header(in->sdi); packet.type = SR_DF_META; packet.payload = &meta; @@ -582,7 +582,6 @@ static int receive(struct sr_input *in, GString *buf) static int end(struct sr_input *in) { - struct sr_datafeed_packet packet; struct context *inc; int ret; @@ -596,10 +595,8 @@ static int end(struct sr_input *in) /* Send any samples that haven't been sent yet. */ send_buffer(in); - if (inc->started) { - packet.type = SR_DF_END; - sr_session_send(in->sdi, &packet); - } + if (inc->started) + std_session_send_df_end(in->sdi); return ret; } @@ -616,6 +613,17 @@ static void cleanup(struct sr_input *in) inc->current_levels = NULL; } +static int reset(struct sr_input *in) +{ + struct context *inc = in->priv; + + cleanup(in); + inc->started = FALSE; + g_string_truncate(in->buf, 0); + + return SR_OK; +} + static struct sr_option options[] = { { "numchannels", "Number of channels", "Number of channels", NULL, NULL }, { "skip", "Skip", "Skip until timestamp", NULL, NULL }, @@ -648,4 +656,5 @@ SR_PRIV struct sr_input_module input_vcd = { .receive = receive, .end = end, .cleanup = cleanup, + .reset = reset, };