X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=libsigrokdecode.h;h=b9cc921287e876347ceea9d1ea08f61a46046f2e;hp=982ae19759f94356baf09bd53b23ec8a012bc265;hb=f40e0a7379d42ce36e9d81073e16924c0ddba1b8;hpb=1a41642e2cd8ecfa703c45264c522866b4c99f01 diff --git a/libsigrokdecode.h b/libsigrokdecode.h index 982ae19..b9cc921 100644 --- a/libsigrokdecode.h +++ b/libsigrokdecode.h @@ -71,6 +71,7 @@ enum srd_error_code { SRD_ERR_BUG = -4, /**< Errors hinting at internal bugs */ SRD_ERR_PYTHON = -5, /**< Python C API error */ SRD_ERR_DECODERS_DIR = -6, /**< Protocol decoder path invalid */ + SRD_ERR_TERM_REQ = -7, /**< Termination requested */ /* * Note: When adding entries here, don't forget to also update the @@ -160,6 +161,9 @@ struct srd_decoder { /** List of possible decoder output IDs. */ GSList *outputs; + /** List of tags associated with this decoder. */ + GSList *tags; + /** List of channels required by this decoder. */ GSList *channels; @@ -167,8 +171,8 @@ struct srd_decoder { GSList *opt_channels; /** - * List of NULL-terminated char[], containing descriptions of the - * supported annotation output. + * List of annotation classes. Each list item is a GSList itself, with + * two NUL-terminated strings: name and description. */ GSList *annotations; @@ -179,8 +183,8 @@ struct srd_decoder { GSList *annotation_rows; /** - * List of NULL-terminated char[], containing descriptions of the - * supported binary output. + * List of binary classes. Each list item is a GSList itself, with + * two NUL-terminated strings: name and description. */ GSList *binary; @@ -276,6 +280,9 @@ struct srd_decoder_inst { /** Requests termination of wait() and decode(). */ gboolean want_wait_terminate; + /** Indicates the current state of the decoder stack. */ + int decoder_state; + GCond got_new_samples_cond; GCond handled_all_samples_cond; GMutex data_mutex; @@ -299,11 +306,11 @@ struct srd_proto_data { void *data; }; struct srd_proto_data_annotation { - int ann_class; + int ann_class; /* Index into "struct srd_decoder"->annotations. */ char **ann_text; }; struct srd_proto_data_binary { - int bin_class; + int bin_class; /* Index into "struct srd_decoder"->binary. */ uint64_t size; const unsigned char *data; }; @@ -330,6 +337,7 @@ SRD_API int srd_session_metadata_set(struct srd_session *sess, int key, SRD_API int srd_session_send(struct srd_session *sess, uint64_t abs_start_samplenum, uint64_t abs_end_samplenum, const uint8_t *inbuf, uint64_t inbuflen, uint64_t unitsize); +SRD_API int srd_session_terminate_reset(struct srd_session *sess); SRD_API int srd_session_destroy(struct srd_session *sess); SRD_API int srd_pd_output_callback_add(struct srd_session *sess, int output_type, srd_pd_output_callback cb, void *cb_data); @@ -362,6 +370,7 @@ typedef int (*srd_log_callback)(void *cb_data, int loglevel, const char *format, va_list args); SRD_API int srd_log_loglevel_set(int loglevel); SRD_API int srd_log_loglevel_get(void); +SRD_API int srd_log_callback_get(srd_log_callback *cb, void **cb_data); SRD_API int srd_log_callback_set(srd_log_callback cb, void *cb_data); SRD_API int srd_log_callback_set_default(void);