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": "iracing",
"name": "iRacing",
"parser_type": "iracing",
"telemetry_format": "ir",
"description": "iRacing 遥测数据输出",
"author": "Yei.J. (AskaEth)",
"version": "1.0.0",
"default_port": 20777
}
+32
View File
@@ -0,0 +1,32 @@
import struct
import time
from server.telemetry.data import TelemetryData
def get_parser():
return IRacingParser()
class IRacingParser:
def game_id(self) -> str:
return "iracing"
def parse(self, data: bytes, addr: tuple) -> TelemetryData:
td = TelemetryData(game_id="iracing", timestamp=time.time())
td.raw = {"raw_hex": data.hex(), "length": len(data), "addr": f"{addr[0]}:{addr[1]}"}
if len(data) < 100:
return td
try:
td.speed_mph = struct.unpack_from("<f", data, 36)[0]
td.speed_kmh = td.speed_mph * 1.60934
td.rpm = struct.unpack_from("<f", data, 48)[0]
td.gear = struct.unpack_from("<i", data, 56)[0]
td.throttle = struct.unpack_from("<f", data, 4)[0]
td.brake = struct.unpack_from("<f", data, 8)[0]
td.steering = struct.unpack_from("<f", data, 0)[0]
except struct.error:
pass
return td