From bcefdcb99e67bcee8bcab1f5ba3cdbb7482a907d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 31 May 2026 20:57:36 +0000 Subject: [PATCH 1/3] Initial plan From 43e31aea3f6e04bc72873361dc28b0bed54a0cd5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 31 May 2026 21:01:30 +0000 Subject: [PATCH 2/3] Add tcFunctionalities initialization --- include/app.hpp | 1 + src/app.cpp | 3 +++ 2 files changed, 4 insertions(+) diff --git a/include/app.hpp b/include/app.hpp index 6ceb977..8a99580 100644 --- a/include/app.hpp +++ b/include/app.hpp @@ -44,6 +44,7 @@ class Application std::unique_ptr speedMessagesInterface; std::unique_ptr nmea2000MessageInterface; std::unique_ptr tecuFunctionalities; + std::unique_ptr tcFunctionalities; std::uint8_t nmea2000SequenceIdentifier = 0; std::uint32_t lastJ1939SpeedTransmit = 0; std::uint32_t lastTCStatusTransmit = 0; diff --git a/src/app.cpp b/src/app.cpp index 3425304..e66c947 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -180,6 +180,7 @@ bool Application::initialize() languageInterface.set_country_code("US"); // This is the default, but you can change it if you want tcServer->initialize(); tcServer->set_task_totals_active(true); // TODO: make this dynamic based on status in AOG + tcFunctionalities = std::make_unique(tcCF); // Initialize speed and distance messages if (tecuCF && tecuCF->get_address_valid()) @@ -332,6 +333,8 @@ bool Application::update() tcServer->request_measurement_commands(); tcServer->update(); + if (tcFunctionalities) + tcFunctionalities->update(); if (tecuFunctionalities) tecuFunctionalities->update(); if (speedMessagesInterface) From 3acc41b85ba38bed856f6e60adb03802f01c63c3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 31 May 2026 21:17:25 +0000 Subject: [PATCH 3/3] Advertise TC BAS and SC capabilities via PGN 64654 --- src/app.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/app.cpp b/src/app.cpp index e66c947..3f6be95 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -181,6 +181,23 @@ bool Application::initialize() tcServer->initialize(); tcServer->set_task_totals_active(true); // TODO: make this dynamic based on status in AOG tcFunctionalities = std::make_unique(tcCF); + tcFunctionalities->set_functionality_is_supported( + isobus::ControlFunctionFunctionalities::Functionalities::TaskControllerBasicServer, + 1, + true); + tcFunctionalities->set_functionality_is_supported( + isobus::ControlFunctionFunctionalities::Functionalities::TaskControllerGeoServer, + 1, + false); + tcFunctionalities->set_task_controller_geo_server_option_state( + isobus::ControlFunctionFunctionalities::TaskControllerGeoServerOptions::PolygonBasedPrescriptionMapsAreSupported, + false); + tcFunctionalities->set_functionality_is_supported( + isobus::ControlFunctionFunctionalities::Functionalities::TaskControllerSectionControlServer, + 1, + true); + tcFunctionalities->set_task_controller_section_control_server_option_state(1, 64); + std::cout << "[" << get_timestamp() << "] [Init] TC announced TC-BAS and TC-SC (1 boom / 64 sections) via PGN 64654" << std::endl; // Initialize speed and distance messages if (tecuCF && tecuCF->get_address_valid())