@@ -24,17 +24,13 @@ import (
2424 "fmt"
2525 "io"
2626 "os"
27- "strings"
28- "time"
2927
3028 "github.com/arduino/arduino-fwuploader/certificates"
3129 "github.com/arduino/arduino-fwuploader/cli/arguments"
3230 "github.com/arduino/arduino-fwuploader/cli/common"
3331 "github.com/arduino/arduino-fwuploader/cli/feedback"
3432 "github.com/arduino/arduino-fwuploader/cli/globals"
3533 "github.com/arduino/arduino-fwuploader/flasher"
36- "github.com/arduino/arduino-fwuploader/indexes/download"
37- "github.com/arduino/arduino-fwuploader/indexes/firmwareindex"
3834 "github.com/arduino/arduino-fwuploader/plugin"
3935 "github.com/arduino/go-paths-helper"
4036 "github.com/sirupsen/logrus"
@@ -54,9 +50,9 @@ func NewFlashCommand() *cobra.Command {
5450 Short : "Flashes certificates to board." ,
5551 Long : "Flashes specified certificates to board at specified address." ,
5652 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 " ,
6056 Args : cobra .NoArgs ,
6157 Run : func (cmd * cobra.Command , args []string ) {
6258 runFlash (certificateURLs , certificatePaths )
@@ -81,25 +77,19 @@ func runFlash(certificateURLs, certificatePaths []string) {
8177 board := common .GetBoard (firmwareIndex , commonFlags .Fqbn )
8278 uploadToolDir := common .DownloadRequiredToolsForBoard (packageIndex , board )
8379
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 )
9483 }
9584
85+ res , flashErr := flashCertificates (uploader , certificateURLs , certificatePaths )
9686 feedback .PrintResult (res )
9787 if flashErr != nil {
9888 os .Exit (int (feedback .ErrGeneric ))
9989 }
10090}
10191
102- func flashCertificatesWithPlugin (uploader * plugin.FwUploader , certificateURLs , certificatePaths []string ) (* flasher.FlashResult , error ) {
92+ func flashCertificates (uploader * plugin.FwUploader , certificateURLs , certificatePaths []string ) (* flasher.FlashResult , error ) {
10393 tmp , err := paths .MkTempDir ("" , "" )
10494 if err != nil {
10595 return nil , err
@@ -161,69 +151,3 @@ func flashCertificatesWithPlugin(uploader *plugin.FwUploader, certificateURLs, c
161151 },
162152 }, err
163153}
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