]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/rdtech-tc/protocol.h
output/csv: use intermediate time_t var, silence compiler warning
[libsigrok.git] / src / hardware / rdtech-tc / protocol.h
index d13527df11b0c3c8f9c8cf938912539d7c532aea..e495375ca673dc7b46bef478fbec0c964e237be4 100644 (file)
 
 #define LOG_PREFIX "rdtech-tc"
 
-#define RDTECH_TC_BUFSIZE 256
+/*
+ * Keep request and response buffers of sufficient size. The maximum
+ * request text currently involved is "bgetva\r\n" which translates
+ * to 9 bytes. The poll response (a measurement, the largest amount
+ * of data that is currently received) is 192 bytes in length. Add
+ * some slack for alignment, and for in-flight messages or adjacent
+ * data during synchronization to the data stream.
+ */
+#define RDTECH_TC_MAXREQLEN 12
+#define RDTECH_TC_RSPBUFSIZE 256
 
 struct rdtech_dev_info {
        char *model_name;
@@ -33,13 +42,27 @@ struct rdtech_dev_info {
        uint32_t serial_num;
 };
 
+struct rdtech_tc_channel_desc {
+       const char *name;
+       struct binary_value_spec spec;
+       struct sr_rational scale;
+       int digits;
+       enum sr_mq mq;
+       enum sr_unit unit;
+};
+
 struct dev_context {
+       gboolean is_bluetooth;
+       char req_text[RDTECH_TC_MAXREQLEN];
        struct rdtech_dev_info dev_info;
-       const struct binary_analog_channel *channels;
+       const struct rdtech_tc_channel_desc *channels;
+       size_t channel_count;
+       struct feed_queue_analog **feeds;
        struct sr_sw_limits limits;
-       uint8_t buf[RDTECH_TC_BUFSIZE];
-       size_t buflen;
+       uint8_t buf[RDTECH_TC_RSPBUFSIZE];
+       size_t rdlen;
        int64_t cmd_sent_at;
+       size_t rx_after_tx;
 };
 
 SR_PRIV int rdtech_tc_probe(struct sr_serial_dev_inst *serial, struct dev_context *devc);