X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=src%2Fhardware%2Fasix-sigma%2Fprotocol.c;h=253e98a0aa5349c58a3babff447f3af1b20776db;hb=a9016883f800c40a1866c3f0d011cdb0c256888b;hp=98cfce7a185b1b4dd45a2940b372a04b227a5fd2;hpb=85c032e48553458b43d0eb8315a7587abee4493f;p=libsigrok.git diff --git a/src/hardware/asix-sigma/protocol.c b/src/hardware/asix-sigma/protocol.c index 98cfce7a..253e98a0 100644 --- a/src/hardware/asix-sigma/protocol.c +++ b/src/hardware/asix-sigma/protocol.c @@ -442,10 +442,18 @@ static int upload_firmware(struct sr_context *ctx, unsigned char *buf; unsigned char pins; size_t buf_size; - const char *firmware = sigma_firmware_files[firmware_idx]; - struct ftdi_context *ftdic = &devc->ftdic; + const char *firmware; + struct ftdi_context *ftdic; + + /* Avoid downloading the same firmware multiple times. */ + firmware = sigma_firmware_files[firmware_idx]; + if (devc->cur_firmware == firmware_idx) { + sr_info("Not uploading firmware file '%s' again.", firmware); + return SR_OK; + } /* Make sure it's an ASIX SIGMA. */ + ftdic = &devc->ftdic; ret = ftdi_usb_open_desc(ftdic, USB_VENDOR, USB_PRODUCT, USB_DESCRIPTION, NULL); if (ret < 0) {