Skip to content

Commit

Permalink
Merge pull request #28 from arduino/rp2040
Browse files Browse the repository at this point in the history
Add support for Rp2040 / Refactored -get_available_for flag
  • Loading branch information
cmaglie committed May 10, 2021
2 parents 6449244 + 462e6d3 commit 1a1d8e1
Show file tree
Hide file tree
Showing 8 changed files with 10 additions and 21 deletions.
Binary file not shown.
Binary file added firmwares/NINA/1.4.5/NINA_W102-Uno_WiFi_Rev2.bin
Binary file not shown.
Binary file added firmwares/NINA/1.4.5/NINA_W102.bin
Binary file not shown.
Empty file modified firmwares/NINA/FirmwareUpdater.mkrwifi1010.ino.bin 100755 → 100644
Empty file.
Empty file modified firmwares/NINA/FirmwareUpdater.nano_33_iot.ino.bin 100755 → 100644
Empty file.
Binary file not shown.
3 changes: 2 additions & 1 deletion programmers/rp2040load/rp2040load.go
Expand Up @@ -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 {
Expand All @@ -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)
Expand Down
28 changes: 8 additions & 20 deletions utils/utils.go
Expand Up @@ -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
}

Expand All @@ -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

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 1a1d8e1

Please sign in to comment.