X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fkern-scale%2Fprotocol.h;h=fce47003a669e68dbd4ce6076ce507532e5eec2a;hb=3be42bc22f8b36599a448273c12a76d3e0f7a940;hp=1a7a51a4c578da1c89e6f74941299a3a483ec95d;hpb=9380ec2f05e67518b1b23057749df3684a0cf05e;p=libsigrok.git diff --git a/src/hardware/kern-scale/protocol.h b/src/hardware/kern-scale/protocol.h index 1a7a51a4..fce47003 100644 --- a/src/hardware/kern-scale/protocol.h +++ b/src/hardware/kern-scale/protocol.h @@ -21,15 +21,52 @@ #ifndef LIBSIGROK_HARDWARE_KERN_SCALE_PROTOCOL_H #define LIBSIGROK_HARDWARE_KERN_SCALE_PROTOCOL_H -#include -#include -#include -#include "libsigrok-internal.h" - #define LOG_PREFIX "kern-scale" +struct scale_info { + /** libsigrok driver info struct. */ + struct sr_dev_driver di; + /** Manufacturer/brand. */ + const char *vendor; + /** Model. */ + const char *device; + /** serialconn string. */ + const char *conn; + /** Baud rate. */ + uint32_t baudrate; + /** Packet size in bytes. */ + int packet_size; + /** Packet validation function. */ + gboolean (*packet_valid)(const uint8_t *); + /** Packet parsing function. */ + int (*packet_parse)(const uint8_t *, float *, + struct sr_datafeed_analog_old *, void *); + /** Size of chipset info struct. */ + gsize info_size; +}; + +#define SCALE_BUFSIZE 256 + /** Private, per-device-instance driver context. */ struct dev_context { + /** The current sampling limit (in number of samples). */ + uint64_t limit_samples; + + /** The time limit (in milliseconds). */ + uint64_t limit_msec; + + /** Opaque pointer passed in by the frontend. */ + void *cb_data; + + /** The current number of already received samples. */ + uint64_t num_samples; + + /** The starting time of current sampling run. */ + int64_t starttime; + + uint8_t buf[SCALE_BUFSIZE]; + int bufoffset; + int buflen; }; SR_PRIV int kern_scale_receive_data(int fd, int revents, void *cb_data);