Rename DigitalRadarData to DigitalRadarDataGeneric to align with message type 31 name

This commit is contained in:
Dan Paulat 2024-01-18 23:50:46 -06:00
parent 6f73c19be8
commit bfd7963d4c
6 changed files with 79 additions and 73 deletions

View file

@ -1,7 +1,7 @@
#pragma once #pragma once
#include <scwx/wsr88d/nexrad_file.hpp> #include <scwx/wsr88d/nexrad_file.hpp>
#include <scwx/wsr88d/rda/digital_radar_data.hpp> #include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
#include <scwx/wsr88d/rda/volume_coverage_pattern_data.hpp> #include <scwx/wsr88d/rda/volume_coverage_pattern_data.hpp>
#include <chrono> #include <chrono>

View file

@ -34,10 +34,11 @@ class MomentDataBlockImpl;
class RadialDataBlockImpl; class RadialDataBlockImpl;
class VolumeDataBlockImpl; class VolumeDataBlockImpl;
class DigitalRadarData; class DigitalRadarDataGeneric;
class DigitalRadarDataImpl; class DigitalRadarDataGenericImpl;
typedef std::map<uint16_t, std::shared_ptr<DigitalRadarData>> ElevationScan; typedef std::map<uint16_t, std::shared_ptr<DigitalRadarDataGeneric>>
ElevationScan;
class DataBlock class DataBlock
{ {
@ -170,17 +171,17 @@ private:
bool Parse(std::istream& is); bool Parse(std::istream& is);
}; };
class DigitalRadarData : public Level2Message class DigitalRadarDataGeneric : public Level2Message
{ {
public: public:
explicit DigitalRadarData(); explicit DigitalRadarDataGeneric();
~DigitalRadarData(); ~DigitalRadarDataGeneric();
DigitalRadarData(const DigitalRadarData&) = delete; DigitalRadarDataGeneric(const DigitalRadarDataGeneric&) = delete;
DigitalRadarData& operator=(const DigitalRadarData&) = delete; DigitalRadarDataGeneric& operator=(const DigitalRadarDataGeneric&) = delete;
DigitalRadarData(DigitalRadarData&&) noexcept; DigitalRadarDataGeneric(DigitalRadarDataGeneric&&) noexcept;
DigitalRadarData& operator=(DigitalRadarData&&) noexcept; DigitalRadarDataGeneric& operator=(DigitalRadarDataGeneric&&) noexcept;
std::string radar_identifier() const; std::string radar_identifier() const;
uint32_t collection_time() const; uint32_t collection_time() const;
@ -205,11 +206,11 @@ public:
bool Parse(std::istream& is); bool Parse(std::istream& is);
static std::shared_ptr<DigitalRadarData> Create(Level2MessageHeader&& header, static std::shared_ptr<DigitalRadarDataGeneric>
std::istream& is); Create(Level2MessageHeader&& header, std::istream& is);
private: private:
std::unique_ptr<DigitalRadarDataImpl> p; std::unique_ptr<DigitalRadarDataGenericImpl> p;
}; };
} // namespace rda } // namespace rda

View file

@ -58,7 +58,8 @@ public:
void IndexFile(); void IndexFile();
void ParseLDMRecords(); void ParseLDMRecords();
void ParseLDMRecord(std::istream& is); void ParseLDMRecord(std::istream& is);
void ProcessRadarData(std::shared_ptr<rda::DigitalRadarData> message); void ProcessRadarData(
const std::shared_ptr<rda::DigitalRadarDataGeneric>& message);
std::string tapeFilename_; std::string tapeFilename_;
std::string extensionNumber_; std::string extensionNumber_;
@ -108,7 +109,7 @@ std::chrono::system_clock::time_point Ar2vFile::end_time() const
if (p->radarData_.size() > 0) if (p->radarData_.size() > 0)
{ {
std::shared_ptr<rda::DigitalRadarData> lastRadial = std::shared_ptr<rda::DigitalRadarDataGeneric> lastRadial =
p->radarData_.crbegin()->second->crbegin()->second; p->radarData_.crbegin()->second->crbegin()->second;
endTime = util::TimePoint(lastRadial->modified_julian_date(), endTime = util::TimePoint(lastRadial->modified_julian_date(),
@ -389,7 +390,7 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr<rda::Level2Message>& message)
case static_cast<uint8_t>(rda::MessageId::DigitalRadarData): case static_cast<uint8_t>(rda::MessageId::DigitalRadarData):
ProcessRadarData( ProcessRadarData(
std::static_pointer_cast<rda::DigitalRadarData>(message)); std::static_pointer_cast<rda::DigitalRadarDataGeneric>(message));
break; break;
default: default:
@ -398,7 +399,7 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr<rda::Level2Message>& message)
} }
void Ar2vFileImpl::ProcessRadarData( void Ar2vFileImpl::ProcessRadarData(
std::shared_ptr<rda::DigitalRadarData> message) const std::shared_ptr<rda::DigitalRadarDataGeneric>& message)
{ {
uint16_t azimuthIndex = message->azimuth_number() - 1; uint16_t azimuthIndex = message->azimuth_number() - 1;
uint16_t elevationIndex = message->elevation_number() - 1; uint16_t elevationIndex = message->elevation_number() - 1;
@ -421,14 +422,14 @@ void Ar2vFileImpl::IndexFile()
return; return;
} }
for (auto elevationCut : radarData_) for (auto& elevationCut : radarData_)
{ {
uint16_t elevationAngle = uint16_t elevationAngle =
vcpData_->elevation_angle_raw(elevationCut.first); vcpData_->elevation_angle_raw(elevationCut.first);
rda::WaveformType waveformType = rda::WaveformType waveformType =
vcpData_->waveform_type(elevationCut.first); vcpData_->waveform_type(elevationCut.first);
std::shared_ptr<rda::DigitalRadarData> radial0 = std::shared_ptr<rda::DigitalRadarDataGeneric>& radial0 =
(*elevationCut.second)[0]; (*elevationCut.second)[0];
if (radial0 == nullptr) if (radial0 == nullptr)

View file

@ -1,4 +1,4 @@
#include <scwx/wsr88d/rda/digital_radar_data.hpp> #include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
namespace scwx namespace scwx
@ -8,7 +8,8 @@ namespace wsr88d
namespace rda namespace rda
{ {
static const std::string logPrefix_ = "scwx::wsr88d::rda::digital_radar_data"; static const std::string logPrefix_ =
"scwx::wsr88d::rda::digital_radar_data_generic";
static const auto logger_ = util::Logger::Create(logPrefix_); static const auto logger_ = util::Logger::Create(logPrefix_);
static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ { static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ {
@ -493,10 +494,10 @@ bool RadialDataBlock::Parse(std::istream& is)
return dataBlockValid; return dataBlockValid;
} }
class DigitalRadarDataImpl class DigitalRadarDataGenericImpl
{ {
public: public:
explicit DigitalRadarDataImpl() : explicit DigitalRadarDataGenericImpl() :
radarIdentifier_ {}, radarIdentifier_ {},
collectionTime_ {0}, collectionTime_ {0},
modifiedJulianDate_ {0}, modifiedJulianDate_ {0},
@ -517,7 +518,7 @@ public:
elevationDataBlock_ {nullptr}, elevationDataBlock_ {nullptr},
radialDataBlock_ {nullptr}, radialDataBlock_ {nullptr},
momentDataBlock_ {} {}; momentDataBlock_ {} {};
~DigitalRadarDataImpl() = default; ~DigitalRadarDataGenericImpl() = default;
std::string radarIdentifier_; std::string radarIdentifier_;
uint32_t collectionTime_; uint32_t collectionTime_;
@ -543,109 +544,112 @@ public:
momentDataBlock_; momentDataBlock_;
}; };
DigitalRadarData::DigitalRadarData() : DigitalRadarDataGeneric::DigitalRadarDataGeneric() :
Level2Message(), p(std::make_unique<DigitalRadarDataImpl>()) Level2Message(), p(std::make_unique<DigitalRadarDataGenericImpl>())
{ {
} }
DigitalRadarData::~DigitalRadarData() = default; DigitalRadarDataGeneric::~DigitalRadarDataGeneric() = default;
DigitalRadarData::DigitalRadarData(DigitalRadarData&&) noexcept = default; DigitalRadarDataGeneric::DigitalRadarDataGeneric(
DigitalRadarData& DigitalRadarDataGeneric&&) noexcept = default;
DigitalRadarData::operator=(DigitalRadarData&&) noexcept = default; DigitalRadarDataGeneric& DigitalRadarDataGeneric::operator=(
DigitalRadarDataGeneric&&) noexcept = default;
std::string DigitalRadarData::radar_identifier() const std::string DigitalRadarDataGeneric::radar_identifier() const
{ {
return p->radarIdentifier_; return p->radarIdentifier_;
} }
uint32_t DigitalRadarData::collection_time() const uint32_t DigitalRadarDataGeneric::collection_time() const
{ {
return p->collectionTime_; return p->collectionTime_;
} }
uint16_t DigitalRadarData::modified_julian_date() const uint16_t DigitalRadarDataGeneric::modified_julian_date() const
{ {
return p->modifiedJulianDate_; return p->modifiedJulianDate_;
} }
uint16_t DigitalRadarData::azimuth_number() const uint16_t DigitalRadarDataGeneric::azimuth_number() const
{ {
return p->azimuthNumber_; return p->azimuthNumber_;
} }
float DigitalRadarData::azimuth_angle() const float DigitalRadarDataGeneric::azimuth_angle() const
{ {
return p->azimuthAngle_; return p->azimuthAngle_;
} }
uint8_t DigitalRadarData::compression_indicator() const uint8_t DigitalRadarDataGeneric::compression_indicator() const
{ {
return p->compressionIndicator_; return p->compressionIndicator_;
} }
uint16_t DigitalRadarData::radial_length() const uint16_t DigitalRadarDataGeneric::radial_length() const
{ {
return p->radialLength_; return p->radialLength_;
} }
uint8_t DigitalRadarData::azimuth_resolution_spacing() const uint8_t DigitalRadarDataGeneric::azimuth_resolution_spacing() const
{ {
return p->azimuthResolutionSpacing_; return p->azimuthResolutionSpacing_;
} }
uint8_t DigitalRadarData::radial_status() const uint8_t DigitalRadarDataGeneric::radial_status() const
{ {
return p->radialStatus_; return p->radialStatus_;
} }
uint8_t DigitalRadarData::elevation_number() const uint8_t DigitalRadarDataGeneric::elevation_number() const
{ {
return p->elevationNumber_; return p->elevationNumber_;
} }
uint8_t DigitalRadarData::cut_sector_number() const uint8_t DigitalRadarDataGeneric::cut_sector_number() const
{ {
return p->cutSectorNumber_; return p->cutSectorNumber_;
} }
float DigitalRadarData::elevation_angle() const float DigitalRadarDataGeneric::elevation_angle() const
{ {
return p->elevationAngle_; return p->elevationAngle_;
} }
uint8_t DigitalRadarData::radial_spot_blanking_status() const uint8_t DigitalRadarDataGeneric::radial_spot_blanking_status() const
{ {
return p->radialSpotBlankingStatus_; return p->radialSpotBlankingStatus_;
} }
uint8_t DigitalRadarData::azimuth_indexing_mode() const uint8_t DigitalRadarDataGeneric::azimuth_indexing_mode() const
{ {
return p->azimuthIndexingMode_; return p->azimuthIndexingMode_;
} }
uint16_t DigitalRadarData::data_block_count() const uint16_t DigitalRadarDataGeneric::data_block_count() const
{ {
return p->dataBlockCount_; return p->dataBlockCount_;
} }
std::shared_ptr<ElevationDataBlock> std::shared_ptr<ElevationDataBlock>
DigitalRadarData::elevation_data_block() const DigitalRadarDataGeneric::elevation_data_block() const
{ {
return p->elevationDataBlock_; return p->elevationDataBlock_;
} }
std::shared_ptr<RadialDataBlock> DigitalRadarData::radial_data_block() const std::shared_ptr<RadialDataBlock>
DigitalRadarDataGeneric::radial_data_block() const
{ {
return p->radialDataBlock_; return p->radialDataBlock_;
} }
std::shared_ptr<VolumeDataBlock> DigitalRadarData::volume_data_block() const std::shared_ptr<VolumeDataBlock>
DigitalRadarDataGeneric::volume_data_block() const
{ {
return p->volumeDataBlock_; return p->volumeDataBlock_;
} }
std::shared_ptr<MomentDataBlock> std::shared_ptr<MomentDataBlock>
DigitalRadarData::moment_data_block(DataBlockType type) const DigitalRadarDataGeneric::moment_data_block(DataBlockType type) const
{ {
std::shared_ptr<MomentDataBlock> momentDataBlock = nullptr; std::shared_ptr<MomentDataBlock> momentDataBlock = nullptr;
@ -658,7 +662,7 @@ DigitalRadarData::moment_data_block(DataBlockType type) const
return momentDataBlock; return momentDataBlock;
} }
bool DigitalRadarData::Parse(std::istream& is) bool DigitalRadarDataGeneric::Parse(std::istream& is)
{ {
logger_->trace("Parsing Digital Radar Data (Message Type 31)"); logger_->trace("Parsing Digital Radar Data (Message Type 31)");
@ -784,11 +788,11 @@ bool DigitalRadarData::Parse(std::istream& is)
return messageValid; return messageValid;
} }
std::shared_ptr<DigitalRadarData> std::shared_ptr<DigitalRadarDataGeneric>
DigitalRadarData::Create(Level2MessageHeader&& header, std::istream& is) DigitalRadarDataGeneric::Create(Level2MessageHeader&& header, std::istream& is)
{ {
std::shared_ptr<DigitalRadarData> message = std::shared_ptr<DigitalRadarDataGeneric> message =
std::make_shared<DigitalRadarData>(); std::make_shared<DigitalRadarDataGeneric>();
message->set_header(std::move(header)); message->set_header(std::move(header));
if (!message->Parse(is)) if (!message->Parse(is))

View file

@ -4,7 +4,7 @@
#include <scwx/util/vectorbuf.hpp> #include <scwx/util/vectorbuf.hpp>
#include <scwx/wsr88d/rda/clutter_filter_bypass_map.hpp> #include <scwx/wsr88d/rda/clutter_filter_bypass_map.hpp>
#include <scwx/wsr88d/rda/clutter_filter_map.hpp> #include <scwx/wsr88d/rda/clutter_filter_map.hpp>
#include <scwx/wsr88d/rda/digital_radar_data.hpp> #include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
#include <scwx/wsr88d/rda/performance_maintenance_data.hpp> #include <scwx/wsr88d/rda/performance_maintenance_data.hpp>
#include <scwx/wsr88d/rda/rda_adaptation_data.hpp> #include <scwx/wsr88d/rda/rda_adaptation_data.hpp>
#include <scwx/wsr88d/rda/rda_status_data.hpp> #include <scwx/wsr88d/rda/rda_status_data.hpp>
@ -28,14 +28,14 @@ typedef std::function<std::shared_ptr<Level2Message>(Level2MessageHeader&&,
std::istream&)> std::istream&)>
CreateLevel2MessageFunction; CreateLevel2MessageFunction;
static const std::unordered_map<unsigned int, CreateLevel2MessageFunction> create_ { static const std::unordered_map<unsigned int, CreateLevel2MessageFunction>
{2, RdaStatusData::Create}, create_ {{2, RdaStatusData::Create},
{3, PerformanceMaintenanceData::Create}, {3, PerformanceMaintenanceData::Create},
{5, VolumeCoveragePatternData::Create}, {5, VolumeCoveragePatternData::Create},
{13, ClutterFilterBypassMap::Create}, {13, ClutterFilterBypassMap::Create},
{15, ClutterFilterMap::Create}, {15, ClutterFilterMap::Create},
{18, RdaAdaptationData::Create}, {18, RdaAdaptationData::Create},
{31, DigitalRadarData::Create}}; {31, DigitalRadarDataGeneric::Create}};
struct Level2MessageFactory::Context struct Level2MessageFactory::Context
{ {

View file

@ -102,7 +102,7 @@ set(SRC_WSR88D source/scwx/wsr88d/ar2v_file.cpp
source/scwx/wsr88d/wsr88d_types.cpp) source/scwx/wsr88d/wsr88d_types.cpp)
set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_bypass_map.hpp set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_bypass_map.hpp
include/scwx/wsr88d/rda/clutter_filter_map.hpp include/scwx/wsr88d/rda/clutter_filter_map.hpp
include/scwx/wsr88d/rda/digital_radar_data.hpp include/scwx/wsr88d/rda/digital_radar_data_generic.hpp
include/scwx/wsr88d/rda/level2_message.hpp include/scwx/wsr88d/rda/level2_message.hpp
include/scwx/wsr88d/rda/level2_message_factory.hpp include/scwx/wsr88d/rda/level2_message_factory.hpp
include/scwx/wsr88d/rda/level2_message_header.hpp include/scwx/wsr88d/rda/level2_message_header.hpp
@ -113,7 +113,7 @@ set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_bypass_map.hpp
include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp) include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp)
set(SRC_WSR88D_RDA source/scwx/wsr88d/rda/clutter_filter_bypass_map.cpp set(SRC_WSR88D_RDA source/scwx/wsr88d/rda/clutter_filter_bypass_map.cpp
source/scwx/wsr88d/rda/clutter_filter_map.cpp source/scwx/wsr88d/rda/clutter_filter_map.cpp
source/scwx/wsr88d/rda/digital_radar_data.cpp source/scwx/wsr88d/rda/digital_radar_data_generic.cpp
source/scwx/wsr88d/rda/level2_message.cpp source/scwx/wsr88d/rda/level2_message.cpp
source/scwx/wsr88d/rda/level2_message_factory.cpp source/scwx/wsr88d/rda/level2_message_factory.cpp
source/scwx/wsr88d/rda/level2_message_header.cpp source/scwx/wsr88d/rda/level2_message_header.cpp