}
/** @private */
-SRD_PRIV void *srd_pd_output_callback_find(int output_type)
+SRD_PRIV struct srd_pd_callback *srd_pd_output_callback_find(int output_type)
{
GSList *l;
- struct srd_pd_callback *pd_cb;
- void *(cb);
+ struct srd_pd_callback *tmp, *pd_cb;
- cb = NULL;
+ pd_cb = NULL;
for (l = callbacks; l; l = l->next) {
- pd_cb = l->data;
- if (pd_cb->output_type == output_type) {
- cb = pd_cb->cb;
+ tmp = l->data;
+ if (tmp->output_type == output_type) {
+ pd_cb = tmp;
break;
}
}
- return cb;
+ return pd_cb;
}
/* This is the backend function to Python sigrokdecode.add() call. */
const uint8_t *inbuf, uint64_t inbuflen);
SRD_PRIV void srd_inst_free(struct srd_decoder_inst *di);
SRD_PRIV void srd_inst_free_all(GSList *stack);
-SRD_PRIV void *srd_pd_output_callback_find(int output_type);
+SRD_PRIV struct srd_pd_callback *srd_pd_output_callback_find(int output_type);
SRD_PRIV int srd_inst_pd_output_add(struct srd_decoder_inst *di,
int output_type, const char *output_id);
struct srd_proto_data *pdata;
uint64_t start_sample, end_sample;
int output_id;
- void (*cb)();
+ struct srd_pd_callback *cb;
if (!(di = srd_inst_find_by_obj(NULL, self))) {
/* Shouldn't happen. */
/* An error was already logged. */
break;
}
- cb(pdata);
+ cb->cb(pdata, cb->cb_data);
}
break;
case SRD_OUTPUT_PROTO: