/*
- * This file is part of the sigrok project.
+ * This file is part of the libsigrok project.
*
* Copyright (C) 2012 Bert Vermeulen <bert@biot.com>
* With protocol information from the hantekdso project,
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef LIBSIGROK_HARDWARE_HANTEK_DSO_H
-#define LIBSIGROK_HARDWARE_HANTEK_DSO_H
+#ifndef LIBSIGROK_HARDWARE_HANTEK_DSO_DSO_H
+#define LIBSIGROK_HARDWARE_HANTEK_DSO_DSO_H
-#define USB_INTERFACE 0
-#define USB_CONFIGURATION 1
-#define DSO_EP_IN 0x86
-#define DSO_EP_OUT 0x02
+/* Message logging helpers with subsystem-specific prefix string. */
+#define LOG_PREFIX "hantek-dso: "
+#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 USB_INTERFACE 0
+#define USB_CONFIGURATION 1
+#define DSO_EP_IN 0x86
+#define DSO_EP_OUT 0x02
/* FX2 renumeration delay in ms */
-#define MAX_RENUM_DELAY_MS 3000
+#define MAX_RENUM_DELAY_MS 3000
-#define MAX_CAPTURE_EMPTY 3
+#define MAX_CAPTURE_EMPTY 3
-#define DEFAULT_VOLTAGE VDIV_500MV
-#define DEFAULT_FRAMESIZE FRAMESIZE_SMALL
-#define DEFAULT_TIMEBASE TIME_100us
-#define DEFAULT_TRIGGER_SOURCE "CH1"
-#define DEFAULT_COUPLING COUPLING_DC
-#define DEFAULT_HORIZ_TRIGGERPOS 0.5
-#define DEFAULT_VERT_OFFSET 0.5
-#define DEFAULT_VERT_TRIGGERPOS 0.5
+#define DEFAULT_VOLTAGE VDIV_500MV
+#define DEFAULT_FRAMESIZE FRAMESIZE_SMALL
+#define DEFAULT_TIMEBASE TIME_100us
+#define DEFAULT_TRIGGER_SOURCE "CH1"
+#define DEFAULT_COUPLING COUPLING_DC
+#define DEFAULT_HORIZ_TRIGGERPOS 0.5
+#define DEFAULT_VERT_OFFSET 0.5
+#define DEFAULT_VERT_TRIGGERPOS 0.5
-#define MAX_VERT_TRIGGER 0xfe
+#define MAX_VERT_TRIGGER 0xfe
/* Hantek DSO-specific protocol values */
-#define EEPROM_CHANNEL_OFFSETS 0x08
+#define EEPROM_CHANNEL_OFFSETS 0x08
-#define FRAMESIZE_SMALL 10240
-#define FRAMESIZE_LARGE 32768
+/* All models have this for their "fast" mode. */
+#define FRAMESIZE_SMALL 10240
enum control_requests {
CTRL_READ_EEPROM = 0xa2,
CMD_GET_CAPTURESTATE,
CMD_SET_VOLTAGE,
/* unused */
- cmdSetLogicalData,
- cmdGetLogicalData,
+ CMD_SET_LOGICALDATA,
+ CMD_GET_LOGICALDATA,
};
/* Must match the coupling table. */
uint16_t fw_pid;
char *vendor;
char *model;
+ const uint64_t *buffersizes;
char *firmware;
};
struct dev_context {
const struct dso_profile *profile;
- struct sr_usb_dev_inst *usb;
void *cb_data;
uint64_t limit_frames;
uint64_t num_frames;
SR_PRIV int dso_open(struct sr_dev_inst *sdi);
SR_PRIV void dso_close(struct sr_dev_inst *sdi);
-SR_PRIV int dso_enable_trigger(struct dev_context *devc);
-SR_PRIV int dso_force_trigger(struct dev_context *devc);
-SR_PRIV int dso_init(struct dev_context *devc);
-SR_PRIV int dso_get_capturestate(struct dev_context *devc,
+SR_PRIV int dso_enable_trigger(const struct sr_dev_inst *sdi);
+SR_PRIV int dso_force_trigger(const struct sr_dev_inst *sdi);
+SR_PRIV int dso_init(const struct sr_dev_inst *sdi);
+SR_PRIV int dso_get_capturestate(const struct sr_dev_inst *sdi,
uint8_t *capturestate, uint32_t *trigger_offset);
-SR_PRIV int dso_capture_start(struct dev_context *devc);
+SR_PRIV int dso_capture_start(const struct sr_dev_inst *sdi);
SR_PRIV int dso_get_channeldata(const struct sr_dev_inst *sdi,
libusb_transfer_cb_fn cb);