added the IsAlive check for beamng

This commit is contained in:
2026-09-16 19:02:20 +01:00
parent df99994a75
commit 03d0f8aefc
3 changed files with 19 additions and 9 deletions
+15 -5
View File
@@ -17,6 +17,8 @@ import (
// for BeamNG.drive // for BeamNG.drive
// NOTE: document this please. What is a TelemetryData???? // NOTE: document this please. What is a TelemetryData????
type BeamNG struct { type BeamNG struct {
logger *slog.Logger
SDK *bngsdk.BeamNGSDK SDK *bngsdk.BeamNGSDK
// data handling // data handling
@@ -36,16 +38,22 @@ const (
NAME = "BeamNG.drive" NAME = "BeamNG.drive"
) )
func NewBeamNGProvider(ip string, port int) (*BeamNG, error) { func NewBeamNGProvider(ip string, port int, newLogger *slog.Logger) (*BeamNG, error) {
beam, err := bngsdk.Init(ip, port) beam, err := bngsdk.NewBngSDK(bngsdk.Options{
Logger: newLogger.With("TelemetrySDK", "BeamNG"),
SourceType: bngsdk.UDPData,
ImportUDPAddress: "127.0.0.1",
ImportUDPPort: 4444,
})
if err != nil { if err != nil {
return &BeamNG{}, err return &BeamNG{}, err
} }
provider := &BeamNG{ provider := &BeamNG{
logger: newLogger.With("TelemetryProvider", "BeamNG"),
streamCh: make(chan telemetry.TelemetryData, 1), streamCh: make(chan telemetry.TelemetryData, 1),
data: telemetry.NewTelemetryData(), data: telemetry.NewTelemetryData(),
SDK: &beam, SDK: beam,
ticker: time.NewTicker(time.Second / 60), ticker: time.NewTicker(time.Second / 60),
} }
@@ -80,10 +88,12 @@ func NewBeamNGProvider(ip string, port int) (*BeamNG, error) {
} }
func (b *BeamNG) Close() { func (b *BeamNG) Close() {
b.SDK.Close()
} }
func (b *BeamNG) IsAlive(timeout time.Duration) bool { func (b *BeamNG) IsAlive(timeout time.Duration) bool {
return true _, err := b.SDK.Update()
return err == nil
} }
func (b *BeamNG) StopStream() { func (b *BeamNG) StopStream() {
@@ -154,7 +164,7 @@ func (b *BeamNG) Subscribe(requestFields map[int16]telemetry.FieldID) {
func (b *BeamNG) readData() { func (b *BeamNG) readData() {
slog.Debug("READING THIS DATA") slog.Debug("READING THIS DATA")
// BUG: getting stuck in here // BUG: getting stuck in here
err := b.SDK.ReadData() _, err := b.SDK.Update()
slog.Debug("THE DATA WAS READ") slog.Debug("THE DATA WAS READ")
if err != nil { if err != nil {
slog.Error("Error getting data", "error", err) slog.Error("Error getting data", "error", err)
+2 -2
View File
@@ -7,8 +7,8 @@ import (
) )
func IsRunning() bool { func IsRunning() bool {
// The address should be loaded from some type of configuration // TODO: The address should be loaded from some type of configuration
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:4443") addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:4444")
if err != nil { if err != nil {
return false return false
} }
+2 -2
View File
@@ -42,8 +42,8 @@ func NewLiveIRacingProvider(logger *slog.Logger) telemetry.TelemetryProvider {
} }
func NewBeamNGProvider(logger *slog.Logger) telemetry.TelemetryProvider { func NewBeamNGProvider(logger *slog.Logger) telemetry.TelemetryProvider {
// Get from some kind of config or whatever // TODO: Get from some kind of config or whatever
provider, _ := beamng.NewBeamNGProvider("127.0.0.1", 4443) provider, _ := beamng.NewBeamNGProvider("127.0.0.1", 4444, logger)
return provider return provider
} }