diff --git a/arduino/discovery/discovery.go b/arduino/discovery/discovery.go index 78956a63331..648c536733d 100644 --- a/arduino/discovery/discovery.go +++ b/arduino/discovery/discovery.go @@ -311,9 +311,11 @@ func (disc *PluggableDiscovery) Run() (err error) { if msg, err := disc.waitMessage(time.Second * 10); err != nil { return fmt.Errorf(tr("calling %[1]s: %[2]w"), "HELLO", err) } else if msg.EventType != "hello" { - return errors.Errorf(tr("communication out of sync, expected 'hello', received '%s'"), msg.EventType) - } else if msg.Message != "OK" || msg.Error { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "hello", msg.EventType) + } else if msg.Error { return errors.Errorf(tr("command failed: %s"), msg.Message) + } else if strings.ToUpper(msg.Message) != "OK" { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "OK", msg.Message) } else if msg.ProtocolVersion > 1 { return errors.Errorf(tr("protocol version not supported: requested 1, got %d"), msg.ProtocolVersion) } @@ -332,9 +334,11 @@ func (disc *PluggableDiscovery) Start() error { if msg, err := disc.waitMessage(time.Second * 10); err != nil { return fmt.Errorf(tr("calling %[1]s: %[2]w"), "START", err) } else if msg.EventType != "start" { - return errors.Errorf(tr("communication out of sync, expected 'start', received '%s'"), msg.EventType) - } else if msg.Message != "OK" || msg.Error { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "start", msg.EventType) + } else if msg.Error { return errors.Errorf(tr("command failed: %s"), msg.Message) + } else if strings.ToUpper(msg.Message) != "OK" { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "OK", msg.Message) } disc.statusMutex.Lock() defer disc.statusMutex.Unlock() @@ -352,9 +356,11 @@ func (disc *PluggableDiscovery) Stop() error { if msg, err := disc.waitMessage(time.Second * 10); err != nil { return fmt.Errorf(tr("calling %[1]s: %[2]w"), "STOP", err) } else if msg.EventType != "stop" { - return errors.Errorf(tr("communication out of sync, expected 'stop', received '%s'"), msg.EventType) - } else if msg.Message != "OK" || msg.Error { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "stop", msg.EventType) + } else if msg.Error { return errors.Errorf(tr("command failed: %s"), msg.Message) + } else if strings.ToUpper(msg.Message) != "OK" { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "OK", msg.Message) } disc.statusMutex.Lock() defer disc.statusMutex.Unlock() @@ -375,9 +381,11 @@ func (disc *PluggableDiscovery) Quit() error { if msg, err := disc.waitMessage(time.Second * 10); err != nil { return fmt.Errorf(tr("calling %[1]s: %[2]w"), "QUIT", err) } else if msg.EventType != "quit" { - return errors.Errorf(tr("communication out of sync, expected 'quit', received '%s'"), msg.EventType) - } else if msg.Message != "OK" || msg.Error { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "quit", msg.EventType) + } else if msg.Error { return errors.Errorf(tr("command failed: %s"), msg.Message) + } else if strings.ToUpper(msg.Message) != "OK" { + return errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "OK", msg.Message) } disc.killProcess() return nil @@ -392,7 +400,7 @@ func (disc *PluggableDiscovery) List() ([]*Port, error) { if msg, err := disc.waitMessage(time.Second * 10); err != nil { return nil, fmt.Errorf(tr("calling %[1]s: %[2]w"), "LIST", err) } else if msg.EventType != "list" { - return nil, errors.Errorf(tr("communication out of sync, expected 'list', received '%s'"), msg.EventType) + return nil, errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "list", msg.EventType) } else if msg.Error { return nil, errors.Errorf(tr("command failed: %s"), msg.Message) } else { @@ -415,9 +423,11 @@ func (disc *PluggableDiscovery) StartSync(size int) (<-chan *Event, error) { if msg, err := disc.waitMessage(time.Second * 10); err != nil { return nil, fmt.Errorf(tr("calling %[1]s: %[2]w"), "START_SYNC", err) } else if msg.EventType != "start_sync" { - return nil, errors.Errorf(tr("communication out of sync, expected 'start_sync', received '%s'"), msg.EventType) - } else if msg.Message != "OK" || msg.Error { + return nil, errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "start_sync", msg.EventType) + } else if msg.Error { return nil, errors.Errorf(tr("command failed: %s"), msg.Message) + } else if strings.ToUpper(msg.Message) != "OK" { + return nil, errors.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "OK", msg.Message) } disc.statusMutex.Lock() diff --git a/arduino/monitor/monitor.go b/arduino/monitor/monitor.go index 76e36b6223f..09db6b2bdbf 100644 --- a/arduino/monitor/monitor.go +++ b/arduino/monitor/monitor.go @@ -145,9 +145,12 @@ func (mon *PluggableMonitor) waitMessage(timeout time.Duration, expectedEvt stri if msg.EventType != expectedEvt { return msg, fmt.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), expectedEvt, msg.EventType) } - if msg.Message != "OK" || msg.Error { + if msg.Error { return msg, fmt.Errorf(tr("command '%[1]s' failed: %[2]s"), expectedEvt, msg.Message) } + if strings.ToUpper(msg.Message) != "OK" { + return msg, fmt.Errorf(tr("communication out of sync, expected '%[1]s', received '%[2]s'"), "OK", msg.Message) + } return msg, nil }