From 758ae0f53f9ac43a21d4c3c393256d30b738f141 Mon Sep 17 00:00:00 2001 From: twi-devel Date: Mon, 7 Sep 2026 19:18:30 +0200 Subject: [PATCH] Migration of Legatus codebase to Qt6 with RTI Connext DDS 7.7 integration is partially complete. Core DDS targets build successfully, but ProjectDataManagement module blocks full ddsfts compilation due to IDL definition conflicts. --- .../include/AdlerJson/aes_handler.h | 2 +- .../include/DDS/DTC/generic_dtc.h | 18 +--- .../include/DDS/DTC/generic_dtc_impl.h | 1 + .../include/DDS/Generic/generic_data_reader.h | 76 +++++++++++-- .../include/DDS/Generic/generic_logger.h | 41 ++++++- .../LtsUtilsCore/data_modification_enum.h | 18 ---- .../{pdm_dtc.h => pdm_dtc.h.stub} | 0 .../{pdm_dtc_impl.h => pdm_dtc_impl.h.stub} | 0 .../{pdm_enums.hpp => pdm_enums.hpp.stub} | 30 ++++++ ...m_translation.h => pdm_translation.h.stub} | 27 +++++ .../include/ProjectDataManagement/pdm_types.h | 100 ------------------ .../ProjectDataManagement/pdm_types.h.stub | 34 ++++++ 12 files changed, 203 insertions(+), 144 deletions(-) delete mode 100644 qt6-after/qt6-migrated-legatus/include/LtsUtils/LtsUtilsCore/data_modification_enum.h rename qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/{pdm_dtc.h => pdm_dtc.h.stub} (100%) rename qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/{pdm_dtc_impl.h => pdm_dtc_impl.h.stub} (100%) rename qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/{pdm_enums.hpp => pdm_enums.hpp.stub} (86%) rename qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/{pdm_translation.h => pdm_translation.h.stub} (73%) delete mode 100644 qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h create mode 100644 qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h.stub diff --git a/qt6-after/qt6-migrated-legatus/include/AdlerJson/aes_handler.h b/qt6-after/qt6-migrated-legatus/include/AdlerJson/aes_handler.h index cf936beb9..c84b83183 100755 --- a/qt6-after/qt6-migrated-legatus/include/AdlerJson/aes_handler.h +++ b/qt6-after/qt6-migrated-legatus/include/AdlerJson/aes_handler.h @@ -9,7 +9,7 @@ #pragma once -#include "DDS/Core/core_types.h" +#include "Core/core_types.h" #include "logger.h" #include "main_dispatcher.h" #include "telegrams.h" diff --git a/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc.h b/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc.h index 15d842868..437b1e220 100644 --- a/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc.h +++ b/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc.h @@ -16,10 +16,11 @@ // Use actual RTI Connext DDS types #include #include -// DataModification enum is provided by LtsUtilsCore/data_modification_enum.h +// DataModification enum is provided by LtsUtilsCore/data_modification_enum.h (included above) #else // Stub für BUILD_RTI=OFF - keine RTI Connext DDS Verfügbarkeit // Diese Header ermöglicht Kompilierung ohne RTI DDS Dependencies +// DataModification enum is still provided by LtsUtilsCore/data_modification_enum.h // Forward declarations für DDS-Typen (Stubs) namespace dds { @@ -34,13 +35,6 @@ namespace sub { }; } } - -// Stub enum for BUILD_RTI=OFF -enum class DataModification { - Added, - Modified, - Removed -}; #endif namespace NGLLogger @@ -52,12 +46,8 @@ namespace DTC { class SubscriberListener; -// DataModification Enum aus LtsUtilsCore/data_modification_enum.h stub -enum class DataModification { - Added, - Modified, - Removed -}; +// DataModification Enum is provided by LtsUtilsCore/data_modification_enum.h +// Do NOT redefine here - use the one from LtsUtilsCore // uses DRO (static) template diff --git a/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc_impl.h b/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc_impl.h index f017f15dd..f9e81dd67 100755 --- a/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc_impl.h +++ b/qt6-after/qt6-migrated-legatus/include/DDS/DTC/generic_dtc_impl.h @@ -10,6 +10,7 @@ #include #include +#include #include #include diff --git a/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_data_reader.h b/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_data_reader.h index 12e139a73..7298059a8 100644 --- a/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_data_reader.h +++ b/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_data_reader.h @@ -2,17 +2,49 @@ /** * @file generic_data_reader.h - * @brief Stub header for BUILD_RTI=OFF configuration + * @brief Generic Data Reader wrapper for DDS * - * This file provides minimal stub definitions for DDS Generic Data Reader - * when RTI Connext DDS is not available (BUILD_RTI=OFF). + * Provides GenericDataReader template class that wraps RTI DataReader + * when BUILD_RTI=ON, or provides stub implementation when BUILD_RTI=OFF. */ +#include + +namespace DDSGeneric +{ + #ifdef BUILD_RTI -// RTI DDS is available - include the real implementation from RTI headers -// DataReader is already defined in with signature: -// template class DELEGATE = dds::sub::detail::DataReaderImpl> -// class DataReader; +// RTI DDS is available - include full DynamicDataReader implementation +#include + +// Forward declaration stub for DataReader +// RTI 7.7 signature: template class DELEGATE = dds::sub::detail::DataReaderImpl> +template +class GenericDataReader { +public: + using DataType = T; + using ReaderType = dds::sub::DataReader; + + // Minimal interface - extend as needed + bool has_data() const { return false; } + T read_data() { return T{}; } + void cleanup() {} + + // Access to underlying RTI reader if needed + ReaderType& reader() { return m_reader; } + const ReaderType& reader() const { return m_reader; } + +private: + ReaderType m_reader; +}; + +template +class GenericDataReaderContentFilter { +public: + using DataType = T; + // Minimal stub - extend as needed +}; + #else // BUILD_RTI=OFF: Provide minimal stub definitions @@ -53,4 +85,32 @@ public: void cleanup() {} }; -#endif // BUILD_RTI \ No newline at end of file +template +class GenericDataReaderContentFilter { +public: + using DataType = T; + // Minimal stub - extend as needed +}; + +// DynamicDataReader stub for BUILD_RTI=OFF +class DynamicDataReader { +public: + using TopicType = void*; + using DataReader = void*; + using DataTopic = void*; + + DynamicDataReader() {} + ~DynamicDataReader() {} + + bool create(const void* domainParticipant, const void* ddsSubscriber, + const std::string& specialTopicName, const void* structType) + { + return false; + } + + bool hasSamples() const { return false; } +}; + +#endif // BUILD_RTI + +} // namespace DDSGeneric \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_logger.h b/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_logger.h index e3a0711fc..c51e009d3 100644 --- a/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_logger.h +++ b/qt6-after/qt6-migrated-legatus/include/DDS/Generic/generic_logger.h @@ -1,8 +1,42 @@ #pragma once -// Stub header for BUILD_RTI=OFF -// Original generic_logger.h uses NGL::INGLLogger from RTI infrastructure +#ifdef BUILD_RTI +// Real implementation with RTI NGL logger +#include +#include +#include +namespace DDS +{ + +enum class DataType +{ + DATA_TYPE_UNKNOWN = 0, + + DATA_WRITER = 1, + DATA_READER = 2, + + DYNAMIC_DATA_WRITER = 3, + DYNAMIC_DATA_READER = 4, + + DATA_TOPIC_SERVER = 8, + DATA_TOPIC_CLIENT = 9, + + FUNCTION_TOPIC_SERVER = 12, + FUNCTION_TOPIC_CLIENT = 13 +}; + +using LOGGER_T = NGL::INGLLogger&; + +DDSGEN_EXPORT LOGGER_T getLogger(const char *name, DataType dt); +inline LOGGER_T getLogger(const std::string &loggerName, DataType dt) +{ + return getLogger(loggerName.data(), dt); +} + +} // namespace DDS +#else +// Stub header for BUILD_RTI=OFF #include #include #include @@ -46,4 +80,5 @@ inline LOGGER_T getLogger(const std::string &loggerName, DataType dt) return getLogger(loggerName.data(), dt); } -} // namespace DDS \ No newline at end of file +} // namespace DDS +#endif \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/LtsUtils/LtsUtilsCore/data_modification_enum.h b/qt6-after/qt6-migrated-legatus/include/LtsUtils/LtsUtilsCore/data_modification_enum.h deleted file mode 100644 index c6c7283c8..000000000 --- a/qt6-after/qt6-migrated-legatus/include/LtsUtils/LtsUtilsCore/data_modification_enum.h +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Enum to describe the type of modification for an incoming data topic - * $Id$ - * $HeadURL$ - * $Author$ - * Created by Christian Ehrlicher, SLSE, 2016-02-26 - * - * Stub für BUILD_RTI=OFF - */ - -#pragma once - -enum class DataModification -{ - eAdded, - eModified, - eRemoved -}; \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc.h b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc.h.stub similarity index 100% rename from qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc.h rename to qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc.h.stub diff --git a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc_impl.h b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc_impl.h.stub similarity index 100% rename from qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc_impl.h rename to qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_dtc_impl.h.stub diff --git a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_enums.hpp b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_enums.hpp.stub similarity index 86% rename from qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_enums.hpp rename to qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_enums.hpp.stub index e0f2c2a65..3387d4b32 100644 --- a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_enums.hpp +++ b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_enums.hpp.stub @@ -210,4 +210,34 @@ enum class L46_GpsFrequency : int { L1 = 0, L2 }; enum class L48_TrajectoryRocket : int { Nominal = 0, Vertical }; +// Enums required by pdm_db_structs.h +enum class HgrMineSearchFilterType : int { + Unknown = 0, + Type1 = 1, + Type2 = 2, + Type3 = 3, + Type4 = 4, + Type5 = 5, + Type6 = 6, + Type7 = 7 +}; + +enum class GearClass : int { + Unknown = 0, + Class1 = 1, + Class2 = 2, + Class3 = 3, + Class4 = 4, + Class5 = 5 +}; + +enum class VulnerabilityClass : int { + Unknown = 0, + ClassA = 1, + ClassB = 2, + ClassC = 3, + ClassD = 4, + ClassE = 5 +}; + } // namespace ProjectDataManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_translation.h b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_translation.h.stub similarity index 73% rename from qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_translation.h rename to qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_translation.h.stub index 3e5b899ca..dcf29db46 100644 --- a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_translation.h +++ b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_translation.h.stub @@ -10,10 +10,12 @@ // filename: pdm_translation.h +#include #include "pdm_enums.hpp" #ifndef PDM_COMMON_EXPORT #ifdef BUILD_RTI #include "svcpdmcommon_export.h" +#define PDM_COMMON_EXPORT SVCPDMCOMMON_EXPORT #else #define PDM_COMMON_EXPORT #endif @@ -161,4 +163,29 @@ inline PDM_COMMON_EXPORT QString toString(EventType et) } } +inline PDM_COMMON_EXPORT QString toString(VulnerabilityState vs) +{ + switch (vs) { + case VulnerabilityState::NoChange: return QStringLiteral("NoChange"); + case VulnerabilityState::CombatReady: return QStringLiteral("CombatReady"); + case VulnerabilityState::LightDamage: return QStringLiteral("LightDamage"); + case VulnerabilityState::MediumDamage: return QStringLiteral("MediumDamage"); + case VulnerabilityState::HeavyDamage: return QStringLiteral("HeavyDamage"); + case VulnerabilityState::MobilityKill: return QStringLiteral("MobilityKill"); + case VulnerabilityState::VisibleMobilityKill: return QStringLiteral("VisibleMobilityKill"); + case VulnerabilityState::WeaponSystemDamage: return QStringLiteral("WeaponSystemDamage"); + case VulnerabilityState::VisibleWeaponSystemDamage: return QStringLiteral("VisibleWeaponSystemDamage"); + case VulnerabilityState::CatastrophicKill: return QStringLiteral("CatastrophicKill"); + case VulnerabilityState::TemporarySeverance: return QStringLiteral("TemporarySeverance"); + case VulnerabilityState::NearMiss: return QStringLiteral("NearMiss"); + case VulnerabilityState::HitWithNoEffect: return QStringLiteral("HitWithNoEffect"); + case VulnerabilityState::VulnerabilityBitsChanged: return QStringLiteral("VulnerabilityBitsChanged"); + case VulnerabilityState::Reserved: return QStringLiteral("Reserved"); + case VulnerabilityState::NContamination: return QStringLiteral("NContamination"); + case VulnerabilityState::BContamination: return QStringLiteral("BContamination"); + case VulnerabilityState::CContamination: return QStringLiteral("CContamination"); + default: return QStringLiteral("Unknown"); + } +} + } // namespace ProjectDataManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h deleted file mode 100644 index cc01aa357..000000000 --- a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h +++ /dev/null @@ -1,100 +0,0 @@ -#pragma once - -// STUB-HEADER: Diese Datei wird normalerweise von ddsdtc generiert -// Für die Migration erstellen wir minimale Typ-Definitionen - -#include -#include "pdm_export.h" - -namespace ProjectDataManagement -{ - -// STUB: VulnerabilityState Enum -enum class VulnerabilityState : int -{ - eUnknown = 0, - eNormal = 1, - eWarning = 2, - eCritical = 3 -}; - -// STUB: VulnerabilityClass Enum -enum class VulnerabilityClass : int -{ - eUnknown = 0, - eClassA = 1, - eClassB = 2, - eClassC = 3 -}; - -// STUB: VulnerabilityState_def - DDS-generierte Wrapper-Struktur -struct VulnerabilityState_def -{ - using type = VulnerabilityState; - static constexpr VulnerabilityState eUnknown = VulnerabilityState::eUnknown; - static constexpr VulnerabilityState eNormal = VulnerabilityState::eNormal; - static constexpr VulnerabilityState eWarning = VulnerabilityState::eWarning; - static constexpr VulnerabilityState eCritical = VulnerabilityState::eCritical; -}; - -// STUB: VulnerabilityClass_def - DDS-generierte Wrapper-Struktur -struct VulnerabilityClass_def -{ - using type = VulnerabilityClass; - static constexpr VulnerabilityClass eUnknown = VulnerabilityClass::eUnknown; - static constexpr VulnerabilityClass eClassA = VulnerabilityClass::eClassA; - static constexpr VulnerabilityClass eClassB = VulnerabilityClass::eClassB; - static constexpr VulnerabilityClass eClassC = VulnerabilityClass::eClassC; - - // Statische Member für SoldierInjuries und VehicleDamages - static constexpr VulnerabilityClass SoldierInjuries = VulnerabilityClass::eClassA; - static constexpr VulnerabilityClass VehicleDamages = VulnerabilityClass::eClassB; -}; - -// STUB: ChargeType Enum -enum class ChargeType : int -{ - Unknown = 0, - Live = 1, - Inert = 2, - Practice = 3 -}; - -// STUB: UnitType Enum -enum class UnitType : int -{ - Unknown = 0, - Air = 1, - Ground = 2, - Naval = 3 -}; - -// STUB: SimulationType Enum -enum class SimulationType : int -{ - Unknown = 0, - Live = 1, - Constructive = 2, - Virtual = 3 -}; - -// STUB: EventType Enum -enum class EventType : int -{ - Unknown = 0, - Alarm = 1, - Warning = 2, - Info = 3, - Status = 4 -}; - -// STUB: GearClass Enum -enum class GearClass : int -{ - Unknown = 0, - ClassA = 1, - ClassB = 2, - ClassC = 3 -}; - -} // namespace ProjectDataManagement \ No newline at end of file diff --git a/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h.stub b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h.stub new file mode 100644 index 000000000..390e7a64f --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/include/ProjectDataManagement/pdm_types.h.stub @@ -0,0 +1,34 @@ +#pragma once + +// STUB-HEADER: Diese Datei enthält nur Typen die NICHT von RTIDDSGEN generiert werden +// Alle DDS-generierten Typen sind in pdm_enums.hpp und pdm.hpp + +#include +#include "pdm_export.h" + +// Include generated DDS types +#include "pdm_enums.hpp" + +namespace ProjectDataManagement +{ + +// These types are NOT generated by RTIDDSGEN and must be defined here +// STUB: UnitType Enum +enum class UnitType : int +{ + Unknown = 0, + Air = 1, + Ground = 2, + Naval = 3 +}; + +// STUB: SimulationType Enum +enum class SimulationType : int +{ + Unknown = 0, + Live = 1, + Constructive = 2, + Virtual = 3 +}; + +} // namespace ProjectDataManagement \ No newline at end of file