]> sigrok.org Git - libsigrokdecode.git/blobdiff - libsigrokdecode.h.in
Use OUTPUT_BINARY with four classes.
[libsigrokdecode.git] / libsigrokdecode.h.in
index c61a0e4d17d6c0a11c094fd8509b9d79d676d62e..b75942808e2421207df994e49014263d7a43dc34 100644 (file)
@@ -160,16 +160,15 @@ enum {
  */
 enum {
        SRD_OUTPUT_ANN,
-       SRD_OUTPUT_PROTO,
+       SRD_OUTPUT_PYTHON,
        SRD_OUTPUT_BINARY,
+       SRD_OUTPUT_META,
 };
 
 #define SRD_MAX_NUM_PROBES 64
 
 enum {
-       SRD_CONF_NUM_PROBES = 10000,
-       SRD_CONF_UNITSIZE,
-       SRD_CONF_SAMPLERATE,
+       SRD_CONF_SAMPLERATE = 10000,
 };
 
 struct srd_decoder {
@@ -203,6 +202,12 @@ struct srd_decoder {
         */
        GSList *annotations;
 
+       /**
+        * List of NULL-terminated char[], containing descriptions of the
+        * supported binary output.
+        */
+       GSList *binary;
+
        /** List of decoder options.  */
        GSList *options;
 
@@ -242,9 +247,7 @@ struct srd_decoder_inst {
        GSList *pd_output;
        int dec_num_probes;
        int *dec_probemap;
-       int data_num_probes;
        int data_unitsize;
-       uint64_t data_samplerate;
        GSList *next_di;
 };
 
@@ -253,15 +256,27 @@ struct srd_pd_output {
        int output_type;
        struct srd_decoder_inst *di;
        char *proto_id;
+       /* Only used for OUTPUT_META. */
+       const GVariantType *meta_type;
+       char *meta_name;
+       char *meta_descr;
 };
 
 struct srd_proto_data {
        uint64_t start_sample;
        uint64_t end_sample;
        struct srd_pd_output *pdo;
-       int ann_format;
        void *data;
 };
+struct srd_proto_data_annotation {
+       int ann_format;
+       char **ann_text;
+};
+struct srd_proto_data_binary {
+       int bin_class;
+       uint64_t size;
+       const unsigned char *data;
+};
 
 typedef void (*srd_pd_output_callback_t)(struct srd_proto_data *pdata,
                                         void *cb_data);
@@ -304,10 +319,11 @@ SRD_API struct srd_decoder_inst *srd_inst_find_by_id(struct srd_session *sess,
                const char *inst_id);
 SRD_API int srd_session_new(struct srd_session **sess);
 SRD_API int srd_session_start(struct srd_session *sess);
-SRD_API int srd_session_config_set(struct srd_session *sess, int key,
+SRD_API int srd_session_metadata_set(struct srd_session *sess, int key,
                GVariant *data);
 SRD_API int srd_session_send(struct srd_session *sess,
-               uint64_t start_samplenum, const uint8_t *inbuf, uint64_t inbuflen);
+               uint64_t start_samplenum, uint64_t end_samplenum,
+               const uint8_t *inbuf, uint64_t inbuflen);
 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_t cb, void *cb_data);