added the IsAlive check for beamng
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user