Got some of the data I need for my UI

This commit is contained in:
2025-01-26 23:17:15 +00:00
parent dbea7e7475
commit 8929347940
+33 -18
View File
@@ -22,23 +22,27 @@ type GameSource interface {
} }
type DataPacket struct { type DataPacket struct {
Speed int32 Speed int32
Gear int32 Gear int32
RPM int32 RPM int32
LapCount int32 LapCount int32
LapDistPct float32 LapDistPct float32
LapTime [16]byte // Current lap time LapTime [16]byte // Current lap time
LapDelta [16]byte // Delta to selected reference lap LapDelta [16]byte // Delta to selected reference lap
BestLapTime [16]byte // Best lap in session BestLapTime [16]byte // Best lap in session
LastLapTime [16]byte // Last lap time LastLapTime [16]byte // Last lap time
FuelPct float32 FuelUsageCurLap float32
FuelLiters float32 FuelPerLap float32
FuelTotal float32 // This will be calculated and passed in Liters FuelPct float32
Position int32 FuelLiters float32
Standings []StandingsLine FuelTotal float32 // This will be calculated and passed in Liters
Position int32
Standings []StandingsLine
} }
var ( var (
iniFuelLvl float32
fuelLevels map[int]float32
lastMessageTime time.Time lastMessageTime time.Time
mu sync.Mutex mu sync.Mutex
) )
@@ -129,7 +133,7 @@ func sendData(e *ESDI, s *serial.Port, done <-chan struct{}) {
} }
func printData(e *ESDI, done <-chan struct{}) { func printData(e *ESDI, done <-chan struct{}) {
ticker := time.NewTicker(time.Millisecond * 100) ticker := time.NewTicker(time.Millisecond * 25)
defer ticker.Stop() defer ticker.Stop()
for { for {
@@ -144,8 +148,8 @@ func printData(e *ESDI, done <-chan struct{}) {
// message := fmt.Sprintf("%d,%d\n", e.data.Gear-1, e.data.RPM) // message := fmt.Sprintf("%d,%d\n", e.data.Gear-1, e.data.RPM)
buffer.WriteString(fmt.Sprintf("Gear: %d, RPM: %d, Speed: %d\n", buffer.WriteString(fmt.Sprintf("Gear: %d, RPM: %d, Speed: %d\n",
e.data.Gear, e.data.RPM, e.data.Speed)) e.data.Gear, e.data.RPM, e.data.Speed))
buffer.WriteString(fmt.Sprintf("Fuel: %.2fL/%.2fL [%.2f%%]\n", e.data.FuelLiters, buffer.WriteString(fmt.Sprintf("Fuel: %.2fL/%.2fL %.2f/lap [%.2f%%]\n", e.data.FuelLiters,
e.data.FuelTotal, e.data.FuelPct)) e.data.FuelTotal, e.data.FuelPerLap, e.data.FuelPct))
buffer.WriteString(fmt.Sprintf("LapTime: %s [%s]\n", e.data.LapTime, buffer.WriteString(fmt.Sprintf("LapTime: %s [%s]\n", e.data.LapTime,
e.data.LapDelta)) e.data.LapDelta))
buffer.WriteString(fmt.Sprintf("Best Lap Time: %s\n", e.data.BestLapTime)) buffer.WriteString(fmt.Sprintf("Best Lap Time: %s\n", e.data.BestLapTime))
@@ -183,6 +187,15 @@ func (e *ESDI) fuelData() {
fLiters := e.irsdk.Vars.Vars["FuelLevel"].Value fLiters := e.irsdk.Vars.Vars["FuelLevel"].Value
fPct := e.irsdk.Vars.Vars["FuelLevelPct"].Value fPct := e.irsdk.Vars.Vars["FuelLevelPct"].Value
curLap := e.irsdk.Vars.Vars["Lap"].Value.(int)
fuelLevels[curLap] = fLiters.(float32)
if curLap - 2 < 0 {
e.data.FuelPerLap = 0.0
} else {
e.data.FuelPerLap = fuelLevels[curLap-2] - fuelLevels[curLap - 1]
}
mu.Lock() mu.Lock()
e.data.FuelPct = float32(fPct.(float32)) * 100 e.data.FuelPct = float32(fPct.(float32)) * 100
e.data.FuelLiters = float32(fLiters.(float32)) e.data.FuelLiters = float32(fLiters.(float32))
@@ -243,6 +256,8 @@ func (e *ESDI) telemetry() {
mainLoopTicker := time.NewTicker(time.Second / 60) mainLoopTicker := time.NewTicker(time.Second / 60)
defer mainLoopTicker.Stop() defer mainLoopTicker.Stop()
fuelLevels = make(map[int]float32, 256)
for { for {
select { select {
case <-done: case <-done:
@@ -261,8 +276,8 @@ func (e *ESDI) telemetry() {
} }
e.getVehicleData() e.getVehicleData()
e.lapData()
e.fuelData() e.fuelData()
e.lapData()
e.positionData() e.positionData()
} }
} }