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; float range_scale_factor() const;
uint16_t number_of_radials() 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; size_t data_size() const override;
bool Parse(std::istream& is) override; bool Parse(std::istream& is) override;

View file

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

View file

@ -30,7 +30,7 @@ public:
int16_t block_divider() const; int16_t block_divider() const;
uint16_t number_of_layers() 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; size_t data_size() const override;

View file

@ -108,6 +108,22 @@ size_t DigitalRadialDataArrayPacket::data_size() const
return p->dataSize_; 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 DigitalRadialDataArrayPacket::Parse(std::istream& is)
{ {
bool blockValid = true; bool blockValid = true;
@ -143,6 +159,13 @@ bool DigitalRadialDataArrayPacket::Parse(std::istream& is)
<< logPrefix_ << "Invalid packet code: " << p->packetCode_; << logPrefix_ << "Invalid packet code: " << p->packetCode_;
blockValid = false; 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) if (p->numberOfRangeBins_ < 0 || p->numberOfRangeBins_ > 1840)
{ {
BOOST_LOG_TRIVIAL(warning) BOOST_LOG_TRIVIAL(warning)

View file

@ -104,14 +104,14 @@ int16_t ProductDescriptionBlock::block_divider() const
return p->blockDivider_; 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 int16_t ProductDescriptionBlock::height_of_radar() const

View file

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