summaryrefslogtreecommitdiff
path: root/instance.c
diff options
context:
space:
mode:
authorUwe Hermann <uwe@hermann-uwe.de>2016-08-25 22:26:41 +0200
committerUwe Hermann <uwe@hermann-uwe.de>2016-08-25 22:38:04 +0200
commit04867deb37b0f8cdfad55ab7bdb8708fd13f53fc (patch)
treeadc4cd4591b08137c6cf9d3c1133d9a0d3525b50 /instance.c
parent40589f25f90c4863cfe2787b72629aa0a8cda082 (diff)
downloadlibsigrokdecode-04867deb37b0f8cdfad55ab7bdb8708fd13f53fc.tar.gz
libsigrokdecode-04867deb37b0f8cdfad55ab7bdb8708fd13f53fc.zip
srd_inst_decode(): Make the code API version dependent.
Diffstat (limited to 'instance.c')
-rw-r--r--instance.c45
1 files changed, 25 insertions, 20 deletions
diff --git a/instance.c b/instance.c
index b4f9cfd..86b826f 100644
--- a/instance.c
+++ b/instance.c
@@ -543,6 +543,7 @@ SRD_PRIV int srd_inst_decode(const struct srd_decoder_inst *di,
{
PyObject *py_res;
srd_logic *logic;
+ long apiver;
/* Return an error upon unusable input. */
if (!di) {
@@ -566,28 +567,32 @@ SRD_PRIV int srd_inst_decode(const struct srd_decoder_inst *di,
end_samplenum - start_samplenum, inbuflen, di->data_unitsize,
di->inst_id);
- /*
- * Create new srd_logic object. Each iteration around the PD's loop
- * will fill one sample into this object.
- */
- logic = PyObject_New(srd_logic, (PyTypeObject *)srd_logic_type);
- Py_INCREF(logic);
- logic->di = (struct srd_decoder_inst *)di;
- logic->start_samplenum = start_samplenum;
- logic->itercnt = 0;
- logic->inbuf = (uint8_t *)inbuf;
- logic->inbuflen = inbuflen;
- logic->sample = PyList_New(2);
- Py_INCREF(logic->sample);
-
- Py_IncRef(di->py_inst);
- if (!(py_res = PyObject_CallMethod(di->py_inst, "decode",
+ apiver = srd_decoder_apiver(di->decoder);
+
+ if (apiver == 2) {
+ /*
+ * Create new srd_logic object. Each iteration around the PD's
+ * loop will fill one sample into this object.
+ */
+ logic = PyObject_New(srd_logic, (PyTypeObject *)srd_logic_type);
+ Py_INCREF(logic);
+ logic->di = (struct srd_decoder_inst *)di;
+ logic->start_samplenum = start_samplenum;
+ logic->itercnt = 0;
+ logic->inbuf = (uint8_t *)inbuf;
+ logic->inbuflen = inbuflen;
+ logic->sample = PyList_New(2);
+ Py_INCREF(logic->sample);
+
+ Py_IncRef(di->py_inst);
+ if (!(py_res = PyObject_CallMethod(di->py_inst, "decode",
"KKO", start_samplenum, end_samplenum, logic))) {
- srd_exception_catch("Protocol decoder instance %s",
- di->inst_id);
- return SRD_ERR_PYTHON;
+ srd_exception_catch("Protocol decoder instance %s",
+ di->inst_id);
+ return SRD_ERR_PYTHON;
+ }
+ Py_DecRef(py_res);
}
- Py_DecRef(py_res);
return SRD_OK;
}