#define DEFAULT_NUM_PROBES 8
struct context {
- int samplerate;
+ uint64_t samplerate;
};
static int format_match(const char *filename)
static int init(struct sr_input *in)
{
+ struct sr_probe *probe;
int num_probes, i;
char name[SR_MAX_PROBENAME_LEN + 1];
char *param;
param = g_hash_table_lookup(in->param, "samplerate");
if (param) {
- ctx->samplerate = strtoul(param, NULL, 10);
- if (ctx->samplerate < 1) {
+ if (sr_parse_sizestring(param, &ctx->samplerate) != SR_OK)
return SR_ERR;
- }
}
}
/* Create a virtual device. */
- in->vdev = sr_dev_new(NULL, 0);
+ in->sdi = sr_dev_inst_new(0, SR_ST_ACTIVE, NULL, NULL, NULL);
in->internal = ctx;
for (i = 0; i < num_probes; i++) {
snprintf(name, SR_MAX_PROBENAME_LEN, "%d", i);
/* TODO: Check return value. */
- sr_dev_probe_add(in->vdev, name);
+ if (!(probe = sr_probe_new(i, SR_PROBE_LOGIC, TRUE, name)))
+ return SR_ERR;
+ in->sdi->probes = g_slist_append(in->sdi->probes, probe);
}
return SR_OK;
if ((fd = open(filename, O_RDONLY)) == -1)
return SR_ERR;
- num_probes = g_slist_length(in->vdev->probes);
+ num_probes = g_slist_length(in->sdi->probes);
/* send header */
header.feed_version = 1;
gettimeofday(&header.starttime, NULL);
packet.type = SR_DF_HEADER;
packet.payload = &header;
- sr_session_send(in->vdev, &packet);
+ sr_session_send(in->sdi, &packet);
/* Send metadata about the SR_DF_LOGIC packets to come. */
packet.type = SR_DF_META_LOGIC;
packet.payload = &meta;
meta.samplerate = ctx->samplerate;
meta.num_probes = num_probes;
- sr_session_send(in->vdev, &packet);
+ sr_session_send(in->sdi, &packet);
/* chop up the input file into chunks and feed it into the session bus */
packet.type = SR_DF_LOGIC;
logic.data = buffer;
while ((size = read(fd, buffer, CHUNKSIZE)) > 0) {
logic.length = size;
- sr_session_send(in->vdev, &packet);
+ sr_session_send(in->sdi, &packet);
}
close(fd);
/* end of stream */
packet.type = SR_DF_END;
- sr_session_send(in->vdev, &packet);
+ sr_session_send(in->sdi, &packet);
g_free(ctx);
in->internal = NULL;