From 459324acb8769240513e0bb3ef3c04ad295e8b19 Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Wed, 12 Oct 2016 22:33:19 +0200 Subject: [PATCH] hantek-6xxx: Update driver to use the USB product version field. We now require the use of the latest fx2lafw firmware which uses the same USB VID/PID (1D50:608E) for the Hantek 6022BE and the variants and rebadges of that device (e.g. the SainSmart DDS120). The variants can be distinguished via the USB product version field. --- src/hardware/hantek-6xxx/api.c | 7 ++++--- src/hardware/hantek-6xxx/protocol.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/hardware/hantek-6xxx/api.c b/src/hardware/hantek-6xxx/api.c index 0f00cd3e..55962681 100644 --- a/src/hardware/hantek-6xxx/api.c +++ b/src/hardware/hantek-6xxx/api.c @@ -61,12 +61,12 @@ static const char *acdc_coupling[] = { static const struct hantek_6xxx_profile dev_profiles[] = { { - 0x04b4, 0x6022, 0x04b5, 0x6022, + 0x04b4, 0x6022, 0x1d50, 0x608e, 0x0001, "Hantek", "6022BE", "hantek-6022be.fw", dc_coupling, ARRAY_SIZE(dc_coupling), FALSE, }, { - 0x8102, 0x8102, 0x1D50, 0x608E, + 0x8102, 0x8102, 0x1d50, 0x608e, 0x0002, "Sainsmart", "DDS120", "sainsmart-dds120.fw", acdc_coupling, ARRAY_SIZE(acdc_coupling), TRUE, }, @@ -241,7 +241,8 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options) libusb_get_bus_number(devlist[i]), 0xff, NULL); break; } else if (des.idVendor == dev_profiles[j].fw_vid - && des.idProduct == dev_profiles[j].fw_pid) { + && des.idProduct == dev_profiles[j].fw_pid + && des.bcdDevice == dev_profiles[j].fw_prod_ver) { /* Device matches the post-firmware profile. */ prof = &dev_profiles[j]; sr_dbg("Found a %s %s.", prof->vendor, prof->model); diff --git a/src/hardware/hantek-6xxx/protocol.h b/src/hardware/hantek-6xxx/protocol.h index 0e3e04d4..73d8f868 100644 --- a/src/hardware/hantek-6xxx/protocol.h +++ b/src/hardware/hantek-6xxx/protocol.h @@ -94,6 +94,7 @@ struct hantek_6xxx_profile { /* 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;