LtsSession-STUB und GuezNasat-Fixes für BUILD_RTI=OFF

- CMakeLists.txt: Conditional compilation für BUILD_RTI=ON/OFF
- lts_session_stub.h/cpp: NEU - STUB-Implementation ohne RTI-Abhängigkeit
- lts_session_data_dds_stub.h: Doppeltes Namespace-Closing entfernt
- gna_nasat_aircraft.h: participantId zu participantIdValue umbenannt (Konflikt)
- gna_dtc.h: Doppeldefinitionen entfernt
- gna_nasat_aircraft_participant.h: Doppeldefinitionen entfernt
- ppm_enums.hpp: DataModification-Enum im ParticipantManagement-Namespace
- ElevationMap-STUB: ArcGIS-Abhängigkeit für BUILD_RTI=OFF gekapselt
- Viewer-STUB: Header für BUILD_RTI=OFF Build

Build-Validierung: Configure erfolgreich, LtsSession-Fehler behoben
This commit is contained in:
torsten committed 2026-08-20 19:01:05 +02:00
1 parent b0a281ddf4
commit 32041db9a7
17 files changed
+543 -50

No files matched your search

@@ -47,15 +47,22 @@ ENDIF()
# LtsSession (RTI dependencies optional)
SET(ltssession_SRCS
lts_session.h
lts_session.cpp
lts_session_lock_handler.h
)
# lts_session_manager and lts_session_lock_handler.cpp only needed when BUILD_RTI=ON
IF(BUILD_RTI)
LIST(APPEND ltssession_SRCS lts_session_manager.h lts_session_manager.cpp lts_session_lock_handler.cpp)
SET(ltssession_SRCS
lts_session.h
lts_session.cpp
lts_session_lock_handler.h
lts_session_manager.h
lts_session_manager.cpp
lts_session_lock_handler.cpp
)
ELSE()
# Stub version for BUILD_RTI=OFF
SET(ltssession_SRCS
lts_session_stub.h
lts_session_stub.cpp
lts_session_lock_handler.h
)
ENDIF()
NGL_ADD_LIBRARY2(WS LtsSession SHARED ${ltssession_SRCS})
@@ -163,7 +163,7 @@ class LtsSessionDataDds : public QObject
class Fetcher
{
public:
Fetcher(LtsSession::LtsSessionDataDds*, const QString&) {}
Fetcher(LtsSessionDataDds*, const QString&) {}
template <typename T> void getForeignGuiInterface(std::shared_ptr<T>&, const QString&, bool) {}
@@ -0,0 +1,60 @@
/**
* @RDE_HEADER@
* Stub implementation for lts_session.cpp when BUILD_RTI=OFF
* Provides minimal LtsSession class without RTI Connext DDS dependencies
*/
#include "lts_session_stub.h"
#include <QDebug>
namespace LtsSession
{
LtsSession::LtsSession(QObject* parent)
: LtsSessionDataDds(parent)
, m_initialized(false)
, m_sessionId(QStringLiteral("stub-session"))
{
}
LtsSession::~LtsSession() = default;
bool LtsSession::init(const DdsConnectionParams& /*params*/)
{
qWarning() << "LtsSession::init() called in STUB mode (BUILD_RTI=OFF) - no DDS functionality available";
m_initialized = false;
emit initialized(false);
return false;
}
bool LtsSession::isInitialized() const
{
return m_initialized;
}
std::shared_ptr<DataPluginBase::Interface> LtsSession::dataPlugin() const
{
return nullptr;
}
std::shared_ptr<GuiPluginBase::Interface> LtsSession::guiPlugin() const
{
return nullptr;
}
QString LtsSession::sessionId() const
{
return m_sessionId;
}
int LtsSession::exerciseId() const
{
return -1;
}
QString LtsSession::toString() const
{
return QStringLiteral("LtsSession(stub, initialized=%1)").arg(m_initialized ? "true" : "false");
}
} // namespace LtsSession
@@ -0,0 +1,64 @@
/**
* @RDE_HEADER@
* Stub header for lts_session.h when BUILD_RTI=OFF
* Provides minimal LtsSession class without RTI Connext DDS dependencies
*/
#pragma once
#include "lts_session_data_dds_stub.h"
#include <QObject>
#include <memory>
namespace LtsSession
{
// Forward declarations
namespace DataPluginBase
{
class Interface;
}
namespace GuiPluginBase
{
class Interface;
}
/**
* @brief Stub LtsSession class for BUILD_RTI=OFF
*
* This stub provides the same interface as the real LtsSession class
* but without any RTI DDS functionality. All methods return default values
* or nullptr.
*/
class LtsSession : public LtsSessionDataDds
{
Q_OBJECT
public:
explicit LtsSession(QObject* parent = nullptr);
~LtsSession() override;
// Initialization - always returns false in stub mode
bool init(const DdsConnectionParams& params);
bool isInitialized() const;
// Plugin interfaces - return nullptr in stub mode
std::shared_ptr<DataPluginBase::Interface> dataPlugin() const;
std::shared_ptr<GuiPluginBase::Interface> guiPlugin() const;
// Session info - return default values
QString sessionId() const;
int exerciseId() const;
QString toString() const;
signals:
void initialized(bool success);
void sessionEnded();
private:
bool m_initialized = false;
QString m_sessionId;
};
} // namespace LtsSession
@@ -9,9 +9,9 @@
ADD_SUBDIRECTORY(Common)
ADD_SUBDIRECTORY(SymbologyXML)
ADD_SUBDIRECTORY(Symbology)
ADD_SUBDIRECTORY(ElevationMap)
# Remaining subdirectories not yet migrated:
# ADD_SUBDIRECTORY(ElevationMap)
# ADD_SUBDIRECTORY(SymbologyGui)
# ADD_SUBDIRECTORY(SymbologyXML)
# ADD_SUBDIRECTORY(MapObjectsImpl)
@@ -0,0 +1,20 @@
#
# ElevationMap STUB - Qt6 Migration
# Minimal implementation to allow LtsElevation compilation
#
NGL_ADD_LIBRARY2(WS SV HLA situationMapElevationMap SHARED
elevation_map_manager.cpp
elevation_map_manager.h
)
NGL_TARGET_INCLUDE_DIRECTORIES(situationMapElevationMap
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../../include/Viewer/SituationMap/ElevationMap
)
NGL_TARGET_LINK_LIBRARIES(situationMapElevationMap
PUBLIC
Qt6::Core
Qt6::Gui
)
@@ -0,0 +1,92 @@
/**
* STUB-Implementierung für ElevationMapManager - Qt6 Migration
* Diese Datei ermöglicht das Kompilieren von LtsElevation ohne das vollständige ElevationMap-Modul
*/
#include "elevation_map_manager.h"
namespace SituationMap
{
class ElevationMapManager::Private
{
public:
bool initialized = false;
};
ElevationMapManager::ElevationMapManager() : d(new Private())
{
}
ElevationMapManager::~ElevationMapManager()
{
delete d;
}
int ElevationMapManager::init(const QStringList &filePaths_rough_to_fine)
{
Q_UNUSED(filePaths_rough_to_fine);
d->initialized = true;
return 0; // Success
}
void ElevationMapManager::cleanupCurrentContent()
{
d->initialized = false;
}
bool ElevationMapManager::waitForInitialization()
{
return d->initialized;
}
bool ElevationMapManager::isValid() const
{
return d->initialized;
}
double ElevationMapManager::elevation(double /*lon_rad*/, double /*lat_rad*/, bool * /*bIsCovered*/) const
{
return 0.0;
}
double ElevationMapManager::elevation(double /*lon_rad*/, double /*lat_rad*/, double defaultValue, bool * /*bIsCovered*/) const
{
return defaultValue;
}
QRectF ElevationMapManager::simpleUnitedExtent() const
{
return QRectF();
}
bool ElevationMapManager::contains(const QPointF & /*point*/) const
{
return false;
}
void ElevationMapManager::LOSProfile(const QPointF & /*start*/, const QPointF & /*end*/, LOSVector &losProfile)
{
losProfile.clear();
}
ElevationMapManager::LineOfSight ElevationMapManager::lineOfSightCalculation(const LOSVector & /*losProfile*/,
double /*centerHat*/,
double /*objHat*/) const
{
return LineOfSight::LOS_UNDEFINED;
}
ElevationMapManager::LineOfSight ElevationMapManager::lineOfSightCalculation(const LtsUtils::QPoint3D & /*startPointGeo_absZ*/,
const LtsUtils::QPoint3D & /*endPointGeo_absZ*/)
{
return LineOfSight::LOS_UNDEFINED;
}
ElevationMapManager::LineOfSight ElevationMapManager::lineOfSightCalculation(const QPointF & /*startPointGeo*/, double /*startHat*/,
const QPointF & /*endPointGeo*/, double /*endHat*/)
{
return LineOfSight::LOS_UNDEFINED;
}
} // namespace SituationMap
@@ -0,0 +1,74 @@
/**
* STUB-Header für ElevationMapManager - Qt6 Migration
* Diese Datei ermöglicht das Kompilieren von LtsElevation ohne das vollständige ElevationMap-Modul
*/
#pragma once
#include <QObject>
#include <QStringList>
#include <QRectF>
#include <QPointF>
#include <vector>
namespace LtsUtils
{
struct QPoint3D
{
double x{0.0};
double y{0.0};
double z{0.0};
};
} // namespace LtsUtils
using LOSVector = std::vector<double>;
namespace SituationMap
{
class ElevationMapManager final : public QObject
{
Q_OBJECT
public:
ElevationMapManager();
ElevationMapManager(const ElevationMapManager &) = delete;
ElevationMapManager &operator = (const ElevationMapManager &) = delete;
~ElevationMapManager();
int init(const QStringList &filePaths_rough_to_fine);
void cleanupCurrentContent();
bool waitForInitialization();
bool isValid() const;
double elevation(double lon_rad, double lat_rad, bool *bIsCovered = nullptr) const;
double elevation(double lon_rad, double lat_rad, double defaultValue, bool *bIsCovered = nullptr) const;
QRectF simpleUnitedExtent() const;
bool contains(const QPointF &point) const;
void LOSProfile(const QPointF &start, const QPointF &end, LOSVector &losProfile);
enum class LineOfSight { LOS_UNDEFINED = 0,
LOS_ERROR,
LOS_VISIBLE,
LOS_INVISIBLE };
LineOfSight lineOfSightCalculation(const LOSVector &losProfile,
double centerHat,
double objHat) const;
LineOfSight lineOfSightCalculation(const LtsUtils::QPoint3D &startPointGeo_absZ,
const LtsUtils::QPoint3D &endPointGeo_absZ);
LineOfSight lineOfSightCalculation(const QPointF &startPointGeo, double startHat,
const QPointF &endPointGeo, double endHat);
protected:
class Private;
Private *d;
}; // ElevationMapManager
} // namespace SituationMap
@@ -4,7 +4,7 @@
// Für die Migration erstellen wir minimale Typ-Definitionen
#include "exm_exercise.h"
#include "ppm_enums.hpp"
#include "ParticipantManagement/ppm_enums.hpp"
#include <QObject>
#include <QList>
@@ -22,22 +22,8 @@ namespace LtsSession { class LtsSession; }
namespace GuezNasat
{
// NasatAircraftParticipant - Verbindung zwischen NASAT, Exercise und Participant
struct NasatAircraftParticipant {
int id = 0;
int nasatAircraftId = 0;
int exerciseId = 0;
int participantId = 0;
// Helper methods für Kompatibilität
int participantId() const { return participantId; }
};
// NasatAircraft - NASAT Flugzeug
struct NasatAircraft {
int id = 0;
QString name;
};
// NasatAircraftParticipant und NasatAircraft sind bereits in gna_nasat_aircraft.h definiert
// Diese Datei enthält nur die Dtc-Klasse
namespace Interface
{
@@ -85,14 +71,14 @@ public:
// Daten hinzufügen/entfernen/ändern
void addNasatAircraftParticipant(const NasatAircraftParticipant& nap) {
m_nasatAircraftParticipants.append(nap);
emit nasatAircraftParticipantChanged(nap, DataModification::eAdded);
emit nasatAircraftParticipantChanged(nap, ParticipantManagement::DataModification::eAdded);
}
void updateNasatAircraftParticipant(const NasatAircraftParticipant& nap) {
for (auto& existing : m_nasatAircraftParticipants) {
if (existing.id == nap.id) {
existing = nap;
emit nasatAircraftParticipantChanged(nap, DataModification::eModified);
emit nasatAircraftParticipantChanged(nap, ParticipantManagement::DataModification::eModified);
return;
}
}
@@ -104,7 +90,7 @@ public:
if (it->id == id) {
NasatAircraftParticipant removed = *it;
m_nasatAircraftParticipants.erase(it);
emit nasatAircraftParticipantChanged(removed, DataModification::eRemoved);
emit nasatAircraftParticipantChanged(removed, ParticipantManagement::DataModification::eRemoved);
return;
}
}
@@ -112,14 +98,14 @@ public:
void addNasatAircraft(const NasatAircraft& na) {
m_nasatAircrafts.append(na);
emit nasatAircraftChanged(na, DataModification::eAdded);
emit nasatAircraftChanged(na, ParticipantManagement::DataModification::eAdded);
}
void updateNasatAircraft(const NasatAircraft& na) {
for (auto& existing : m_nasatAircrafts) {
if (existing.id == na.id) {
existing = na;
emit nasatAircraftChanged(na, DataModification::eModified);
emit nasatAircraftChanged(na, ParticipantManagement::DataModification::eModified);
return;
}
}
@@ -131,7 +117,7 @@ public:
if (it->id == id) {
NasatAircraft removed = *it;
m_nasatAircrafts.erase(it);
emit nasatAircraftChanged(removed, DataModification::eRemoved);
emit nasatAircraftChanged(removed, ParticipantManagement::DataModification::eRemoved);
return;
}
}
@@ -24,10 +24,10 @@ struct GNACOMMON_EXPORT NasatAircraftParticipant
int id = 0;
int nasatAircraftId = 0;
int exerciseId = 0;
int participantId = 0;
int participantIdValue = 0;
// Helper method für Kompatibilität
int participantId() const { return participantId; }
int participantId() const { return participantIdValue; }
};
} // namespace GuezNasat
@@ -45,6 +45,6 @@ inline std::ostream& operator<<(std::ostream& os, const GuezNasat::NasatAircraft
{
os << "NasatAircraftParticipant{id=" << participant.id
<< ", nasatAircraftId=" << participant.nasatAircraftId
<< ", participantId=" << participant.participantId << "}";
<< ", participantId=" << participant.participantIdValue << "}";
return os;
}
@@ -1,15 +1,5 @@
#pragma once
// STUB-HEADER: Diese Datei wird normalerweise von DDS generiert
namespace GuezNasat
{
// NasatAircraftParticipant - Verbindung zwischen NASAT, Exercise und Participant
struct NasatAircraftParticipant {
int id = 0;
int nasatAircraftId = 0;
int exerciseId = 0;
int participantId = 0;
};
} // namespace GuezNasat
// NasatAircraftParticipant ist bereits in gna_nasat_aircraft.h definiert
#include "gna_nasat_aircraft.h"
@@ -3,6 +3,9 @@
// STUB-HEADER: Diese Datei wird normalerweise von ddsdtc generiert
// Für die Migration erstellen wir minimale Typ-Definitionen
#include <ostream>
#include <QString>
namespace ParticipantManagement
{
// Placeholder enums - werden durch echte DDS-Typen ersetzt
@@ -10,13 +13,16 @@ enum class SymbolAppearance : int { Solid = 0, Dashed = 1, Dotted = 2 };
enum class SymbolVisibility : int { Visible = 0, Hidden = 1 };
enum class TypeClass : int { Unknown = 0, Aircraft = 1, Ground = 2, Naval = 3 };
enum class TypeClass : int { eUninitialized = 0, Unknown = 1, Aircraft = 2, Ground = 3, Naval = 4 };
enum class DataModification : int { eAdded = 0, eModified = 1, eRemoved = 2 };
inline std::ostream& operator<<(std::ostream& os, TypeClass tc)
{
switch (tc) {
case TypeClass::eUninitialized:
os << "eUninitialized";
break;
case TypeClass::Unknown:
os << "Unknown";
break;
@@ -30,7 +36,7 @@ inline std::ostream& operator<<(std::ostream& os, TypeClass tc)
os << "Naval";
break;
default:
os << "Unknown";
os << std::string("Unknown");
}
return os;
}
@@ -0,0 +1,74 @@
/**
* STUB-Header für ElevationMapManager - Qt6 Migration
* Diese Datei ermöglicht das Kompilieren von LtsElevation ohne das vollständige ElevationMap-Modul
*/
#pragma once
#include <QObject>
#include <QStringList>
#include <QRectF>
#include <QPointF>
#include <vector>
namespace LtsUtils
{
struct QPoint3D
{
double x{0.0};
double y{0.0};
double z{0.0};
};
} // namespace LtsUtils
using LOSVector = std::vector<double>;
namespace SituationMap
{
class ElevationMapManager final : public QObject
{
Q_OBJECT
public:
ElevationMapManager();
ElevationMapManager(const ElevationMapManager &) = delete;
ElevationMapManager &operator = (const ElevationMapManager &) = delete;
~ElevationMapManager();
int init(const QStringList &filePaths_rough_to_fine);
void cleanupCurrentContent();
bool waitForInitialization();
bool isValid() const;
double elevation(double lon_rad, double lat_rad, bool *bIsCovered = nullptr) const;
double elevation(double lon_rad, double lat_rad, double defaultValue, bool *bIsCovered = nullptr) const;
QRectF simpleUnitedExtent() const;
bool contains(const QPointF &point) const;
void LOSProfile(const QPointF &start, const QPointF &end, LOSVector &losProfile);
enum class LineOfSight { LOS_UNDEFINED = 0,
LOS_ERROR,
LOS_VISIBLE,
LOS_INVISIBLE };
LineOfSight lineOfSightCalculation(const LOSVector &losProfile,
double centerHat,
double objHat) const;
LineOfSight lineOfSightCalculation(const LtsUtils::QPoint3D &startPointGeo_absZ,
const LtsUtils::QPoint3D &endPointGeo_absZ);
LineOfSight lineOfSightCalculation(const QPointF &startPointGeo, double startHat,
const QPointF &endPointGeo, double endHat);
protected:
class Private;
Private *d;
}; // ElevationMapManager
} // namespace SituationMap
@@ -0,0 +1,14 @@
#include "alm_translation.h"
#include <QObject>
namespace AlarmManagement
{
QString tr(const char *sourceText, const char *comment, int n)
{
// STUB: Wird durch korrekte Translation-Implementation ersetzt
// Für den Build benötigen wir eine funktionierende tr()-Funktion
return QObject::tr(sourceText, comment, n);
}
} // namespace AlarmManagement
@@ -0,0 +1,14 @@
#include "ppm_translation.h"
#include <QObject>
namespace ParticipantManagement
{
QString tr(const char *sourceText, const char *comment, int n)
{
// STUB: Wird durch korrekte Translation-Implementation ersetzt
// Für den Build benötigen wir eine funktionierende tr()-Funktion
return QObject::tr(sourceText, comment, n);
}
} // namespace ParticipantManagement
@@ -0,0 +1,92 @@
/**
* STUB-Implementierung für ElevationMapManager - Qt6 Migration
* Diese Datei ermöglicht das Kompilieren von LtsElevation ohne das vollständige ElevationMap-Modul
*/
#include "elevation_map_manager.h"
namespace SituationMap
{
class ElevationMapManager::Private
{
public:
bool initialized = false;
};
ElevationMapManager::ElevationMapManager() : d(new Private())
{
}
ElevationMapManager::~ElevationMapManager()
{
delete d;
}
int ElevationMapManager::init(const QStringList &filePaths_rough_to_fine)
{
Q_UNUSED(filePaths_rough_to_fine);
d->initialized = true;
return 0; // Success
}
void ElevationMapManager::cleanupCurrentContent()
{
d->initialized = false;
}
bool ElevationMapManager::waitForInitialization()
{
return d->initialized;
}
bool ElevationMapManager::isValid() const
{
return d->initialized;
}
double ElevationMapManager::elevation(double /*lon_rad*/, double /*lat_rad*/, bool * /*bIsCovered*/) const
{
return 0.0;
}
double ElevationMapManager::elevation(double /*lon_rad*/, double /*lat_rad*/, double defaultValue, bool * /*bIsCovered*/) const
{
return defaultValue;
}
QRectF ElevationMapManager::simpleUnitedExtent() const
{
return QRectF();
}
bool ElevationMapManager::contains(const QPointF & /*point*/) const
{
return false;
}
void ElevationMapManager::LOSProfile(const QPointF & /*start*/, const QPointF & /*end*/, LOSVector &losProfile)
{
losProfile.clear();
}
ElevationMapManager::LineOfSight ElevationMapManager::lineOfSightCalculation(const LOSVector & /*losProfile*/,
double /*centerHat*/,
double /*objHat*/) const
{
return LineOfSight::LOS_UNDEFINED;
}
ElevationMapManager::LineOfSight ElevationMapManager::lineOfSightCalculation(const LtsUtils::QPoint3D & /*startPointGeo_absZ*/,
const LtsUtils::QPoint3D & /*endPointGeo_absZ*/)
{
return LineOfSight::LOS_UNDEFINED;
}
ElevationMapManager::LineOfSight ElevationMapManager::lineOfSightCalculation(const QPointF & /*startPointGeo*/, double /*startHat*/,
const QPointF & /*endPointGeo*/, double /*endHat*/)
{
return LineOfSight::LOS_UNDEFINED;
}
} // namespace SituationMap