34 lines
1014 B
Python
34 lines
1014 B
Python
import time
|
|
from server.telemetry.data import TelemetryData
|
|
|
|
|
|
def get_parser():
|
|
return AssettoCorsaParser()
|
|
|
|
|
|
class AssettoCorsaParser:
|
|
def game_id(self) -> str:
|
|
return "assetto_corsa"
|
|
|
|
def parse(self, data: bytes, addr: tuple) -> TelemetryData:
|
|
td = TelemetryData(game_id="assetto_corsa", timestamp=time.time())
|
|
td.raw = {"raw_hex": data.hex(), "length": len(data), "addr": f"{addr[0]}:{addr[1]}"}
|
|
|
|
try:
|
|
text = data.decode("utf-8", errors="replace").rstrip("\r\n")
|
|
parts = text.split("\t")
|
|
if len(parts) < 10:
|
|
return td
|
|
td.speed_kmh = float(parts[0])
|
|
td.speed_mph = td.speed_kmh * 0.621371
|
|
td.rpm = float(parts[1])
|
|
td.gear = int(float(parts[2]))
|
|
td.throttle = float(parts[3])
|
|
td.brake = float(parts[4])
|
|
td.steering = float(parts[5])
|
|
td.fuel = float(parts[6])
|
|
except Exception:
|
|
pass
|
|
|
|
return td
|