Merge pull request #215 from pybricks/dlech

fix timeout when firmware size is 10x packet size
This commit is contained in:
David Lechner
2020-12-18 14:20:56 -06:00
committed by GitHub
+8 -1
View File
@@ -280,7 +280,7 @@ function* flashFirmware(action: FlashFirmwareFlashAction): Generator {
throw Error('Missing hub type in MaxProgramFlashSize');
}
for (let offset = 0; offset < firmware.length; offset += maxDataSize) {
for (let offset = 0; ; ) {
const payload = firmware.slice(offset, offset + maxDataSize);
const programAction = (yield put(
programRequest(info[0].startAddress + offset, payload.buffer),
@@ -289,6 +289,13 @@ function* flashFirmware(action: FlashFirmwareFlashAction): Generator {
yield put(progress(offset, firmware.length));
// we don't want to request checksum if this is the last packet since
// the bootloader will send a response to the program request already.
offset += maxDataSize;
if (offset >= firmware.length) {
break;
}
if (connectResult.canWriteWithoutResponse) {
// Request checksum every 10 packets to prevent buffer overrun on
// the hub because of sending too much data at once. The actual