mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 23:00:04 +00:00
Modified RDA message clang-tidy cleanup
This commit is contained in:
parent
2025698d88
commit
fd6c224fc2
10 changed files with 1365 additions and 1310 deletions
|
|
@ -9,17 +9,22 @@ namespace awips
|
|||
static const std::string logPrefix_ = "scwx::awips::message";
|
||||
static const auto logger_ = util::Logger::Create(logPrefix_);
|
||||
|
||||
class MessageImpl
|
||||
class Message::Impl
|
||||
{
|
||||
public:
|
||||
explicit MessageImpl() {};
|
||||
~MessageImpl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
};
|
||||
|
||||
Message::Message() : p(std::make_unique<MessageImpl>()) {}
|
||||
Message::Message() : p(std::make_unique<Impl>()) {}
|
||||
Message::~Message() = default;
|
||||
|
||||
Message::Message(Message&&) noexcept = default;
|
||||
Message::Message(Message&&) noexcept = default;
|
||||
Message& Message::operator=(Message&&) noexcept = default;
|
||||
|
||||
bool Message::ValidateMessage(std::istream& is, size_t bytesRead) const
|
||||
|
|
|
|||
|
|
@ -1,11 +1,7 @@
|
|||
#include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ =
|
||||
|
|
@ -27,9 +23,9 @@ static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ {
|
|||
class DigitalRadarDataGeneric::DataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl(const std::string& dataBlockType,
|
||||
const std::string& dataName) :
|
||||
dataBlockType_ {dataBlockType}, dataName_ {dataName}
|
||||
explicit Impl(std::string dataBlockType, std::string dataName) :
|
||||
dataBlockType_ {std::move(dataBlockType)},
|
||||
dataName_ {std::move(dataName)}
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -51,7 +47,13 @@ DigitalRadarDataGeneric::DataBlock::operator=(DataBlock&&) noexcept = default;
|
|||
class DigitalRadarDataGeneric::MomentDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t numberOfDataMomentGates_ {0};
|
||||
std::int16_t dataMomentRange_ {0};
|
||||
|
|
@ -89,7 +91,9 @@ DigitalRadarDataGeneric::MomentDataBlock::number_of_data_moment_gates() const
|
|||
units::kilometers<float>
|
||||
DigitalRadarDataGeneric::MomentDataBlock::data_moment_range() const
|
||||
{
|
||||
return units::kilometers<float> {p->dataMomentRange_ * 0.001f};
|
||||
static constexpr float kScale_ = 0.001f;
|
||||
return units::kilometers<float> {static_cast<float>(p->dataMomentRange_) *
|
||||
kScale_};
|
||||
}
|
||||
|
||||
std::int16_t
|
||||
|
|
@ -102,7 +106,9 @@ units::kilometers<float>
|
|||
DigitalRadarDataGeneric::MomentDataBlock::data_moment_range_sample_interval()
|
||||
const
|
||||
{
|
||||
return units::kilometers<float> {p->dataMomentRangeSampleInterval_ * 0.001f};
|
||||
static constexpr float kScale_ = 0.001f;
|
||||
return units::kilometers<float> {
|
||||
static_cast<float>(p->dataMomentRangeSampleInterval_) * kScale_};
|
||||
}
|
||||
|
||||
std::uint16_t DigitalRadarDataGeneric::MomentDataBlock::
|
||||
|
|
@ -113,7 +119,8 @@ std::uint16_t DigitalRadarDataGeneric::MomentDataBlock::
|
|||
|
||||
float DigitalRadarDataGeneric::MomentDataBlock::snr_threshold() const
|
||||
{
|
||||
return p->snrThreshold_ * 0.1f;
|
||||
static constexpr float kScale_ = 0.1f;
|
||||
return static_cast<float>(p->snrThreshold_) * kScale_;
|
||||
}
|
||||
|
||||
std::int16_t DigitalRadarDataGeneric::MomentDataBlock::snr_threshold_raw() const
|
||||
|
|
@ -138,14 +145,14 @@ float DigitalRadarDataGeneric::MomentDataBlock::offset() const
|
|||
|
||||
const void* DigitalRadarDataGeneric::MomentDataBlock::data_moments() const
|
||||
{
|
||||
const void* dataMoments;
|
||||
const void* dataMoments = nullptr;
|
||||
|
||||
switch (p->dataWordSize_)
|
||||
{
|
||||
case 8:
|
||||
case 8: // NOLINT(cppcoreguidelines-avoid-magic-numbers)
|
||||
dataMoments = p->momentGates8_.data();
|
||||
break;
|
||||
case 16:
|
||||
case 16: // NOLINT(cppcoreguidelines-avoid-magic-numbers)
|
||||
dataMoments = p->momentGates16_.data();
|
||||
break;
|
||||
default:
|
||||
|
|
@ -189,13 +196,15 @@ bool DigitalRadarDataGeneric::MomentDataBlock::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->scale_), 4); // 20-23
|
||||
is.read(reinterpret_cast<char*>(&p->offset_), 4); // 24-27
|
||||
|
||||
p->numberOfDataMomentGates_ = ntohs(p->numberOfDataMomentGates_);
|
||||
p->dataMomentRange_ = ntohs(p->dataMomentRange_);
|
||||
p->numberOfDataMomentGates_ = ntohs(p->numberOfDataMomentGates_);
|
||||
p->dataMomentRange_ = static_cast<std::int16_t>(ntohs(p->dataMomentRange_));
|
||||
p->dataMomentRangeSampleInterval_ = ntohs(p->dataMomentRangeSampleInterval_);
|
||||
p->tover_ = ntohs(p->tover_);
|
||||
p->snrThreshold_ = ntohs(p->snrThreshold_);
|
||||
p->scale_ = awips::Message::SwapFloat(p->scale_);
|
||||
p->offset_ = awips::Message::SwapFloat(p->offset_);
|
||||
p->snrThreshold_ = static_cast<std::int16_t>(ntohs(p->snrThreshold_));
|
||||
p->scale_ = awips::Message::SwapFloat(p->scale_);
|
||||
p->offset_ = awips::Message::SwapFloat(p->offset_);
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (p->numberOfDataMomentGates_ <= 1840)
|
||||
{
|
||||
|
|
@ -209,7 +218,7 @@ bool DigitalRadarDataGeneric::MomentDataBlock::Parse(std::istream& is)
|
|||
{
|
||||
p->momentGates16_.resize(p->numberOfDataMomentGates_);
|
||||
is.read(reinterpret_cast<char*>(p->momentGates16_.data()),
|
||||
p->numberOfDataMomentGates_ * 2);
|
||||
static_cast<std::streamsize>(p->numberOfDataMomentGates_) * 2);
|
||||
awips::Message::SwapVector(p->momentGates16_);
|
||||
}
|
||||
else
|
||||
|
|
@ -225,13 +234,21 @@ bool DigitalRadarDataGeneric::MomentDataBlock::Parse(std::istream& is)
|
|||
dataBlockValid = false;
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
return dataBlockValid;
|
||||
}
|
||||
|
||||
class DigitalRadarDataGeneric::VolumeDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t lrtup_ {0};
|
||||
std::uint8_t versionNumberMajor_ {0};
|
||||
|
|
@ -321,7 +338,7 @@ bool DigitalRadarDataGeneric::VolumeDataBlock::Parse(std::istream& is)
|
|||
p->lrtup_ = ntohs(p->lrtup_);
|
||||
p->latitude_ = awips::Message::SwapFloat(p->latitude_);
|
||||
p->longitude_ = awips::Message::SwapFloat(p->longitude_);
|
||||
p->siteHeight_ = ntohs(p->siteHeight_);
|
||||
p->siteHeight_ = static_cast<std::int16_t>(ntohs(p->siteHeight_));
|
||||
p->feedhornHeight_ = ntohs(p->feedhornHeight_);
|
||||
p->calibrationConstant_ = awips::Message::SwapFloat(p->calibrationConstant_);
|
||||
p->horizontaShvTxPower_ = awips::Message::SwapFloat(p->horizontaShvTxPower_);
|
||||
|
|
@ -333,6 +350,8 @@ bool DigitalRadarDataGeneric::VolumeDataBlock::Parse(std::istream& is)
|
|||
p->volumeCoveragePatternNumber_ = ntohs(p->volumeCoveragePatternNumber_);
|
||||
p->processingStatus_ = ntohs(p->processingStatus_);
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (p->lrtup_ >= 46)
|
||||
{
|
||||
is.read(reinterpret_cast<char*>(&p->zdrBiasEstimateWeightedMean_),
|
||||
|
|
@ -345,13 +364,21 @@ bool DigitalRadarDataGeneric::VolumeDataBlock::Parse(std::istream& is)
|
|||
is.seekg(6, std::ios_base::cur); // 46-51
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
return dataBlockValid;
|
||||
}
|
||||
|
||||
class DigitalRadarDataGeneric::ElevationDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t lrtup_ {0};
|
||||
std::int16_t atmos_ {0};
|
||||
|
|
@ -397,7 +424,7 @@ bool DigitalRadarDataGeneric::ElevationDataBlock::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->calibrationConstant_), 4); // 8-11
|
||||
|
||||
p->lrtup_ = ntohs(p->lrtup_);
|
||||
p->atmos_ = ntohs(p->atmos_);
|
||||
p->atmos_ = static_cast<std::int16_t>(ntohs(p->atmos_));
|
||||
p->calibrationConstant_ = awips::Message::SwapFloat(p->calibrationConstant_);
|
||||
|
||||
return dataBlockValid;
|
||||
|
|
@ -406,7 +433,13 @@ bool DigitalRadarDataGeneric::ElevationDataBlock::Parse(std::istream& is)
|
|||
class DigitalRadarDataGeneric::RadialDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t lrtup_ {0};
|
||||
std::uint16_t unambigiousRange_ {0};
|
||||
|
|
@ -433,7 +466,8 @@ DigitalRadarDataGeneric::RadialDataBlock::operator=(
|
|||
|
||||
float DigitalRadarDataGeneric::RadialDataBlock::unambiguous_range() const
|
||||
{
|
||||
return p->unambigiousRange_ / 10.0f;
|
||||
static constexpr float kScale_ = 0.1f;
|
||||
return static_cast<float>(p->unambigiousRange_) * kScale_;
|
||||
}
|
||||
|
||||
std::shared_ptr<DigitalRadarDataGeneric::RadialDataBlock>
|
||||
|
|
@ -486,24 +520,31 @@ bool DigitalRadarDataGeneric::RadialDataBlock::Parse(std::istream& is)
|
|||
class DigitalRadarDataGeneric::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {};
|
||||
~Impl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
std::string radarIdentifier_ {};
|
||||
std::uint32_t collectionTime_ {0};
|
||||
std::uint16_t modifiedJulianDate_ {0};
|
||||
std::uint16_t azimuthNumber_ {0};
|
||||
float azimuthAngle_ {0.0f};
|
||||
std::uint8_t compressionIndicator_ {0};
|
||||
std::uint16_t radialLength_ {0};
|
||||
std::uint8_t azimuthResolutionSpacing_ {0};
|
||||
std::uint8_t radialStatus_ {0};
|
||||
std::uint8_t elevationNumber_ {0};
|
||||
std::uint8_t cutSectorNumber_ {0};
|
||||
float elevationAngle_ {0.0f};
|
||||
std::uint8_t radialSpotBlankingStatus_ {0};
|
||||
std::uint8_t azimuthIndexingMode_ {0};
|
||||
std::uint16_t dataBlockCount_ {0};
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::string radarIdentifier_ {};
|
||||
std::uint32_t collectionTime_ {0};
|
||||
std::uint16_t modifiedJulianDate_ {0};
|
||||
std::uint16_t azimuthNumber_ {0};
|
||||
float azimuthAngle_ {0.0f};
|
||||
std::uint8_t compressionIndicator_ {0};
|
||||
std::uint16_t radialLength_ {0};
|
||||
std::uint8_t azimuthResolutionSpacing_ {0};
|
||||
std::uint8_t radialStatus_ {0};
|
||||
std::uint8_t elevationNumber_ {0};
|
||||
std::uint8_t cutSectorNumber_ {0};
|
||||
float elevationAngle_ {0.0f};
|
||||
std::uint8_t radialSpotBlankingStatus_ {0};
|
||||
std::uint8_t azimuthIndexingMode_ {0};
|
||||
std::uint16_t dataBlockCount_ {0};
|
||||
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
std::array<std::uint32_t, 10> dataBlockPointer_ {0};
|
||||
|
||||
std::shared_ptr<VolumeDataBlock> volumeDataBlock_ {nullptr};
|
||||
|
|
@ -679,6 +720,8 @@ bool DigitalRadarDataGeneric::Parse(std::istream& is)
|
|||
p->elevationAngle_ = SwapFloat(p->elevationAngle_);
|
||||
p->dataBlockCount_ = ntohs(p->dataBlockCount_);
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (p->azimuthNumber_ < 1 || p->azimuthNumber_ > 720)
|
||||
{
|
||||
logger_->warn("Invalid azimuth number: {}", p->azimuthNumber_);
|
||||
|
|
@ -700,18 +743,22 @@ bool DigitalRadarDataGeneric::Parse(std::istream& is)
|
|||
messageValid = false;
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (!messageValid)
|
||||
{
|
||||
p->dataBlockCount_ = 0;
|
||||
}
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->dataBlockPointer_),
|
||||
p->dataBlockCount_ * 4);
|
||||
static_cast<std::streamsize>(p->dataBlockCount_) * 4);
|
||||
|
||||
SwapArray(p->dataBlockPointer_, p->dataBlockCount_);
|
||||
|
||||
for (uint16_t b = 0; b < p->dataBlockCount_; ++b)
|
||||
{
|
||||
// Index already has bounds check
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index)
|
||||
is.seekg(isBegin + std::streamoff(p->dataBlockPointer_[b]),
|
||||
std::ios_base::beg);
|
||||
|
||||
|
|
@ -784,6 +831,4 @@ DigitalRadarDataGeneric::Create(Level2MessageHeader&& header, std::istream& is)
|
|||
return message;
|
||||
}
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,11 +1,7 @@
|
|||
#include <scwx/wsr88d/rda/rda_adaptation_data.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::wsr88d::rda::rda_adaptation_data";
|
||||
|
|
@ -13,30 +9,26 @@ static const auto logger_ = util::Logger::Create(logPrefix_);
|
|||
|
||||
struct AntManualSetup
|
||||
{
|
||||
int32_t ielmin_;
|
||||
int32_t ielmax_;
|
||||
uint32_t fazvelmax_;
|
||||
uint32_t felvelmax_;
|
||||
int32_t igndHgt_;
|
||||
uint32_t iradHgt_;
|
||||
|
||||
AntManualSetup() :
|
||||
ielmin_ {0},
|
||||
ielmax_ {0},
|
||||
fazvelmax_ {0},
|
||||
felvelmax_ {0},
|
||||
igndHgt_ {0},
|
||||
iradHgt_ {0}
|
||||
{
|
||||
}
|
||||
std::int32_t ielmin_ {0};
|
||||
std::int32_t ielmax_ {0};
|
||||
std::uint32_t fazvelmax_ {0};
|
||||
std::uint32_t felvelmax_ {0};
|
||||
std::int32_t igndHgt_ {0};
|
||||
std::uint32_t iradHgt_ {0};
|
||||
};
|
||||
|
||||
class RdaAdaptationDataImpl
|
||||
class RdaAdaptationData::Impl
|
||||
{
|
||||
public:
|
||||
explicit RdaAdaptationDataImpl() = default;
|
||||
~RdaAdaptationDataImpl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
std::string adapFileName_ {};
|
||||
std::string adapFormat_ {};
|
||||
std::string adapRevision_ {};
|
||||
|
|
@ -65,27 +57,27 @@ public:
|
|||
bool specFilterInstalled_ {false};
|
||||
bool tpsInstalled_ {false};
|
||||
bool rmsInstalled_ {false};
|
||||
uint32_t aHvdlTstInt_ {0};
|
||||
uint32_t aRpgLtInt_ {0};
|
||||
uint32_t aMinStabUtilPwrTime_ {0};
|
||||
uint32_t aGenAutoExerInterval_ {0};
|
||||
uint32_t aUtilPwrSwReqInterval_ {0};
|
||||
std::uint32_t aHvdlTstInt_ {0};
|
||||
std::uint32_t aRpgLtInt_ {0};
|
||||
std::uint32_t aMinStabUtilPwrTime_ {0};
|
||||
std::uint32_t aGenAutoExerInterval_ {0};
|
||||
std::uint32_t aUtilPwrSwReqInterval_ {0};
|
||||
float aLowFuelLevel_ {0.0f};
|
||||
uint32_t configChanNumber_ {0};
|
||||
uint32_t redundantChanConfig_ {0};
|
||||
std::uint32_t configChanNumber_ {0};
|
||||
std::uint32_t redundantChanConfig_ {0};
|
||||
std::array<float, 104> attenTable_ {0.0f};
|
||||
std::map<unsigned, float> pathLosses_ {};
|
||||
float vTsCw_ {0.0f};
|
||||
std::array<float, 13> hRnscale_ {0.0f};
|
||||
std::array<float, 13> atmos_ {0.0f};
|
||||
std::array<float, 12> elIndex_ {0.0f};
|
||||
uint32_t tfreqMhz_ {0};
|
||||
std::uint32_t tfreqMhz_ {0};
|
||||
float baseDataTcn_ {0.0f};
|
||||
float reflDataTover_ {0.0f};
|
||||
float tarHDbz0Lp_ {0.0f};
|
||||
float tarVDbz0Lp_ {0.0f};
|
||||
uint32_t initPhiDp_ {0};
|
||||
uint32_t normInitPhiDp_ {0};
|
||||
std::uint32_t initPhiDp_ {0};
|
||||
std::uint32_t normInitPhiDp_ {0};
|
||||
float lxLp_ {0.0f};
|
||||
float lxSp_ {0.0f};
|
||||
float meteorParam_ {0.0f};
|
||||
|
|
@ -93,9 +85,9 @@ public:
|
|||
float velDegradLimit_ {0.0f};
|
||||
float wthDegradLimit_ {0.0f};
|
||||
float hNoisetempDgradLimit_ {0.0f};
|
||||
uint32_t hMinNoisetemp_ {0};
|
||||
std::uint32_t hMinNoisetemp_ {0};
|
||||
float vNoisetempDgradLimit_ {0.0f};
|
||||
uint32_t vMinNoisetemp_ {0};
|
||||
std::uint32_t vMinNoisetemp_ {0};
|
||||
float klyDegradeLimit_ {0.0f};
|
||||
float tsCoho_ {0.0f};
|
||||
float hTsCw_ {0.0f};
|
||||
|
|
@ -112,19 +104,19 @@ public:
|
|||
float vDbz0DeltaLimit_ {0.0f};
|
||||
float tarHDbz0Sp_ {0.0f};
|
||||
float tarVDbz0Sp_ {0.0f};
|
||||
uint32_t deltaprf_ {0};
|
||||
uint32_t tauSp_ {0};
|
||||
uint32_t tauLp_ {0};
|
||||
uint32_t ncDeadValue_ {0};
|
||||
uint32_t tauRfSp_ {0};
|
||||
uint32_t tauRfLp_ {0};
|
||||
std::uint32_t deltaprf_ {0};
|
||||
std::uint32_t tauSp_ {0};
|
||||
std::uint32_t tauLp_ {0};
|
||||
std::uint32_t ncDeadValue_ {0};
|
||||
std::uint32_t tauRfSp_ {0};
|
||||
std::uint32_t tauRfLp_ {0};
|
||||
float seg1Lim_ {0.0f};
|
||||
float slatsec_ {0.0f};
|
||||
float slonsec_ {0.0f};
|
||||
uint32_t slatdeg_ {0};
|
||||
uint32_t slatmin_ {0};
|
||||
uint32_t slondeg_ {0};
|
||||
uint32_t slonmin_ {0};
|
||||
std::uint32_t slatdeg_ {0};
|
||||
std::uint32_t slatmin_ {0};
|
||||
std::uint32_t slondeg_ {0};
|
||||
std::uint32_t slonmin_ {0};
|
||||
char slatdir_ {0};
|
||||
char slondir_ {0};
|
||||
double digRcvrClockFreq_ {0.0};
|
||||
|
|
@ -155,16 +147,16 @@ public:
|
|||
float azEncoderAlignment_ {0.0f};
|
||||
float elEncoderAlignment_ {0.0f};
|
||||
std::string refinedPark_ {};
|
||||
uint32_t rvp8nvIwaveguideLength_ {0};
|
||||
std::uint32_t rvp8nvIwaveguideLength_ {0};
|
||||
std::array<float, 13> vRnscale_ {0.0f};
|
||||
float velDataTover_ {0.0f};
|
||||
float widthDataTover_ {0.0f};
|
||||
float dopplerRangeStart_ {0.0f};
|
||||
uint32_t maxElIndex_ {0};
|
||||
std::uint32_t maxElIndex_ {0};
|
||||
float seg2Lim_ {0.0f};
|
||||
float seg3Lim_ {0.0f};
|
||||
float seg4Lim_ {0.0f};
|
||||
uint32_t nbrElSegments_ {0};
|
||||
std::uint32_t nbrElSegments_ {0};
|
||||
float hNoiseLong_ {0.0f};
|
||||
float antNoiseTemp_ {0.0f};
|
||||
float hNoiseShort_ {0.0f};
|
||||
|
|
@ -196,22 +188,23 @@ public:
|
|||
float rcvrModMinTemp_ {0.0f};
|
||||
float biteModMaxTemp_ {0.0f};
|
||||
float biteModMinTemp_ {0.0f};
|
||||
uint32_t defaultPolarization_ {0};
|
||||
std::uint32_t defaultPolarization_ {0};
|
||||
float trLimitDgradLimit_ {0.0f};
|
||||
float trLimitFailLimit_ {0.0f};
|
||||
bool rfpStepperEnabled_ {false};
|
||||
float ameCurrentTolerance_ {0.0f};
|
||||
uint32_t hOnlyPolarization_ {0};
|
||||
uint32_t vOnlyPolarization_ {0};
|
||||
std::uint32_t hOnlyPolarization_ {0};
|
||||
std::uint32_t vOnlyPolarization_ {0};
|
||||
float sunBias_ {0.0f};
|
||||
float aMinShelterTempWarn_ {0.0f};
|
||||
float powerMeterZero_ {0.0f};
|
||||
float txbBaseline_ {0.0f};
|
||||
float txbAlarmThresh_ {0.0f};
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
};
|
||||
|
||||
RdaAdaptationData::RdaAdaptationData() :
|
||||
Level2Message(), p(std::make_unique<RdaAdaptationDataImpl>())
|
||||
Level2Message(), p(std::make_unique<Impl>())
|
||||
{
|
||||
}
|
||||
RdaAdaptationData::~RdaAdaptationData() = default;
|
||||
|
|
@ -277,7 +270,7 @@ float RdaAdaptationData::parkel() const
|
|||
|
||||
float RdaAdaptationData::a_fuel_conv(unsigned i) const
|
||||
{
|
||||
return p->aFuelConv_[i];
|
||||
return p->aFuelConv_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::a_min_shelter_temp() const
|
||||
|
|
@ -360,27 +353,27 @@ bool RdaAdaptationData::rms_installed() const
|
|||
return p->rmsInstalled_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_hvdl_tst_int() const
|
||||
std::uint32_t RdaAdaptationData::a_hvdl_tst_int() const
|
||||
{
|
||||
return p->aHvdlTstInt_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_rpg_lt_int() const
|
||||
std::uint32_t RdaAdaptationData::a_rpg_lt_int() const
|
||||
{
|
||||
return p->aRpgLtInt_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_min_stab_util_pwr_time() const
|
||||
std::uint32_t RdaAdaptationData::a_min_stab_util_pwr_time() const
|
||||
{
|
||||
return p->aMinStabUtilPwrTime_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_gen_auto_exer_interval() const
|
||||
std::uint32_t RdaAdaptationData::a_gen_auto_exer_interval() const
|
||||
{
|
||||
return p->aGenAutoExerInterval_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_util_pwr_sw_req_interval() const
|
||||
std::uint32_t RdaAdaptationData::a_util_pwr_sw_req_interval() const
|
||||
{
|
||||
return p->aUtilPwrSwReqInterval_;
|
||||
}
|
||||
|
|
@ -390,19 +383,19 @@ float RdaAdaptationData::a_low_fuel_level() const
|
|||
return p->aLowFuelLevel_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::config_chan_number() const
|
||||
std::uint32_t RdaAdaptationData::config_chan_number() const
|
||||
{
|
||||
return p->configChanNumber_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::redundant_chan_config() const
|
||||
std::uint32_t RdaAdaptationData::redundant_chan_config() const
|
||||
{
|
||||
return p->redundantChanConfig_;
|
||||
}
|
||||
|
||||
float RdaAdaptationData::atten_table(unsigned i) const
|
||||
{
|
||||
return p->attenTable_[i];
|
||||
return p->attenTable_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::path_losses(unsigned i) const
|
||||
|
|
@ -412,41 +405,49 @@ float RdaAdaptationData::path_losses(unsigned i) const
|
|||
|
||||
float RdaAdaptationData::h_coupler_xmt_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(29);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::h_coupler_cw_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(48);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::v_coupler_xmt_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(49);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::ame_ts_bias() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(51);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::v_coupler_cw_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(53);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::pwr_sense_bias() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(56);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::ame_v_noise_enr() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(57);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::chan_cal_diff() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(70);
|
||||
}
|
||||
|
||||
|
|
@ -457,20 +458,20 @@ float RdaAdaptationData::v_ts_cw() const
|
|||
|
||||
float RdaAdaptationData::h_rnscale(unsigned i) const
|
||||
{
|
||||
return p->hRnscale_[i];
|
||||
return p->hRnscale_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::atmos(unsigned i) const
|
||||
{
|
||||
return p->atmos_[i];
|
||||
return p->atmos_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::el_index(unsigned i) const
|
||||
{
|
||||
return p->elIndex_[i];
|
||||
return p->elIndex_.at(i);
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tfreq_mhz() const
|
||||
std::uint32_t RdaAdaptationData::tfreq_mhz() const
|
||||
{
|
||||
return p->tfreqMhz_;
|
||||
}
|
||||
|
|
@ -495,12 +496,12 @@ float RdaAdaptationData::tar_v_dbz0_lp() const
|
|||
return p->tarVDbz0Lp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::init_phi_dp() const
|
||||
std::uint32_t RdaAdaptationData::init_phi_dp() const
|
||||
{
|
||||
return p->initPhiDp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::norm_init_phi_dp() const
|
||||
std::uint32_t RdaAdaptationData::norm_init_phi_dp() const
|
||||
{
|
||||
return p->normInitPhiDp_;
|
||||
}
|
||||
|
|
@ -540,7 +541,7 @@ float RdaAdaptationData::h_noisetemp_dgrad_limit() const
|
|||
return p->hNoisetempDgradLimit_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::h_min_noisetemp() const
|
||||
std::uint32_t RdaAdaptationData::h_min_noisetemp() const
|
||||
{
|
||||
return p->hMinNoisetemp_;
|
||||
}
|
||||
|
|
@ -550,7 +551,7 @@ float RdaAdaptationData::v_noisetemp_dgrad_limit() const
|
|||
return p->vNoisetempDgradLimit_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::v_min_noisetemp() const
|
||||
std::uint32_t RdaAdaptationData::v_min_noisetemp() const
|
||||
{
|
||||
return p->vMinNoisetemp_;
|
||||
}
|
||||
|
|
@ -635,32 +636,32 @@ float RdaAdaptationData::tar_v_dbz0_sp() const
|
|||
return p->tarVDbz0Sp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::deltaprf() const
|
||||
std::uint32_t RdaAdaptationData::deltaprf() const
|
||||
{
|
||||
return p->deltaprf_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_sp() const
|
||||
std::uint32_t RdaAdaptationData::tau_sp() const
|
||||
{
|
||||
return p->tauSp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_lp() const
|
||||
std::uint32_t RdaAdaptationData::tau_lp() const
|
||||
{
|
||||
return p->tauLp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::nc_dead_value() const
|
||||
std::uint32_t RdaAdaptationData::nc_dead_value() const
|
||||
{
|
||||
return p->ncDeadValue_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_rf_sp() const
|
||||
std::uint32_t RdaAdaptationData::tau_rf_sp() const
|
||||
{
|
||||
return p->tauRfSp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_rf_lp() const
|
||||
std::uint32_t RdaAdaptationData::tau_rf_lp() const
|
||||
{
|
||||
return p->tauRfLp_;
|
||||
}
|
||||
|
|
@ -680,22 +681,22 @@ float RdaAdaptationData::slonsec() const
|
|||
return p->slonsec_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slatdeg() const
|
||||
std::uint32_t RdaAdaptationData::slatdeg() const
|
||||
{
|
||||
return p->slatdeg_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slatmin() const
|
||||
std::uint32_t RdaAdaptationData::slatmin() const
|
||||
{
|
||||
return p->slatmin_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slondeg() const
|
||||
std::uint32_t RdaAdaptationData::slondeg() const
|
||||
{
|
||||
return p->slondeg_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slonmin() const
|
||||
std::uint32_t RdaAdaptationData::slonmin() const
|
||||
{
|
||||
return p->slonmin_;
|
||||
}
|
||||
|
|
@ -738,31 +739,31 @@ std::string RdaAdaptationData::site_name() const
|
|||
float RdaAdaptationData::ant_manual_setup_ielmin() const
|
||||
{
|
||||
constexpr float SCALE = 360.0f / 65536.0f;
|
||||
return p->antManualSetup_.ielmin_ * SCALE;
|
||||
return static_cast<float>(p->antManualSetup_.ielmin_) * SCALE;
|
||||
}
|
||||
|
||||
float RdaAdaptationData::ant_manual_setup_ielmax() const
|
||||
{
|
||||
constexpr float SCALE = 360.0f / 65536.0f;
|
||||
return p->antManualSetup_.ielmax_ * SCALE;
|
||||
return static_cast<float>(p->antManualSetup_.ielmax_) * SCALE;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::ant_manual_setup_fazvelmax() const
|
||||
std::uint32_t RdaAdaptationData::ant_manual_setup_fazvelmax() const
|
||||
{
|
||||
return p->antManualSetup_.fazvelmax_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::ant_manual_setup_felvelmax() const
|
||||
std::uint32_t RdaAdaptationData::ant_manual_setup_felvelmax() const
|
||||
{
|
||||
return p->antManualSetup_.felvelmax_;
|
||||
}
|
||||
|
||||
int32_t RdaAdaptationData::ant_manual_setup_ignd_hgt() const
|
||||
std::int32_t RdaAdaptationData::ant_manual_setup_ignd_hgt() const
|
||||
{
|
||||
return p->antManualSetup_.igndHgt_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::ant_manual_setup_irad_hgt() const
|
||||
std::uint32_t RdaAdaptationData::ant_manual_setup_irad_hgt() const
|
||||
{
|
||||
return p->antManualSetup_.iradHgt_;
|
||||
}
|
||||
|
|
@ -877,14 +878,14 @@ std::string RdaAdaptationData::refined_park() const
|
|||
return p->refinedPark_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::rvp8nv_iwaveguide_length() const
|
||||
std::uint32_t RdaAdaptationData::rvp8nv_iwaveguide_length() const
|
||||
{
|
||||
return p->rvp8nvIwaveguideLength_;
|
||||
}
|
||||
|
||||
float RdaAdaptationData::v_rnscale(unsigned i) const
|
||||
{
|
||||
return p->vRnscale_[i];
|
||||
return p->vRnscale_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::vel_data_tover() const
|
||||
|
|
@ -902,7 +903,7 @@ float RdaAdaptationData::doppler_range_start() const
|
|||
return p->dopplerRangeStart_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::max_el_index() const
|
||||
std::uint32_t RdaAdaptationData::max_el_index() const
|
||||
{
|
||||
return p->maxElIndex_;
|
||||
}
|
||||
|
|
@ -922,7 +923,7 @@ float RdaAdaptationData::seg4_lim() const
|
|||
return p->seg4Lim_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::nbr_el_segments() const
|
||||
std::uint32_t RdaAdaptationData::nbr_el_segments() const
|
||||
{
|
||||
return p->nbrElSegments_;
|
||||
}
|
||||
|
|
@ -1082,7 +1083,7 @@ float RdaAdaptationData::bite_mod_min_temp() const
|
|||
return p->biteModMinTemp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::default_polarization() const
|
||||
std::uint32_t RdaAdaptationData::default_polarization() const
|
||||
{
|
||||
return p->defaultPolarization_;
|
||||
}
|
||||
|
|
@ -1107,12 +1108,12 @@ float RdaAdaptationData::ame_current_tolerance() const
|
|||
return p->ameCurrentTolerance_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::h_only_polarization() const
|
||||
std::uint32_t RdaAdaptationData::h_only_polarization() const
|
||||
{
|
||||
return p->hOnlyPolarization_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::v_only_polarization() const
|
||||
std::uint32_t RdaAdaptationData::v_only_polarization() const
|
||||
{
|
||||
return p->vOnlyPolarization_;
|
||||
}
|
||||
|
|
@ -1146,9 +1147,10 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
{
|
||||
logger_->trace("Parsing RDA Adaptation Data (Message Type 18)");
|
||||
|
||||
bool messageValid = true;
|
||||
size_t bytesRead = 0;
|
||||
bool messageValid = true;
|
||||
std::size_t bytesRead = 0;
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers): Readability
|
||||
p->adapFileName_.resize(12);
|
||||
p->adapFormat_.resize(4);
|
||||
p->adapRevision_.resize(4);
|
||||
|
|
@ -1171,7 +1173,7 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->parkel_), 4); // 64-67
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->aFuelConv_[0]),
|
||||
p->aFuelConv_.size() * 4); // 68-111
|
||||
static_cast<std::streamsize>(p->aFuelConv_.size() * 4)); // 68-111
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->aMinShelterTemp_), 4); // 112-115
|
||||
is.read(reinterpret_cast<char*>(&p->aMaxShelterTemp_), 4); // 116-119
|
||||
|
|
@ -1209,7 +1211,7 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->redundantChanConfig_), 4); // 224-227
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->attenTable_[0]),
|
||||
p->attenTable_.size() * 4); // 228-643
|
||||
static_cast<std::streamsize>(p->attenTable_.size() * 4)); // 228-643
|
||||
|
||||
is.seekg(24, std::ios_base::cur); // 644-667
|
||||
is.read(reinterpret_cast<char*>(&p->pathLosses_[7]), 4); // 668-671
|
||||
|
|
@ -1262,13 +1264,13 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->vTsCw_), 4); // 936-939
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->hRnscale_[0]),
|
||||
p->hRnscale_.size() * 4); // 940-991
|
||||
static_cast<std::streamsize>(p->hRnscale_.size() * 4)); // 940-991
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->atmos_[0]),
|
||||
p->atmos_.size() * 4); // 992-1043
|
||||
static_cast<std::streamsize>(p->atmos_.size() * 4)); // 992-1043
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->elIndex_[0]),
|
||||
p->elIndex_.size() * 4); // 1044-1091
|
||||
static_cast<std::streamsize>(p->elIndex_.size() * 4)); // 1044-1091
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->tfreqMhz_), 4); // 1092-1095
|
||||
is.read(reinterpret_cast<char*>(&p->baseDataTcn_), 4); // 1096-1099
|
||||
|
|
@ -1394,11 +1396,12 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
4); // 8696-8699
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->vRnscale_[0]),
|
||||
11 * 4); // 8700-8743
|
||||
static_cast<std::streamsize>(11 * 4)); // 8700-8743
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->velDataTover_), 4); // 8744-8747
|
||||
is.read(reinterpret_cast<char*>(&p->widthDataTover_), 4); // 8748-8751
|
||||
is.read(reinterpret_cast<char*>(&p->vRnscale_[11]), 2 * 4); // 8752-8759
|
||||
is.read(reinterpret_cast<char*>(&p->velDataTover_), 4); // 8744-8747
|
||||
is.read(reinterpret_cast<char*>(&p->widthDataTover_), 4); // 8748-8751
|
||||
is.read(reinterpret_cast<char*>(&p->vRnscale_[11]),
|
||||
static_cast<std::streamsize>(2 * 4)); // 8752-8759
|
||||
|
||||
is.seekg(4, std::ios_base::cur); // 8760-8763
|
||||
|
||||
|
|
@ -1468,6 +1471,8 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
|
||||
bytesRead += 9468;
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
p->lowerPreLimit_ = SwapFloat(p->lowerPreLimit_);
|
||||
p->azLat_ = SwapFloat(p->azLat_);
|
||||
p->upperPreLimit_ = SwapFloat(p->upperPreLimit_);
|
||||
|
|
@ -1507,84 +1512,87 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
SwapArray(p->atmos_);
|
||||
SwapArray(p->elIndex_);
|
||||
|
||||
p->tfreqMhz_ = ntohl(p->tfreqMhz_);
|
||||
p->baseDataTcn_ = SwapFloat(p->baseDataTcn_);
|
||||
p->reflDataTover_ = SwapFloat(p->reflDataTover_);
|
||||
p->tarHDbz0Lp_ = SwapFloat(p->tarHDbz0Lp_);
|
||||
p->tarVDbz0Lp_ = SwapFloat(p->tarVDbz0Lp_);
|
||||
p->initPhiDp_ = ntohl(p->initPhiDp_);
|
||||
p->normInitPhiDp_ = ntohl(p->normInitPhiDp_);
|
||||
p->lxLp_ = SwapFloat(p->lxLp_);
|
||||
p->lxSp_ = SwapFloat(p->lxSp_);
|
||||
p->meteorParam_ = SwapFloat(p->meteorParam_);
|
||||
p->antennaGain_ = SwapFloat(p->antennaGain_);
|
||||
p->velDegradLimit_ = SwapFloat(p->velDegradLimit_);
|
||||
p->wthDegradLimit_ = SwapFloat(p->wthDegradLimit_);
|
||||
p->hNoisetempDgradLimit_ = SwapFloat(p->hNoisetempDgradLimit_);
|
||||
p->hMinNoisetemp_ = ntohl(p->hMinNoisetemp_);
|
||||
p->vNoisetempDgradLimit_ = SwapFloat(p->vNoisetempDgradLimit_);
|
||||
p->vMinNoisetemp_ = ntohl(p->vMinNoisetemp_);
|
||||
p->klyDegradeLimit_ = SwapFloat(p->klyDegradeLimit_);
|
||||
p->tsCoho_ = SwapFloat(p->tsCoho_);
|
||||
p->hTsCw_ = SwapFloat(p->hTsCw_);
|
||||
p->tsStalo_ = SwapFloat(p->tsStalo_);
|
||||
p->ameHNoiseEnr_ = SwapFloat(p->ameHNoiseEnr_);
|
||||
p->xmtrPeakPwrHighLimit_ = SwapFloat(p->xmtrPeakPwrHighLimit_);
|
||||
p->xmtrPeakPwrLowLimit_ = SwapFloat(p->xmtrPeakPwrLowLimit_);
|
||||
p->hDbz0DeltaLimit_ = SwapFloat(p->hDbz0DeltaLimit_);
|
||||
p->threshold1_ = SwapFloat(p->threshold1_);
|
||||
p->threshold2_ = SwapFloat(p->threshold2_);
|
||||
p->clutSuppDgradLim_ = SwapFloat(p->clutSuppDgradLim_);
|
||||
p->range0Value_ = SwapFloat(p->range0Value_);
|
||||
p->xmtrPwrMtrScale_ = SwapFloat(p->xmtrPwrMtrScale_);
|
||||
p->vDbz0DeltaLimit_ = SwapFloat(p->vDbz0DeltaLimit_);
|
||||
p->tarHDbz0Sp_ = SwapFloat(p->tarHDbz0Sp_);
|
||||
p->tarVDbz0Sp_ = SwapFloat(p->tarVDbz0Sp_);
|
||||
p->deltaprf_ = ntohl(p->deltaprf_);
|
||||
p->tauSp_ = ntohl(p->tauSp_);
|
||||
p->tauLp_ = ntohl(p->tauLp_);
|
||||
p->ncDeadValue_ = ntohl(p->ncDeadValue_);
|
||||
p->tauRfSp_ = ntohl(p->tauRfSp_);
|
||||
p->tauRfLp_ = ntohl(p->tauRfLp_);
|
||||
p->seg1Lim_ = SwapFloat(p->seg1Lim_);
|
||||
p->slatsec_ = SwapFloat(p->slatsec_);
|
||||
p->slonsec_ = SwapFloat(p->slonsec_);
|
||||
p->slatdeg_ = ntohl(p->slatdeg_);
|
||||
p->slatmin_ = ntohl(p->slatmin_);
|
||||
p->slondeg_ = ntohl(p->slondeg_);
|
||||
p->slonmin_ = ntohl(p->slonmin_);
|
||||
p->digRcvrClockFreq_ = SwapDouble(p->digRcvrClockFreq_);
|
||||
p->cohoFreq_ = SwapDouble(p->cohoFreq_);
|
||||
p->azCorrectionFactor_ = SwapFloat(p->azCorrectionFactor_);
|
||||
p->elCorrectionFactor_ = SwapFloat(p->elCorrectionFactor_);
|
||||
p->antManualSetup_.ielmin_ = ntohl(p->antManualSetup_.ielmin_);
|
||||
p->antManualSetup_.ielmax_ = ntohl(p->antManualSetup_.ielmax_);
|
||||
p->tfreqMhz_ = ntohl(p->tfreqMhz_);
|
||||
p->baseDataTcn_ = SwapFloat(p->baseDataTcn_);
|
||||
p->reflDataTover_ = SwapFloat(p->reflDataTover_);
|
||||
p->tarHDbz0Lp_ = SwapFloat(p->tarHDbz0Lp_);
|
||||
p->tarVDbz0Lp_ = SwapFloat(p->tarVDbz0Lp_);
|
||||
p->initPhiDp_ = ntohl(p->initPhiDp_);
|
||||
p->normInitPhiDp_ = ntohl(p->normInitPhiDp_);
|
||||
p->lxLp_ = SwapFloat(p->lxLp_);
|
||||
p->lxSp_ = SwapFloat(p->lxSp_);
|
||||
p->meteorParam_ = SwapFloat(p->meteorParam_);
|
||||
p->antennaGain_ = SwapFloat(p->antennaGain_);
|
||||
p->velDegradLimit_ = SwapFloat(p->velDegradLimit_);
|
||||
p->wthDegradLimit_ = SwapFloat(p->wthDegradLimit_);
|
||||
p->hNoisetempDgradLimit_ = SwapFloat(p->hNoisetempDgradLimit_);
|
||||
p->hMinNoisetemp_ = ntohl(p->hMinNoisetemp_);
|
||||
p->vNoisetempDgradLimit_ = SwapFloat(p->vNoisetempDgradLimit_);
|
||||
p->vMinNoisetemp_ = ntohl(p->vMinNoisetemp_);
|
||||
p->klyDegradeLimit_ = SwapFloat(p->klyDegradeLimit_);
|
||||
p->tsCoho_ = SwapFloat(p->tsCoho_);
|
||||
p->hTsCw_ = SwapFloat(p->hTsCw_);
|
||||
p->tsStalo_ = SwapFloat(p->tsStalo_);
|
||||
p->ameHNoiseEnr_ = SwapFloat(p->ameHNoiseEnr_);
|
||||
p->xmtrPeakPwrHighLimit_ = SwapFloat(p->xmtrPeakPwrHighLimit_);
|
||||
p->xmtrPeakPwrLowLimit_ = SwapFloat(p->xmtrPeakPwrLowLimit_);
|
||||
p->hDbz0DeltaLimit_ = SwapFloat(p->hDbz0DeltaLimit_);
|
||||
p->threshold1_ = SwapFloat(p->threshold1_);
|
||||
p->threshold2_ = SwapFloat(p->threshold2_);
|
||||
p->clutSuppDgradLim_ = SwapFloat(p->clutSuppDgradLim_);
|
||||
p->range0Value_ = SwapFloat(p->range0Value_);
|
||||
p->xmtrPwrMtrScale_ = SwapFloat(p->xmtrPwrMtrScale_);
|
||||
p->vDbz0DeltaLimit_ = SwapFloat(p->vDbz0DeltaLimit_);
|
||||
p->tarHDbz0Sp_ = SwapFloat(p->tarHDbz0Sp_);
|
||||
p->tarVDbz0Sp_ = SwapFloat(p->tarVDbz0Sp_);
|
||||
p->deltaprf_ = ntohl(p->deltaprf_);
|
||||
p->tauSp_ = ntohl(p->tauSp_);
|
||||
p->tauLp_ = ntohl(p->tauLp_);
|
||||
p->ncDeadValue_ = ntohl(p->ncDeadValue_);
|
||||
p->tauRfSp_ = ntohl(p->tauRfSp_);
|
||||
p->tauRfLp_ = ntohl(p->tauRfLp_);
|
||||
p->seg1Lim_ = SwapFloat(p->seg1Lim_);
|
||||
p->slatsec_ = SwapFloat(p->slatsec_);
|
||||
p->slonsec_ = SwapFloat(p->slonsec_);
|
||||
p->slatdeg_ = ntohl(p->slatdeg_);
|
||||
p->slatmin_ = ntohl(p->slatmin_);
|
||||
p->slondeg_ = ntohl(p->slondeg_);
|
||||
p->slonmin_ = ntohl(p->slonmin_);
|
||||
p->digRcvrClockFreq_ = SwapDouble(p->digRcvrClockFreq_);
|
||||
p->cohoFreq_ = SwapDouble(p->cohoFreq_);
|
||||
p->azCorrectionFactor_ = SwapFloat(p->azCorrectionFactor_);
|
||||
p->elCorrectionFactor_ = SwapFloat(p->elCorrectionFactor_);
|
||||
p->antManualSetup_.ielmin_ =
|
||||
static_cast<std::int32_t>(ntohl(p->antManualSetup_.ielmin_));
|
||||
p->antManualSetup_.ielmax_ =
|
||||
static_cast<std::int32_t>(ntohl(p->antManualSetup_.ielmax_));
|
||||
p->antManualSetup_.fazvelmax_ = ntohl(p->antManualSetup_.fazvelmax_);
|
||||
p->antManualSetup_.felvelmax_ = ntohl(p->antManualSetup_.felvelmax_);
|
||||
p->antManualSetup_.igndHgt_ = ntohl(p->antManualSetup_.igndHgt_);
|
||||
p->antManualSetup_.iradHgt_ = ntohl(p->antManualSetup_.iradHgt_);
|
||||
p->azPosSustainDrive_ = SwapFloat(p->azPosSustainDrive_);
|
||||
p->azNegSustainDrive_ = SwapFloat(p->azNegSustainDrive_);
|
||||
p->azNomPosDriveSlope_ = SwapFloat(p->azNomPosDriveSlope_);
|
||||
p->azNomNegDriveSlope_ = SwapFloat(p->azNomNegDriveSlope_);
|
||||
p->azFeedbackSlope_ = SwapFloat(p->azFeedbackSlope_);
|
||||
p->elPosSustainDrive_ = SwapFloat(p->elPosSustainDrive_);
|
||||
p->elNegSustainDrive_ = SwapFloat(p->elNegSustainDrive_);
|
||||
p->elNomPosDriveSlope_ = SwapFloat(p->elNomPosDriveSlope_);
|
||||
p->elNomNegDriveSlope_ = SwapFloat(p->elNomNegDriveSlope_);
|
||||
p->elFeedbackSlope_ = SwapFloat(p->elFeedbackSlope_);
|
||||
p->elFirstSlope_ = SwapFloat(p->elFirstSlope_);
|
||||
p->elSecondSlope_ = SwapFloat(p->elSecondSlope_);
|
||||
p->elThirdSlope_ = SwapFloat(p->elThirdSlope_);
|
||||
p->elDroopPos_ = SwapFloat(p->elDroopPos_);
|
||||
p->elOffNeutralDrive_ = SwapFloat(p->elOffNeutralDrive_);
|
||||
p->azIntertia_ = SwapFloat(p->azIntertia_);
|
||||
p->elInertia_ = SwapFloat(p->elInertia_);
|
||||
p->azStowAngle_ = SwapFloat(p->azStowAngle_);
|
||||
p->elStowAngle_ = SwapFloat(p->elStowAngle_);
|
||||
p->azEncoderAlignment_ = SwapFloat(p->azEncoderAlignment_);
|
||||
p->elEncoderAlignment_ = SwapFloat(p->elEncoderAlignment_);
|
||||
p->rvp8nvIwaveguideLength_ = ntohl(p->rvp8nvIwaveguideLength_);
|
||||
p->antManualSetup_.igndHgt_ =
|
||||
static_cast<std::int32_t>(ntohl(p->antManualSetup_.igndHgt_));
|
||||
p->antManualSetup_.iradHgt_ = ntohl(p->antManualSetup_.iradHgt_);
|
||||
p->azPosSustainDrive_ = SwapFloat(p->azPosSustainDrive_);
|
||||
p->azNegSustainDrive_ = SwapFloat(p->azNegSustainDrive_);
|
||||
p->azNomPosDriveSlope_ = SwapFloat(p->azNomPosDriveSlope_);
|
||||
p->azNomNegDriveSlope_ = SwapFloat(p->azNomNegDriveSlope_);
|
||||
p->azFeedbackSlope_ = SwapFloat(p->azFeedbackSlope_);
|
||||
p->elPosSustainDrive_ = SwapFloat(p->elPosSustainDrive_);
|
||||
p->elNegSustainDrive_ = SwapFloat(p->elNegSustainDrive_);
|
||||
p->elNomPosDriveSlope_ = SwapFloat(p->elNomPosDriveSlope_);
|
||||
p->elNomNegDriveSlope_ = SwapFloat(p->elNomNegDriveSlope_);
|
||||
p->elFeedbackSlope_ = SwapFloat(p->elFeedbackSlope_);
|
||||
p->elFirstSlope_ = SwapFloat(p->elFirstSlope_);
|
||||
p->elSecondSlope_ = SwapFloat(p->elSecondSlope_);
|
||||
p->elThirdSlope_ = SwapFloat(p->elThirdSlope_);
|
||||
p->elDroopPos_ = SwapFloat(p->elDroopPos_);
|
||||
p->elOffNeutralDrive_ = SwapFloat(p->elOffNeutralDrive_);
|
||||
p->azIntertia_ = SwapFloat(p->azIntertia_);
|
||||
p->elInertia_ = SwapFloat(p->elInertia_);
|
||||
p->azStowAngle_ = SwapFloat(p->azStowAngle_);
|
||||
p->elStowAngle_ = SwapFloat(p->elStowAngle_);
|
||||
p->azEncoderAlignment_ = SwapFloat(p->azEncoderAlignment_);
|
||||
p->elEncoderAlignment_ = SwapFloat(p->elEncoderAlignment_);
|
||||
p->rvp8nvIwaveguideLength_ = ntohl(p->rvp8nvIwaveguideLength_);
|
||||
|
||||
SwapArray(p->vRnscale_);
|
||||
|
||||
|
|
@ -1660,6 +1668,4 @@ RdaAdaptationData::Create(Level2MessageHeader&& header, std::istream& is)
|
|||
return message;
|
||||
}
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
|
|
@ -1,209 +1,214 @@
|
|||
#include <scwx/wsr88d/rda/rda_status_data.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::wsr88d::rda::rda_status_data";
|
||||
static const auto logger_ = util::Logger::Create(logPrefix_);
|
||||
|
||||
class RdaStatusDataImpl
|
||||
class RdaStatusData::Impl
|
||||
{
|
||||
public:
|
||||
explicit RdaStatusDataImpl() = default;
|
||||
~RdaStatusDataImpl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
uint16_t rdaStatus_ {0};
|
||||
uint16_t operabilityStatus_ {0};
|
||||
uint16_t controlStatus_ {0};
|
||||
uint16_t auxiliaryPowerGeneratorState_ {0};
|
||||
uint16_t averageTransmitterPower_ {0};
|
||||
int16_t horizontalReflectivityCalibrationCorrection_ {0};
|
||||
uint16_t dataTransmissionEnabled_ {0};
|
||||
uint16_t volumeCoveragePatternNumber_ {0};
|
||||
uint16_t rdaControlAuthorization_ {0};
|
||||
uint16_t rdaBuildNumber_ {0};
|
||||
uint16_t operationalMode_ {0};
|
||||
uint16_t superResolutionStatus_ {0};
|
||||
uint16_t clutterMitigationDecisionStatus_ {0};
|
||||
uint16_t rdaScanAndDataFlags_ {0};
|
||||
uint16_t rdaAlarmSummary_ {0};
|
||||
uint16_t commandAcknowledgement_ {0};
|
||||
uint16_t channelControlStatus_ {0};
|
||||
uint16_t spotBlankingStatus_ {0};
|
||||
uint16_t bypassMapGenerationDate_ {0};
|
||||
uint16_t bypassMapGenerationTime_ {0};
|
||||
uint16_t clutterFilterMapGenerationDate_ {0};
|
||||
uint16_t clutterFilterMapGenerationTime_ {0};
|
||||
int16_t verticalReflectivityCalibrationCorrection_ {0};
|
||||
uint16_t transitionPowerSourceStatus_ {0};
|
||||
uint16_t rmsControlStatus_ {0};
|
||||
uint16_t performanceCheckStatus_ {0};
|
||||
std::array<uint16_t, 14> alarmCodes_ {0};
|
||||
uint16_t signalProcessingOptions_ {0};
|
||||
uint16_t downloadedPatternNumber_ {0};
|
||||
uint16_t statusVersion_ {0};
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t rdaStatus_ {0};
|
||||
std::uint16_t operabilityStatus_ {0};
|
||||
std::uint16_t controlStatus_ {0};
|
||||
std::uint16_t auxiliaryPowerGeneratorState_ {0};
|
||||
std::uint16_t averageTransmitterPower_ {0};
|
||||
std::int16_t horizontalReflectivityCalibrationCorrection_ {0};
|
||||
std::uint16_t dataTransmissionEnabled_ {0};
|
||||
std::uint16_t volumeCoveragePatternNumber_ {0};
|
||||
std::uint16_t rdaControlAuthorization_ {0};
|
||||
std::uint16_t rdaBuildNumber_ {0};
|
||||
std::uint16_t operationalMode_ {0};
|
||||
std::uint16_t superResolutionStatus_ {0};
|
||||
std::uint16_t clutterMitigationDecisionStatus_ {0};
|
||||
std::uint16_t rdaScanAndDataFlags_ {0};
|
||||
std::uint16_t rdaAlarmSummary_ {0};
|
||||
std::uint16_t commandAcknowledgement_ {0};
|
||||
std::uint16_t channelControlStatus_ {0};
|
||||
std::uint16_t spotBlankingStatus_ {0};
|
||||
std::uint16_t bypassMapGenerationDate_ {0};
|
||||
std::uint16_t bypassMapGenerationTime_ {0};
|
||||
std::uint16_t clutterFilterMapGenerationDate_ {0};
|
||||
std::uint16_t clutterFilterMapGenerationTime_ {0};
|
||||
std::int16_t verticalReflectivityCalibrationCorrection_ {0};
|
||||
std::uint16_t transitionPowerSourceStatus_ {0};
|
||||
std::uint16_t rmsControlStatus_ {0};
|
||||
std::uint16_t performanceCheckStatus_ {0};
|
||||
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
std::array<std::uint16_t, 14> alarmCodes_ {0};
|
||||
|
||||
std::uint16_t signalProcessingOptions_ {0};
|
||||
std::uint16_t downloadedPatternNumber_ {0};
|
||||
std::uint16_t statusVersion_ {0};
|
||||
};
|
||||
|
||||
RdaStatusData::RdaStatusData() :
|
||||
Level2Message(), p(std::make_unique<RdaStatusDataImpl>())
|
||||
{
|
||||
}
|
||||
RdaStatusData::RdaStatusData() : Level2Message(), p(std::make_unique<Impl>()) {}
|
||||
RdaStatusData::~RdaStatusData() = default;
|
||||
|
||||
RdaStatusData::RdaStatusData(RdaStatusData&&) noexcept = default;
|
||||
RdaStatusData& RdaStatusData::operator=(RdaStatusData&&) noexcept = default;
|
||||
|
||||
uint16_t RdaStatusData::rda_status() const
|
||||
std::uint16_t RdaStatusData::rda_status() const
|
||||
{
|
||||
return p->rdaStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::operability_status() const
|
||||
std::uint16_t RdaStatusData::operability_status() const
|
||||
{
|
||||
return p->operabilityStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::control_status() const
|
||||
std::uint16_t RdaStatusData::control_status() const
|
||||
{
|
||||
return p->controlStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::auxiliary_power_generator_state() const
|
||||
std::uint16_t RdaStatusData::auxiliary_power_generator_state() const
|
||||
{
|
||||
return p->auxiliaryPowerGeneratorState_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::average_transmitter_power() const
|
||||
std::uint16_t RdaStatusData::average_transmitter_power() const
|
||||
{
|
||||
return p->averageTransmitterPower_;
|
||||
}
|
||||
|
||||
float RdaStatusData::horizontal_reflectivity_calibration_correction() const
|
||||
{
|
||||
return p->horizontalReflectivityCalibrationCorrection_ * 0.01f;
|
||||
constexpr float kScale_ = 0.01f;
|
||||
return static_cast<float>(p->horizontalReflectivityCalibrationCorrection_) *
|
||||
kScale_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::data_transmission_enabled() const
|
||||
std::uint16_t RdaStatusData::data_transmission_enabled() const
|
||||
{
|
||||
return p->dataTransmissionEnabled_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::volume_coverage_pattern_number() const
|
||||
std::uint16_t RdaStatusData::volume_coverage_pattern_number() const
|
||||
{
|
||||
return p->volumeCoveragePatternNumber_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_control_authorization() const
|
||||
std::uint16_t RdaStatusData::rda_control_authorization() const
|
||||
{
|
||||
return p->rdaControlAuthorization_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_build_number() const
|
||||
std::uint16_t RdaStatusData::rda_build_number() const
|
||||
{
|
||||
return p->rdaBuildNumber_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::operational_mode() const
|
||||
std::uint16_t RdaStatusData::operational_mode() const
|
||||
{
|
||||
return p->operationalMode_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::super_resolution_status() const
|
||||
std::uint16_t RdaStatusData::super_resolution_status() const
|
||||
{
|
||||
return p->superResolutionStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::clutter_mitigation_decision_status() const
|
||||
std::uint16_t RdaStatusData::clutter_mitigation_decision_status() const
|
||||
{
|
||||
return p->clutterMitigationDecisionStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_scan_and_data_flags() const
|
||||
std::uint16_t RdaStatusData::rda_scan_and_data_flags() const
|
||||
{
|
||||
return p->rdaScanAndDataFlags_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_alarm_summary() const
|
||||
std::uint16_t RdaStatusData::rda_alarm_summary() const
|
||||
{
|
||||
return p->rdaAlarmSummary_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::command_acknowledgement() const
|
||||
std::uint16_t RdaStatusData::command_acknowledgement() const
|
||||
{
|
||||
return p->commandAcknowledgement_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::channel_control_status() const
|
||||
std::uint16_t RdaStatusData::channel_control_status() const
|
||||
{
|
||||
return p->channelControlStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::spot_blanking_status() const
|
||||
std::uint16_t RdaStatusData::spot_blanking_status() const
|
||||
{
|
||||
return p->spotBlankingStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::bypass_map_generation_date() const
|
||||
std::uint16_t RdaStatusData::bypass_map_generation_date() const
|
||||
{
|
||||
return p->bypassMapGenerationDate_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::bypass_map_generation_time() const
|
||||
std::uint16_t RdaStatusData::bypass_map_generation_time() const
|
||||
{
|
||||
return p->bypassMapGenerationTime_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::clutter_filter_map_generation_date() const
|
||||
std::uint16_t RdaStatusData::clutter_filter_map_generation_date() const
|
||||
{
|
||||
return p->clutterFilterMapGenerationDate_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::clutter_filter_map_generation_time() const
|
||||
std::uint16_t RdaStatusData::clutter_filter_map_generation_time() const
|
||||
{
|
||||
return p->clutterFilterMapGenerationTime_;
|
||||
}
|
||||
|
||||
float RdaStatusData::vertical_reflectivity_calibration_correction() const
|
||||
{
|
||||
return p->verticalReflectivityCalibrationCorrection_ * 0.01f;
|
||||
constexpr float kScale_ = 0.01f;
|
||||
return static_cast<float>(p->verticalReflectivityCalibrationCorrection_) *
|
||||
kScale_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::transition_power_source_status() const
|
||||
std::uint16_t RdaStatusData::transition_power_source_status() const
|
||||
{
|
||||
return p->transitionPowerSourceStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rms_control_status() const
|
||||
std::uint16_t RdaStatusData::rms_control_status() const
|
||||
{
|
||||
return p->rmsControlStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::performance_check_status() const
|
||||
std::uint16_t RdaStatusData::performance_check_status() const
|
||||
{
|
||||
return p->performanceCheckStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::alarm_codes(unsigned i) const
|
||||
std::uint16_t RdaStatusData::alarm_codes(unsigned i) const
|
||||
{
|
||||
return p->alarmCodes_[i];
|
||||
return p->alarmCodes_.at(i);
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::signal_processing_options() const
|
||||
std::uint16_t RdaStatusData::signal_processing_options() const
|
||||
{
|
||||
return p->signalProcessingOptions_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::downloaded_pattern_number() const
|
||||
std::uint16_t RdaStatusData::downloaded_pattern_number() const
|
||||
{
|
||||
return p->downloadedPatternNumber_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::status_version() const
|
||||
std::uint16_t RdaStatusData::status_version() const
|
||||
{
|
||||
return p->statusVersion_;
|
||||
}
|
||||
|
|
@ -215,6 +220,7 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
bool messageValid = true;
|
||||
size_t bytesRead = 0;
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers): Readability
|
||||
is.read(reinterpret_cast<char*>(&p->rdaStatus_), 2); // 1
|
||||
is.read(reinterpret_cast<char*>(&p->operabilityStatus_), 2); // 2
|
||||
is.read(reinterpret_cast<char*>(&p->controlStatus_), 2); // 3
|
||||
|
|
@ -249,7 +255,7 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->rmsControlStatus_), 2); // 25
|
||||
is.read(reinterpret_cast<char*>(&p->performanceCheckStatus_), 2); // 26
|
||||
is.read(reinterpret_cast<char*>(&p->alarmCodes_),
|
||||
p->alarmCodes_.size() * 2); // 27-40
|
||||
static_cast<std::streamsize>(p->alarmCodes_.size() * 2)); // 27-40
|
||||
bytesRead += 80;
|
||||
|
||||
p->rdaStatus_ = ntohs(p->rdaStatus_);
|
||||
|
|
@ -257,8 +263,8 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
p->controlStatus_ = ntohs(p->controlStatus_);
|
||||
p->auxiliaryPowerGeneratorState_ = ntohs(p->auxiliaryPowerGeneratorState_);
|
||||
p->averageTransmitterPower_ = ntohs(p->averageTransmitterPower_);
|
||||
p->horizontalReflectivityCalibrationCorrection_ =
|
||||
ntohs(p->horizontalReflectivityCalibrationCorrection_);
|
||||
p->horizontalReflectivityCalibrationCorrection_ = static_cast<std::int16_t>(
|
||||
ntohs(p->horizontalReflectivityCalibrationCorrection_));
|
||||
p->dataTransmissionEnabled_ = ntohs(p->dataTransmissionEnabled_);
|
||||
p->volumeCoveragePatternNumber_ = ntohs(p->volumeCoveragePatternNumber_);
|
||||
p->rdaControlAuthorization_ = ntohs(p->rdaControlAuthorization_);
|
||||
|
|
@ -278,15 +284,16 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
ntohs(p->clutterFilterMapGenerationDate_);
|
||||
p->clutterFilterMapGenerationTime_ =
|
||||
ntohs(p->clutterFilterMapGenerationTime_);
|
||||
p->verticalReflectivityCalibrationCorrection_ =
|
||||
ntohs(p->verticalReflectivityCalibrationCorrection_);
|
||||
p->verticalReflectivityCalibrationCorrection_ = static_cast<std::int16_t>(
|
||||
ntohs(p->verticalReflectivityCalibrationCorrection_));
|
||||
p->transitionPowerSourceStatus_ = ntohs(p->transitionPowerSourceStatus_);
|
||||
p->rmsControlStatus_ = ntohs(p->rmsControlStatus_);
|
||||
p->performanceCheckStatus_ = ntohs(p->performanceCheckStatus_);
|
||||
SwapArray(p->alarmCodes_);
|
||||
|
||||
// RDA Build 18.0 increased the size of the message from 80 to 120 bytes
|
||||
if (header().message_size() * 2 > Level2MessageHeader::SIZE + 80)
|
||||
if (static_cast<std::size_t>(header().message_size()) * 2 >
|
||||
Level2MessageHeader::SIZE + 80)
|
||||
{
|
||||
is.read(reinterpret_cast<char*>(&p->signalProcessingOptions_), 2); // 41
|
||||
is.seekg(34, std::ios_base::cur); // 42-58
|
||||
|
|
@ -297,6 +304,8 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
p->signalProcessingOptions_ = ntohs(p->signalProcessingOptions_);
|
||||
p->statusVersion_ = ntohs(p->statusVersion_);
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (!ValidateMessage(is, bytesRead))
|
||||
{
|
||||
|
|
@ -320,6 +329,4 @@ RdaStatusData::Create(Level2MessageHeader&& header, std::istream& is)
|
|||
return message;
|
||||
}
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue