Skip to content

Commit 00516f2

Browse files
afaragodlech
authored andcommitted
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.
1 parent 84cca9d commit 00516f2

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

src/firmware/installPybricksDialog/InstallPybricksDialog.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,8 @@ function getHubTypeFromMetadata(
7272
return Hub.Prime;
7373
case HubType.EssentialHub:
7474
return Hub.Essential;
75+
case HubType.EV3:
76+
return Hub.EV3;
7577
default:
7678
return fallback;
7779
}
@@ -89,6 +91,8 @@ function getHubTypeNameFromMetadata(metadata: FirmwareMetadata | undefined): str
8991
return 'SPIKE Prime/MINDSTORMS Robot Inventor hub';
9092
case HubType.EssentialHub:
9193
return 'SPIKE Essential hub';
94+
case HubType.EV3:
95+
return 'MINDSTORMS EV3 hub';
9296
default:
9397
return '?';
9498
}

src/firmware/installPybricksDialog/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const supportHubs: readonly HubType[] = [
3737
HubType.TechnicHub,
3838
HubType.PrimeHub,
3939
HubType.EssentialHub,
40+
HubType.EV3,
4041
];
4142

4243
export function validateMetadata(metadata: FirmwareMetadata) {

src/firmware/sagas.ts

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -935,8 +935,25 @@ function* handleInstallPybricks(): Generator {
935935
}
936936
break;
937937
case 'usb-ev3':
938-
// TODO: implement flashing via EV3 USB
939-
console.error('Flashing via EV3 USB is not implemented yet');
938+
try {
939+
const { firmware } = yield* loadFirmware(
940+
accepted.firmwareZip,
941+
accepted.hubName,
942+
);
943+
944+
yield* put(firmwareFlashEV3(firmware.buffer as ArrayBuffer));
945+
} catch (err) {
946+
// istanbul ignore if
947+
if (process.env.NODE_ENV !== 'test') {
948+
console.error(err);
949+
}
950+
951+
yield* put(
952+
alertsShowAlert('alerts', 'unexpectedError', {
953+
error: ensureError(err),
954+
}),
955+
);
956+
}
940957
break;
941958
}
942959
}

0 commit comments

Comments
 (0)