From 36755cc78a8d0994861815012b979c29dc029148 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Mon, 27 Jul 2026 18:56:46 +0800 Subject: [PATCH] fix: F1 24 parser matches official EA SPORTS UDP spec with packet types --- games/builtin/f1_24/parser.py | 74 +++++++++++++++++++++++++++++------ 1 file changed, 61 insertions(+), 13 deletions(-) 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("