From 2a8215e33e2872d30f477e9a48a84c0e5a6ed8d1 Mon Sep 17 00:00:00 2001 From: Arjan Woltjer Date: Tue, 11 Aug 2026 09:32:42 +0200 Subject: [PATCH] Add VirtualTerminalClient::get_state() Mirrors TaskControllerClient::get_state(), which already exposes its internal state machine state via a public accessor -- VirtualTerminalClient had no equivalent. get_is_connected() only reports true once the entire handshake/upload/activate sequence completes, with no way for a consumer to distinguish "stuck waiting for VT status" from "uploading the pool" from "waiting for the end-of-pool response" while getting there. Build-verified against a real Teensy 4.1 ISOBUS project (teensy41 platform, arm-none-eabi toolchain) with a real consumer calling the new accessor. --- src/isobus_virtual_terminal_client.cpp | 5 +++++ src/isobus_virtual_terminal_client.hpp | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/isobus_virtual_terminal_client.cpp b/src/isobus_virtual_terminal_client.cpp index c887c6e..2eec976 100644 --- a/src/isobus_virtual_terminal_client.cpp +++ b/src/isobus_virtual_terminal_client.cpp @@ -80,6 +80,11 @@ namespace isobus return (StateMachineState::Connected == state); } + VirtualTerminalClient::StateMachineState VirtualTerminalClient::get_state() const + { + return state; + } + void VirtualTerminalClient::terminate() { if (initialized) diff --git a/src/isobus_virtual_terminal_client.hpp b/src/isobus_virtual_terminal_client.hpp index 1756ef5..f5871d9 100644 --- a/src/isobus_virtual_terminal_client.hpp +++ b/src/isobus_virtual_terminal_client.hpp @@ -397,6 +397,10 @@ namespace isobus /// @returns true if cconnected, false otherwise bool get_is_connected() const; + /// @brief Returns the current state machine state + /// @returns The current internal state machine state + StateMachineState get_state() const; + /// @brief Terminates the client and joins the worker thread if applicable void terminate();