X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=sigrokdecode.h;h=70652a4f8cdcbf444c6316e5508a99d6b48a9112;hp=863608b90e0dd742d773b928afc1f11465ce2fa2;hb=f38ec2855ce41154bc1035dd7f1ab9a21f411f0d;hpb=451680f192b97d652fb02186f5201efa0d668a2a diff --git a/sigrokdecode.h b/sigrokdecode.h index 863608b..70652a4 100644 --- a/sigrokdecode.h +++ b/sigrokdecode.h @@ -99,6 +99,12 @@ struct srd_decoder { /** TODO */ GSList *outputformats; + /** Probes */ + GSList *probes; + + /** Optional probes */ + GSList *extra_probes; + /* List of NULL-terminated char[], containing descriptions of the * supported annotation output. */ @@ -111,14 +117,23 @@ struct srd_decoder { PyObject *py_dec; }; +struct srd_probe { + char *id; + char *name; + char *desc; + int order; +}; + struct srd_decoder_instance { struct srd_decoder *decoder; PyObject *py_instance; char *instance_id; GSList *pd_output; - int num_probes; - int unitsize; - uint64_t samplerate; + int dec_num_probes; + int *dec_probemap; + int data_num_probes; + int data_unitsize; + uint64_t data_samplerate; GSList *next_di; }; @@ -151,6 +166,7 @@ typedef struct { typedef struct { PyObject_HEAD struct srd_decoder_instance *di; + uint64_t start_samplenum; unsigned int itercnt; uint8_t *inbuf; uint64_t inbuflen; @@ -162,21 +178,21 @@ typedef struct { int srd_init(void); int srd_exit(void); int set_modulepath(void); +int srd_instance_set_options(struct srd_decoder_instance *di, + GHashTable *options); +int srd_instance_set_probes(struct srd_decoder_instance *di, + GHashTable *probes); struct srd_decoder_instance *srd_instance_new(const char *id, - const char *instance_id); + GHashTable *options); int srd_instance_stack(struct srd_decoder_instance *di_from, struct srd_decoder_instance *di_to); -int srd_instance_set_probe(struct srd_decoder_instance *di, - const char *probename, int num); struct srd_decoder_instance *srd_instance_find(char *instance_id); int srd_instance_start(struct srd_decoder_instance *di, PyObject *args); -int srd_instance_decode(uint64_t timeoffset, uint64_t duration, +int srd_instance_decode(uint64_t start_samplenum, struct srd_decoder_instance *dec, uint8_t *inbuf, uint64_t inbuflen); int srd_session_start(int num_probes, int unitsize, uint64_t samplerate); -int srd_session_feed(uint64_t timeoffset, uint64_t duration, uint8_t *inbuf, - uint64_t inbuflen); -int pd_add(struct srd_decoder_instance *di, int output_type, - char *output_id); +int srd_session_feed(uint64_t start_samplenum, uint8_t *inbuf, uint64_t inbuflen); +int pd_add(struct srd_decoder_instance *di, int output_type, char *output_id); struct srd_decoder_instance *get_di_by_decobject(void *decobject); int srd_register_callback(int output_type, void *cb); void *srd_find_callback(int output_type); @@ -192,6 +208,7 @@ char *srd_decoder_doc(struct srd_decoder *dec); /*--- util.c ----------------------------------------------------------------*/ int py_attr_as_str(PyObject *py_obj, const char *attr, char **outstr); +int py_dictitem_as_str(PyObject *py_obj, const char *key, char **outstr); int py_str_as_str(PyObject *py_str, char **outstr); int py_strlist_to_char(PyObject *py_strlist, char ***outstr);