]> sigrok.org Git - libsigrokdecode.git/blobdiff - tests/runtc.c
spdif: Simplify get_pulse_type() a bit.
[libsigrokdecode.git] / tests / runtc.c
index e376070bb1f7038655816cee075dd93007b74760..75bfff4ff4931fb3fcfb10a4809a344edfdf2edb 100644 (file)
@@ -17,6 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <Python.h>
 #include "../libsigrokdecode.h"
 #include <libsigrok/libsigrok.h>
 #include <stdlib.h>
@@ -35,7 +36,7 @@
 #ifdef __LINUX__
 #include <sched.h>
 #endif
-#include "../config.h"
+#include "config.h"
 
 int debug = FALSE;
 int statistics = FALSE;
@@ -48,7 +49,7 @@ struct channel {
 
 struct option {
        char *key;
-       char *value;
+       GVariant *value;
 };
 
 struct pd {
@@ -73,13 +74,11 @@ struct cvg {
        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 void logmsg(char *prefix, FILE *out, const char *format, va_list args)
 {
        if (prefix)
@@ -189,9 +188,9 @@ static void srd_cb_py(struct srd_proto_data *pdata, void *cb_data)
        s = py_str_as_str(pyrepr);
        Py_DecRef(pyrepr);
 
-       /* Output format for testing is '<ss>-<es> <inst-id>: <repr>\n' */
+       /* Output format for testing is '<ss>-<es> <inst-id>: <repr>\n'. */
        out = g_string_sized_new(128);
-       g_string_printf(out, "%"PRIu64"-%"PRIu64" %s: %s\n",
+       g_string_printf(out, "%" PRIu64 "-%" PRIu64 " %s: %s\n",
                        pdata->start_sample, pdata->end_sample,
                        pdata->pdo->di->inst_id, s);
        g_free(s);
@@ -225,7 +224,7 @@ static void srd_cb_bin(struct srd_proto_data *pdata, void *cb_data)
                return;
 
        out = g_string_sized_new(128);
-       g_string_printf(out, "%"PRIu64"-%"PRIu64" %s:",
+       g_string_printf(out, "%" PRIu64 "-%" PRIu64 " %s:",
                        pdata->start_sample, pdata->end_sample,
                        pdata->pdo->di->inst_id);
        for (i = 0; i < pdb->size; i++) {
@@ -263,7 +262,7 @@ static void srd_cb_ann(struct srd_proto_data *pdata, void *cb_data)
 
        dec_ann = g_slist_nth_data(dec->annotations, pda->ann_format);
        line = g_string_sized_new(256);
-       g_string_printf(line, "%"PRIu64"-%"PRIu64" %s: %s:",
+       g_string_printf(line, "%" PRIu64 "-%" PRIu64 " %s: %s:",
                        pdata->start_sample, pdata->end_sample,
                        pdata->pdo->di->inst_id, dec_ann[0]);
        for (i = 0; pda->ann_text[i]; i++)
@@ -337,6 +336,7 @@ static int run_testcase(char *infile, GSList *pdlist, struct output *op)
        int idx;
        int max_channel;
        char **decoder_class;
+       struct sr_session *sr_sess;
 
        if (op->outfile) {
                if ((op->outfd = open(op->outfile, O_CREAT|O_WRONLY, 0600)) == -1) {
@@ -346,12 +346,12 @@ static int run_testcase(char *infile, GSList *pdlist, struct output *op)
                }
        }
 
-       if (sr_session_load(infile) != SR_OK)
+       if (sr_session_load(infile, &sr_sess) != SR_OK)
                return FALSE;
 
        if (srd_session_new(&sess) != SRD_OK)
                return FALSE;
-       sr_session_datafeed_callback_add(sr_cb, sess);
+       sr_session_datafeed_callback_add(sr_sess, sr_cb, sess);
        switch (op->type) {
        case SRD_OUTPUT_ANN:
                cb = srd_cb_ann;
@@ -443,9 +443,9 @@ static int run_testcase(char *infile, GSList *pdlist, struct output *op)
                        DBG("Class %s index is %d", op->class, op->class_idx);
        }
 
-       sr_session_start();
-       sr_session_run();
-       sr_session_stop();
+       sr_session_start(sr_sess);
+       sr_session_run(sr_sess);
+       sr_session_stop(sr_sess);
 
        srd_session_destroy(sess);
 
@@ -556,7 +556,7 @@ struct cvg *get_mod_cov(PyObject *py_cov, char *module_name)
                cvg_mod->coverage = 100 - ((float)cvg_mod->num_missed / (float)cvg_mod->num_lines * 100);
 
        Py_DecRef(py_mod);
-    Py_DecRef(py_path);
+       Py_DecRef(py_path);
 
        return cvg_mod;
 }
@@ -586,7 +586,6 @@ void cvg_add(struct cvg *dst, struct cvg *src)
        GSList *l;
        char *linespec;
 
-
        dst->num_lines += src->num_lines;
        dst->num_missed += src->num_missed;
        for (l = src->missed_lines; l; l = l->next) {
@@ -638,7 +637,6 @@ static int report_coverage(PyObject *py_cov, GSList *pdlist)
        printf("coverage: scope=all coverage=%.0f%% lines=%d missed=%d\n",
                        total_coverage, cvg_all->num_lines, cvg_all->num_missed);
 
-
        /* Write text report to file. */
        /* io.open(coverage_report, "w") */
        if (!(py_mod = PyImport_ImportModule("io")))
@@ -703,7 +701,7 @@ int main(int argc, char **argv)
        pd = NULL;
        coverage = NULL;
        while ((c = getopt(argc, argv, "dP:p:o:i:O:f:c:S")) != -1) {
-               switch(c) {
+               switch (c) {
                case 'd':
                        debug = TRUE;
                        break;
@@ -736,7 +734,8 @@ int main(int argc, char **argv)
                        } else {
                                option = malloc(sizeof(struct option));
                                option->key = g_strdup(kv[0]);
-                               option->value = g_strdup(kv[1]);
+                               option->value = g_variant_new_string(kv[1]);
+                g_variant_ref_sink(option->value);
                                /* Apply to last PD. */
                                pd->options = g_slist_append(pd->options, option);
                        }
@@ -760,7 +759,7 @@ int main(int argc, char **argv)
                        else if (!strcmp(opstr[1], "python"))
                                op->type = SRD_OUTPUT_PYTHON;
                        else if (!strcmp(opstr[1], "exception"))
-                /* Doesn't matter, we just need it to bomb out. */
+                               /* Doesn't matter, we just need it to bomb out. */
                                op->type = SRD_OUTPUT_PYTHON;
                        else {
                                ERR("Unknown output type '%s'", opstr[1]);