X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=libsigrokdecode.h;h=3ce6ae5ee37b798c53c583d7b30cec1a645a2b7a;hb=82f3f4d4163ffba003a49a5c7f1f6966f132bbb8;hp=84c80e4195641fcdfea2656a558f672ba057ff9e;hpb=4c180223a8ae12feb7bc3601e07e848fb9cdb493;p=libsigrokdecode.git diff --git a/libsigrokdecode.h b/libsigrokdecode.h index 84c80e4..3ce6ae5 100644 --- a/libsigrokdecode.h +++ b/libsigrokdecode.h @@ -121,14 +121,15 @@ enum srd_loglevel { /* * 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 + * - expose it to PDs in module_sigrokdecode.c:PyInit_sigrokdecode() + * - add a check in type_decoder.c:Decoder_put() + * - add a debug string in type_decoder.c:output_type_name() */ enum srd_output_type { SRD_OUTPUT_ANN, SRD_OUTPUT_PYTHON, SRD_OUTPUT_BINARY, + SRD_OUTPUT_LOGIC, SRD_OUTPUT_META, }; @@ -171,8 +172,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; @@ -183,11 +184,16 @@ 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; + /** + * List of logic output channels (item: id, description). + */ + GSList *logic_output_channels; + /** List of decoder options. */ GSList *options; @@ -232,6 +238,11 @@ struct srd_decoder_annotation_row { GSList *ann_classes; }; +struct srd_decoder_logic_output_channel { + char *id; + char *desc; +}; + struct srd_decoder_inst { struct srd_decoder *decoder; struct srd_session *sess; @@ -306,13 +317,18 @@ 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; + const uint8_t *data; +}; +struct srd_proto_data_logic { + int logic_group; + uint64_t repeat_count; /* Number of times the value in data was repeated. */ + const uint8_t *data; /* Bitfield containing the states of the logic outputs */ }; typedef void (*srd_pd_output_callback)(struct srd_proto_data *pdata,