+enum states {
+ IDLE,
+ FLUSH,
+ CAPTURE,
+ STOPPING,
+};
+
+enum couplings {
+ COUPLING_AC = 0,
+ COUPLING_DC,
+};
+
+struct hantek_6xxx_profile {
+ /* VID/PID after cold boot */
+ uint16_t orig_vid;
+ uint16_t orig_pid;
+ /* VID/PID after firmware upload */
+ uint16_t fw_vid;
+ uint16_t fw_pid;
+ uint16_t fw_prod_ver;
+ const char *vendor;
+ const char *model;
+ const char *firmware;
+ const char **coupling_vals;
+ uint8_t coupling_tab_size;
+ gboolean has_coupling;
+};
+
+struct dev_context {
+ const struct hantek_6xxx_profile *profile;
+ GSList *enabled_channels;
+ /*
+ * We can't keep track of an FX2-based device after upgrading
+ * the firmware (it re-enumerates into a different device address
+ * after the upgrade) this is like a global lock. No device will open
+ * until a proper delay after the last device was upgraded.
+ */
+ int64_t fw_updated;
+ int dev_state;
+ uint64_t samp_received;
+ uint64_t aq_started;
+
+ uint64_t read_start_ts;
+
+ gboolean ch_enabled[NUM_CHANNELS];
+ int voltage[NUM_CHANNELS];
+ int coupling[NUM_CHANNELS];
+ const char **coupling_vals;
+ uint8_t coupling_tab_size;
+ gboolean has_coupling;
+ uint64_t samplerate;
+
+ uint64_t limit_msec;
+ uint64_t limit_samples;
+};
+
+SR_PRIV int hantek_6xxx_open(struct sr_dev_inst *sdi);
+SR_PRIV void hantek_6xxx_close(struct sr_dev_inst *sdi);
+SR_PRIV int hantek_6xxx_get_channeldata(const struct sr_dev_inst *sdi,
+ libusb_transfer_cb_fn cb, uint32_t data_amount);
+
+SR_PRIV int hantek_6xxx_start_data_collecting(const struct sr_dev_inst *sdi);
+SR_PRIV int hantek_6xxx_stop_data_collecting(const struct sr_dev_inst *sdi);
+
+SR_PRIV int hantek_6xxx_update_coupling(const struct sr_dev_inst *sdi);
+SR_PRIV int hantek_6xxx_update_samplerate(const struct sr_dev_inst *sdi);
+SR_PRIV int hantek_6xxx_update_vdiv(const struct sr_dev_inst *sdi);
+SR_PRIV int hantek_6xxx_update_channels(const struct sr_dev_inst *sdi);
+SR_PRIV int hantek_6xxx_init(const struct sr_dev_inst *sdi);