fix: eliminate log spam crash - use plugin parser on start, silence noisy fallback warnings
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user