X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=hardware%2Fhantek-dso%2Fdso.h;h=c7ae841fa4f22e7eee18297daf50244612bcdd07;hb=b0c8d7ac7f698f75aeb1c4b201c90360bae009e8;hp=42077c0ab51a1404e02c089b9212c13f06b7a504;hpb=a370ef19161cee7016b7d24a2b9cef95b1191f6d;p=libsigrok.git diff --git a/hardware/hantek-dso/dso.h b/hardware/hantek-dso/dso.h index 42077c0a..c7ae841f 100644 --- a/hardware/hantek-dso/dso.h +++ b/hardware/hantek-dso/dso.h @@ -26,20 +26,21 @@ #define USB_CONFIGURATION 1 #define DSO_EP_IN 0x86 #define DSO_EP_OUT 0x02 +#define NUM_PROBES 2 /* FX2 renumeration delay in ms */ -#define MAX_RENUM_DELAY 3000 +#define MAX_RENUM_DELAY_MS 3000 #define MAX_CAPTURE_EMPTY 3 -#define DEFAULT_VOLTAGE VOLTAGE_2V +#define DEFAULT_VOLTAGE VDIV_500MV #define DEFAULT_FRAMESIZE FRAMESIZE_SMALL #define DEFAULT_TIMEBASE TIME_100us #define DEFAULT_TRIGGER_SOURCE "CH1" -#define DEFAULT_COUPLING COUPLING_AC +#define DEFAULT_COUPLING COUPLING_DC #define DEFAULT_HORIZ_TRIGGERPOS 0.5 #define DEFAULT_VERT_OFFSET 0.5 -#define DEFAULT_VERT_TRIGGERPOS 0.0 +#define DEFAULT_VERT_TRIGGERPOS 0.5 #define MAX_VERT_TRIGGER 0xfe @@ -67,28 +68,20 @@ enum dso_commands { CMD_GET_CHANNELDATA, CMD_GET_CAPTURESTATE, CMD_SET_VOLTAGE, + /* unused */ cmdSetLogicalData, cmdGetLogicalData }; -enum voltages { - VOLTAGE_5V = 0, - VOLTAGE_2V, - VOLTAGE_1V, - VOLTAGE_500mV, - VOLTAGE_200mV, - VOLTAGE_100mV, - VOLTAGE_50mV, - VOLTAGE_20mV, - VOLTAGE_10mV -}; - +/* Must match the coupling table. */ enum couplings { COUPLING_AC = 0, COUPLING_DC, - COUPLING_OFF + /* TODO not used, how to enable? */ + COUPLING_GND }; +/* Must match the timebases table. */ enum time_bases { TIME_10us = 0, TIME_20us, @@ -107,6 +100,19 @@ enum time_bases { TIME_400ms }; +/* Must match the vdivs table. */ +enum { + VDIV_10MV, + VDIV_20MV, + VDIV_50MV, + VDIV_100MV, + VDIV_200MV, + VDIV_500MV, + VDIV_1V, + VDIV_2V, + VDIV_5V, +}; + enum trigger_slopes { SLOPE_POSITIVE = 0, SLOPE_NEGATIVE @@ -149,13 +155,11 @@ struct dso_profile { uint16_t fw_pid; char *vendor; char *model; - char *model_version; - int num_probes; char *firmware; }; struct context { - struct dso_profile *profile; + const struct dso_profile *profile; struct sr_usb_dev_inst *usb; void *cb_data; uint64_t limit_frames; @@ -165,12 +169,12 @@ struct context { * after the upgrade) this is like a global lock. No device will open * until a proper delay after the last device was upgraded. */ - GTimeVal fw_updated; + int64_t fw_updated; int epin_maxpacketsize; int capture_empty_count; - int current_transfer; int dev_state; + /* Oscilloscope settings. */ int timebase; gboolean ch1_enabled; gboolean ch2_enabled; @@ -183,7 +187,7 @@ struct context { float voffset_ch2; float voffset_trigger; uint16_t channel_levels[2][9][2]; - int framesize; + unsigned int framesize; gboolean filter_ch1; gboolean filter_ch2; gboolean filter_trigger; @@ -191,6 +195,12 @@ struct context { char *triggersource; float triggerposition; int triggermode; + + /* Frame transfer */ + unsigned int samp_received; + unsigned int samp_buffered; + unsigned int trigger_offset; + unsigned char *framebuf; }; SR_PRIV int dso_open(int dev_index); @@ -198,8 +208,9 @@ SR_PRIV void dso_close(struct sr_dev_inst *sdi); SR_PRIV int dso_enable_trigger(struct context *ctx); SR_PRIV int dso_force_trigger(struct context *ctx); SR_PRIV int dso_init(struct context *ctx); -SR_PRIV uint8_t dso_get_capturestate(struct context *ctx); -SR_PRIV uint8_t dso_capture_start(struct context *ctx); +SR_PRIV int dso_get_capturestate(struct context *ctx, uint8_t *capturestate, + uint32_t *trigger_offset); +SR_PRIV int dso_capture_start(struct context *ctx); SR_PRIV int dso_get_channeldata(struct context *ctx, libusb_transfer_cb_fn cb); #endif