@@ -21,22 +21,14 @@ package firmware
21
21
import (
22
22
"fmt"
23
23
"io"
24
- "log"
25
24
"os"
26
- "strings"
27
- "time"
28
25
29
26
"github.com/arduino/arduino-fwuploader/cli/common"
30
27
"github.com/arduino/arduino-fwuploader/cli/feedback"
31
28
"github.com/arduino/arduino-fwuploader/cli/globals"
32
29
"github.com/arduino/arduino-fwuploader/flasher"
33
- "github.com/arduino/arduino-fwuploader/indexes/download"
34
- "github.com/arduino/arduino-fwuploader/indexes/firmwareindex"
35
30
"github.com/arduino/arduino-fwuploader/plugin"
36
- "github.com/arduino/go-paths-helper"
37
- "github.com/sirupsen/logrus"
38
31
"github.com/spf13/cobra"
39
- semver "go.bug.st/relaxed-semver"
40
32
)
41
33
42
34
// NewGetVersionCommand creates a new `get-version` command
@@ -64,26 +56,20 @@ func runGetVersion(cmd *cobra.Command, args []string) {
64
56
board := common .GetBoard (firmwareIndex , commonFlags .Fqbn )
65
57
uploadToolDir := common .DownloadRequiredToolsForBoard (packageIndex , board )
66
58
67
- var result * flasher.FlashResult
68
- if ! board .IsPlugin () {
69
- result = getVersion (board , uploadToolDir )
70
- } else {
71
- uploader , err := plugin .NewFWUploaderPlugin (uploadToolDir )
72
- if err != nil {
73
- feedback .Fatal (fmt .Sprintf ("Could not open uploader plugin: %s" , err ), feedback .ErrGeneric )
74
- }
75
- result = getVersionWithPlugin (uploader )
59
+ uploader , err := plugin .NewFWUploaderPlugin (uploadToolDir )
60
+ if err != nil {
61
+ feedback .Fatal (fmt .Sprintf ("Could not open uploader plugin: %s" , err ), feedback .ErrGeneric )
76
62
}
77
63
64
+ result := getVersion (uploader )
78
65
if feedback .GetFormat () == feedback .Text {
79
66
fmt .Printf ("Firmware version installed: %s" , result .Version )
80
67
} else {
81
- // Print the results
82
68
feedback .PrintResult (result )
83
69
}
84
70
}
85
71
86
- func getVersionWithPlugin (uploader * plugin.FwUploader ) * flasher.FlashResult {
72
+ func getVersion (uploader * plugin.FwUploader ) * flasher.FlashResult {
87
73
var stdout , stderr io.Writer
88
74
if feedback .GetFormat () == feedback .Text {
89
75
stdout = os .Stdout
@@ -102,62 +88,3 @@ func getVersionWithPlugin(uploader *plugin.FwUploader) *flasher.FlashResult {
102
88
Version : res .FirmwareVersion .String (),
103
89
}
104
90
}
105
-
106
- func getVersion (board * firmwareindex.IndexBoard , uploadToolDir * paths.Path ) * flasher.FlashResult {
107
- versionSketchPath , err := download .DownloadSketch (board .VersionSketch )
108
- if err != nil {
109
- feedback .Fatal (fmt .Sprintf ("Error downloading loader sketch from %s: %s" , board .LoaderSketch .URL , err ), feedback .ErrGeneric )
110
- }
111
- logrus .Debugf ("version sketch downloaded in %s" , versionSketchPath .String ())
112
-
113
- versionSketch := strings .ReplaceAll (versionSketchPath .String (), versionSketchPath .Ext (), "" )
114
-
115
- programmerOut , programmerErr , err := common .FlashSketch (board , versionSketch , uploadToolDir , commonFlags .Address )
116
- if err != nil {
117
- feedback .FatalError (err , feedback .ErrGeneric )
118
- }
119
-
120
- // Wait a bit after flashing the sketch for the board to become available again.
121
- logrus .Debug ("sleeping for 3 sec" )
122
- time .Sleep (3 * time .Second )
123
-
124
- // 9600 is the baudrate used in the CheckVersion sketch
125
- port , err := flasher .OpenSerial (commonFlags .Address , 9600 , 2 )
126
- if err != nil {
127
- feedback .FatalError (err , feedback .ErrGeneric )
128
- }
129
-
130
- buff := make ([]byte , 200 )
131
- serialResult := make ([]byte , 0 )
132
- for {
133
- n , err := port .Read (buff )
134
- if err != nil {
135
- log .Fatal (err )
136
- break
137
- }
138
- serialResult = append (serialResult , buff [:n ]... )
139
- if n == 0 { // exit when done reading from serial
140
- break
141
- }
142
- logrus .Info (string (buff [:n ]))
143
- }
144
- lines := strings .Split (string (serialResult ), "\n " )
145
- for _ , line := range lines {
146
- if strings .HasPrefix (line , "Firmware version installed: " ) {
147
- version := strings .TrimSpace (strings .Replace (line , "Firmware version installed: " , "" , 1 ))
148
- semver := semver .ParseRelaxed (version )
149
- return & flasher.FlashResult {
150
- Programmer : (& flasher.ExecOutput {
151
- Stdout : programmerOut .String (),
152
- Stderr : programmerErr .String (),
153
- }),
154
- Version : semver .String (),
155
- }
156
- }
157
- if strings .HasPrefix (line , "Communication with WiFi module failed!" ) {
158
- feedback .Fatal ("communication with WiFi module failed" , feedback .ErrGeneric )
159
- }
160
- }
161
- feedback .Fatal ("could not find the version string to parse" , feedback .ErrGeneric )
162
- return nil
163
- }
0 commit comments