46 lines
1.0 KiB
Go
46 lines
1.0 KiB
Go
package services
|
|
|
|
import (
|
|
providerir "esdi/providers/iracing"
|
|
|
|
telemetry "esdi/telemetry"
|
|
)
|
|
|
|
// TelemetryService will be our base struct to handle telemetry data
|
|
// It should hook to a data sink and handle it like iRacing, BeamNG, AC and so on
|
|
type TelemetryService struct {
|
|
ActiveProvider telemetry.TelemetryProvider
|
|
}
|
|
|
|
func NewTelemetryService() *TelemetryService {
|
|
return &TelemetryService{}
|
|
}
|
|
|
|
func (t *TelemetryService) setIRacingProvider() {
|
|
path := "/home/esilva/Desktop/projetos/simracing_peripherals/testTelemetry/supercars_indianapolis.ibt"
|
|
provider, _ := providerir.NewIRacingProvider(path, "", "")
|
|
|
|
t.ActiveProvider = provider
|
|
}
|
|
|
|
func (t *TelemetryService) SetProvider(provider string) *TelemetryService {
|
|
if t.ActiveProvider != nil {
|
|
// Gotta do something here to clean up before switching
|
|
}
|
|
|
|
switch provider {
|
|
case "iRacing":
|
|
// Set up iRacing
|
|
t.setIRacingProvider()
|
|
default:
|
|
return nil
|
|
}
|
|
|
|
return t
|
|
}
|
|
|
|
func (t *TelemetryService) StartStream() <-chan telemetry.TelemetryData {
|
|
stream, _ := t.ActiveProvider.Stream()
|
|
return stream
|
|
}
|