X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fcenter-3xx%2Fprotocol.h;h=71e2630df238a327b20726f22e544d1b33f84293;hb=6868626bd3c62aa04daae24b268665092b6c3bd8;hp=f3bda5668a31843be6bbb96784d0a8102a8002ae;hpb=4433145f481d077570b371b466e98b17a77ec7e2;p=libsigrok.git diff --git a/hardware/center-3xx/protocol.h b/hardware/center-3xx/protocol.h index f3bda566..71e2630d 100644 --- a/hardware/center-3xx/protocol.h +++ b/hardware/center-3xx/protocol.h @@ -22,31 +22,63 @@ #define LIBSIGROK_HARDWARE_CENTER_3XX_PROTOCOL_H #include +#include +#include +#include #include #include "libsigrok.h" #include "libsigrok-internal.h" -/* Message logging helpers with subsystem-specific prefix string. */ -#define LOG_PREFIX "center-3xx: " -#define sr_log(l, s, args...) sr_log(l, LOG_PREFIX s, ## args) -#define sr_spew(s, args...) sr_spew(LOG_PREFIX s, ## args) -#define sr_dbg(s, args...) sr_dbg(LOG_PREFIX s, ## args) -#define sr_info(s, args...) sr_info(LOG_PREFIX s, ## args) -#define sr_warn(s, args...) sr_warn(LOG_PREFIX s, ## args) -#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args) +#define LOG_PREFIX "center-3xx" + +/* Note: When adding entries here, don't forget to update CENTER_DEV_COUNT. */ +enum { + CENTER_309, + VOLTCRAFT_K204, +}; + +#define CENTER_DEV_COUNT 2 + +struct center_dev_info { + char *vendor; + char *device; + char *conn; + int num_channels; + uint32_t max_sample_points; + uint8_t packet_size; + gboolean (*packet_valid)(const uint8_t *); + struct sr_dev_driver *di; + int (*receive_data)(int, int, void *); +}; + +extern SR_PRIV const struct center_dev_info center_devs[CENTER_DEV_COUNT]; + +#define SERIAL_BUFSIZE 256 /** Private, per-device-instance driver context. */ struct dev_context { - /* Model-specific information */ + /** The current sampling limit (in number of samples). */ + uint64_t limit_samples; - /* Acquisition settings */ + /** The current sampling limit (in ms). */ + uint64_t limit_msec; - /* Operational state */ + /** Opaque pointer passed in by the frontend. */ + void *cb_data; - /* Temporary state across callbacks */ + /** The current number of already received samples. */ + uint64_t num_samples; + int64_t starttime; + + uint8_t buf[SERIAL_BUFSIZE]; + int bufoffset; + int buflen; }; -SR_PRIV int center_3xx_receive_data(int fd, int revents, void *cb_data); +SR_PRIV gboolean center_3xx_packet_valid(const uint8_t *buf); + +SR_PRIV int receive_data_CENTER_309(int fd, int revents, void *cb_data); +SR_PRIV int receive_data_VOLTCRAFT_K204(int fd, int revents, void *cb_data); #endif