X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fhantek-dso%2Fdso.c;h=27ef63c1e864b35385973c9750237bbaa3f62ef7;hb=c1aae90038456a61d0f9313d34e6107c3440d3e7;hp=b83045757f756c26e29769ac6200e1b9af8dbe17;hpb=395206f460cc4002feedca2265cf374b90c9c047;p=libsigrok.git diff --git a/src/hardware/hantek-dso/dso.c b/src/hardware/hantek-dso/dso.c index b8304575..27ef63c1 100644 --- a/src/hardware/hantek-dso/dso.c +++ b/src/hardware/hantek-dso/dso.c @@ -19,12 +19,14 @@ * along with this program. If not, see . */ -#include "libsigrok.h" -#include "libsigrok-internal.h" -#include "dso.h" #include #include #include +#include +#include "libsigrok-internal.h" +#include "dso.h" + +#define NUM_CHANNELS 2 extern struct sr_dev_driver hantek_dso_driver_info; @@ -109,7 +111,7 @@ err: SR_PRIV int dso_open(struct sr_dev_inst *sdi) { struct dev_context *devc; - struct drv_context *drvc = hantek_dso_driver_info.priv; + struct drv_context *drvc = hantek_dso_driver_info.context; struct sr_usb_dev_inst *usb; struct libusb_device_descriptor des; libusb_device **devlist; @@ -185,7 +187,7 @@ SR_PRIV void dso_close(struct sr_dev_inst *sdi) usb = sdi->conn; - if (usb->devhdl == NULL) + if (!usb->devhdl) return; sr_info("Closing device on %d.%d (logical) / %s (physical) interface %d.", @@ -225,7 +227,7 @@ static int get_channel_offsets(const struct sr_dev_inst *sdi) * since that's how voltage offsets are submitted back to the DSO. * Convert to host order now, so we can use them natively. */ - for (chan = 0; chan < 2; chan++) { + for (chan = 0; chan < NUM_CHANNELS; chan++) { for (v = 0; v < 9; v++) { devc->channel_levels[chan][v][0] = g_ntohs(devc->channel_levels[chan][v][0]); @@ -236,7 +238,7 @@ static int get_channel_offsets(const struct sr_dev_inst *sdi) if (sr_log_loglevel_get() >= SR_LOG_DBG) { gs = g_string_sized_new(128); - for (chan = 0; chan < 2; chan++) { + for (chan = 0; chan < NUM_CHANNELS; chan++) { g_string_printf(gs, "CH%d:", chan + 1); for (v = 0; v < 9; v++) { g_string_append_printf(gs, " %.4x-%.4x", @@ -383,19 +385,18 @@ static int dso_set_filters(const struct sr_dev_inst *sdi) memset(cmdstring, 0, sizeof(cmdstring)); cmdstring[0] = CMD_SET_FILTERS; cmdstring[1] = 0x0f; - if (devc->filter_ch1) { + if (devc->filter[0]) { sr_dbg("Turning on CH1 filter."); cmdstring[2] |= 0x80; } - if (devc->filter_ch2) { + if (devc->filter[1]) { sr_dbg("Turning on CH2 filter."); cmdstring[2] |= 0x40; } - if (devc->filter_trigger) { - /* TODO: supported on the DSO-2090? */ - sr_dbg("Turning on trigger filter."); - cmdstring[2] |= 0x20; - } + /* + * Not supported: filtering on the trigger + * cmdstring[2] |= 0x20; + */ if (send_begin(sdi) != SR_OK) return SR_ERR; @@ -428,8 +429,8 @@ static int dso_set_voltage(const struct sr_dev_inst *sdi) cmdstring[2] = 0x30; /* CH1 volts/div is encoded in bits 0-1 */ - sr_dbg("CH1 vdiv index: %d.", devc->voltage_ch1); - switch (devc->voltage_ch1) { + sr_dbg("CH1 vdiv index: %d.", devc->voltage[0]); + switch (devc->voltage[0]) { case VDIV_1V: case VDIV_100MV: case VDIV_10MV: @@ -448,8 +449,8 @@ static int dso_set_voltage(const struct sr_dev_inst *sdi) } /* CH2 volts/div is encoded in bits 2-3 */ - sr_dbg("CH2 vdiv index: %d.", devc->voltage_ch2); - switch (devc->voltage_ch2) { + sr_dbg("CH2 vdiv index: %d.", devc->voltage[1]); + switch (devc->voltage[1]) { case VDIV_1V: case VDIV_100MV: case VDIV_10MV: @@ -494,24 +495,24 @@ static int dso_set_relays(const struct sr_dev_inst *sdi) devc = sdi->priv; usb = sdi->conn; - if (devc->voltage_ch1 < VDIV_1V) + if (devc->voltage[0] < VDIV_1V) relays[1] = ~relays[1]; - if (devc->voltage_ch1 < VDIV_100MV) + if (devc->voltage[0] < VDIV_100MV) relays[2] = ~relays[2]; - sr_dbg("CH1 coupling: %d.", devc->coupling_ch1); - if (devc->coupling_ch1 != COUPLING_AC) + sr_dbg("CH1 coupling: %d.", devc->coupling[0]); + if (devc->coupling[0] != COUPLING_AC) relays[3] = ~relays[3]; - if (devc->voltage_ch2 < VDIV_1V) + if (devc->voltage[1] < VDIV_1V) relays[4] = ~relays[4]; - if (devc->voltage_ch2 < VDIV_100MV) + if (devc->voltage[1] < VDIV_100MV) relays[5] = ~relays[5]; - sr_dbg("CH2 coupling: %d.", devc->coupling_ch1); - if (devc->coupling_ch2 != COUPLING_AC) + sr_dbg("CH2 coupling: %d.", devc->coupling[1]); + if (devc->coupling[1] != COUPLING_AC) relays[6] = ~relays[6]; if (!strcmp(devc->triggersource, "EXT")) @@ -552,7 +553,7 @@ static int dso_set_voffsets(const struct sr_dev_inst *sdi) memset(offsets, 0, sizeof(offsets)); /* Channel 1 */ - ch_levels = devc->channel_levels[0][devc->voltage_ch1]; + ch_levels = devc->channel_levels[0][devc->voltage[0]]; offset = (ch_levels[1] - ch_levels[0]) * devc->voffset_ch1 + ch_levels[0]; offsets[0] = (offset >> 8) | 0x20; offsets[1] = offset & 0xff; @@ -560,7 +561,7 @@ static int dso_set_voffsets(const struct sr_dev_inst *sdi) offsets[0], offsets[1]); /* Channel 2 */ - ch_levels = devc->channel_levels[1][devc->voltage_ch2]; + ch_levels = devc->channel_levels[1][devc->voltage[1]]; offset = (ch_levels[1] - ch_levels[0]) * devc->voffset_ch2 + ch_levels[0]; offsets[2] = (offset >> 8) | 0x20; offsets[3] = offset & 0xff; @@ -704,7 +705,7 @@ SR_PRIV int dso_get_capturestate(const struct sr_dev_inst *sdi, bitvalue = 1; for (i = 0; i < 24; i++) { /* Each set bit inverts all bits with a lower value. */ - if(toff & bitvalue) + if (toff & bitvalue) toff ^= bitvalue - 1; bitvalue <<= 1; }