fix: prevent connection disruption with ping interval

This commit is contained in:
wpetit 2021-01-08 12:21:02 +01:00
parent 679a0ccebd
commit 887449b4cb
3 changed files with 44 additions and 34 deletions

Binary file not shown.

View File

@ -59,6 +59,7 @@ func Connect(host string, port int) error {
client = reachview.NewClient(
emlid.WithEndpoint(host, port),
emlid.WithStandardLogger(),
emlid.WithPingInterval(5*time.Second),
)
return client.Connect()
@ -103,46 +104,55 @@ func StartBroadcast() (int, error) {
go func() {
for b := range broadcasts {
lastBroadcastMutex.Lock()
switch b.Name {
case reachview.BroadcastRoverStatus:
newLastRoverBroadcast := NewFlattenedRoverBroadcast()
if err := newLastRoverBroadcast.From(b); err != nil {
panic(errors.WithStack(err))
}
lastRoverBroadcast = newLastRoverBroadcast
case reachview.BroadcastBaseStatus:
newLastBaseBroadcast := NewFlattenedBaseBroadcast()
if err := newLastBaseBroadcast.From(b); err != nil {
panic(errors.WithStack(err))
}
lastBaseBroadcast = newLastBaseBroadcast
case reachview.BroadcastRTKStatus:
newLastRTKBroadcast := NewFlattenedRTKBroadcast()
if err := newLastRTKBroadcast.From(b); err != nil {
panic(errors.WithStack(err))
}
lastRTKBroadcast = newLastRTKBroadcast
case reachview.BroadcastBatteryStatus:
newLastBatteryBroadcast := NewBatteryBroadcast()
if err := newLastBatteryBroadcast.From(b); err != nil {
panic(errors.WithStack(err))
}
lastBatteryBroadcast = newLastBatteryBroadcast
if err := handleBroadcast(b); err != nil {
panic(errors.WithStack(err))
}
lastBroadcastMutex.Unlock()
}
}()
return broadcastID, nil
}
func handleBroadcast(b reachview.Broadcast) error {
lastBroadcastMutex.Lock()
defer lastBroadcastMutex.Unlock()
switch b.Name {
case reachview.BroadcastRoverStatus:
newLastRoverBroadcast := NewFlattenedRoverBroadcast()
if err := newLastRoverBroadcast.From(b); err != nil {
return errors.WithStack(err)
}
lastRoverBroadcast = newLastRoverBroadcast
case reachview.BroadcastBaseStatus:
newLastBaseBroadcast := NewFlattenedBaseBroadcast()
if err := newLastBaseBroadcast.From(b); err != nil {
return errors.WithStack(err)
}
lastBaseBroadcast = newLastBaseBroadcast
case reachview.BroadcastRTKStatus:
newLastRTKBroadcast := NewFlattenedRTKBroadcast()
if err := newLastRTKBroadcast.From(b); err != nil {
return errors.WithStack(err)
}
lastRTKBroadcast = newLastRTKBroadcast
case reachview.BroadcastBatteryStatus:
newLastBatteryBroadcast := NewBatteryBroadcast()
if err := newLastBatteryBroadcast.From(b); err != nil {
return errors.WithStack(err)
}
lastBatteryBroadcast = newLastBatteryBroadcast
}
return nil
}
// StopBroadcast remove listener for Broadcast messages
func StopBroadcast() {
broadcastMutex.Lock()

View File

@ -91,7 +91,7 @@ function* reachviewBroadcastSaga() {
}
yield put({ type: REACHVIEW_BROADCAST_REQUEST });
yield call(Reachview.startBroadcast, 2000);
yield call(Reachview.startBroadcast, 3000);
yield put({ type: REACHVIEW_BROADCAST_SUCCESS });
} catch(err) {
Sentry.captureException(err);