Files

88 lines
2.4 KiB
Go

package esdi
// Car data lengths
const (
SpeedLen = 5
GearLen = 3
RpmLen = 6
BrakeBiasLen = 6
)
// DataPacket Lens
const (
LapNumberLen = 5
DeltaToBestLapLen = 6
BestLapTimeLen = 10
CurrLapTimeLen = 10
LastLapTimeLen = 10
FuelTankLen = 15 // 101.6 / 123.4L
FuelEstLen = 15
)
// StandingsLineDataPacket Lens
const (
LapStringLen = 4
DriverNameLen = 24
TimeBehindStringLen = 8
)
type GameSource interface {
GetData(string) (any, error)
UpdateData() error
GetSessionInfo() (any, error)
}
type StandingsLine struct {
CarIdx int32
LapPct float32
Lap int32
DriverName [DriverNameLen]byte
EstTime float32
TimeBehind float32
TimeBehindString [TimeBehindStringLen]byte
}
type SimulationData struct {
ReadError error
Recv int8
Speed int32
Gear int32
RPM int32
LapCount int32
LapDistPct float32
CurrLapTime [16]byte // Current lap time
LapDeltaFloat float32
BestLapTime [16]byte // Best lap in session
LastLapTime [16]byte // Last lap time
FuelUsageCurLap float32
FuelPerLap float32
FuelPct float32
FuelLiters float32
FuelTotal float32 // This will be calculated and passed in Liters
Position int32
LapBestNLapTime float32
Standings [5]StandingsLine
}
type StandingsLineDataPacket struct {
Lap [LapStringLen]byte `binary:"little"`
DriverName [DriverNameLen]byte `binary:"little"`
TimeBehindString [TimeBehindStringLen]byte `binary:"little"`
}
type DataPacket struct {
StartMarker uint8 `binary:"little"`
Speed [SpeedLen]byte `binary:"little"`
Gear [GearLen]byte `binary:"little"`
RPM [RpmLen]byte `binary:"little"`
BrakeBias [BrakeBiasLen]byte `binary:"little"`
LapNumber [LapNumberLen]byte `binary:"little"`
DeltaToBestLap [DeltaToBestLapLen]byte `binary:"little"`
BestLapTime [BestLapTimeLen]byte `binary:"little"`
CurrLapTime [CurrLapTimeLen]byte `binary:"little"`
LastLapTime [LastLapTimeLen]byte `binary:"little"`
FuelEst [FuelEstLen]byte `binary:"little"`
Standings [5]StandingsLineDataPacket `binary:"little"`
EndMarker uint8 `binary:"little"`
}