X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=src%2Fhardware%2Frdtech-tc%2Fprotocol.h;h=963c7765623bf654514a7c273660b5022da341f4;hp=d13527df11b0c3c8f9c8cf938912539d7c532aea;hb=HEAD;hpb=a82490b6f7ea4a65a45d96e1a55c7bd74a4e49c1 diff --git a/src/hardware/rdtech-tc/protocol.h b/src/hardware/rdtech-tc/protocol.h index d13527df..e495375c 100644 --- a/src/hardware/rdtech-tc/protocol.h +++ b/src/hardware/rdtech-tc/protocol.h @@ -25,7 +25,16 @@ #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);