diff --git a/server/telemetry/listener.py b/server/telemetry/listener.py index 695c5e0..8ad1a82 100644 --- a/server/telemetry/listener.py +++ b/server/telemetry/listener.py @@ -90,14 +90,6 @@ class TelemetryListener: host = cfg.get("telemetry_host", "0.0.0.0") port = cfg.get("telemetry_port", 20777) - selected_game = cfg.get("selected_game_id") - parser_key = None - if selected_game: - for game in cfg.get("games", []): - if game["id"] == selected_game: - parser_key = game.get("parser", "forza") - break - loop = asyncio.get_event_loop() try: self._transport, _ = await loop.create_datagram_endpoint( @@ -105,16 +97,14 @@ class TelemetryListener: local_addr=(host, port), ) self._running = True - self.forwarder.reload_targets() - if parser_key and parser_key in PARSER_MAP: - self._parser = self._get_parser(parser_key) - logger.info("Telemetry listener started on %s:%d [parser=%s]", host, port, parser_key) - else: - self._parser = None - logger.info("Telemetry listener started on %s:%d [auto-detect]", host, port) + selected_game = cfg.get("selected_game_id") + if selected_game: + self.set_parser_for_game(selected_game) + logger.info("Telemetry listener started on %s:%d [game=%s]", + host, port, selected_game or "none") return True except Exception as e: logger.error("Failed to start telemetry listener: %s", e) @@ -144,13 +134,6 @@ class TelemetryListener: if self._parser: td = self._parser.parse(data, addr) else: - for parser_cls in PARSER_MAP.values(): - p = parser_cls() - td = p.parse(data, addr) - if td and td.speed_kmh > 0: - break - - if td is None: td = TelemetryData(timestamp=time.time(), raw={"raw_hex": data.hex(), "length": len(data)}) self._latest_data = td diff --git a/server/telemetry/parsers/__init__.py b/server/telemetry/parsers/__init__.py index e6eebab..a7a8f17 100644 --- a/server/telemetry/parsers/__init__.py +++ b/server/telemetry/parsers/__init__.py @@ -28,7 +28,7 @@ class ForzaParser(BaseParser): td.raw = {"raw_hex": data.hex(), "length": len(data), "addr": f"{addr[0]}:{addr[1]}"} if len(data) < 312: - logger.warning("Forza data too short: %d bytes", len(data)) + logger.debug("Forza data too short: %d bytes", len(data)) return td try: @@ -73,7 +73,7 @@ class ForzaParser(BaseParser): }) except struct.error as e: - logger.error("Forza parse error: %s", e) + logger.debug("Forza parse error: %s", e) return td @@ -87,7 +87,7 @@ class ACCParser(BaseParser): td.raw = {"raw_hex": data.hex(), "length": len(data), "addr": f"{addr[0]}:{addr[1]}"} if len(data) < 200: - logger.warning("ACC data too short: %d bytes", len(data)) + logger.debug("ACC data too short: %d bytes", len(data)) return td try: @@ -109,7 +109,7 @@ class ACCParser(BaseParser): "brake": td.brake, }) except struct.error as e: - logger.error("ACC parse error: %s", e) + logger.debug("ACC parse error: %s", e) return td @@ -123,7 +123,7 @@ class F1Parser(BaseParser): td.raw = {"raw_hex": data.hex(), "length": len(data), "addr": f"{addr[0]}:{addr[1]}"} if len(data) < 1289: - logger.warning("F1 data too short: %d bytes", len(data)) + logger.debug("F1 data too short: %d bytes", len(data)) return td try: @@ -149,7 +149,7 @@ class F1Parser(BaseParser): "lap_time": td.lap_time, }) except struct.error as e: - logger.error("F1 parse error: %s", e) + logger.debug("F1 parse error: %s", e) return td @@ -163,7 +163,7 @@ class IRacingParser(BaseParser): td.raw = {"raw_hex": data.hex(), "length": len(data), "addr": f"{addr[0]}:{addr[1]}"} if len(data) < 100: - logger.warning("iRacing data too short: %d bytes", len(data)) + logger.debug("iRacing data too short: %d bytes", len(data)) return td try: @@ -183,7 +183,7 @@ class IRacingParser(BaseParser): "brake": td.brake, }) except struct.error as e: - logger.error("iRacing parse error: %s", e) + logger.debug("iRacing parse error: %s", e) return td @@ -216,7 +216,7 @@ class ACParser(BaseParser): "gear": td.gear, }) except Exception as e: - logger.error("AC parse error: %s", e) + logger.debug("AC parse error: %s", e) return td