]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/kingst-la2016/api.c
kingst-la2016: add my copyright for recent improvements
[libsigrok.git] / src / hardware / kingst-la2016 / api.c
index 243b3ab1348fba0f9110d2c7c3e32b8788dec37f..93bc4d668132c2452ebbdbf9ed4e2178926ab807 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * This file is part of the libsigrok project.
  *
+ * Copyright (C) 2022 Gerhard Sittig <gerhard.sittig@gmx.net>
  * Copyright (C) 2020 Florian Schmidt <schmidt_florian@gmx.de>
  * Copyright (C) 2013 Marcus Comstedt <marcus@mc.pp.se>
  * Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
@@ -517,9 +518,10 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                 * this device.
                 */
                devc->fw_uploaded = 0;
+               devc->usb_pid = pid;
                if (des.iProduct != LA2016_IPRODUCT_INDEX) {
                        sr_info("Uploading MCU firmware to '%s'.", conn_id);
-                       ret = la2016_upload_firmware(sdi, ctx, dev, pid);
+                       ret = la2016_upload_firmware(sdi, ctx, dev, FALSE);
                        if (ret != SR_OK) {
                                sr_err("MCU firmware upload failed.");
                                kingst_la2016_free_sdi(sdi);
@@ -529,6 +531,13 @@ static GSList *scan(struct sr_dev_driver *di, GSList *options)
                        usb->address = 0xff;
                        renum_devices = g_slist_append(renum_devices, sdi);
                        continue;
+               } else {
+                       ret = la2016_upload_firmware(sdi, NULL, NULL, TRUE);
+                       if (ret != SR_OK) {
+                               sr_err("MCU firmware filename check failed.");
+                               kingst_la2016_free_sdi(sdi);
+                               continue;
+                       }
                }
 
                /*
@@ -1025,6 +1034,9 @@ static int dev_acquisition_start(const struct sr_dev_inst *sdi)
                        sr_err("Cannot allocate buffer for session feed.");
                        return SR_ERR_MALLOC;
                }
+               devc->packets_per_chunk = TRANSFER_PACKET_LENGTH;
+               devc->packets_per_chunk--;
+               devc->packets_per_chunk /= unitsize + sizeof(uint8_t);
        }
 
        sr_sw_limits_acquisition_start(&devc->sw_limits);