Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/TetraIF/LogView/LogViewTelegram.hpp
T
torstenandCopilot b774f4035c Qt6 Migration: DDS-Stubs, Logger-Fixes, Export-Header Korrekturen
- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung
- 44 Export-Header Include-Pfade korrigiert (_export.h)
- 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h)
- INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros
- Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits)
- FATAL_LOG Makro hinzugefügt
- InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h)
- FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h)
- AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp)
- SymbolAppearance Klasse vollständig definiert mit content() Methode
- BuildingComponentFilter Klasse definiert mit Copy-Konstruktor
- Ftc Factory: nullptr Return (abstract class)
- AesFilter Klasse in aes.hpp hinzugefügt
- Dtc Klasse in ppm.hpp mit participantChanged Signal
- AesType Enum: alle 15 At* Werte definiert
- AesEffectState_def: EsReceived hinzugefügt
- DataModification Enum: eAdded/eModified/eRemoved
- function_reply_object.h → core_types.h Include-Pfad (72 Dateien)
- Enum-Class-Streaming Template-Operator in INGLLogger.h
- ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen
- ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge
- QRegExp → QRegularExpression in tpm_js_parser.cpp
- .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert
- Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-19 06:06:24 +02:00

369 lines
9.1 KiB
C++

#pragma once
#include "LogViewXdrStandardType.hpp"
#include "LogViewField.hpp"
#include <CoPrtCnv/CoPrtCnvLogHeader.hpp>
#include <QIcon>
#include <QJsonObject>
#include <QJsonDocument>
namespace N_CoPrtCnv
{
class CoPrtCnvRadioTelegram;
}
namespace N_LogView
{
struct StructInformation;
struct MemberInformation;
class LogViewTetraTelegramsParser;
class LogViewXdrParser;
class LogViewXdrType;
class LogViewTelegram final
{
public:
enum E_Validity
{
e_NotYetEvaluated,
e_Valid,
e_Invalid
};
enum E_Column
{
e_ColName,
e_ColGpsTime,
e_ColLogTime,
e_ColJsonData,
e_ColMax
};
~LogViewTelegram();
static const uint16_t SIZE_CENTRAL_DYN_ARRAY_SIZE;
LogViewTelegram(const LogViewTelegram &o);
LogViewTelegram &operator=(const LogViewTelegram &o) = delete;
LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol a_destination,
int telegramId);
LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol a_destination,
const quint64 a_unixTime,
const QByteArray &a_telegramData);
void setUIntX(const uint8_t a_size,
quint64 a_value,
const LogViewXdrStandardType::E_ByteOrder a_byteOrder = LogViewXdrStandardType::e_ByteOrderBigEndian);
bool setData(const uint16_t a_offset, const uint8_t a_data);
quint64 getLogTime() const { return m_LogTime; }
quint64 getLogTimeMsec() const;
QString getLogTimeText() const;
QString getDestinationText() const;
quint64 getGpsTime() const { return m_GpsTime; }
QString getGpsTimeText() const;
uint32_t getISSI() const { return m_ISSI; }
int getParticipantId() const { return m_ParticipantId; }
int32_t getDelay() const;
QString getToolTipText(const E_Column a_col);
void resetOffset();
LogViewField* getFieldTree();
void dump() const;
QString getStructName() const;
bool isValid();
N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol getDestination() const { return m_Destination; }
N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol getDirection() const;
N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol getProtocol() const { return m_Protocol; }
int getTelId() const { return m_TelId; }
QIcon getIcon() const;
bool isJsonTelegram() const { return N_CoPrtCnv::CoPrtCnvLogHeader::e_DestProtocolCentral == m_Protocol; }
void clearJsonData() { m_json.remove(QStringLiteral("data")); }
void rebuildJsonString() { if (!m_json.isEmpty()) m_data.clear(); }
void setJsonValue(const QStringList &path, const QJsonValue &val);
QJsonObject jsonData() const { return m_json; }
void updateJsonValue(const QStringList &path, const QJsonValue &newVal, QJsonObject &obj);
void updateJsonValue(const QStringList &path, const QJsonValue &newVal, QJsonArray &arr);
const N_CoPrtCnv::CoPrtCnvRadioTelegram* getTetraTelegram() const;
static LogViewTetraTelegramsParser *jsonParser();
static LogViewXdrParser *tetraParser();
QByteArray getData(QJsonDocument::JsonFormat format = QJsonDocument::JsonFormat::Compact) const;
uint32_t getWaitTime() const { return m_WaitTime; }
void setWaitTime(uint32_t newVal) { m_WaitTime = newVal; }
QString getName() const { return m_Name; }
void setName(const QString &newVal) { m_Name = newVal; }
void setNextFieldAsGpsTimeField();
QVector<uint16_t> getGpsTimeField() const { return m_GpsFieldOffset; }
void setGpsTimeField(const QVector<uint16_t> &gpsFieldOffset) { m_GpsFieldOffset = gpsFieldOffset; }
void actualizeGpsTime();
void createToolTipTextForColName();
static double xdrToDouble(quint64 in);
static float xdrToFloat(uint32_t in);
static quint64 doubleToXdr(double in);
static uint32_t floatToXdr(float in);
protected:
QString m_Name;
std::vector<QString> m_ToolTipText;
uint32_t m_WaitTime;
int m_ParticipantId;
uint32_t m_ISSI;
int m_AllocatedSize;
static const LogViewXdrParser* m_Parser;
uint16_t m_ActOffset;
QVector<uint16_t> m_GpsFieldOffset;
int m_TelId;
uint32_t m_LastUnsignedValue;
uint16_t m_MaxArraySize;
static const uint16_t START_OFFSET_CENTRAL;
static const uint16_t POS_CENTRAL_COUNTER;
static const uint16_t POS_CENTRAL_TELID;
static const uint16_t POS_CENTRAL_PARTICIPANTID;
static const uint16_t START_OFFSET_TETRA_REGISTER;
static const uint16_t START_OFFSET_TETRA_AIRLOAD;
static const uint16_t START_OFFSET_TETRA_DATA;
static const uint16_t START_OFFSET_TETRA_LOGIN;
static const uint16_t START_OFFSET_TETRA_FRAGMENT;
LogViewXdrStandardType::E_DynArraySizeMethod m_DynArraySizeMethod;
N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol m_Destination;
E_Validity m_Validity;
N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol m_Protocol;
quint64 m_LogTime;
mutable QString m_logTimeText;
quint64 m_GpsTime;
QByteArray m_data;
QJsonObject m_json;
N_CoPrtCnv::CoPrtCnvRadioTelegram *m_TetraTelegram;
LogViewField *getFieldTree(const QString& a_type, const QString& a_name,
uint16_t a_arraySize, const LogViewXdrType* a_parentElement = nullptr,
const bool a_hasContent = true);
LogViewField *getFieldTreeJson(const QJsonValue &data,
const QString &name,
const StructInformation &si,
const QStringList &objectPathBase);
static void addFieldTreeStruct(const QJsonObject &parentObject,
LogViewField *parent,
const StructInformation &si,
const QString &objectNameArrayHint,
NGL::INGLLogger &logger);
static void addFieldTreeJsonString(const QJsonValue &val,
LogViewField *parent,
const QString &name,
bool isBinary,
const QString &objectNameArrayHint,
LogViewField::E_FieldKind fieldKind,
NGL::INGLLogger &logger);
static void addFieldTreeJsonPod(const QJsonValue &val,
LogViewField *parent,
const QString &name,
const QString &type,
const QString &objectNameArrayHint,
LogViewField::E_FieldKind fieldKind,
NGL::INGLLogger &logger);
static void addFieldTreeJsonEnum(const QJsonValue &val,
LogViewField *parent,
const QString &name,
const QString &type,
const QString &objectNameArrayHint,
LogViewField::E_FieldKind fieldKind,
NGL::INGLLogger &logger);
static QString typeFromStructInformation(const StructInformation &si, const QString &name);
static MemberInformation memberFromStructInformation(const StructInformation &si, const QString &name);
uint16_t getUInt16(const uint16_t a_offset) const;
uint32_t getUInt32(const uint16_t a_offset) const;
int32_t getInt32(const uint16_t a_offset) const;
quint64 getUIntX(const uint16_t a_offset, const uint8_t a_size, const LogViewXdrStandardType::E_ByteOrder a_byteOrder = LogViewXdrStandardType::e_ByteOrderBigEndian) const;
int32_t getSIntX(const uint16_t a_offset, const uint8_t a_size, const LogViewXdrStandardType::E_ByteOrder a_byteOrder = LogViewXdrStandardType::e_ByteOrderBigEndian) const;
char getChar(const uint16_t a_offset, const uint8_t a_size) const;
LogViewField* getContent(const LogViewXdrStandardType* a_standardType, uint16_t& a_offset, const uint16_t a_arraySize);
bool isScalar(const LogViewXdrType* a_xdrType) const;
void showMessageBox(const QString& a_errorText, const QString& a_title = QObject::tr("Invalid telegram")) const;
uint16_t getDynArraySize(uint16_t& a_offset) const;
static QString formatToolTipLine(const QString& a_name, const uint32_t a_value)
{
return formatToolTipLine(a_name, QString::number(a_value), a_value);
}
static QString formatToolTipLine(const QString& a_name, const QString& a_text, const uint32_t a_value);
static QString formatToolTipLine(const QString& a_name, const std::string& a_text, const uint32_t a_value)
{
return formatToolTipLine(a_name, QString::fromStdString(a_text), a_value);
}
uint8_t getData(const uint16_t a_offset) const;
private:
friend class LogViewTabWidget;
};
}