- training_area_telegrams.cpp: Fixed QJsonObject initializer syntax (Qt6 requires {{}} not ({}))
- training_area_telegrams.cpp: Fixed fromJson() methods to access m_* members directly
- training_area_telegrams.cpp: Fixed brace mismatches in multiple toJson() methods
- training_area_telegrams.h: Changed Header struct to public members for consistency
- tx_mixin.cpp: Fixed getEquipmentNumber() template for direct member access
- lts_coordinate.cpp: Added missing #include <iomanip>
- MIGRATION_STATUS.md: Added migration progress tracking document
C++17 constraint enforced due to RTI Connext DDS 7.7.0 incompatibility with C++20+
Build status: BUILD_RTI=OFF successful (0 errors, warnings only)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
95 lines
2.3 KiB
C++
Executable File
95 lines
2.3 KiB
C++
Executable File
|
|
|
|
|
|
#include "wls_sfm_message_converter.h"
|
|
|
|
#include <QtCore/QByteArray>
|
|
#include <QtCore/QSharedPointer>
|
|
|
|
#include <LtsUtils/LtsUtilsCore/sfm_bytemessage_converter.h>
|
|
|
|
#include "logger.h"
|
|
|
|
namespace WirelessLocationSystem
|
|
{
|
|
|
|
namespace SfmMessageConverter
|
|
{
|
|
|
|
|
|
|
|
|
|
static SfmMessage_rx *getSpecificSfmMessage(SfmMessage::MsgId p_id)
|
|
{
|
|
switch (p_id)
|
|
{
|
|
case SfmMessage::MsgId::SfmRestartNotification:
|
|
return new SfmMsgSfmRestart_rx;
|
|
case SfmMessage::MsgId::EquipmentId:
|
|
return new SfmMsgEquipmentId;
|
|
case SfmMessage::MsgId::TacticalState:
|
|
return new SfmMsgTacticalState_rx;
|
|
case SfmMessage::MsgId::LicenseState:
|
|
return new SfmMsgLicenseState_rx;
|
|
case SfmMessage::MsgId::TetraMessage:
|
|
return new SfmMsgTetra_rx;
|
|
case SfmMessage::MsgId::Acknowledge:
|
|
return new Acknowledge_rx;
|
|
case SfmMessage::MsgId::RequestGpsControl:
|
|
return new SfmMsgRequestGpsControl_rx;
|
|
default:
|
|
break;
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
QByteArray generateTxMessage(const SfmMessage_tx &message)
|
|
{
|
|
|
|
LtsUtils::SfmMessage msg;
|
|
|
|
msg.setId(static_cast<int>(message.getId()) & 0x7FFF);
|
|
msg.setRtr(static_cast<int>(message.getId()) & 0x8000);
|
|
msg.setPayload(message.getPayload());
|
|
|
|
return LtsUtils::byteStreamFromSfmMessage(msg).toHex();
|
|
}
|
|
|
|
QSharedPointer<SfmMessage_rx> generateRxMessage(const QByteArray &data)
|
|
{
|
|
LtsUtils::SfmMessage message;
|
|
SfmMessage_rx *msg = nullptr;
|
|
|
|
try
|
|
{
|
|
message = LtsUtils::byteStreamToSfmMessage(QByteArray::fromHex(data));
|
|
}
|
|
catch (const LtsUtils::ConversionError &ex)
|
|
{
|
|
ERROR_LOG(getLogger("SfmMessageConverter")) << "Error parsing bytestream: " << data << " Exception: " << ex.what();
|
|
return QSharedPointer<SfmMessage_rx>(msg);
|
|
}
|
|
|
|
|
|
SfmMessage::MsgId msgId = static_cast<SfmMessage::MsgId>(message.id() | (message.rtr() << 15));
|
|
msg = getSpecificSfmMessage(msgId);
|
|
if (!msg)
|
|
{
|
|
ERROR_LOG(getLogger("SfmMessageConverter")) << "Error creating SfmMessage for message with id: " << message.id()
|
|
<< ", rtr: " << message.rtr()
|
|
<< ", combined: 0x" << QString::number(int(msgId));
|
|
}
|
|
else if (!msg->setPayload(message.payload()))
|
|
{
|
|
delete msg;
|
|
msg = nullptr;
|
|
}
|
|
|
|
return QSharedPointer<SfmMessage_rx>(msg);
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|