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
/** 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;
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;
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;
/** 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;
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;
};
/* srd.c */
SRD_API int srd_init(const char *path);
SRD_API int srd_exit(void);
+SRD_API GSList *srd_searchpaths_get(void);
/* session.c */
SRD_API int srd_session_new(struct srd_session **sess);
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);
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);