Got some of the data I need for my UI
This commit is contained in:
+33
-18
@@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user