#define CHUNKSIZE 1024
struct context {
+ gboolean started;
gboolean got_header;
uint64_t samplerate;
unsigned int maxchannels;
g_free(name);
g_free(contents);
- return status;
+ return status ? SR_OK : SR_ERR;
}
/* Send N samples of the given value. */
inc->skip = g_variant_get_int32(g_hash_table_lookup(options, "skip"));
inc->skip /= inc->downsample;
- /* Create a virtual device. */
in->sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, NULL, NULL, NULL);
in->priv = inc;
uint64_t samplerate;
char *p;
- if (buf->len == 0) {
- /* End of stream. */
- packet.type = SR_DF_END;
- sr_session_send(in->sdi, &packet);
- return SR_OK;
- }
-
g_string_append_len(in->buf, buf->str, buf->len);
inc = in->priv;
return SR_ERR;
std_session_send_df_header(in->sdi, LOG_PREFIX);
+ inc->started = TRUE;
packet.type = SR_DF_META;
packet.payload = &meta;
static int cleanup(struct sr_input *in)
{
+ struct sr_datafeed_packet packet;
struct context *inc;
inc = in->priv;
+ if (inc->started) {
+ /* End of stream. */
+ packet.type = SR_DF_END;
+ sr_session_send(in->sdi, &packet);
+ }
+
g_slist_free_full(inc->channels, free_channel);
g_free(inc);
in->priv = NULL;
}
static struct sr_option options[] = {
- { "numchannels", "Max channels", "Maximum number of channels", NULL, NULL },
+ { "numchannels", "Number of channels", "Number of channels", NULL, NULL },
{ "skip", "Skip", "Skip until timestamp", NULL, NULL },
{ "downsample", "Downsample", "Divide samplerate by factor", NULL, NULL },
{ "compress", "Compress", "Compress idle periods longer than this value", NULL, NULL },
- { 0 }
+ ALL_ZERO
};
static struct sr_option *get_options(void)