From e9691101713e4237d9067c084b9fb41f2c5a6562 Mon Sep 17 00:00:00 2001 From: Alexander Poletaev Date: Fri, 30 Jan 2026 21:45:06 +0300 Subject: [PATCH] fix uds client --- obd2_client/src/flipper/pages.py | 60 +++++++++++++++++--------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/obd2_client/src/flipper/pages.py b/obd2_client/src/flipper/pages.py index 5b2bba3..4f2dac6 100644 --- a/obd2_client/src/flipper/pages.py +++ b/obd2_client/src/flipper/pages.py @@ -405,41 +405,43 @@ class PageManager: # UDS Data Section 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: has_uds = True lines.append("--- UDS ---") - # Boost pressure - if 0x202A in uds_values: - v = uds_values[0x202A] - lines.append(f"Boost: {v.value:.0f} kPa") + # Display order for known PIDs + uds_display = [ + (0x202A, "Boost", lambda v: f"{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 - if 0x437C in uds_values: - v = uds_values[0x437C] - lines.append(f"Torque: {v.value:.0f} Nm") + shown_pids = set() + for pid_code, label, formatter in uds_display: + if pid_code in uds_values: + v = uds_values[pid_code] + lines.append(f"{label}: {formatter(v)}") + shown_pids.add(pid_code) - # Lambda - if 0x10C0 in uds_values: - v = uds_values[0x10C0] - lines.append(f"Lambda: {v.value:.3f}") - - # Ignition timing - if 0x2004 in uds_values: - v = uds_values[0x2004] - lines.append(f"Timing: {v.value:.1f} deg") - - # Wastegate - if 0x39A2 in uds_values: - v = uds_values[0x39A2] - 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}") + # Show any other UDS PIDs not in display order + for pid_code, v in sorted(uds_values.items()): + if pid_code not in shown_pids: + # Use PID name if available + name = v.pid.name if hasattr(v, 'pid') and hasattr(v.pid, 'name') else f"0x{pid_code:04X}" + lines.append(f"{name}: {v.value:.1f} {v.unit}") + elif uds_stats: + # UDS is running but no data yet + has_uds = True + lines.append("--- UDS ---") + queries = uds_stats.get("queries", 0) + successes = uds_stats.get("successes", 0) + lines.append(f"Polling... ({successes}/{queries})") if not has_obd2 and not has_uds: lines = ["No vehicle data", "", "Use Actions menu", "to reconnect"]