X-Git-Url: https://sigrok.org/gitweb/?p=libsigrok.git;a=blobdiff_plain;f=hardware%2Fikalogic-scanaplus%2Fprotocol.h;h=1df0517ecec2e538308f6547c1083ca24f7390c8;hp=578a01103cb40e2e4c1235c0abcc416cad4a6dc9;hb=43cd4637285833706f8a404ca027bcf0ee75b9ae;hpb=fdf4a1f5a0a04046ec014786b4a8fce125e1163c diff --git a/hardware/ikalogic-scanaplus/protocol.h b/hardware/ikalogic-scanaplus/protocol.h index 578a0110..1df0517e 100644 --- a/hardware/ikalogic-scanaplus/protocol.h +++ b/hardware/ikalogic-scanaplus/protocol.h @@ -22,23 +22,43 @@ #define LIBSIGROK_HARDWARE_IKALOGIC_SCANAPLUS_PROTOCOL_H #include +#include #include +#include #include "libsigrok.h" #include "libsigrok-internal.h" -/* Message logging helpers with subsystem-specific prefix string. */ -#define LOG_PREFIX "ikalogic-scanaplus: " -#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 "ikalogic-scanaplus" -/** Private, per-device-instance driver context. */ +#define COMPRESSED_BUF_SIZE (64 * 1024) + +/* Private, per-device-instance driver context. */ struct dev_context { + /** FTDI device context (used by libftdi). */ + struct ftdi_context *ftdic; + + /** The current sampling limit (in ms). */ + uint64_t limit_msec; + + /** The current sampling limit (in number of samples). */ + uint64_t limit_samples; + + void *cb_data; + + uint8_t *compressed_buf; + uint64_t compressed_bytes_ignored; + uint8_t *sample_buf; + uint64_t bytes_received; + uint64_t samples_sent; + + /** ScanaPLUS unique device ID (3 bytes). */ + uint8_t devid[3]; }; -SR_PRIV int ikalogic_scanaplus_receive_data(int fd, int revents, void *cb_data); +SR_PRIV int scanaplus_close(struct dev_context *devc); +SR_PRIV int scanaplus_get_device_id(struct dev_context *devc); +SR_PRIV int scanaplus_init(struct dev_context *devc); +SR_PRIV int scanaplus_start_acquisition(struct dev_context *devc); +SR_PRIV int scanaplus_receive_data(int fd, int revents, void *cb_data); #endif