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.

This commit is contained in:
torsten committed 2026-09-07 19:18:30 +02:00
1 parent 283e89e3c9
commit 758ae0f53f
12 files changed
+201 -142

No files matched your search

@@ -9,7 +9,7 @@
#pragma once #pragma once
#include "DDS/Core/core_types.h" #include "Core/core_types.h"
#include "logger.h" #include "logger.h"
#include "main_dispatcher.h" #include "main_dispatcher.h"
#include "telegrams.h" #include "telegrams.h"
@@ -16,10 +16,11 @@
// Use actual RTI Connext DDS types // Use actual RTI Connext DDS types
#include <dds/sub/LoanedSamples.hpp> #include <dds/sub/LoanedSamples.hpp>
#include <dds/sub/SampleInfo.hpp> #include <dds/sub/SampleInfo.hpp>
// DataModification enum is provided by LtsUtilsCore/data_modification_enum.h // DataModification enum is provided by LtsUtilsCore/data_modification_enum.h (included above)
#else #else
// Stub für BUILD_RTI=OFF - keine RTI Connext DDS Verfügbarkeit // Stub für BUILD_RTI=OFF - keine RTI Connext DDS Verfügbarkeit
// Diese Header ermöglicht Kompilierung ohne RTI DDS Dependencies // 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) // Forward declarations für DDS-Typen (Stubs)
namespace dds { namespace dds {
@@ -34,13 +35,6 @@ namespace sub {
}; };
} }
} }
// Stub enum for BUILD_RTI=OFF
enum class DataModification {
Added,
Modified,
Removed
};
#endif #endif
namespace NGLLogger namespace NGLLogger
@@ -52,12 +46,8 @@ namespace DTC
{ {
class SubscriberListener; class SubscriberListener;
// DataModification Enum aus LtsUtilsCore/data_modification_enum.h stub // DataModification Enum is provided by LtsUtilsCore/data_modification_enum.h
enum class DataModification { // Do NOT redefine here - use the one from LtsUtilsCore
Added,
Modified,
Removed
};
// uses DRO (static) // uses DRO (static)
template <typename DRO_OBJECT, typename SC> template <typename DRO_OBJECT, typename SC>
@@ -10,6 +10,7 @@
#include <DDS/Generic/generic_data_reader.h> #include <DDS/Generic/generic_data_reader.h>
#include <DDS/Generic/subscriber_listener.h> #include <DDS/Generic/subscriber_listener.h>
#include <DDS/Generic/generic_logger.h>
#include <QTimer> #include <QTimer>
#include <dds/core/cond/StatusCondition.hpp> #include <dds/core/cond/StatusCondition.hpp>
@@ -2,17 +2,49 @@
/** /**
* @file generic_data_reader.h * @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 * Provides GenericDataReader template class that wraps RTI DataReader
* when RTI Connext DDS is not available (BUILD_RTI=OFF). * when BUILD_RTI=ON, or provides stub implementation when BUILD_RTI=OFF.
*/ */
#include <dds/sub/subfwd.hpp>
namespace DDSGeneric
{
#ifdef BUILD_RTI #ifdef BUILD_RTI
// RTI DDS is available - include the real implementation from RTI headers // RTI DDS is available - include full DynamicDataReader implementation
// DataReader is already defined in <dds/sub/subfwd.hpp> with signature: #include <Lts/DDS/Generic/dynamic_data_reader.h>
// template <typename T, template <typename Q> class DELEGATE = dds::sub::detail::DataReaderImpl>
// class DataReader; // Forward declaration stub for DataReader
// RTI 7.7 signature: template <typename T, template <typename Q> class DELEGATE = dds::sub::detail::DataReaderImpl>
template<typename T>
class GenericDataReader {
public:
using DataType = T;
using ReaderType = dds::sub::DataReader<T>;
// 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<typename T>
class GenericDataReaderContentFilter {
public:
using DataType = T;
// Minimal stub - extend as needed
};
#else #else
// BUILD_RTI=OFF: Provide minimal stub definitions // BUILD_RTI=OFF: Provide minimal stub definitions
@@ -53,4 +85,32 @@ public:
void cleanup() {} void cleanup() {}
}; };
template<typename T>
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 #endif // BUILD_RTI
} // namespace DDSGeneric
@@ -1,8 +1,42 @@
#pragma once #pragma once
// Stub header for BUILD_RTI=OFF #ifdef BUILD_RTI
// Original generic_logger.h uses NGL::INGLLogger from RTI infrastructure // Real implementation with RTI NGL logger
#include <NGLLogger/INGLLogger.h>
#include <ddsgen_export.h>
#include <string>
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 <NGLLogger/INGLLogger.h> #include <NGLLogger/INGLLogger.h>
#include <ddsgen_export.h> #include <ddsgen_export.h>
#include <string> #include <string>
@@ -47,3 +81,4 @@ inline LOGGER_T getLogger(const std::string &loggerName, DataType dt)
} }
} // namespace DDS } // namespace DDS
#endif
@@ -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
};
@@ -210,4 +210,34 @@ enum class L46_GpsFrequency : int { L1 = 0, L2 };
enum class L48_TrajectoryRocket : int { Nominal = 0, Vertical }; 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 } // namespace ProjectDataManagement
@@ -10,10 +10,12 @@
// filename: pdm_translation.h // filename: pdm_translation.h
#include <QString>
#include "pdm_enums.hpp" #include "pdm_enums.hpp"
#ifndef PDM_COMMON_EXPORT #ifndef PDM_COMMON_EXPORT
#ifdef BUILD_RTI #ifdef BUILD_RTI
#include "svcpdmcommon_export.h" #include "svcpdmcommon_export.h"
#define PDM_COMMON_EXPORT SVCPDMCOMMON_EXPORT
#else #else
#define PDM_COMMON_EXPORT #define PDM_COMMON_EXPORT
#endif #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 } // namespace ProjectDataManagement
@@ -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 <QtCore/QString>
#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
@@ -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 <QtCore/QString>
#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