From ca57cbd9f057a7469009111816dec347fa67bd76 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Tue, 7 Jul 2026 18:16:52 +0100 Subject: [PATCH] Small validation for the updaters array in BeamNG --- providers/beamng/beamng.go | 12 ++++++++++++ providers/providers.go | 1 + 2 files changed, 13 insertions(+) diff --git a/providers/beamng/beamng.go b/providers/beamng/beamng.go index 91ce8b6..faf2b97 100644 --- a/providers/beamng/beamng.go +++ b/providers/beamng/beamng.go @@ -13,6 +13,8 @@ import ( bngsdk "github.com/ESilva15/gobngsdk" ) +// BeamNG is the concrete implementation of the TelemetryProvider interface +// for BeamNG.drive // NOTE: document this please. What is a TelemetryData???? type BeamNG struct { SDK *bngsdk.BeamNGSDK @@ -60,6 +62,7 @@ func NewBeamNGProvider(ip string, port int) (*BeamNG, error) { telemetry.PitSpeedLimiter: provider.pitSpeedLimiter, telemetry.LeftIndicator: provider.leftIndicator, telemetry.RightIndicator: provider.rightIndicator, + telemetry.Hazards: provider.unused, telemetry.ABSWarningLight: provider.absLight, telemetry.ParkingBrakeLight: provider.handbrakeLight, telemetry.TCLight: provider.tcLight, @@ -99,6 +102,15 @@ func NewBeamNGProvider(ip string, port int) (*BeamNG, error) { telemetry.FCExpectedLaps: provider.unused, } + for k := range int(telemetry.MaxFields) { + // One by one so you won't forget it next time + if provider.updaters[k] == nil { + msg := fmt.Sprintf("BeamNG updaters aren't all assigned. Currently unassgined: %s", + telemetry.FieldNames[k]) + panic(msg) + } + } + return provider, nil } diff --git a/providers/providers.go b/providers/providers.go index 1fca98c..d79d0dc 100644 --- a/providers/providers.go +++ b/providers/providers.go @@ -35,5 +35,6 @@ func NewIRacingProvider(logger *slog.Logger, source string, func NewBeamNGProvider(ip string, port int) telemetry.TelemetryProvider { provider, _ := beamng.NewBeamNGProvider(ip, port) + return provider }