* downsample: Divide the samplerate by the given factor.
* This can speed up analyzing of long captures.
*
+ * compress: Compress idle periods longer than this value.
+ * This can speed up analyzing of long captures.
+ * Default 0 = don't compress.
+ *
* Based on Verilog standard IEEE Std 1364-2001 Version C
*
* Supported features:
int maxprobes;
int probecount;
int downsample;
+ unsigned compress;
int64_t skip;
struct probe probes[SR_MAX_NUM_PROBES];
};
}
}
+ param = g_hash_table_lookup(in->param, "compress");
+ if (param) {
+ ctx->compress = strtoul(param, NULL, 10);
+ }
+
param = g_hash_table_lookup(in->param, "skip");
if (param) {
ctx->skip = strtoul(param, NULL, 10) / ctx->downsample;
}
else
{
+ if (ctx->compress != 0 && timestamp - prev_timestamp > ctx->compress)
+ {
+ /* Compress long idle periods */
+ prev_timestamp = timestamp - ctx->compress;
+ }
+
sr_dbg("New timestamp: %" PRIu64, timestamp);
/* Generate samples from prev_timestamp up to timestamp - 1. */
static int loadfile(struct sr_input *in, const char *filename)
{
- struct sr_datafeed_header header;
struct sr_datafeed_packet packet;
- struct sr_datafeed_meta_logic meta;
+ struct sr_datafeed_meta meta;
+ struct sr_config *src;
FILE *file;
struct context *ctx;
+ uint64_t samplerate;
ctx = in->internal;
}
/* Send header packet to the session bus. */
- header.feed_version = 1;
- gettimeofday(&header.starttime, NULL);
- packet.type = SR_DF_HEADER;
- packet.payload = &header;
- sr_session_send(in->sdi, &packet);
+ std_session_send_df_header(in->sdi, DRIVER_LOG_DOMAIN);
/* Send metadata about the SR_DF_LOGIC packets to come. */
- packet.type = SR_DF_META_LOGIC;
+ packet.type = SR_DF_META;
packet.payload = &meta;
- meta.samplerate = ctx->samplerate / ctx->downsample;
- meta.num_probes = ctx->probecount;
+ samplerate = ctx->samplerate / ctx->downsample;
+ src = sr_config_make(SR_CONF_SAMPLERATE, (const void *)&samplerate);
+ meta.config = g_slist_append(NULL, src);
sr_session_send(in->sdi, &packet);
/* Parse the contents of the VCD file */