@@ -24,17 +24,13 @@ import (
24
24
"fmt"
25
25
"io"
26
26
"os"
27
- "strings"
28
- "time"
29
27
30
28
"github.com/arduino/arduino-fwuploader/certificates"
31
29
"github.com/arduino/arduino-fwuploader/cli/arguments"
32
30
"github.com/arduino/arduino-fwuploader/cli/common"
33
31
"github.com/arduino/arduino-fwuploader/cli/feedback"
34
32
"github.com/arduino/arduino-fwuploader/cli/globals"
35
33
"github.com/arduino/arduino-fwuploader/flasher"
36
- "github.com/arduino/arduino-fwuploader/indexes/download"
37
- "github.com/arduino/arduino-fwuploader/indexes/firmwareindex"
38
34
"github.com/arduino/arduino-fwuploader/plugin"
39
35
"github.com/arduino/go-paths-helper"
40
36
"github.com/sirupsen/logrus"
@@ -54,9 +50,9 @@ func NewFlashCommand() *cobra.Command {
54
50
Short : "Flashes certificates to board." ,
55
51
Long : "Flashes specified certificates to board at specified address." ,
56
52
Example : "" +
57
- " " + os .Args [0 ] + " certificates flash --fqbn arduino:samd:mkr1000 --address COM10 --url arduino.cc:443 --file /home/me/Digicert.cer\n " +
58
- " " + os .Args [0 ] + " certificates flash -b arduino:samd:mkr1000 -a COM10 -u arduino.cc:443 -u google.com:443\n " +
59
- " " + os .Args [0 ] + " certificates flash -b arduino:samd:mkr1000 -a COM10 -f /home/me/VeriSign.cer -f /home/me/Digicert.cer\n " ,
53
+ " " + os .Args [0 ] + " certificates flash --fqbn arduino:samd:mkrwifi1010 --address COM10 --url arduino.cc:443 --file /home/me/Digicert.cer\n " +
54
+ " " + os .Args [0 ] + " certificates flash -b arduino:renesas_uno:unor4wifi -a COM10 -u arduino.cc:443 -u google.com:443\n " +
55
+ " " + os .Args [0 ] + " certificates flash -b arduino:samd:mkrwifi1010 -a COM10 -f /home/me/VeriSign.cer -f /home/me/Digicert.cer\n " ,
60
56
Args : cobra .NoArgs ,
61
57
Run : func (cmd * cobra.Command , args []string ) {
62
58
runFlash (certificateURLs , certificatePaths )
@@ -81,25 +77,19 @@ func runFlash(certificateURLs, certificatePaths []string) {
81
77
board := common .GetBoard (firmwareIndex , commonFlags .Fqbn )
82
78
uploadToolDir := common .DownloadRequiredToolsForBoard (packageIndex , board )
83
79
84
- var res * flasher.FlashResult
85
- var flashErr error
86
- if ! board .IsPlugin () {
87
- res , flashErr = flashCertificates (board , uploadToolDir , certificateURLs , certificatePaths )
88
- } else {
89
- uploader , err := plugin .NewFWUploaderPlugin (uploadToolDir )
90
- if err != nil {
91
- feedback .Fatal (fmt .Sprintf ("Could not open uploader plugin: %s" , err ), feedback .ErrGeneric )
92
- }
93
- res , flashErr = flashCertificatesWithPlugin (uploader , certificateURLs , certificatePaths )
80
+ uploader , err := plugin .NewFWUploaderPlugin (uploadToolDir )
81
+ if err != nil {
82
+ feedback .Fatal (fmt .Sprintf ("Could not open uploader plugin: %s" , err ), feedback .ErrGeneric )
94
83
}
95
84
85
+ res , flashErr := flashCertificates (uploader , certificateURLs , certificatePaths )
96
86
feedback .PrintResult (res )
97
87
if flashErr != nil {
98
88
os .Exit (int (feedback .ErrGeneric ))
99
89
}
100
90
}
101
91
102
- func flashCertificatesWithPlugin (uploader * plugin.FwUploader , certificateURLs , certificatePaths []string ) (* flasher.FlashResult , error ) {
92
+ func flashCertificates (uploader * plugin.FwUploader , certificateURLs , certificatePaths []string ) (* flasher.FlashResult , error ) {
103
93
tmp , err := paths .MkTempDir ("" , "" )
104
94
if err != nil {
105
95
return nil , err
@@ -161,69 +151,3 @@ func flashCertificatesWithPlugin(uploader *plugin.FwUploader, certificateURLs, c
161
151
},
162
152
}, err
163
153
}
164
-
165
- func flashCertificates (board * firmwareindex.IndexBoard , uploadToolDir * paths.Path , certificateURLs , certificatePaths []string ) (* flasher.FlashResult , error ) {
166
- loaderSketchPath , err := download .DownloadSketch (board .LoaderSketch )
167
- if err != nil {
168
- feedback .Fatal (fmt .Sprintf ("Error downloading loader sketch from %s: %s" , board .LoaderSketch .URL , err ), feedback .ErrGeneric )
169
- }
170
- logrus .Debugf ("loader sketch downloaded in %s" , loaderSketchPath .String ())
171
-
172
- loaderSketch := strings .ReplaceAll (loaderSketchPath .String (), loaderSketchPath .Ext (), "" )
173
- programmerOut , programmerErr , err := common .FlashSketch (board , loaderSketch , uploadToolDir , commonFlags .Address )
174
- if err != nil {
175
- feedback .FatalError (err , feedback .ErrGeneric )
176
- }
177
-
178
- // Wait a bit after flashing the loader sketch for the board to become
179
- // available again.
180
- logrus .Debug ("sleeping for 3 sec" )
181
- time .Sleep (3 * time .Second )
182
-
183
- // Get flasher depending on which module to use
184
- var f flasher.Flasher
185
- moduleName := board .Module
186
-
187
- // This matches the baudrate used in the FirmwareUpdater.ino sketch
188
- // https://github.com/arduino-libraries/WiFiNINA/blob/master/examples/Tools/FirmwareUpdater/FirmwareUpdater.ino
189
- const baudRate = 1000000
190
- switch moduleName {
191
- case "NINA" :
192
- // we use address and not bootloaderPort because the board should not be in bootloader mode
193
- f , err = flasher .NewNinaFlasher (commonFlags .Address , baudRate , 30 )
194
- case "WINC1500" :
195
- f , err = flasher .NewWincFlasher (commonFlags .Address , baudRate , 30 )
196
- default :
197
- err = fmt .Errorf ("unknown module: %s" , moduleName )
198
- }
199
- if err != nil {
200
- feedback .Fatal (fmt .Sprintf ("Error during certificates flashing: %s" , err ), feedback .ErrGeneric )
201
- }
202
- defer f .Close ()
203
-
204
- // now flash the certificate
205
- certFileList := paths .NewPathList (certificatePaths ... )
206
- flasherOut := new (bytes.Buffer )
207
- flasherErr := new (bytes.Buffer )
208
- if feedback .GetFormat () == feedback .JSON {
209
- err = f .FlashCertificates (& certFileList , certificateURLs , flasherOut )
210
- if err != nil {
211
- flasherErr .Write ([]byte (fmt .Sprintf ("Error during certificates flashing: %s" , err )))
212
- }
213
- } else {
214
- err = f .FlashCertificates (& certFileList , certificateURLs , io .MultiWriter (flasherOut , os .Stdout ))
215
- if err != nil {
216
- os .Stderr .Write ([]byte (fmt .Sprintf ("Error during certificates flashing: %s" , err )))
217
- }
218
- }
219
- return & flasher.FlashResult {
220
- Programmer : & flasher.ExecOutput {
221
- Stdout : programmerOut .String (),
222
- Stderr : programmerErr .String (),
223
- },
224
- Flasher : & flasher.ExecOutput {
225
- Stdout : flasherOut .String (),
226
- Stderr : flasherErr .String (),
227
- },
228
- }, err
229
- }
0 commit comments