From ffc03e9e494c384a082ea606319ef08c5fb4b8aa Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Wed, 16 Sep 2026 19:02:20 +0100 Subject: [PATCH] added the IsAlive check for beamng --- providers/beamng/beamng.go | 20 +++++++++++++++----- providers/beamng/utils.go | 4 ++-- providers/providers.go | 4 ++-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/providers/beamng/beamng.go b/providers/beamng/beamng.go index 3a7b769..2bd2f4d 100644 --- a/providers/beamng/beamng.go +++ b/providers/beamng/beamng.go @@ -17,6 +17,8 @@ import ( // for BeamNG.drive // NOTE: document this please. What is a TelemetryData???? type BeamNG struct { + logger *slog.Logger + SDK *bngsdk.BeamNGSDK // data handling @@ -36,16 +38,22 @@ const ( NAME = "BeamNG.drive" ) -func NewBeamNGProvider(ip string, port int) (*BeamNG, error) { - beam, err := bngsdk.Init(ip, port) +func NewBeamNGProvider(ip string, port int, newLogger *slog.Logger) (*BeamNG, error) { + beam, err := bngsdk.NewBngSDK(bngsdk.Options{ + Logger: newLogger.With("TelemetrySDK", "BeamNG"), + SourceType: bngsdk.UDPData, + ImportUDPAddress: "127.0.0.1", + ImportUDPPort: 4444, + }) if err != nil { return &BeamNG{}, err } provider := &BeamNG{ + logger: newLogger.With("TelemetryProvider", "BeamNG"), streamCh: make(chan telemetry.TelemetryData, 1), data: telemetry.NewTelemetryData(), - SDK: &beam, + SDK: beam, ticker: time.NewTicker(time.Second / 60), } @@ -80,10 +88,12 @@ func NewBeamNGProvider(ip string, port int) (*BeamNG, error) { } func (b *BeamNG) Close() { + b.SDK.Close() } func (b *BeamNG) IsAlive(timeout time.Duration) bool { - return true + _, err := b.SDK.Update() + return err == nil } func (b *BeamNG) StopStream() { @@ -154,7 +164,7 @@ func (b *BeamNG) Subscribe(requestFields map[int16]telemetry.FieldID) { func (b *BeamNG) readData() { slog.Debug("READING THIS DATA") // BUG: getting stuck in here - err := b.SDK.ReadData() + _, err := b.SDK.Update() slog.Debug("THE DATA WAS READ") if err != nil { slog.Error("Error getting data", "error", err) diff --git a/providers/beamng/utils.go b/providers/beamng/utils.go index 2854b74..8918c7c 100644 --- a/providers/beamng/utils.go +++ b/providers/beamng/utils.go @@ -7,8 +7,8 @@ import ( ) func IsRunning() bool { - // The address should be loaded from some type of configuration - addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:4443") + // TODO: The address should be loaded from some type of configuration + addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:4444") if err != nil { return false } diff --git a/providers/providers.go b/providers/providers.go index f38c1b1..a4dc180 100644 --- a/providers/providers.go +++ b/providers/providers.go @@ -42,8 +42,8 @@ func NewLiveIRacingProvider(logger *slog.Logger) telemetry.TelemetryProvider { } func NewBeamNGProvider(logger *slog.Logger) telemetry.TelemetryProvider { - // Get from some kind of config or whatever - provider, _ := beamng.NewBeamNGProvider("127.0.0.1", 4443) + // TODO: Get from some kind of config or whatever + provider, _ := beamng.NewBeamNGProvider("127.0.0.1", 4444, logger) return provider }