mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-17 10:00:46 -04:00
roverd race fix
This commit is contained in:
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
+19
-1
@@ -24,6 +24,8 @@ const (
|
|||||||
piCmdWaveDelete = 50
|
piCmdWaveDelete = 50
|
||||||
piCmdWaveTxSend = 51
|
piCmdWaveTxSend = 51
|
||||||
piOutput = 1
|
piOutput = 1
|
||||||
|
pigpioConnectRetries = 20
|
||||||
|
pigpioConnectDelay = 250 * time.Millisecond
|
||||||
)
|
)
|
||||||
|
|
||||||
type pigpioCmd struct {
|
type pigpioCmd struct {
|
||||||
@@ -102,7 +104,7 @@ func NewIRTransmitter(cfg IRConfig, logger *log.Logger) (*IRTransmitter, error)
|
|||||||
return nil, fmt.Errorf("ir disabled")
|
return nil, fmt.Errorf("ir disabled")
|
||||||
}
|
}
|
||||||
|
|
||||||
client, err := newPigpioClient(pigpioAddr)
|
client, err := connectPigpioWithRetry(pigpioAddr, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("connect pigpio: %w", err)
|
return nil, fmt.Errorf("connect pigpio: %w", err)
|
||||||
}
|
}
|
||||||
@@ -124,6 +126,22 @@ func NewIRTransmitter(cfg IRConfig, logger *log.Logger) (*IRTransmitter, error)
|
|||||||
return tx, nil
|
return tx, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func connectPigpioWithRetry(addr string, logger *log.Logger) (*pigpioClient, error) {
|
||||||
|
var lastErr error
|
||||||
|
for attempt := 1; attempt <= pigpioConnectRetries; attempt++ {
|
||||||
|
client, err := newPigpioClient(addr)
|
||||||
|
if err == nil {
|
||||||
|
return client, nil
|
||||||
|
}
|
||||||
|
lastErr = err
|
||||||
|
if attempt == 1 || attempt%4 == 0 {
|
||||||
|
logger.Printf("pigpio connect attempt %d/%d failed: %v", attempt, pigpioConnectRetries, err)
|
||||||
|
}
|
||||||
|
time.Sleep(pigpioConnectDelay)
|
||||||
|
}
|
||||||
|
return nil, lastErr
|
||||||
|
}
|
||||||
|
|
||||||
func (t *IRTransmitter) Close() {
|
func (t *IRTransmitter) Close() {
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
defer t.mu.Unlock()
|
defer t.mu.Unlock()
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Multi-Roomba rover control agent
|
Description=Multi-Roomba rover control agent
|
||||||
After=network-online.target mediamtx.service
|
After=network-online.target mediamtx.service pigpiod.service
|
||||||
Wants=network-online.target
|
Wants=network-online.target pigpiod.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
|
|||||||
Reference in New Issue
Block a user