Files
qt5-legatus-legacy/Lts/Services/EffectShowManagement/esm_convert_from_tab.cpp
T
2026-08-13 18:33:10 +02:00

90 lines
2.7 KiB
C++
Executable File

/**
* @RDE_HEADER@
* MeteoDataManagement - Static Meteo Data Edit Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by hjl, SLSE, 2016-10-17
*/
#include "esm_convert_from_tab.h"
#include <LtsUtilsCore/qbytearray_byteaccess.h>
namespace EffectShowManagement
{
namespace ConvertFromTab
{
//=============================================================================
RxTelegram_e isTelegram(const TrainingAreaBase::FireSmokeMarkerData &data)
{
Q_ASSERT(data.payload().size() > 0);
switch (data.payload().at(0))
{
case 120: return RxTelegram_e::OrderConfirmation;
case 121: return RxTelegram_e::VehicleStatus;
}
return (RxTelegram_e::unknown);
}
//=============================================================================
OrderConfirmation_t getOrderConfirmation(const TrainingAreaBase::FireSmokeMarkerData &data)
{
Q_ASSERT(data.payload().size() >= 5);
const QByteArray tele(QByteArray::fromRawData(
reinterpret_cast<const char *>(&data.payload().at(0)),
data.payload().size()));
OrderConfirmation_t res;
size_t k = 1;
quint8 byte;
LtsUtils::get1Byte(tele, k, byte);
res.orderType = OrderType_e(byte);
LtsUtils::get2Byte(tele, k, res.orderId);
LtsUtils::get1Byte(tele, k, byte);
res.confirmation = EffectShowManagement::OrderConfirmation_e::inner_enum(byte);
QByteArray qbArr;
int ie = data.payload().size() - 5;
for (int i = 0; i < ie; ++i)
qbArr.append(data.payload().at(5 + i)); // rationale (text)
res.answerText = QString::fromUtf8(qbArr);
return res;
}
//=============================================================================
VehicleStatus_t getVehicleStatus(const TrainingAreaBase::FireSmokeMarkerData &data)
{
Q_ASSERT(data.payload().size() == 5);
const QByteArray tele(QByteArray::fromRawData(
reinterpret_cast<const char *>(&data.payload().at(0)),
data.payload().size()));
VehicleStatus_t res;
res.equipmentNumber = data.equipmentNumber();
res.timestamp = data.sampleTime();
size_t k = 1;
quint8 byte;
LtsUtils::get1Byte(tele, k, byte);
res.operational = byte != 0;
LtsUtils::get1Byte(tele, k, res.ammunitionMagazine);
LtsUtils::get1Byte(tele, k, res.ammunitionAvailable);
LtsUtils::get1Byte(tele, k, byte);
res.inclinationSensorFail = ((byte & 0x80) != 0);
res.navigationFail = ((byte & 0x40) != 0);
res.airSpeedMeterFail = ((byte & 0x20) != 0);
res.controlComputerFail = ((byte & 0x10) != 0);
res.magazineFail = ((byte & 0x08) != 0);
res.feature = (byte & 0x06) >> 1;
return res;
}
} // namespace ConvertFromTab
} // namespace EffectShowManagement