#define LIBSIGROK_HARDWARE_IKALOGIC_SCANAPLUS_PROTOCOL_H
#include <stdint.h>
+#include <string.h>
#include <glib.h>
+#include <ftdi.h>
#include "libsigrok.h"
#include "libsigrok-internal.h"
/* Message logging helpers with subsystem-specific prefix string. */
-#define LOG_PREFIX "ikalogic-scanaplus: "
+#define LOG_PREFIX "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_warn(s, args...) sr_warn(LOG_PREFIX s, ## args)
#define sr_err(s, args...) sr_err(LOG_PREFIX s, ## args)
-/** 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