diff --git a/firmwares/NINA/1.4.5/NINA_W102-Nano_RP2040_Connect.bin b/firmwares/NINA/1.4.5/NINA_W102-Nano_RP2040_Connect.bin new file mode 100644 index 00000000..bc1f64f1 Binary files /dev/null and b/firmwares/NINA/1.4.5/NINA_W102-Nano_RP2040_Connect.bin differ diff --git a/firmwares/NINA/1.4.5/NINA_W102-Uno_WiFi_Rev2.bin b/firmwares/NINA/1.4.5/NINA_W102-Uno_WiFi_Rev2.bin new file mode 100644 index 00000000..ee863d06 Binary files /dev/null and b/firmwares/NINA/1.4.5/NINA_W102-Uno_WiFi_Rev2.bin differ diff --git a/firmwares/NINA/1.4.5/NINA_W102.bin b/firmwares/NINA/1.4.5/NINA_W102.bin new file mode 100644 index 00000000..e8e9ad77 Binary files /dev/null and b/firmwares/NINA/1.4.5/NINA_W102.bin differ diff --git a/firmwares/NINA/FirmwareUpdater.mkrwifi1010.ino.bin b/firmwares/NINA/FirmwareUpdater.mkrwifi1010.ino.bin old mode 100755 new mode 100644 diff --git a/firmwares/NINA/FirmwareUpdater.nano_33_iot.ino.bin b/firmwares/NINA/FirmwareUpdater.nano_33_iot.ino.bin old mode 100755 new mode 100644 diff --git a/firmwares/NINA/FirmwareUpdater.nanorp2040connect.ino.elf b/firmwares/NINA/FirmwareUpdater.nanorp2040connect.ino.elf new file mode 100644 index 00000000..6119c975 Binary files /dev/null and b/firmwares/NINA/FirmwareUpdater.nanorp2040connect.ino.elf differ diff --git a/programmers/rp2040load/rp2040load.go b/programmers/rp2040load/rp2040load.go index d87b05c1..4cf6a35b 100644 --- a/programmers/rp2040load/rp2040load.go +++ b/programmers/rp2040load/rp2040load.go @@ -9,6 +9,7 @@ import ( "github.com/arduino/arduino-cli/arduino/serialutils" "github.com/arduino/arduino-cli/executils" "github.com/arduino/go-paths-helper" + "github.com/pkg/errors" ) type RP2040Load struct { @@ -32,7 +33,7 @@ func (b *RP2040Load) Flash(filename string, cb *serialutils.ResetProgressCallbac log.Println("Flashing " + filename) if err := b.invoke("-v", "-D", filename); err != nil { - log.Fatalf("Error flashing %s: %s", filename, err) + return errors.Errorf("Error flashing %s: %s", filename, err) } time.Sleep(5 * time.Second) diff --git a/utils/utils.go b/utils/utils.go index 8bbbb3dd..0d776e19 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -16,21 +16,13 @@ type firmware struct { type combo struct { match string - prefer string - avoid string loader string } -func isPreferred(existing bool, path string, board combo) bool { +func isPreferred(path string) bool { if path == "" { return false } - if board.avoid != "" && strings.Contains(path, board.avoid) { - return false - } - if existing && !strings.Contains(path, board.prefer) { - return false - } return true } @@ -39,13 +31,13 @@ func GetCompatibleWith(name string, rootPath string) map[string][]firmware { files := make(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.*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["mkr1000"] = combo{match: "(WINC1500)*(3a0)", loader: "WINC1500/FirmwareUpdater.mkr1000.ino.bin"} + knownBoards["mkrwifi1010"] = combo{match: "NINA_W102.bin", loader: "NINA/FirmwareUpdater.mkrwifi1010.ino.bin"} + knownBoards["nano_33_iot"] = combo{match: "NINA_W102.bin", loader: "NINA/FirmwareUpdater.nano_33_iot.ino.bin"} + knownBoards["mkrvidor4000"] = combo{match: "NINA_W102.bin", loader: "NINA/FirmwareUpdater.mkrvidor4000.ino.bin"} + knownBoards["uno2018"] = combo{match: "NINA_W102-Uno_WiFi_Rev2.bin", loader: "NINA/FirmwareUpdater.unowifirev2.without_bl.ino.hex"} knownBoards["mkrnb1500"] = combo{match: "SARA", loader: "SARA/SerialSARAPassthrough*"} - //knownBoards["nanorp2040connect"] = combo{match: "(NINA).*(Nano_RP2040_Connect)", loader: "NINA/Firmware.*nanorp2040connect.*"} + knownBoards["nanorp2040connect"] = combo{match: "NINA_W102-Nano_RP2040_Connect", loader: "NINA/FirmwareUpdater.nanorp2040connect.ino.elf"} listAll := false @@ -74,16 +66,12 @@ func GetCompatibleWith(name string, rootPath string) map[string][]firmware { IsLoader: loader.MatchString(unixPath) && !listAll, } folder := filepath.Dir(path) - 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) - } - if !listAll && (fw.MatchString(path) || f.IsLoader) && isPreferred(alreadyPopulated, lowerPath, knownBoards[name]) { + } else if !listAll && (fw.MatchString(path) || f.IsLoader) { files[folder] = append(files[folder], f) } return nil