feat: TurboSu initial release - racing telemetry dashboard

This commit is contained in:
Yei.J. (AskaEth)
2026-07-25 15:23:40 +08:00
commit d61bb61a83
61 changed files with 5270 additions and 0 deletions
+10
View File
@@ -0,0 +1,10 @@
{
"id": "assetto_corsa",
"name": "Assetto Corsa",
"parser_type": "ac",
"telemetry_format": "ac",
"description": "神力科莎 UDP 遥测数据输出",
"author": "Yei.J. (AskaEth)",
"version": "1.0.0",
"default_port": 9996
}
+33
View File
@@ -0,0 +1,33 @@
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