main: use auto-retry (up to 10 seconds) to locate MSD for UF2 and HEX flashing

Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
deadprogram 2020-05-23 08:34:47 +02:00 коммит произвёл Ayke
родитель b92fad8da6
коммит 5e2a8024a3

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

@ -491,6 +491,8 @@ func touchSerialPortAt1200bps(port string) (err error) {
return fmt.Errorf("opening port: %s", err)
}
const maxMSDRetries = 10
func flashUF2UsingMSD(volume, tmppath string) error {
// find standard UF2 info path
var infoPath string
@ -507,9 +509,17 @@ func flashUF2UsingMSD(volume, tmppath string) error {
infoPath = path + "/INFO_UF2.TXT"
}
d, err := filepath.Glob(infoPath)
if err != nil {
return err
var d []string
var err error
for i := 0; i < maxMSDRetries; i++ {
d, err = filepath.Glob(infoPath)
if err != nil {
return err
}
if d != nil {
break
}
time.Sleep(1 * time.Second)
}
if d == nil {
return errors.New("unable to locate UF2 device: " + volume)
@ -534,9 +544,17 @@ func flashHexUsingMSD(volume, tmppath string) error {
destPath = path + "/"
}
d, err := filepath.Glob(destPath)
if err != nil {
return err
var d []string
var err error
for i := 0; i < maxMSDRetries; i++ {
d, err = filepath.Glob(destPath)
if err != nil {
return err
}
if d != nil {
break
}
time.Sleep(1 * time.Second)
}
if d == nil {
return errors.New("unable to locate device: " + volume)