import struct import time from server.telemetry.data import TelemetryData def get_parser(): return F124Parser() class F124Parser: """F1 24 UDP telemetry parser based on official EA SPORTS specification.""" # Packet header (29 bytes) HEADER_SIZE = 29 CAR_TELEMETRY_SIZE = 43 # sizeof(CarTelemetryData) with padding def game_id(self) -> str: return "f1_24" def parse(self, data: bytes, addr: tuple) -> TelemetryData: td = TelemetryData(game_id="f1_24", timestamp=time.time()) td.raw = {"raw_hex": data.hex(), "length": len(data), "addr": f"{addr[0]}:{addr[1]}"} if len(data) < 50: return td try: # Parse header packet_id = struct.unpack_from(" 1.0: td.fuel = min(1.0, td.fuel / 100.0) td.max_rpm = struct.unpack_from("