diff --git a/locales/en/messages.json b/locales/en/messages.json index 68a1b210..3fb20410 100644 --- a/locales/en/messages.json +++ b/locales/en/messages.json @@ -2673,6 +2673,9 @@ "firmwareFlasherHexCorrupted": { "message": "HEX file appears to be corrupted" }, + "firmwareFlasherTooBig": { + "message": "Firmware file is too big ($1 bytes)" + }, "firmwareFlasherRemoteFirmwareLoaded": { "message": "Remote Firmware loaded, ready for flashing" }, diff --git a/src/js/tabs/firmware_flasher.js b/src/js/tabs/firmware_flasher.js index da04d9f3..9000d208 100644 --- a/src/js/tabs/firmware_flasher.js +++ b/src/js/tabs/firmware_flasher.js @@ -379,17 +379,24 @@ TABS.firmware_flasher.initialize = function (callback) { analytics.setFirmwareData(analytics.DATA.FIRMWARE_NAME, file.name); var reader = new FileReader(); + // Max size in bytes of the local file to load and flash + const MAX_FLASH_LOCAL_FILE_SIZE = 2*1024*1024; + reader.onprogress = function (e) { - if (e.total > 1048576) { // 1 MB - // dont allow reading files bigger then 1 MB - console.log('File limit (1 MB) exceeded, aborting'); + if (e.total > MAX_FLASH_LOCAL_FILE_SIZE) { reader.abort(); } }; reader.onloadend = function(e) { - if (e.total != 0 && e.total == e.loaded) { - console.log('File loaded'); + if (e.total > MAX_FLASH_LOCAL_FILE_SIZE) { + + console.log('File limit (' + MAX_FLASH_LOCAL_FILE_SIZE + ') exceeded, aborting'); + $('span.progressLabel').text(i18n.getMessage('firmwareFlasherTooBig', e.total)); + + } else if (e.total != 0 && e.total == e.loaded) { + + console.log('File loaded (' + e.loaded + ')'); intel_hex = e.target.result;