From 9adf462a0495f6c70d77eeb04780ed998d3f545e Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 9 Oct 2020 18:38:49 +0200 Subject: [PATCH 1/5] Fixed port opening error if the port is not available --- modules/nina/flasher.go | 9 +-------- utils/flasher.go | 12 ++++++------ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/modules/nina/flasher.go b/modules/nina/flasher.go index c1c4a904..8d85dc07 100644 --- a/modules/nina/flasher.go +++ b/modules/nina/flasher.go @@ -249,18 +249,11 @@ func (flasher *Flasher) Md5sum(data []byte) error { } func OpenFlasher(portName string) (*Flasher, error) { - port, err := utils.OpenSerial(portName) - if err != nil { return nil, &FlasherError{err: "Error opening serial port. " + err.Error()} } - flasher := &Flasher{ - port: port, - } - time.Sleep(2 * time.Second) - - return flasher, err + return &Flasher{port: port}, err } diff --git a/utils/flasher.go b/utils/flasher.go index b02e34f8..c109df17 100644 --- a/utils/flasher.go +++ b/utils/flasher.go @@ -17,13 +17,12 @@ var baudRates = []int{ } func OpenSerial(portName string) (serial.Port, error) { - var err error + var lastError error + for _, baudRate := range baudRates { - mode := &serial.Mode{ - BaudRate: baudRate, - } - port, err := serial.Open(portName, mode) + port, err := serial.Open(portName, &serial.Mode{BaudRate: baudRate}) if err != nil { + lastError = err // try another baudrate continue } @@ -33,8 +32,9 @@ func OpenSerial(portName string) (serial.Port, error) { log.Fatalf("Could not set timeout on serial port: %s", err) return nil, err } + return port, nil } - return nil, err + return nil, lastError } From 64ed47e2416b3aad4b74797e6f0c4f35c0a5322e Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 9 Oct 2020 18:39:37 +0200 Subject: [PATCH 2/5] Added FirmwareUploader for nano_33_iot --- .../NINA/FirmwareUpdater.nano_33_iot.ino.bin | Bin 0 -> 14348 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 firmwares/NINA/FirmwareUpdater.nano_33_iot.ino.bin diff --git a/firmwares/NINA/FirmwareUpdater.nano_33_iot.ino.bin b/firmwares/NINA/FirmwareUpdater.nano_33_iot.ino.bin new file mode 100755 index 0000000000000000000000000000000000000000..b3a01ef76b41f886d174b450d8add5ccbeee107e GIT binary patch literal 14348 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 wTZpN6!{1I* Date: Mon, 12 Oct 2020 12:48:14 +0200 Subject: [PATCH 3/5] Factoring regexps creation --- utils/utils.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.go b/utils/utils.go index e37572dd..425ab502 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -55,13 +55,13 @@ func GetCompatibleWith(name string) map[string][]firmware { exePath, _ := os.Executable() root := filepath.Dir(exePath) root = filepath.Join(root, "firmwares") + loader := regexp.MustCompile(knownBoards[name].loader) + fw := regexp.MustCompile(knownBoards[name].match) err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { unixPath := filepath.ToSlash(path) parts := strings.Split(unixPath, "/") fancyName := parts[len(parts)-3] + " " + parts[len(parts)-2] - loader := regexp.MustCompile(knownBoards[name].loader) - fw := regexp.MustCompile(knownBoards[name].match) f := firmware{ Path: path, Name: fancyName, From ff77f91ef6ff42d4a739c5cd3de71fc4cf82f132 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 12 Oct 2020 12:48:37 +0200 Subject: [PATCH 4/5] Skip directories early --- utils/utils.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.go b/utils/utils.go index 425ab502..4601ea03 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -59,6 +59,9 @@ func GetCompatibleWith(name string) map[string][]firmware { fw := regexp.MustCompile(knownBoards[name].match) err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error { + if info.IsDir() { + return nil + } unixPath := filepath.ToSlash(path) parts := strings.Split(unixPath, "/") fancyName := parts[len(parts)-3] + " " + parts[len(parts)-2] @@ -67,9 +70,6 @@ func GetCompatibleWith(name string) map[string][]firmware { Name: fancyName, IsLoader: loader.MatchString(path) && !listAll, } - if info.IsDir() { - return nil - } folder := filepath.Dir(path) lowerPath, _ := filepath.Rel(root, path) lowerPath = strings.ToLower(lowerPath) From b9139e6d772ec545e9008c3c7df492bfefcc72c8 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Mon, 12 Oct 2020 12:49:33 +0200 Subject: [PATCH 5/5] Fixed regexp for loader detection and do not add incompatible loaders to the output --- utils/utils.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/utils/utils.go b/utils/utils.go index 4601ea03..d32cc465 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -40,10 +40,10 @@ func GetCompatibleWith(name string) map[string][]firmware { knownBoards := make(map[string]combo) knownBoards["mkr1000"] = combo{match: "(WINC1500)*(3a0)", loader: "WINC1500/Firmware*"} - knownBoards["mkrwifi1010"] = combo{match: "(NINA)", loader: "NINA/Firmware*(mkrwifi)*", avoid: "uno"} - knownBoards["nano_33_iot"] = combo{match: "(NINA)", loader: "NINA/Firmware*(mkrwifi)*", avoid: "uno"} - knownBoards["mkrvidor4000"] = combo{match: "(NINA)", loader: "NINA/Firmware*(mkrvidor)*", avoid: "uno"} - knownBoards["uno2018"] = combo{match: "(NINA)", loader: "NINA/Firmware*(unowifi)*", prefer: "uno", avoid: "mkr"} + knownBoards["mkrwifi1010"] = combo{match: "(NINA)", loader: "NINA/Firmware.*mkrwifi1010.*", avoid: "uno"} + knownBoards["nano_33_iot"] = combo{match: "(NINA)", loader: "NINA/Firmware.*nano_33_iot.*", avoid: "uno"} + knownBoards["mkrvidor4000"] = combo{match: "(NINA)", loader: "NINA/Firmware.*mkrvidor.*", avoid: "uno"} + knownBoards["uno2018"] = combo{match: "(NINA)", loader: "NINA/Firmware.*unowifi.*", prefer: "uno", avoid: "mkr"} knownBoards["mkrnb1500"] = combo{match: "SARA", loader: "SARA/SerialSARAPassthrough*"} listAll := false @@ -74,6 +74,9 @@ func GetCompatibleWith(name string) map[string][]firmware { lowerPath, _ := filepath.Rel(root, path) lowerPath = strings.ToLower(lowerPath) _, alreadyPopulated := files[folder] + if strings.HasPrefix(f.Name, "firmwares") && !f.IsLoader { + return nil + } if listAll && !strings.HasPrefix(f.Name, "firmwares") { files[folder] = append(files[folder], f) }