TetraIF migration and Unittest Implementation for it

Entire-Checkpoint: 14d1fef0cf36
This commit is contained in:
berrux-dev committed 2026-09-12 13:54:34 +02:00
1 parent a86f9b5bac
commit ba212f9dce
78 files changed
+1611 -640

No files matched your search

@@ -73,6 +73,7 @@ LogViewTelegram::LogViewTelegram(const LogViewTelegram &o)
, m_data(o.m_data)
, m_json(o.m_json)
, m_TetraTelegram(nullptr)
, m_logger(getLogger("LogViewTelegram"))
{
if (!m_data.isEmpty())
m_TetraTelegram = new N_CoPrtCnv::CoPrtCnvRadioTelegram(m_data);
@@ -100,6 +101,7 @@ LogViewTelegram::LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnv
, m_LogTime(0)
, m_GpsTime(0)
, m_TetraTelegram(nullptr)
, m_logger(getLogger("LogViewTelegram"))
{
const uint32_t &waitTime = qgetenv("LogViewWaitTime").toUInt();
if (waitTime > 0)
@@ -143,6 +145,7 @@ LogViewTelegram::LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnv
, m_GpsTime(0)
, m_data(a_telegramData)
, m_TetraTelegram(nullptr)
, m_logger(getLogger("LogViewTelegram"))
{
const uint32_t &waitTime = qgetenv("LogViewWaitTime").toUInt();
if (waitTime > 0)
@@ -155,10 +158,10 @@ LogViewTelegram::LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnv
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestProtocolWls:
{
m_json = QJsonDocument::fromJson(a_telegramData).object();
m_TelId = m_json.value(QLatin1String("typeId")).toInt();
m_TelId = m_json.value(QStringLiteral("typeId")).toInt();
m_Name = m_json.value(QLatin1String("type")).toString();
m_Name = m_json.value(QStringLiteral("type")).toString();
switch (getTelId())
{
case TrainingAreaBase::TetraIcd::BESTAETIGUNG:
@@ -167,9 +170,9 @@ LogViewTelegram::LogViewTelegram(const N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnv
m_ParticipantId = m_json.value(QLatin1String("data"))
.toObject().value(QLatin1String("header"))
.toObject().value(QLatin1String("equipmentNumber")).toInt();
m_ParticipantId = m_json.value(QStringLiteral("data"))
.toObject().value(QStringLiteral("header"))
.toObject().value(QStringLiteral("equipmentNumber")).toInt();
break;
}
break;
@@ -356,7 +359,7 @@ QString LogViewTelegram::getLogTimeText() const
if (m_logTimeText.isEmpty())
{
const QDateTime dt(QDateTime::fromMSecsSinceEpoch(getLogTimeMsec()));
m_logTimeText = dt.toString(QLatin1String("ddd, MMM dd, yyyy hh:mm:ss.zzz"));
m_logTimeText = dt.toString(QStringLiteral("ddd, MMM dd, yyyy hh:mm:ss.zzz"));
}
return m_logTimeText;
}
@@ -373,9 +376,9 @@ QString LogViewTelegram::getDestinationText() const
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestProtocolCentral: {
switch (dest) {
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestReceive:
return QLatin1String("C > P");
return QStringLiteral("C > P");
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestSend:
return QLatin1String("P > C");
return QStringLiteral("P > C");
default:
break;
}
@@ -384,9 +387,9 @@ QString LogViewTelegram::getDestinationText() const
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestProtocolWls: {
switch (dest) {
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestReceive:
return QLatin1String("W > C");
return QStringLiteral("W > C");
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestSend:
return QLatin1String("C > W");
return QStringLiteral("C > W");
default:
break;
}
@@ -395,9 +398,9 @@ QString LogViewTelegram::getDestinationText() const
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestProtocolTetra: {
switch (dest) {
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestReceive:
return QLatin1String("P > T");
return QStringLiteral("P > T");
case N_CoPrtCnv::CoPrtCnvLogHeader::e_DestSend:
return QLatin1String("T > P");
return QStringLiteral("T > P");
default:
break;
}
@@ -418,7 +421,7 @@ QString LogViewTelegram::getDestinationText() const
QString LogViewTelegram::getGpsTimeText() const
{
if (m_GpsTime != 0)
return QDateTime::fromMSecsSinceEpoch(m_GpsTime * 1000LL).toString(QLatin1String("hh:mm:ss"));
return QDateTime::fromMSecsSinceEpoch(m_GpsTime * 1000LL).toString(QStringLiteral("hh:mm:ss"));
return QString();
}
@@ -462,11 +465,11 @@ QString LogViewTelegram::getToolTipText(const E_Column a_col)
}
if(a_col == e_ColGpsTime && m_ToolTipText[e_ColGpsTime].isNull()) {
if(m_GpsTime == 0) {
m_ToolTipText[e_ColGpsTime] = QLatin1String("");
m_ToolTipText[e_ColGpsTime] = QStringLiteral("");
} else {
const QDateTime dtGpsTime(QDateTime::fromMSecsSinceEpoch(m_GpsTime * 1000LL));
m_ToolTipText[e_ColGpsTime] = QStringLiteral("%1<br><nobr>Unixzeit: %2 <b>0x%3</b></nobr>")
.arg(dtGpsTime.toString(QLatin1String("ddd, MMM dd, yyyy hh:mm:ss")))
.arg(dtGpsTime.toString(QStringLiteral("ddd, MMM dd, yyyy hh:mm:ss")))
.arg(m_GpsTime)
.arg(m_GpsTime, 8, 16, QLatin1Char('0'));
}
@@ -487,12 +490,12 @@ void LogViewTelegram::createToolTipTextForColName()
{
const QString jsonStr = QString::fromUtf8(QJsonDocument(m_json).toJson(QJsonDocument::JsonFormat::Indented));
m_ToolTipText[e_ColName] = QLatin1String("<table>")
m_ToolTipText[e_ColName] = QStringLiteral("<table>")
+ formatToolTipLine(QObject::tr("Telegram Id"), getTelId())
+ formatToolTipLine(QObject::tr("Counter"), getUInt32(POS_CENTRAL_COUNTER))
+ formatToolTipLine(QObject::tr("Size"), m_data.size())
+ formatToolTipLine(QObject::tr("Json Data"), jsonStr, jsonStr.size())
+ QLatin1String("</table>");
+ QStringLiteral("</table>");
break;
}
@@ -502,26 +505,26 @@ void LogViewTelegram::createToolTipTextForColName()
{
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_RegisterInd:
m_ToolTipText[e_ColName] = QLatin1String("<table>")
m_ToolTipText[e_ColName] = QStringLiteral("<table>")
+ formatToolTipLine(QObject::tr("Host ISSI"), m_TetraTelegram->getSrcISSI())
+ formatToolTipLine(QObject::tr("Counter"), m_TetraTelegram->zaehler())
+ formatToolTipLine(QObject::tr("Size"), m_data.size())
+ QLatin1String("</table>");
+ QStringLiteral("</table>");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_RegisterRsp:
m_ToolTipText[e_ColName] = QLatin1String("<table>")
m_ToolTipText[e_ColName] = QStringLiteral("<table>")
+ formatToolTipLine(QObject::tr("Registration Status"), m_TetraTelegram->getRegistrationStatusAsText(), m_TetraTelegram->getRegistrationStatus())
+ formatToolTipLine(QObject::tr("Counter"), m_TetraTelegram->zaehler())
+ formatToolTipLine(QObject::tr("Size"), m_data.size())
+ QLatin1String("</table>");
+ QStringLiteral("</table>");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_DataIndReq: {
int frameSize = 1;
if(m_TetraTelegram->getWithCrc())
frameSize += 2;
m_ToolTipText[e_ColName] = QLatin1String("<table>")
m_ToolTipText[e_ColName] = QStringLiteral("<table>")
+ formatToolTipLine(QObject::tr("Source ISSI"), m_TetraTelegram->getSrcISSI())
+ formatToolTipLine(QObject::tr("Destination ISSI"), m_TetraTelegram->getDestISSI())
+ formatToolTipLine(QObject::tr("Protocol Identifier"), m_TetraTelegram->getProtocolIdentifierAsText(), m_TetraTelegram->getProtocolIdentifier())
@@ -534,12 +537,12 @@ void LogViewTelegram::createToolTipTextForColName()
+ formatToolTipLine(QObject::tr("Real Payload in Bytes"), m_TetraTelegram->getLengthInBytes() - frameSize)
+ formatToolTipLine(QObject::tr("Counter"), m_TetraTelegram->zaehler())
+ formatToolTipLine(QObject::tr("Size"), m_data.size())
+ QLatin1String("</table>");
+ QStringLiteral("</table>");
break;
}
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_ReportIndReq:
m_ToolTipText[e_ColName] = QLatin1String("<table>")
m_ToolTipText[e_ColName] = QStringLiteral("<table>")
+ formatToolTipLine(QObject::tr("Source ISSI"), m_TetraTelegram->getSrcISSI())
+ formatToolTipLine(QObject::tr("Destination ISSI"), m_TetraTelegram->getDestISSI())
+ formatToolTipLine(QObject::tr("Protocol Identifier"), m_TetraTelegram->getProtocolIdentifierAsText(), m_TetraTelegram->getProtocolIdentifier())
@@ -548,15 +551,15 @@ void LogViewTelegram::createToolTipTextForColName()
+ formatToolTipLine(QObject::tr("Delivery"), m_TetraTelegram->getDeliveryAsText(), m_TetraTelegram->getDelivery())
+ formatToolTipLine(QObject::tr("Counter"), m_TetraTelegram->zaehler())
+ formatToolTipLine(QObject::tr("Size"), m_data.size())
+ QLatin1String("</table>");
+ QStringLiteral("</table>");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_AirInterfaceLoadReq:
default:
m_ToolTipText[e_ColName] = QLatin1String("<table>")
m_ToolTipText[e_ColName] = QStringLiteral("<table>")
+ formatToolTipLine(QObject::tr("Counter"), m_TetraTelegram->zaehler())
+ formatToolTipLine(QObject::tr("Size"), m_data.size())
+ QLatin1String("</table>");
+ QStringLiteral("</table>");
break;
}
break;
@@ -645,24 +648,24 @@ LogViewField* LogViewTelegram::getFieldTree()
{
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_RegisterInd:
m_ActOffset = START_OFFSET_TETRA_REGISTER;
structName = QLatin1String("TETRA_register_indication_rt");
structName = QStringLiteral("TETRA_register_indication_rt");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_RegisterRsp:
m_ActOffset = START_OFFSET_TETRA_REGISTER;
structName = QLatin1String("TETRA_register_response_rt");
structName = QStringLiteral("TETRA_register_response_rt");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_DataIndReq:
if (m_TetraTelegram->isLoginTelegram())
{
m_ActOffset = START_OFFSET_TETRA_LOGIN;
structName = QLatin1String("TETRA_login_telegram_rt");
structName = QStringLiteral("TETRA_login_telegram_rt");
}
else if (m_TetraTelegram->isNormalTelegram())
{
structName = getStructName();
if (structName == QLatin1String("gef_automatic_conversion_rt"))
if (structName == QStringLiteral("gef_automatic_conversion_rt"))
{
auto centralTelegram = N_CoPrtCnv::CoPrtCnvTelegramConverter::convertToCentral(m_TetraTelegram);
@@ -692,15 +695,15 @@ LogViewField* LogViewTelegram::getFieldTree()
{
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_FirstFragment:
m_ActOffset = START_OFFSET_TETRA_FRAGMENT;
structName = QLatin1String("TETRA_first_fragment_rt");
structName = QStringLiteral("TETRA_first_fragment_rt");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_MiddleFragment:
m_ActOffset = START_OFFSET_TETRA_FRAGMENT;
structName = QLatin1String("TETRA_middle_fragment_rt");
structName = QStringLiteral("TETRA_middle_fragment_rt");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_LastFragment:
m_ActOffset = START_OFFSET_TETRA_FRAGMENT;
structName = QLatin1String("TETRA_last_fragment_rt");
structName = QStringLiteral("TETRA_last_fragment_rt");
break;
default:
break;
@@ -710,22 +713,22 @@ LogViewField* LogViewTelegram::getFieldTree()
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_GroupMonitorReq:
m_ActOffset = START_OFFSET_TETRA_REGISTER;
structName = QLatin1String("TETRA_group_monitoring_ind_rt");
structName = QStringLiteral("TETRA_group_monitoring_ind_rt");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_StatusIndReq:
m_ActOffset = START_OFFSET_TETRA_REGISTER;
structName = QLatin1String("TETRA_status_ind_req_rt");
structName = QStringLiteral("TETRA_status_ind_req_rt");
break;
case N_CoPrtCnv::CoPrtCnvRadioTelegram::e_AirInterfaceLoadReq:
m_ActOffset = START_OFFSET_TETRA_AIRLOAD;
structName = QLatin1String("TETRA_air_interface_load_req_rt");
structName = QStringLiteral("TETRA_air_interface_load_req_rt");
break;
default:
m_ActOffset = 0;
structName = QLatin1String("TETRA_unknown_PDU_rt");
structName = QStringLiteral("TETRA_unknown_PDU_rt");
break;
}
return getFieldTree(structName, structName, 1);
@@ -1095,7 +1098,7 @@ LogViewField* LogViewTelegram::getFieldTree(const QString& a_type, const QString
return getFieldTree(xdrElement->getName(), a_name, a_arraySize);
}
}
Q_FALLTHROUGH();
[[fallthrough]];
case LogViewXdrElement::e_KindStandardType:
{
@@ -1471,10 +1474,10 @@ void LogViewTelegram::setJsonValue(const QStringList &path, const QJsonValue &va
{
m_data.clear();
updateJsonValue(path, val, m_json);
if (path.size() && path.last() == QLatin1String("equipmentNumber"))
m_ParticipantId = m_json.value(QLatin1String("data"))
.toObject().value(QLatin1String("header"))
.toObject().value(QLatin1String("equipmentNumber")).toInt();
if (path.size() && path.last() == QStringLiteral("equipmentNumber"))
m_ParticipantId = m_json.value(QStringLiteral("data"))
.toObject().value(QStringLiteral("header"))
.toObject().value(QStringLiteral("equipmentNumber")).toInt();
}
@@ -1485,7 +1488,7 @@ void LogViewTelegram::updateJsonValue(const QStringList &path, const QJsonValue
if (path.size() > 1)
{
QString key = path.first();
static const QLatin1String arrayMarker(QLatin1String("array: "));
static const QString arrayMarker = QStringLiteral("array: ");
const bool isArray = key.startsWith(arrayMarker);
if (isArray)
{
@@ -1518,11 +1521,11 @@ void LogViewTelegram::updateJsonValue(const QStringList &path, const QJsonValue
return;
const QString &key = path.first();
static const QLatin1String indexMarker(QLatin1String("index: "));
static const QString indexMarker = QStringLiteral("index: ");
if (!key.startsWith(indexMarker))
return;
const int arrayIdx = key.midRef(indexMarker.size()).toInt();
const int arrayIdx = QStringView(key).mid(indexMarker.size()).toInt();
while (arr.size() <= arrayIdx)
arr.append(QJsonValue());
@@ -1543,13 +1546,13 @@ void LogViewTelegram::updateJsonValue(const QStringList &path, const QJsonValue
QIcon LogViewTelegram::getIcon() const
{
static const QIcon c2p(QLatin1String(":/image/C2P.png"));
static const QIcon p2c(QLatin1String(":/image/P2C.png"));
static const QIcon w2p(QLatin1String(":/image/W2P.png"));
static const QIcon p2w(QLatin1String(":/image/P2W.png"));
static const QIcon t2p(QLatin1String(":/image/T2P.png"));
static const QIcon p2t(QLatin1String(":/image/P2T.png"));
static const QIcon unk(QLatin1String(":/image/Unknown.png"));
static const QIcon c2p(QStringLiteral(":/image/C2P.png"));
static const QIcon p2c(QStringLiteral(":/image/P2C.png"));
static const QIcon w2p(QStringLiteral(":/image/W2P.png"));
static const QIcon p2w(QStringLiteral(":/image/P2W.png"));
static const QIcon t2p(QStringLiteral(":/image/T2P.png"));
static const QIcon p2t(QStringLiteral(":/image/P2T.png"));
static const QIcon unk(QStringLiteral(":/image/Unknown.png"));
N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol protocol, dest;
protocol =(N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol)(m_Destination & N_CoPrtCnv::CoPrtCnvLogHeader::e_DestProtocolMask);
dest = (N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol)(m_Destination & N_CoPrtCnv::CoPrtCnvLogHeader::e_DestDirectionMask);
@@ -1627,10 +1630,10 @@ void LogViewTelegram::showMessageBox(const QString& a_errorText, const QString&
quint64 logTimeMicroSec = m_LogTime & 0x00FFFFFFFFULL;
const QDateTime dt(QDateTime::fromMSecsSinceEpoch(logTimeSec * 1000 + logTimeMicroSec/1000));
const QString destStr((m_Destination&N_CoPrtCnv::CoPrtCnvLogHeader::e_DestDirectionMask)==N_CoPrtCnv::CoPrtCnvLogHeader::e_DestSend ?
QLatin1String("gesendete") : QLatin1String("gelesene"));
QStringLiteral("gesendete") : QStringLiteral("gelesene"));
QMessageBox::warning(QApplication::topLevelWidgets()[0], a_title,
QString::fromUtf8("Das %5 Telegramm mit Protokoll %6 von %1 (Unix-Zeit: %2) und Länge %3 ist fehlerhaft:<br><br><b>%4</b>")
.arg(dt.toString(Qt::SystemLocaleLongDate)).arg(logTimeSec).arg(m_data.size()).arg(a_errorText, destStr).arg(m_Protocol));
.arg(QLocale().toString(dt, QLocale::LongFormat)).arg(logTimeSec).arg(m_data.size()).arg(a_errorText, destStr).arg(m_Protocol));
}
@@ -1667,12 +1670,12 @@ uint16_t LogViewTelegram::getDynArraySize(uint16_t& a_offset) const
QString LogViewTelegram::formatToolTipLine(const QString& a_name, const QString& a_text, const uint32_t a_value)
{
static const QString s1(QLatin1String("<tr><td><nobr>%1: </nobr></td><td align=right><b><nobr>%2</nobr></b></td><td align=right><nobr>0x%3</nobr></td><td align=right><nobr>0b%4</nobr></td></tr>"));
static const QString s2(QLatin1String("%1"));
static const QString s1(QStringLiteral("<tr><td><nobr>%1: </nobr></td><td align=right><b><nobr>%2</nobr></b></td><td align=right><nobr>0x%3</nobr></td><td align=right><nobr>0b%4</nobr></td></tr>"));
static const QString s2(QStringLiteral("%1"));
QString num16 = s2.arg(a_value, 2, 16, QLatin1Char('0'));
QString num2 = s2.arg(a_value, 8, 2, QLatin1Char('0'));
QString ret = s1.arg(a_name, a_text, num16, num2);
ret = ret.replace(QLatin1Char('\n'), QLatin1String("<br/>"));
ret = ret.replace(QLatin1Char('\n'), QStringLiteral("<br/>"));
return ret;
}