- /*
- * Create new srd_logic object. Each iteration around the PD's loop
- * will fill one sample into this object.
- */
- logic = PyObject_New(srd_logic, &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",