Level 3 interface updates

This commit is contained in:
Dan Paulat 2022-04-06 00:06:18 -05:00
parent c7b5a659ab
commit 98531f6b56
6 changed files with 35 additions and 8 deletions

View file

@ -36,6 +36,10 @@ public:
float range_scale_factor() const;
uint16_t number_of_radials() const;
float start_angle(uint16_t r) const;
float delta_angle(uint16_t r) const;
const std::vector<uint8_t>& level(uint16_t r) const;
size_t data_size() const override;
bool Parse(std::istream& is) override;

View file

@ -27,8 +27,8 @@ public:
ProductDescriptionBlock& operator=(ProductDescriptionBlock&&) noexcept;
int16_t block_divider() const;
int32_t latitude_of_radar() const;
int32_t longitude_of_radar() const;
float latitude_of_radar() const;
float longitude_of_radar() const;
int16_t height_of_radar() const;
int16_t product_code() const;
uint16_t operational_mode() const;

View file

@ -30,7 +30,7 @@ public:
int16_t block_divider() const;
uint16_t number_of_layers() const;
const std::vector<std::shared_ptr<Packet>>& packet_list(uint16_t i) const;
std::vector<std::shared_ptr<Packet>> packet_list(uint16_t i) const;
size_t data_size() const override;

View file

@ -108,6 +108,22 @@ size_t DigitalRadialDataArrayPacket::data_size() const
return p->dataSize_;
}
float DigitalRadialDataArrayPacket::start_angle(uint16_t r) const
{
return p->radial_[r].startAngle_ * 0.1f;
}
float DigitalRadialDataArrayPacket::delta_angle(uint16_t r) const
{
return p->radial_[r].deltaAngle_ * 0.1f;
}
const std::vector<uint8_t>&
DigitalRadialDataArrayPacket::level(uint16_t r) const
{
return p->radial_[r].level_;
}
bool DigitalRadialDataArrayPacket::Parse(std::istream& is)
{
bool blockValid = true;
@ -143,6 +159,13 @@ bool DigitalRadialDataArrayPacket::Parse(std::istream& is)
<< logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false;
}
if (p->indexOfFirstRangeBin_ < 0 || p->indexOfFirstRangeBin_ > 230)
{
BOOST_LOG_TRIVIAL(warning)
<< logPrefix_
<< "Invalid index of first range bin: " << p->indexOfFirstRangeBin_;
blockValid = false;
}
if (p->numberOfRangeBins_ < 0 || p->numberOfRangeBins_ > 1840)
{
BOOST_LOG_TRIVIAL(warning)

View file

@ -104,14 +104,14 @@ int16_t ProductDescriptionBlock::block_divider() const
return p->blockDivider_;
}
int32_t ProductDescriptionBlock::latitude_of_radar() const
float ProductDescriptionBlock::latitude_of_radar() const
{
return p->latitudeOfRadar_;
return p->latitudeOfRadar_ * 0.001f;
}
int32_t ProductDescriptionBlock::longitude_of_radar() const
float ProductDescriptionBlock::longitude_of_radar() const
{
return p->longitudeOfRadar_;
return p->longitudeOfRadar_ * 0.001f;
}
int16_t ProductDescriptionBlock::height_of_radar() const

View file

@ -58,7 +58,7 @@ uint16_t ProductSymbologyBlock::number_of_layers() const
return p->numberOfLayers_;
}
const std::vector<std::shared_ptr<Packet>>&
std::vector<std::shared_ptr<Packet>>
ProductSymbologyBlock::packet_list(uint16_t i) const
{
return p->layerList_[i];