]> sigrok.org Git - libsigrok.git/blobdiff - hardware/hantek-dso/dso.h
build: Portability fixes.
[libsigrok.git] / hardware / hantek-dso / dso.h
index 866dc2d5343fadda68a4d613711b042a5949c9d1..edccb725cf3830bc873833e6e4856e3468392a59 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * 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
+#define LOG_PREFIX "hantek-dso"
+
+#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,
@@ -67,8 +69,8 @@ enum dso_commands {
        CMD_GET_CAPTURESTATE,
        CMD_SET_VOLTAGE,
        /* unused */
-       cmdSetLogicalData,
-       cmdGetLogicalData,
+       CMD_SET_LOGICALDATA,
+       CMD_GET_LOGICALDATA,
 };
 
 /* Must match the coupling table. */
@@ -154,15 +156,16 @@ struct dso_profile {
        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;
+       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
@@ -204,13 +207,13 @@ struct dev_context {
 
 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_get_channeldata(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);
 
 #endif