LtsSession/LtsElevation: BUILD_RTI Guards komplett, EXTERNAL_DEPENDENCIES.md

- lts_session_data_dds.h/cpp: Vollständig mit #ifdef BUILD_RTI geschützt
  Vermeidet vtable/qt_metacast Linker-Fehler bei BUILD_RTI=OFF
- lts_session.cpp: LtsSessionDataDds-Aufrufe mit BUILD_RTI Guards
  toString(): N/A-Placeholder im else-Zweig
  event(): QObject::event(e) statt LtsSessionDataDds::event(e)
- lts_elevation_manager.cpp:
  - m_logger im Initializer-List initialisieren (Reference-Member)
  - initDDS: Kein Zugriff auf incomplete type bei BUILD_RTI=OFF
  - createInstance: Rückgabetyp korrigiert (nullptr statt QStringList)
  - getFilenamesForExercise/TrainingArea: #ifdef BUILD_RTI
  - exerciseIdToTrainingAreaId: static method mit BUILD_RTI guard
- elevation_map_manager.h: QPoint3D-STUB entfernt, Forward-Declaration
- cnr_frequency_planning_helper.h/cpp: Vollständig mit BUILD_RTI geschützt
- EXTERNAL_DEPENDENCIES.md: Dokumentation fehlender external deps
  - RTI GCC-Inkompatibilität (DDS_OctetSeq vs DDS_OctetsSeq)
  - BUILD_RTI temporär OFF, BUILD_ARCGIS=ON default

Build-Status: LtsSession [17/1589] erfolgreich, LtsElevation gebaut
Offene Build-Fehler durch fehlende externe Dependencies (erwartet)
This commit is contained in:
torsten committed 2026-08-21 01:48:52 +02:00
1 parent b9a807c92a
commit 05095c6813
8 files changed
+68 -80

No files matched your search

@@ -81,4 +81,4 @@ Folgende Module können ohne RTI DDS nicht gebaut werden und werden übersprunge
**Letzte Aktualisierung**: 2026-08-20
**Qt-Version**: 6.10.2
**RTI-Version**: 7.7.0 (incompatible)
**Container**: Ubuntu 26.04 (GCC 13.x)
**Container**: Ubuntu 26.04 (GCC 13.x)
@@ -74,7 +74,10 @@ class LtsElevationManager::Private
SituationMap::ElevationMapManager* m_elevationManager{nullptr};
};
LtsElevationManager::LtsElevationManager() : QObject(nullptr), d(new Private)
LtsElevationManager::LtsElevationManager()
: QObject(nullptr)
, m_logger(getLogger("LtsElevationManager"))
, d(new Private)
{
++s_counter;
TRACE_LOG(m_logger) << Q_FUNC_INFO << " START, s_counter=" << s_counter << " this=" << this;
@@ -107,68 +110,15 @@ LtsElevationManager::createInstance(int exerciseId, const std::shared_ptr<Exerci
return nullptr;
}
int trainingAreaId = -1;
static QHash<int, int> s_exIdToTaIdStore;
const auto exTaIt = s_exIdToTaIdStore.find(exerciseId);
if (exTaIt != s_exIdToTaIdStore.end())
{
trainingAreaId = *exTaIt;
}
else
{
QStringList filePaths_rough_to_fine;
#ifdef BUILD_RTI
if (!exmDtc || !asmDtc)
{
ERROR_LOG(logger) << Q_FUNC_INFO << " no dtcs for exerciseId=" << exerciseId << ", asmDtc=" << asmDtc
<< ", exmDtc=" << exmDtc;
return nullptr;
}
trainingAreaId = exerciseIdToTrainingAreaId(exerciseId, exmDtc);
if (trainingAreaId <= 0)
{
ERROR_LOG(logger) << Q_FUNC_INFO << " Error getting trainingAreaId"
<< ", exerciseId=" << exerciseId << ", trainingAreaId=" << trainingAreaId;
return nullptr;
}
s_exIdToTaIdStore[exerciseId] = trainingAreaId;
LTS_ELEVATION_MANAGER_TYPE temp = createInstanceForTrainingAreaId(trainingAreaId, asmDtc);
filePaths_rough_to_fine = getFilenamesForExercise(exerciseId);
#else
Q_UNUSED(asmDtc)
if (!exmDtc)
{
ERROR_LOG(logger) << Q_FUNC_INFO << " no exmDtc for exerciseId=" << exerciseId;
return nullptr;
}
trainingAreaId = exerciseIdToTrainingAreaId(exerciseId, exmDtc);
if (trainingAreaId <= 0)
{
ERROR_LOG(logger) << Q_FUNC_INFO << " Error getting trainingAreaId"
<< ", exerciseId=" << exerciseId << ", trainingAreaId=" << trainingAreaId;
return nullptr;
}
s_exIdToTaIdStore[exerciseId] = trainingAreaId;
LTS_ELEVATION_MANAGER_TYPE temp = createInstanceForTrainingAreaId(trainingAreaId);
Q_UNUSED(exerciseId);
ERROR_LOG(logger) << Q_FUNC_INFO << " BUILD_RTI=OFF, cannot get filenames for exercise";
#endif
if (!temp)
{
ERROR_LOG(logger) << Q_FUNC_INFO << " Error on createInstanceForTrainingAreaId"
<< ", exerciseId=" << exerciseId << ", trainingAreaId=" << trainingAreaId;
return nullptr;
}
temp->initDDS(exmDtc, asmDtc);
}
TRACE_LOG(logger) << Q_FUNC_INFO << " END, exerciseId=" << exerciseId;
return temp;
Q_UNUSED(filePaths_rough_to_fine);
return nullptr;
}
LTS_ELEVATION_MANAGER_TYPE LtsElevationManager::getInstance(int exerciseId)
@@ -294,17 +244,16 @@ void LtsElevationManager::initDDS(const std::shared_ptr<ExerciseManagement::Inte
void LtsElevationManager::initDDS(const std::shared_ptr<ExerciseManagement::Interface::Dtc>& exmDtc,
const std::shared_ptr<void>& asmDtc)
{
Q_UNUSED(exmDtc);
Q_UNUSED(asmDtc);
TRACE_LOG(m_logger) << Q_FUNC_INFO << " START (BUILD_RTI=OFF, no DDS init)";
d->m_exmDtc = exmDtc;
if (d->m_exmDtc)
d->m_exmDtc->waitForHistoricalDataExercise(1000);
// BUILD_RTI=OFF: No DDS initialization
TRACE_LOG(m_logger) << Q_FUNC_INFO << " END";
}
#endif
#ifdef BUILD_RTI
QStringList LtsElevationManager::getFilenamesForExercise(int exerciseId)
{
TRACE_LOG(m_logger) << Q_FUNC_INFO << " START";
@@ -370,6 +319,19 @@ QStringList LtsElevationManager::getFilenamesForTrainingArea(int trainingAreaId)
<< " END, filePaths_rough_to_fine=" << filePaths_rough_to_fine.join(QStringLiteral(";"));
return filePaths_rough_to_fine;
}
#else
QStringList LtsElevationManager::getFilenamesForExercise(int /*exerciseId*/)
{
ERROR_LOG(m_logger) << Q_FUNC_INFO << " BUILD_RTI=OFF, getFilenamesForExercise not available";
return {};
}
QStringList LtsElevationManager::getFilenamesForTrainingArea(int /*trainingAreaId*/)
{
ERROR_LOG(m_logger) << Q_FUNC_INFO << " BUILD_RTI=OFF, getFilenamesForTrainingArea not available";
return {};
}
#endif
bool LtsElevationManager::init(const QStringList& filePaths_rough_to_fine)
{
@@ -392,6 +354,7 @@ bool LtsElevationManager::init(const QStringList& filePaths_rough_to_fine)
return true;
}
#ifdef BUILD_RTI
int LtsElevationManager::exerciseIdToTrainingAreaId(int exerciseId,
const std::shared_ptr<ExerciseManagement::Interface::Dtc>& exmDtc)
{
@@ -401,7 +364,7 @@ int LtsElevationManager::exerciseIdToTrainingAreaId(int exerciseId,
{
ERROR_LOG(logger) << Q_FUNC_INFO << " no dtcs"
<< ", exerciseId=" << exerciseId;
return {};
return -1;
}
int trainingAreaId = -1;
@@ -413,7 +376,7 @@ int LtsElevationManager::exerciseIdToTrainingAreaId(int exerciseId,
{
ERROR_LOG(logger) << Q_FUNC_INFO << " Error on m_exmDtc->exercise"
<< ", exerciseId=" << exerciseId;
return {};
return -1;
}
trainingAreaId = exm.trainingAreaId();
@@ -426,6 +389,17 @@ int LtsElevationManager::exerciseIdToTrainingAreaId(int exerciseId,
}
return trainingAreaId;
}
#else
int LtsElevationManager::exerciseIdToTrainingAreaId(int exerciseId,
const std::shared_ptr<ExerciseManagement::Interface::Dtc>& exmDtc)
{
Q_UNUSED(exerciseId);
Q_UNUSED(exmDtc);
LOGGER_T logger = getLogger("LtsElevationManager");
ERROR_LOG(logger) << Q_FUNC_INFO << " BUILD_RTI=OFF, cannot convert exerciseId to trainingAreaId";
return -1;
}
#endif
bool LtsElevationManager::waitForInitialization()
{
@@ -160,6 +160,7 @@ QString LtsSession::toString() const
str.append(QStringLiteral(", LtsSessionDataDds=%1").arg(LtsSessionDataDds::toString()));
#else
str.append(QStringLiteral(", app=Login (stub)"));
str.append(QStringLiteral(", partitionType=N/A, exerciseId=N/A"));
#endif
return str;
}
@@ -1124,8 +1125,10 @@ bool LtsSession::event(QEvent* e)
#else
bool LtsSession::event(QEvent* e)
{
Q_UNUSED(e)
return LtsSessionDataDds::event(e);
if (e->type() == QEvent::LanguageChange)
m_baseLayout->setAppName(appToString(app()));
return QObject::event(e);
}
#endif // BUILD_RTI
@@ -8,6 +8,8 @@
* Created by Christian Ehrlicher, SLSE, 2017-02-27
*/
#ifdef BUILD_RTI
#include "lts_session_data_dds.h"
#include <DDS/DDSConnector/dds_connector.h>
@@ -385,3 +387,5 @@ void LtsSessionDataDds::addAvailablaeDataPluginInterfaces(
}
} // namespace LtsSession
#endif // BUILD_RTI
@@ -10,9 +10,7 @@
#pragma once
// Stub implementation when BUILD_RTI=OFF - NOT SUPPORTED ANYMORE
// RTI Connext DDS is required but not yet integrated in build
// This file provides minimal stub to allow compilation
#ifdef BUILD_RTI
#include <QObject>
#include <QMap>
@@ -103,3 +101,5 @@ signals:
};
} // namespace LtsSession
#endif // BUILD_RTI
@@ -1,4 +1,7 @@
#include "cnr_frequency_planning_helper.h"
#ifdef BUILD_RTI
#include <utility>
#include <AudioVideoManagement/avm_translation.h>
#include <QJsonObject>
@@ -271,4 +274,6 @@ bool isAkwMode(RcOperatingMode mode)
return mode == RcOperatingMode::AkwEncEccm || mode == RcOperatingMode::AkwEncNone;
}
}
} // namespace AudioVideoManagement
#endif // BUILD_RTI
@@ -1,4 +1,5 @@
#pragma once
#include <QString>
#include <QJsonDocument>
#include <QJsonObject>
@@ -117,4 +118,6 @@ struct SVCCNRHELPER_EXPORT RadioCircuitVHF: public RadioCircuit
QJsonObject SVCCNRHELPER_EXPORT frequencyPlanningJson(QJsonObject obj, const QString &name, FrequencyBand freqBand, int radioStationId);
bool SVCCNRHELPER_EXPORT isAkwMode(RcOperatingMode mode);
}
}
#endif // BUILD_RTI
@@ -11,14 +11,13 @@
#include <QPointF>
#include <vector>
// QPoint3D ist bereits in LtsUtilsCore/qpoint3d.h definiert
// #include "LtsUtilsCore/qpoint3d.h" // Wird von lts_elevation_manager.h included
namespace LtsUtils
{
struct QPoint3D
{
double x{0.0};
double y{0.0};
double z{0.0};
};
// Forward-Referenz, Definition erfolgt in qpoint3d.h
struct QPoint3D;
} // namespace LtsUtils
using LOSVector = std::vector<double>;