#include <sched.h>
#endif
-int debug = FALSE;
-int statistics = FALSE;
-char *coverage_report;
+static int debug = FALSE;
+static int statistics = FALSE;
+static char *coverage_report;
+static struct sr_context *ctx;
struct channel {
char *name;
};
struct pd {
- char *name;
+ const char *name;
GSList *channels;
GSList *options;
};
struct output {
- char *pd;
+ const char *pd;
int type;
- char *class;
+ const char *class;
int class_idx;
- char *outfile;
+ const char *outfile;
int outfd;
};
GSList *missed_lines;
};
-struct cvg *get_mod_cov(PyObject *py_cov, char *module_name);
-void cvg_add(struct cvg *dst, struct cvg *src);
-struct cvg *cvg_new(void);
-gboolean find_missed_line(struct cvg *cvg, char *linespec);
+static struct cvg *get_mod_cov(PyObject *py_cov, const char *module_name);
+static void cvg_add(struct cvg *dst, const struct cvg *src);
+static struct cvg *cvg_new(void);
+static gboolean find_missed_line(struct cvg *cvg, const char *linespec);
-static void logmsg(char *prefix, FILE *out, const char *format, va_list args)
+static void logmsg(const char *prefix, FILE *out, const char *format, va_list args)
{
if (prefix)
fprintf(out, "%s", prefix);
return SRD_OK;
}
-static void usage(char *msg)
+static void usage(const char *msg)
{
if (msg)
fprintf(stderr, "%s\n", msg);
}
-/* This is a neutered version of libsigrokdecode's py_str_as_str(). It
+/*
+ * This is a neutered version of libsigrokdecode's py_str_as_str(). It
* does no error checking, but then the only strings it processes are
- * generated by Python's repr(), so are known good. */
+ * generated by Python's repr(), so are known good.
+ */
static char *py_str_as_str(const PyObject *py_str)
{
PyObject *py_encstr;
uint64_t samplerate;
int num_samples;
static int samplecnt = 0;
+ struct sr_dev_driver *driver;
sess = cb_data;
+ driver = sr_dev_inst_driver_get(sdi);
+
switch (packet->type) {
case SR_DF_HEADER:
DBG("Received SR_DF_HEADER");
- if (sr_config_get(sdi->driver, sdi, NULL, SR_CONF_SAMPLERATE,
+ if (sr_config_get(driver, sdi, NULL, SR_CONF_SAMPLERATE,
&gvar) != SR_OK) {
ERR("Getting samplerate failed");
break;
case SR_DF_LOGIC:
logic = packet->payload;
num_samples = logic->length / logic->unitsize;
- DBG("Received SR_DF_LOGIC: %d samples", num_samples);
+ DBG("Received SR_DF_LOGIC (%"PRIu64" bytes, unitsize = %d).",
+ logic->length, logic->unitsize);
srd_session_send(sess, samplecnt, samplecnt + num_samples,
- logic->data, logic->length);
+ logic->data, logic->length, logic->unitsize);
samplecnt += logic->length / logic->unitsize;
break;
case SR_DF_END:
}
-static int run_testcase(char *infile, GSList *pdlist, struct output *op)
+static int run_testcase(const char *infile, GSList *pdlist, struct output *op)
{
struct srd_session *sess;
struct srd_decoder *dec;
struct option *option;
GVariant *gvar;
GHashTable *channels, *opts;
- GSList *pdl, *l;
+ GSList *pdl, *l, *devices;
int idx, i;
int max_channel;
char **decoder_class;
if (op->outfile) {
if ((op->outfd = open(op->outfile, O_CREAT|O_WRONLY, 0600)) == -1) {
ERR("Unable to open %s for writing: %s", op->outfile,
- strerror(errno));
+ g_strerror(errno));
return FALSE;
}
}
- if (sr_session_load(infile, &sr_sess) != SR_OK)
+ if (sr_session_load(ctx, infile, &sr_sess) != SR_OK)
return FALSE;
+ sr_session_dev_list(sr_sess, &devices);
+
if (srd_session_new(&sess) != SRD_OK)
return FALSE;
sr_session_datafeed_callback_add(sr_sess, sr_cb, sess);
g_variant_ref_sink(gvar);
g_hash_table_insert(channels, channel->name, gvar);
}
- if (srd_inst_channel_set_all(di, channels,
- (max_channel + 8) / 8) != SRD_OK)
+
+ if (srd_inst_channel_set_all(di, channels) != SRD_OK)
return FALSE;
g_hash_table_destroy(channels);
}
- /* If this is not the first decoder in the list, stack it
- * on top of the previous one. */
+ /*
+ * If this is not the first decoder in the list, stack it
+ * on top of the previous one.
+ */
if (prev_di) {
if (srd_inst_stack(sess, prev_di, di) != SRD_OK) {
ERR("Failed to stack decoder instances.");
return py_cov;
}
-struct cvg *get_mod_cov(PyObject *py_cov, char *module_name)
+static struct cvg *get_mod_cov(PyObject *py_cov, const char *module_name)
{
PyObject *py_mod, *py_pathlist, *py_path, *py_func, *py_pd;
PyObject *py_result, *py_missed, *py_item;
py_pathlist = PyObject_GetAttrString(py_mod, "__path__");
for (i = 0; i < PyList_Size(py_pathlist); i++) {
py_path = PyList_GetItem(py_pathlist, i);
- PyUnicode_FSConverter(PyList_GetItem(py_pathlist, i), &py_path);
+ PyUnicode_FSConverter(PyList_GetItem(py_pathlist, i), &py_path);
path = PyBytes_AS_STRING(py_path);
if (!(d = opendir(path))) {
ERR("Invalid module path '%s'", path);
return cvg_mod;
}
-struct cvg *cvg_new(void)
+static struct cvg *cvg_new(void)
{
struct cvg *cvg;
return cvg;
}
-gboolean find_missed_line(struct cvg *cvg, char *linespec)
+static gboolean find_missed_line(struct cvg *cvg, const char *linespec)
{
GSList *l;
return FALSE;
}
-void cvg_add(struct cvg *dst, struct cvg *src)
+static void cvg_add(struct cvg *dst, const struct cvg *src)
{
GSList *l;
char *linespec;
int main(int argc, char **argv)
{
- struct sr_context *ctx;
PyObject *coverage;
GSList *pdlist;
struct pd *pd;