X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decode.c;fp=decode.c;h=396cde8bb1b4bd819cfc614e5a73e0227b851ed0;hp=398a9f73c5e9ba4f24f7e66f8879745cf71b6a52;hb=f97f531c2d31b729afbf1c97a0d017526bf8e52a;hpb=74911b4c1f6d184dac878d94992d480af0564734 diff --git a/decode.c b/decode.c index 398a9f7..396cde8 100644 --- a/decode.c +++ b/decode.c @@ -284,6 +284,8 @@ static int srd_load_decoder(const char *name, struct srd_decoder_instance *srd_instance_new(const char *id) { struct srd_decoder *dec = srd_get_decoder_by_id(id); + if (!dec) + return NULL; struct srd_decoder_instance *di = g_malloc(sizeof(*di)); PyObject *py_args, *py_value; @@ -317,6 +319,26 @@ struct srd_decoder_instance *srd_instance_new(const char *id) return di; } +int srd_instance_set_probe(struct srd_decoder_instance *di, + const char *probename, int num) +{ + PyObject *probedict, *probenum; + probedict = PyObject_GetAttrString(di->py_instance, "probes"); /* NEWREF */ + if (!probedict) { + if (PyErr_Occurred()) + PyErr_Print(); /* Returns void. */ + + return SRD_ERR_PYTHON; /* TODO: More specific error? */ + } + + probenum = PyInt_FromLong(num); + PyMapping_SetItemString(probedict, (char*)probename, probenum); + + Py_XDECREF(probenum); + Py_XDECREF(probedict); + return SRD_OK; +} + /** * Run the specified decoder function. * @@ -333,7 +355,7 @@ int srd_run_decoder(struct srd_decoder_instance *dec, uint8_t **outbuf, uint64_t *outbuflen) { PyObject *py_instance, *py_value, *py_res; - int r, ret; + int ret; /* FIXME: Don't have a timebase available here. Make one up. */ static int _timehack = 0;