Skip to content

Commit fefbbfe

Browse files
authored
Add rp2040 fw updater support (#521)
* Add rp2040 support * Add signature * Fix board typo * Bump version
1 parent 0136afb commit fefbbfe

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

‎package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "arduino-create-agent-js-client",
3-
"version": "2.4.9",
3+
"version": "2.5.0",
44
"description": "JS module providing discovery of the Arduino Create Plugin and communication with it",
55
"main": "lib/index.js",
66
"module": "es/index.js",

‎src/firmware-updater.js

+13-7
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,17 @@ const FWUToolStatusEnum = Object.freeze({
1616
});
1717

1818
/* The signatures needed to run the commands to use the Firmware Updater Tool */
19-
let signaturesEnum = fwupdaterSignatures;
19+
let signatures = fwupdaterSignatures;
2020

2121
let updaterBinaryName = 'FirmwareUploader';
2222

23+
function programmerFor(boardId) {
24+
if (boardId === 'uno2018') return ['{runtime.tools.avrdude}/bin/avrdude', signatures.UPLOAD_FIRMWARE_AVRDUDE];
25+
if (boardId === 'nanorp2040connect') return [`{runtime.tools.rp2040tools.path}/rp2040load`, signatures.UPLOAD_FIRMWARE_RP2040];
26+
27+
return [`{runtime.tools.bossac}/bossac`, signatures.UPLOAD_FIRMWARE_BOSSAC];
28+
}
29+
2330
export default class FirmwareUpdater {
2431
constructor(Daemon) {
2532
this.updateStatusEnum = Object.freeze({
@@ -57,7 +64,7 @@ export default class FirmwareUpdater {
5764
setToolVersion(version) {
5865
this.toolVersion = version;
5966
if (semverCompare(version, '0.1.2') < 0) {
60-
signaturesEnum = oldFwupdaterSignatures;
67+
signatures = oldFwupdaterSignatures;
6168
updaterBinaryName = 'updater';
6269
}
6370
}
@@ -119,7 +126,7 @@ export default class FirmwareUpdater {
119126
board: boardId,
120127
port,
121128
commandline: `"{runtime.tools.fwupdater.path}/${updaterBinaryName}" -get_available_for {network.password}`,
122-
signature: signaturesEnum.GET_FIRMWARE_INFO,
129+
signature: signatures.GET_FIRMWARE_INFO,
123130
extra: {
124131
auth: {
125132
password: boardId
@@ -196,8 +203,7 @@ export default class FirmwareUpdater {
196203
}
197204
});
198205

199-
const isUsingAvrdude = boardId === 'uno2018';
200-
const programmer = isUsingAvrdude ? '{runtime.tools.avrdude}/bin/avrdude' : '{runtime.tools.bossac}/bossac';
206+
const [programmer, signature] = programmerFor(boardId);
201207

202208
if (!this.loaderPath) {
203209
this.updating.next({ status: this.updateStatusEnum.ERROR, err: `Can't update Firmware: 'loaderPath' is empty or 'null'` });
@@ -214,7 +220,7 @@ export default class FirmwareUpdater {
214220
password: `"${this.loaderPath}" -firmware "${this.firmwareVersionData.Path}" ${addresses}`,
215221
},
216222
},
217-
signature: isUsingAvrdude ? signaturesEnum.UPLOAD_FIRMWARE_AVRDUDE : signaturesEnum.UPLOAD_FIRMWARE_BOSSAC,
223+
signature,
218224
filename: 'CheckFirmwareVersion.bin',
219225
};
220226

@@ -237,4 +243,4 @@ export default class FirmwareUpdater {
237243
this.getFirmwareInfo(boardId, port, firmwareVersion);
238244
});
239245
}
240-
}
246+
}

‎src/signatures.js

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)