]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/hantek-6xxx/api.c
uni-t-ut32x: improve robustness of packet parser, more diagnostics
[libsigrok.git] / src / hardware / hantek-6xxx / api.c
index f8940d8f3a5296b401b4e13e8d8dc43f96d07fce..20d35a2b3aa30be70925e6a03cd4f258a13e6d4c 100644 (file)
@@ -61,20 +61,39 @@ static const char *acdc_coupling[] = {
 
 static const struct hantek_6xxx_profile dev_profiles[] = {
        {
+               /* Windows: "Hantek6022BE DRIVER 1": 04b4:6022 */
                0x04b4, 0x6022, 0x1d50, 0x608e, 0x0001,
                "Hantek", "6022BE", "fx2lafw-hantek-6022be.fw",
                ARRAY_AND_SIZE(dc_coupling), FALSE,
        },
+       {
+               /* Windows: "Hantek6022BE DRIVER 2": 04b5:6022 */
+               0x04b5, 0x6022, 0x1d50, 0x608e, 0x0001,
+               "Hantek", "6022BE", "fx2lafw-hantek-6022be.fw",
+               ARRAY_AND_SIZE(dc_coupling), FALSE,
+       },
        {
                0x8102, 0x8102, 0x1d50, 0x608e, 0x0002,
                "Sainsmart", "DDS120", "fx2lafw-sainsmart-dds120.fw",
                ARRAY_AND_SIZE(acdc_coupling), TRUE,
        },
        {
+               /* Windows: "Hantek6022BL DRIVER 1": 04b4:602a */
                0x04b4, 0x602a, 0x1d50, 0x608e, 0x0003,
                "Hantek", "6022BL", "fx2lafw-hantek-6022bl.fw",
                ARRAY_AND_SIZE(dc_coupling), FALSE,
        },
+       {
+               /* Windows: "Hantek6022BL DRIVER 2": 04b5:602a */
+               0x04b5, 0x602a, 0x1d50, 0x608e, 0x0003,
+               "Hantek", "6022BL", "fx2lafw-hantek-6022bl.fw",
+               ARRAY_AND_SIZE(dc_coupling), FALSE,
+       },
+       {
+               0xd4a2, 0x5660, 0x1d50, 0x608e, 0x0004,
+               "YiXingDianZi", "MDSO", "fx2lafw-yixingdianzi-mdso.fw",
+               ARRAY_AND_SIZE(dc_coupling), FALSE,
+       },
        ALL_ZERO
 };
 
@@ -120,10 +139,6 @@ static struct sr_dev_inst *hantek_6xxx_dev_new(const struct hantek_6xxx_profile
        devc->coupling_tab_size = prof->coupling_tab_size;
        devc->has_coupling = prof->has_coupling;
 
-       devc->sample_buf = NULL;
-       devc->sample_buf_write = 0;
-       devc->sample_buf_size = 0;
-
        devc->profile = prof;
        devc->dev_state = IDLE;
        devc->samplerate = DEFAULT_SAMPLERATE;
@@ -232,11 +247,12 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                                devices = g_slist_append(devices, sdi);
                                devc = sdi->priv;
                                if (ezusb_upload_firmware(drvc->sr_ctx, devlist[i],
-                                               USB_CONFIGURATION, prof->firmware) == SR_OK)
+                                               USB_CONFIGURATION, prof->firmware) == SR_OK) {
                                        /* Remember when the firmware on this device was updated. */
                                        devc->fw_updated = g_get_monotonic_time();
-                               else
-                                       sr_err("Firmware upload failed.");
+                               } else {
+                                       sr_err("Firmware upload failed, name %s.", prof->firmware);
+                               }
                                /* Dummy USB address of 0xff will get overwritten later. */
                                sdi->conn = sr_usb_dev_inst_new(
                                                libusb_get_bus_number(devlist[i]), 0xff, NULL);
@@ -637,7 +653,6 @@ static int read_channel(const struct sr_dev_inst *sdi, uint32_t amount)
        amount = MIN(amount, MAX_PACKET_SIZE);
        ret = hantek_6xxx_get_channeldata(sdi, receive_transfer, amount);
        devc->read_start_ts = g_get_monotonic_time();
-       devc->read_data_amount = amount;
 
        return ret;
 }
@@ -721,9 +736,6 @@ static int dev_acquisition_stop(struct sr_dev_inst *sdi)
        devc = sdi->priv;
        devc->dev_state = STOPPING;
 
-       g_free(devc->sample_buf);
-       devc->sample_buf = NULL;
-
        return SR_OK;
 }