90 lines
2.7 KiB
C++
Executable File
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
|