X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=sigrokdecode.h;h=2a78a4dd39f3f573679aa7d0691ac4d67417c246;hp=70652a4f8cdcbf444c6316e5508a99d6b48a9112;hb=156509ca42f0df2380c9f205f9aad337e1a07802;hpb=f38ec2855ce41154bc1035dd7f1ab9a21f411f0d diff --git a/sigrokdecode.h b/sigrokdecode.h index 70652a4..2a78a4d 100644 --- a/sigrokdecode.h +++ b/sigrokdecode.h @@ -67,10 +67,10 @@ enum { SRD_OUTPUT_ANN, SRD_OUTPUT_PROTO, SRD_OUTPUT_BINARY, - /* When adding an output type, don't forget to expose it to PDs in: - * controller.c:PyInit_sigrokdecode() - * and add a check in: - * module_sigrokdecode.c:Decoder_put() + /* When adding an output type, don't forget to... + * - expose it to PDs in controller.c:PyInit_sigrokdecode() + * - add a check in module_sigrokdecode.c:Decoder_put() + * - add a debug string in type_decoder.c:OUTPUT_TYPES */ }; @@ -103,7 +103,7 @@ struct srd_decoder { GSList *probes; /** Optional probes */ - GSList *extra_probes; + GSList *opt_probes; /* List of NULL-terminated char[], containing descriptions of the * supported annotation output. @@ -140,7 +140,7 @@ struct srd_decoder_instance { struct srd_pd_output { int pdo_id; int output_type; - struct srd_decoder *decoder; + struct srd_decoder_instance *di; char *proto_id; }; @@ -186,10 +186,14 @@ struct srd_decoder_instance *srd_instance_new(const char *id, GHashTable *options); int srd_instance_stack(struct srd_decoder_instance *di_from, struct srd_decoder_instance *di_to); -struct srd_decoder_instance *srd_instance_find(char *instance_id); +struct srd_decoder_instance *srd_instance_find_by_id(char *instance_id); +struct srd_decoder_instance *srd_instance_find_by_obj(GSList *stack, + PyObject *obj); int srd_instance_start(struct srd_decoder_instance *di, PyObject *args); int srd_instance_decode(uint64_t start_samplenum, struct srd_decoder_instance *dec, uint8_t *inbuf, uint64_t inbuflen); +void srd_instance_free(struct srd_decoder_instance *di); +void srd_instance_free_all(GSList *stack); int srd_session_start(int num_probes, int unitsize, uint64_t samplerate); 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); @@ -206,6 +210,9 @@ int srd_load_all_decoders(void); int srd_unload_all_decoders(void); char *srd_decoder_doc(struct srd_decoder *dec); +/*--- exception.c -----------------------------------------------------------*/ +void catch_exception(const char *format, ...); + /*--- 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); @@ -213,8 +220,14 @@ int py_str_as_str(PyObject *py_str, char **outstr); int py_strlist_to_char(PyObject *py_strlist, char ***outstr); /*--- log.c -----------------------------------------------------------------*/ +typedef int (*srd_log_handler_t)(void *data, int loglevel, const char *format, + va_list args); int srd_set_loglevel(int loglevel); int srd_get_loglevel(void); +int srd_log_set_handler(srd_log_handler_t handler, void *data); +int srd_log_set_default_handler(void); +int srd_log_set_logdomain(const char *logdomain); +char *srd_log_get_logdomain(void); #ifdef __cplusplus }