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
+203 -144

No files matched your search

@@ -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"
@@ -16,10 +16,11 @@
// Use actual RTI Connext DDS types
#include <dds/sub/LoanedSamples.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
// 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 <typename DRO_OBJECT, typename SC>
@@ -10,6 +10,7 @@
#include <DDS/Generic/generic_data_reader.h>
#include <DDS/Generic/subscriber_listener.h>
#include <DDS/Generic/generic_logger.h>
#include <QTimer>
#include <dds/core/cond/StatusCondition.hpp>
@@ -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 <dds/sub/subfwd.hpp>
namespace DDSGeneric
{
#ifdef BUILD_RTI
// RTI DDS is available - include the real implementation from RTI headers
// DataReader is already defined in <dds/sub/subfwd.hpp> with signature:
// template <typename T, template <typename Q> class DELEGATE = dds::sub::detail::DataReaderImpl>
// class DataReader;
// RTI DDS is available - include full DynamicDataReader implementation
#include <Lts/DDS/Generic/dynamic_data_reader.h>
// 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
// BUILD_RTI=OFF: Provide minimal stub definitions
@@ -53,4 +85,32 @@ public:
void cleanup() {}
};
#endif // BUILD_RTI
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
} // namespace DDSGeneric
@@ -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 <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 <ddsgen_export.h>
#include <string>
@@ -46,4 +80,5 @@ inline LOGGER_T getLogger(const std::string &loggerName, DataType dt)
return getLogger(loggerName.data(), 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 };
// 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
@@ -10,10 +10,12 @@
// filename: pdm_translation.h
#include <QString>
#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
@@ -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