main: use auto-retry (up to 10 seconds) to locate MSD for UF2 and HEX flashing
Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
родитель
b92fad8da6
коммит
5e2a8024a3
1 изменённых файлов: 24 добавлений и 6 удалений
22
main.go
22
main.go
|
@ -491,6 +491,8 @@ func touchSerialPortAt1200bps(port string) (err error) {
|
||||||
return fmt.Errorf("opening port: %s", err)
|
return fmt.Errorf("opening port: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const maxMSDRetries = 10
|
||||||
|
|
||||||
func flashUF2UsingMSD(volume, tmppath string) error {
|
func flashUF2UsingMSD(volume, tmppath string) error {
|
||||||
// find standard UF2 info path
|
// find standard UF2 info path
|
||||||
var infoPath string
|
var infoPath string
|
||||||
|
@ -507,10 +509,18 @@ func flashUF2UsingMSD(volume, tmppath string) error {
|
||||||
infoPath = path + "/INFO_UF2.TXT"
|
infoPath = path + "/INFO_UF2.TXT"
|
||||||
}
|
}
|
||||||
|
|
||||||
d, err := filepath.Glob(infoPath)
|
var d []string
|
||||||
|
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 {
|
if d == nil {
|
||||||
return errors.New("unable to locate UF2 device: " + volume)
|
return errors.New("unable to locate UF2 device: " + volume)
|
||||||
}
|
}
|
||||||
|
@ -534,10 +544,18 @@ func flashHexUsingMSD(volume, tmppath string) error {
|
||||||
destPath = path + "/"
|
destPath = path + "/"
|
||||||
}
|
}
|
||||||
|
|
||||||
d, err := filepath.Glob(destPath)
|
var d []string
|
||||||
|
var err error
|
||||||
|
for i := 0; i < maxMSDRetries; i++ {
|
||||||
|
d, err = filepath.Glob(destPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if d != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
}
|
||||||
if d == nil {
|
if d == nil {
|
||||||
return errors.New("unable to locate device: " + volume)
|
return errors.New("unable to locate device: " + volume)
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче