* 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>
#ifdef __LINUX__
#include <sched.h>
#endif
-#include "../config.h"
+#include "config.h"
int debug = FALSE;
int statistics = FALSE;
struct option {
char *key;
- char *value;
+ GVariant *value;
};
struct pd {
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) {
}
}
- 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;
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);
struct channel *channel;
struct option *option;
struct output *op;
- int ret;
- char c, *opt_infile, **kv, **opstr;
+ int ret, c;
+ char *opt_infile, **kv, **opstr;
op = malloc(sizeof(struct output));
op->pd = NULL;
} 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);
}
op->type = SRD_OUTPUT_BINARY;
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. */
+ op->type = SRD_OUTPUT_PYTHON;
else {
ERR("Unknown output type '%s'", opstr[1]);
g_strfreev(opstr);