#include "libsigrok.h"
#include "libsigrok-internal.h"
+/* Message logging helpers with driver-specific prefix string. */
+#define DRIVER_LOG_DOMAIN "la8: "
+#define sr_log(l, s, args...) sr_log(l, DRIVER_LOG_DOMAIN s, ## args)
+#define sr_spew(s, args...) sr_spew(DRIVER_LOG_DOMAIN s, ## args)
+#define sr_dbg(s, args...) sr_dbg(DRIVER_LOG_DOMAIN s, ## args)
+#define sr_info(s, args...) sr_info(DRIVER_LOG_DOMAIN s, ## args)
+#define sr_warn(s, args...) sr_warn(DRIVER_LOG_DOMAIN s, ## args)
+#define sr_err(s, args...) sr_err(DRIVER_LOG_DOMAIN s, ## args)
+
#define USB_VENDOR_ID 0x0403
-#define USB_PRODUCT_ID 0x6001
#define USB_DESCRIPTION "ChronoVu LA8"
#define USB_VENDOR_NAME "ChronoVu"
#define USB_MODEL_NAME "LA8"
#define NUM_BLOCKS 2048 /* Number of blocks */
/* Private, per-device-instance driver context. */
-struct context {
+struct dev_context {
/** FTDI device context (used by libftdi). */
struct ftdi_context *ftdic;
/** The divcount value (determines the sample period) for the LA8. */
uint8_t divcount;
+
+ /** This ChronoVu LA8's USB PID (multiple versions exist). */
+ uint16_t usb_pid;
};
/* driver.c */
SR_PRIV void fill_supported_samplerates_if_needed(void);
SR_PRIV int is_valid_samplerate(uint64_t samplerate);
SR_PRIV uint8_t samplerate_to_divcount(uint64_t samplerate);
-SR_PRIV int la8_write(struct context *ctx, uint8_t *buf, int size);
-SR_PRIV int la8_read(struct context *ctx, uint8_t *buf, int size);
-SR_PRIV int la8_close(struct context *ctx);
-SR_PRIV int la8_close_usb_reset_sequencer(struct context *ctx);
-SR_PRIV int la8_reset(struct context *ctx);
-SR_PRIV int configure_probes(struct context *ctx, const GSList *probes);
-SR_PRIV int set_samplerate(struct sr_dev_inst *sdi, uint64_t samplerate);
-SR_PRIV int la8_read_block(struct context *ctx);
-SR_PRIV void send_block_to_session_bus(struct context *ctx, int block);
+SR_PRIV int la8_write(struct dev_context *devc, uint8_t *buf, int size);
+SR_PRIV int la8_read(struct dev_context *devc, uint8_t *buf, int size);
+SR_PRIV int la8_close(struct dev_context *devc);
+SR_PRIV int la8_close_usb_reset_sequencer(struct dev_context *devc);
+SR_PRIV int la8_reset(struct dev_context *devc);
+SR_PRIV int configure_probes(const struct sr_dev_inst *sdi);
+SR_PRIV int set_samplerate(const struct sr_dev_inst *sdi, uint64_t samplerate);
+SR_PRIV int la8_read_block(struct dev_context *devc);
+SR_PRIV void send_block_to_session_bus(struct dev_context *devc, int block);
#endif