firmware/installPybricksDialog: finish EV3 implementation

Add missing bits to get firmware flashing on EV3 working. Currently
requires custom firmware since we don't have a packaged one yet.
This commit is contained in:
Attila Farago
2025-08-30 19:12:53 -04:00
committed by David Lechner
parent 84cca9d8e6
commit 00516f2a39
3 changed files with 24 additions and 2 deletions
@@ -72,6 +72,8 @@ function getHubTypeFromMetadata(
return Hub.Prime;
case HubType.EssentialHub:
return Hub.Essential;
case HubType.EV3:
return Hub.EV3;
default:
return fallback;
}
@@ -89,6 +91,8 @@ function getHubTypeNameFromMetadata(metadata: FirmwareMetadata | undefined): str
return 'SPIKE Prime/MINDSTORMS Robot Inventor hub';
case HubType.EssentialHub:
return 'SPIKE Essential hub';
case HubType.EV3:
return 'MINDSTORMS EV3 hub';
default:
return '?';
}
@@ -37,6 +37,7 @@ const supportHubs: readonly HubType[] = [
HubType.TechnicHub,
HubType.PrimeHub,
HubType.EssentialHub,
HubType.EV3,
];
export function validateMetadata(metadata: FirmwareMetadata) {
+19 -2
View File
@@ -935,8 +935,25 @@ function* handleInstallPybricks(): Generator {
}
break;
case 'usb-ev3':
// TODO: implement flashing via EV3 USB
console.error('Flashing via EV3 USB is not implemented yet');
try {
const { firmware } = yield* loadFirmware(
accepted.firmwareZip,
accepted.hubName,
);
yield* put(firmwareFlashEV3(firmware.buffer as ArrayBuffer));
} catch (err) {
// istanbul ignore if
if (process.env.NODE_ENV !== 'test') {
console.error(err);
}
yield* put(
alertsShowAlert('alerts', 'unexpectedError', {
error: ensureError(err),
}),
);
}
break;
}
}