compileopts: add 'retries' flag to allow setting the number of times to retry locating the MSD volume when flashing
Signed-off-by: deadprogram <ron@hybridgroup.com>
Этот коммит содержится в:
родитель
2001c44ed3
коммит
73b368270c
2 изменённых файлов: 7 добавлений и 6 удалений
|
@ -51,6 +51,7 @@ type Options struct {
|
|||
PrintJSON bool
|
||||
Monitor bool
|
||||
BaudRate int
|
||||
Retries int
|
||||
}
|
||||
|
||||
// Verify performs a validation on the given options, raising an error if options are not valid.
|
||||
|
|
12
main.go
12
main.go
|
@ -928,8 +928,6 @@ func touchSerialPortAt1200bps(port string) (err error) {
|
|||
return fmt.Errorf("opening port: %s", err)
|
||||
}
|
||||
|
||||
const maxMSDRetries = 10
|
||||
|
||||
func flashUF2UsingMSD(volume, tmppath string, options *compileopts.Options) error {
|
||||
// find standard UF2 info path
|
||||
var infoPath string
|
||||
|
@ -951,7 +949,7 @@ func flashUF2UsingMSD(volume, tmppath string, options *compileopts.Options) erro
|
|||
infoPath = path + "/INFO_UF2.TXT"
|
||||
}
|
||||
|
||||
d, err := locateDevice(volume, infoPath)
|
||||
d, err := locateDevice(volume, infoPath, options.Retries)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -980,7 +978,7 @@ func flashHexUsingMSD(volume, tmppath string, options *compileopts.Options) erro
|
|||
destPath = path + "/"
|
||||
}
|
||||
|
||||
d, err := locateDevice(volume, destPath)
|
||||
d, err := locateDevice(volume, destPath, options.Retries)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -988,10 +986,10 @@ func flashHexUsingMSD(volume, tmppath string, options *compileopts.Options) erro
|
|||
return moveFile(tmppath, d+"/flash.hex")
|
||||
}
|
||||
|
||||
func locateDevice(volume, path string) (string, error) {
|
||||
func locateDevice(volume, path string, maxRetries int) (string, error) {
|
||||
var d []string
|
||||
var err error
|
||||
for i := 0; i < maxMSDRetries; i++ {
|
||||
for i := 0; i < maxRetries; i++ {
|
||||
d, err = filepath.Glob(path)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
@ -1398,6 +1396,7 @@ func main() {
|
|||
ocdCommandsString := flag.String("ocd-commands", "", "OpenOCD commands, overriding target spec (can specify multiple separated by commas)")
|
||||
ocdOutput := flag.Bool("ocd-output", false, "print OCD daemon output during debug")
|
||||
port := flag.String("port", "", "flash port (can specify multiple candidates separated by commas)")
|
||||
maxRetries := flag.Int("retries", 10, "the maximum number of times to retry locating the MSD volume to be used for flashing")
|
||||
programmer := flag.String("programmer", "", "which hardware programmer to use")
|
||||
ldflags := flag.String("ldflags", "", "Go link tool compatible ldflags")
|
||||
llvmFeatures := flag.String("llvm-features", "", "comma separated LLVM features to enable")
|
||||
|
@ -1494,6 +1493,7 @@ func main() {
|
|||
PrintJSON: flagJSON,
|
||||
Monitor: *monitor,
|
||||
BaudRate: *baudrate,
|
||||
Retries: *maxRetries,
|
||||
}
|
||||
if *printCommands {
|
||||
options.PrintCommands = printCommand
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче