/** * @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 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(&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(&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