status = FALSE;
pos = 0;
+ /* Skip UTF8 BOM */
+ if (buf->len >= 3 && !strncmp(buf->str, "\xef\xbb\xbf", 3))
+ pos = 3;
+
/* Skip any initial white-space. */
while (pos < buf->len && g_ascii_isspace(buf->str[pos]))
pos++;
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;
static int end(struct sr_input *in)
{
- struct sr_datafeed_packet packet;
struct context *inc;
int ret;
/* 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;
}
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 },
.receive = receive,
.end = end,
.cleanup = cleanup,
+ .reset = reset,
};