fix uds client

This commit is contained in:
2026-01-30 21:45:06 +03:00
parent f611c2a6c6
commit e969110171

View File

@@ -405,41 +405,43 @@ class PageManager:
# UDS Data Section # UDS Data Section
uds_values = mgr.get_data("uds_values", {}) uds_values = mgr.get_data("uds_values", {})
uds_stats = mgr.get_data("uds_stats", {})
_logger.debug(f"Car data: UDS values={len(uds_values) if uds_values else 0}, stats={uds_stats}")
if uds_values: if uds_values:
has_uds = True has_uds = True
lines.append("--- UDS ---") lines.append("--- UDS ---")
# Boost pressure # Display order for known PIDs
if 0x202A in uds_values: uds_display = [
v = uds_values[0x202A] (0x202A, "Boost", lambda v: f"{v.value:.0f} kPa"),
lines.append(f"Boost: {v.value:.0f} kPa") (0x437C, "Torque", lambda v: f"{v.value:.0f} Nm"),
(0x10C0, "Lambda", lambda v: f"{v.value:.3f}"),
(0x2004, "Timing", lambda v: f"{v.value:.1f} deg"),
(0x39A2, "Wastegate", lambda v: f"{v.value:.0f}%"),
(0x3816, "Gear", lambda v: "R" if int(v.value) == -1 else ("N" if int(v.value) == 0 else str(int(v.value)))),
]
# Torque shown_pids = set()
if 0x437C in uds_values: for pid_code, label, formatter in uds_display:
v = uds_values[0x437C] if pid_code in uds_values:
lines.append(f"Torque: {v.value:.0f} Nm") v = uds_values[pid_code]
lines.append(f"{label}: {formatter(v)}")
shown_pids.add(pid_code)
# Lambda # Show any other UDS PIDs not in display order
if 0x10C0 in uds_values: for pid_code, v in sorted(uds_values.items()):
v = uds_values[0x10C0] if pid_code not in shown_pids:
lines.append(f"Lambda: {v.value:.3f}") # Use PID name if available
name = v.pid.name if hasattr(v, 'pid') and hasattr(v.pid, 'name') else f"0x{pid_code:04X}"
# Ignition timing lines.append(f"{name}: {v.value:.1f} {v.unit}")
if 0x2004 in uds_values: elif uds_stats:
v = uds_values[0x2004] # UDS is running but no data yet
lines.append(f"Timing: {v.value:.1f} deg") has_uds = True
lines.append("--- UDS ---")
# Wastegate queries = uds_stats.get("queries", 0)
if 0x39A2 in uds_values: successes = uds_stats.get("successes", 0)
v = uds_values[0x39A2] lines.append(f"Polling... ({successes}/{queries})")
lines.append(f"Wastegate: {v.value:.0f}%")
# Gear
if 0x3816 in uds_values:
v = uds_values[0x3816]
gear = int(v.value)
gear_str = "R" if gear == -1 else ("N" if gear == 0 else str(gear))
lines.append(f"Gear: {gear_str}")
if not has_obd2 and not has_uds: if not has_obd2 and not has_uds:
lines = ["No vehicle data", "", "Use Actions menu", "to reconnect"] lines = ["No vehicle data", "", "Use Actions menu", "to reconnect"]