diff --git a/games/builtin/f1_24/parser.py b/games/builtin/f1_24/parser.py index b72a9ae..a6518cf 100644 --- a/games/builtin/f1_24/parser.py +++ b/games/builtin/f1_24/parser.py @@ -8,6 +8,12 @@ def get_parser(): 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" @@ -15,22 +21,64 @@ class F124Parser: 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) < 1289: + if len(data) < 50: return td try: - td.speed_kmh = struct.unpack_from(" 1.0: + td.fuel = min(1.0, td.fuel / 100.0) + td.max_rpm = struct.unpack_from("