@@ -16,10 +16,17 @@ const FWUToolStatusEnum = Object.freeze({
16
16
} ) ;
17
17
18
18
/* The signatures needed to run the commands to use the Firmware Updater Tool */
19
- let signaturesEnum = fwupdaterSignatures ;
19
+ let signatures = fwupdaterSignatures ;
20
20
21
21
let updaterBinaryName = 'FirmwareUploader' ;
22
22
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
+
23
30
export default class FirmwareUpdater {
24
31
constructor ( Daemon ) {
25
32
this . updateStatusEnum = Object . freeze ( {
@@ -57,7 +64,7 @@ export default class FirmwareUpdater {
57
64
setToolVersion ( version ) {
58
65
this . toolVersion = version ;
59
66
if ( semverCompare ( version , '0.1.2' ) < 0 ) {
60
- signaturesEnum = oldFwupdaterSignatures ;
67
+ signatures = oldFwupdaterSignatures ;
61
68
updaterBinaryName = 'updater' ;
62
69
}
63
70
}
@@ -119,7 +126,7 @@ export default class FirmwareUpdater {
119
126
board : boardId ,
120
127
port,
121
128
commandline : `"{runtime.tools.fwupdater.path}/${ updaterBinaryName } " -get_available_for {network.password}` ,
122
- signature : signaturesEnum . GET_FIRMWARE_INFO ,
129
+ signature : signatures . GET_FIRMWARE_INFO ,
123
130
extra : {
124
131
auth : {
125
132
password : boardId
@@ -196,8 +203,7 @@ export default class FirmwareUpdater {
196
203
}
197
204
} ) ;
198
205
199
- const isUsingAvrdude = boardId === 'uno2018' ;
200
- const programmer = isUsingAvrdude ? '{runtime.tools.avrdude}/bin/avrdude' : '{runtime.tools.bossac}/bossac' ;
206
+ const [ programmer , signature ] = programmerFor ( boardId ) ;
201
207
202
208
if ( ! this . loaderPath ) {
203
209
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 {
214
220
password : `"${ this . loaderPath } " -firmware "${ this . firmwareVersionData . Path } " ${ addresses } ` ,
215
221
} ,
216
222
} ,
217
- signature : isUsingAvrdude ? signaturesEnum . UPLOAD_FIRMWARE_AVRDUDE : signaturesEnum . UPLOAD_FIRMWARE_BOSSAC ,
223
+ signature,
218
224
filename : 'CheckFirmwareVersion.bin' ,
219
225
} ;
220
226
@@ -237,4 +243,4 @@ export default class FirmwareUpdater {
237
243
this . getFirmwareInfo ( boardId , port , firmwareVersion ) ;
238
244
} ) ;
239
245
}
240
- }
246
+ }
0 commit comments