Files
esdi/providers/iracing/commonTransforms.go
T

73 lines
1.3 KiB
Go

package iracing
import (
telem "esdi/telemetry"
"strconv"
"time"
)
const (
LapTimeFormatStr = "04:05.000"
)
func LapTimeTransform(v any, out *telem.TelemetryField) {
lapTimeInSeconds := v.(float32)
if lapTimeInSeconds < 0 {
lapTimeInSeconds = 0
}
wholeSeconds := int64(lapTimeInSeconds)
lapTime := time.Unix(wholeSeconds, int64((lapTimeInSeconds-float32(wholeSeconds))*1e9))
out.Type = telem.DataTypeSTRING
out.Str = lapTime.Format(LapTimeFormatStr)
}
func EmptyTransform(v any, out *telem.TelemetryField) {
out.Type = telem.DataTypeCHAR
out.Raw = uint64('-')
}
func PitSpeedLimiterTransform(v any, out *telem.TelemetryField) {
out.Type = telem.DataTypeSTRING
if v.(bool) {
out.Str = "PIT"
} else {
out.Str = " "
}
}
func UInt8Transform(v any, out *telem.TelemetryField) {
out.Type = telem.DataTypeUINT8
if v == nil {
out.Raw = 0
return
}
out.Raw = uint64(v.(int))
}
func FloatToStringTransform(v any, out *telem.TelemetryField) {
out.Type = telem.DataTypeSTRING
if v == nil {
out.Str = "inv"
return
}
out.Str = strconv.FormatFloat(float64(v.(float32)), 'f', 1, 32)
}
func FloatToUInt8Transform(v any, out *telem.TelemetryField) {
out.Type = telem.DataTypeUINT8
if v == nil {
out.Raw = uint64(0)
return
}
out.Raw = uint64(v.(float32))
}