main: improve/simplify auto-retry to locate MSD for UF2 and HEX flashing

Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
deadprogram 2020-05-27 21:44:39 +02:00 коммит произвёл Ayke
родитель 5e2a8024a3
коммит bcbc241d81

35
main.go
Просмотреть файл

@ -509,23 +509,12 @@ func flashUF2UsingMSD(volume, tmppath string) error {
infoPath = path + "/INFO_UF2.TXT" infoPath = path + "/INFO_UF2.TXT"
} }
var d []string d, err := locateDevice(volume, infoPath)
var err error
for i := 0; i < maxMSDRetries; i++ {
d, err = filepath.Glob(infoPath)
if err != nil { if err != nil {
return err return err
} }
if d != nil {
break
}
time.Sleep(1 * time.Second)
}
if d == nil {
return errors.New("unable to locate UF2 device: " + volume)
}
return moveFile(tmppath, filepath.Dir(d[0])+"/flash.uf2") return moveFile(tmppath, filepath.Dir(d)+"/flash.uf2")
} }
func flashHexUsingMSD(volume, tmppath string) error { func flashHexUsingMSD(volume, tmppath string) error {
@ -544,23 +533,31 @@ func flashHexUsingMSD(volume, tmppath string) error {
destPath = path + "/" destPath = path + "/"
} }
d, err := locateDevice(volume, destPath)
if err != nil {
return err
}
return moveFile(tmppath, d+"/flash.hex")
}
func locateDevice(volume, path string) (string, error) {
var d []string var d []string
var err error var err error
for i := 0; i < maxMSDRetries; i++ { for i := 0; i < maxMSDRetries; i++ {
d, err = filepath.Glob(destPath) d, err = filepath.Glob(path)
if err != nil { if err != nil {
return err return "", err
} }
if d != nil { if d != nil {
break break
} }
time.Sleep(1 * time.Second) time.Sleep(500 * time.Millisecond)
} }
if d == nil { if d == nil {
return errors.New("unable to locate device: " + volume) return "", errors.New("unable to locate device: " + volume)
} }
return d[0], nil
return moveFile(tmppath, d[0]+"/flash.hex")
} }
func windowsFindUSBDrive(volume string) (string, error) { func windowsFindUSBDrive(volume string) (string, error) {