Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+231
@@ -0,0 +1,231 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* MeteoDataManagement - Static Meteo Data Edit Dialog
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by hjl, SLSE, 2016-10-17
|
||||
*/
|
||||
|
||||
#include "esc_convert_from_tab.h"
|
||||
#include <LtsUtilsCore/qbytearray_byteaccess.h>
|
||||
|
||||
|
||||
namespace EffectShowClient
|
||||
{
|
||||
namespace ConvertFromTab
|
||||
{
|
||||
//=============================================================================
|
||||
RxTelegram_e isTelegram(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
if (data.payload().size() == 0)
|
||||
return RxTelegram_e::unknown;
|
||||
|
||||
switch (data.payload().at(0))
|
||||
{
|
||||
case 150: return RxTelegram_e::EffectShowOrder;
|
||||
case 155: return RxTelegram_e::RelocationOrder;
|
||||
case 152: return RxTelegram_e::EffectShowStop;
|
||||
case 151: return RxTelegram_e::EffectShowContinue;
|
||||
case 153: return RxTelegram_e::OrderRetract;
|
||||
case 154: return RxTelegram_e::StatusRequest;
|
||||
case 156: return RxTelegram_e::MeteoData;
|
||||
}
|
||||
return RxTelegram_e::unknown;
|
||||
}
|
||||
|
||||
static inline Core::GeoPosition2D convertGeoPos(const QByteArray &tele, size_t &k)
|
||||
{
|
||||
double lon, lat;
|
||||
LtsUtils::get8Byte(tele, k, lon);
|
||||
LtsUtils::get8Byte(tele, k, lat);
|
||||
return Core::GeoPosition2D(lon, lat);
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
EffectShowOrder_t convertEffectShowOrder(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
EffectShowOrder_t effectShowOrder;
|
||||
if (data.payload().size() == 0)
|
||||
return effectShowOrder;
|
||||
|
||||
Q_ASSERT(data.payload().size() != 48);
|
||||
|
||||
const QByteArray tele(QByteArray::fromRawData(
|
||||
reinterpret_cast<const char *>(&data.payload().at(0)),
|
||||
data.payload().size()));
|
||||
|
||||
size_t k = 1;
|
||||
LtsUtils::get2Byte(tele, k, effectShowOrder.idEffectShow);
|
||||
uint64_t tmp;
|
||||
LtsUtils::get4Byte(tele, k, tmp); // interpret as unsigned
|
||||
effectShowOrder.startTime = tmp;
|
||||
|
||||
effectShowOrder.centerPosition = convertGeoPos(tele, k);
|
||||
|
||||
LtsUtils::get1Byte(tele, k, tmp); effectShowOrder.areaWidth = tmp;
|
||||
LtsUtils::get1Byte(tele, k, tmp); effectShowOrder.areaDepth = tmp;
|
||||
// 50m squares
|
||||
effectShowOrder.areaWidth *= 50;
|
||||
effectShowOrder.areaDepth *= 50;
|
||||
|
||||
qint16 angle;
|
||||
LtsUtils::get2Byte(tele, k, angle);
|
||||
effectShowOrder.rotation = double(angle) * 0.01;
|
||||
|
||||
effectShowOrder.lowerLeftPosition = convertGeoPos(tele, k);
|
||||
|
||||
LtsUtils::get1Byte(tele, k, effectShowOrder.numOfVolley);
|
||||
LtsUtils::get1Byte(tele, k, effectShowOrder.shotsInTotal);
|
||||
|
||||
LtsUtils::get1Byte(tele, k, effectShowOrder.typeOfAmmunition);
|
||||
LtsUtils::get2Byte(tele, k, tmp); effectShowOrder.duration = tmp;
|
||||
|
||||
const size_t len = tele.size();
|
||||
QByteArray ba;
|
||||
while (k < len)
|
||||
ba += tele.at(k++);
|
||||
effectShowOrder.name = QString::fromUtf8(ba);
|
||||
|
||||
return effectShowOrder;
|
||||
}
|
||||
//=============================================================================
|
||||
RelocationOrder_t convertRelocationOrder(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
RelocationOrder_t relocationOrder;
|
||||
if (data.payload().size() == 0)
|
||||
return relocationOrder;
|
||||
|
||||
Q_ASSERT(data.payload().size() >= 7);
|
||||
|
||||
const QByteArray tele(QByteArray::fromRawData(
|
||||
reinterpret_cast<const char *>(&data.payload().at(0)),
|
||||
data.payload().size()));
|
||||
|
||||
size_t k = 1;
|
||||
LtsUtils::get2Byte(tele, k, relocationOrder.idRelocation);
|
||||
uint64_t tmp;
|
||||
LtsUtils::get4Byte(tele, k, tmp); // interpret as unsigned
|
||||
relocationOrder.executionTime = tmp;
|
||||
|
||||
relocationOrder.centerPosition = convertGeoPos(tele, k);
|
||||
|
||||
const size_t len = tele.size();
|
||||
QByteArray ba;
|
||||
while (k < len)
|
||||
ba += tele.at(k++);
|
||||
relocationOrder.infoText = QString::fromUtf8(ba);
|
||||
|
||||
return relocationOrder;
|
||||
}
|
||||
//=============================================================================
|
||||
int convertEffectShowStop(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
int idEffectShow = 0;
|
||||
if (data.payload().size() == 0)
|
||||
return idEffectShow;
|
||||
|
||||
Q_ASSERT(data.payload().size() != 3);
|
||||
|
||||
const QByteArray tele(QByteArray::fromRawData(
|
||||
reinterpret_cast<const char *>(&data.payload().at(0)),
|
||||
data.payload().size()));
|
||||
|
||||
size_t k = 1;
|
||||
LtsUtils::get2Byte(tele, k, idEffectShow);
|
||||
|
||||
return idEffectShow;
|
||||
}
|
||||
//=============================================================================
|
||||
EffectShowContinue_t convertEffectShowContinue(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
EffectShowContinue_t effectShowContinue;
|
||||
if (data.payload().size() == 0)
|
||||
return effectShowContinue;
|
||||
|
||||
Q_ASSERT(data.payload().size() != 7);
|
||||
|
||||
const QByteArray tele(QByteArray::fromRawData(
|
||||
reinterpret_cast<const char *>(&data.payload().at(0)),
|
||||
data.payload().size()));
|
||||
|
||||
size_t k = 1;
|
||||
LtsUtils::get2Byte(tele, k, effectShowContinue.idEffectShow);
|
||||
uint64_t tmp;
|
||||
LtsUtils::get4Byte(tele, k, tmp); // interpret as unsigned
|
||||
effectShowContinue.executionTime = tmp;
|
||||
|
||||
return effectShowContinue;
|
||||
}
|
||||
//=============================================================================
|
||||
OrderRetract_t convertOrderRetract(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
OrderRetract_t orderRetract;
|
||||
if (data.payload().size() == 0)
|
||||
return orderRetract;
|
||||
|
||||
Q_ASSERT(data.payload().size() != 4);
|
||||
|
||||
const QByteArray tele(QByteArray::fromRawData(
|
||||
reinterpret_cast<const char *>(&data.payload().at(0)),
|
||||
data.payload().size()));
|
||||
|
||||
size_t k = 1;
|
||||
LtsUtils::get1Byte(tele, k, orderRetract.orderType);
|
||||
LtsUtils::get2Byte(tele, k, orderRetract.id);
|
||||
|
||||
return orderRetract;
|
||||
}
|
||||
//=============================================================================
|
||||
bool convertStatusRequest(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
if (data.payload().size() <2)
|
||||
return false;
|
||||
|
||||
Q_ASSERT(data.payload().size() != 2);
|
||||
const std::vector<uint8_t> &tele = data.payload();
|
||||
|
||||
return (tele.at(1) == 154);
|
||||
|
||||
}
|
||||
//=============================================================================
|
||||
EffectShowClient::MeteoNearVehicle convertMeteoData(const TrainingAreaBase::FireSmokeMarkerData &data)
|
||||
{
|
||||
EffectShowClient::MeteoNearVehicle meteoData;
|
||||
if (data.payload().size() == 0)
|
||||
{
|
||||
meteoData.isValid(false);
|
||||
return meteoData;
|
||||
}
|
||||
|
||||
Q_ASSERT(data.payload().size() != 11);
|
||||
|
||||
const QByteArray tele(QByteArray::fromRawData(
|
||||
reinterpret_cast<const char *>(&data.payload().at(0)),
|
||||
data.payload().size()));
|
||||
|
||||
qint16 word = 0;
|
||||
|
||||
size_t k = 1;
|
||||
LtsUtils::get2Byte(tele, k, word);
|
||||
meteoData.temperature(double(word) / 10.0);
|
||||
|
||||
LtsUtils::get2Byte(tele, k, word);
|
||||
meteoData.humidity(double(word));
|
||||
|
||||
LtsUtils::get2Byte(tele, k, word);
|
||||
meteoData.pressure(double(word));
|
||||
|
||||
LtsUtils::get2Byte(tele, k, word);
|
||||
meteoData.windDirection(double(word) * 0.01);
|
||||
|
||||
LtsUtils::get2Byte(tele, k, word);
|
||||
meteoData.windSpeed(double(word));
|
||||
|
||||
meteoData.isValid(true);
|
||||
return meteoData;
|
||||
}
|
||||
|
||||
} // namespace ConvertFromTab
|
||||
|
||||
} // namespace EffectShowClient
|
||||
Reference in new issue
Block a user