diff --git a/wxdata/include/scwx/wsr88d/ar2v_file.hpp b/wxdata/include/scwx/wsr88d/ar2v_file.hpp index 90702e8e..87628fd6 100644 --- a/wxdata/include/scwx/wsr88d/ar2v_file.hpp +++ b/wxdata/include/scwx/wsr88d/ar2v_file.hpp @@ -1,7 +1,7 @@ #pragma once #include -#include +#include #include #include @@ -26,7 +26,7 @@ public: explicit Ar2vFile(); ~Ar2vFile(); - Ar2vFile(const Ar2vFile&) = delete; + Ar2vFile(const Ar2vFile&) = delete; Ar2vFile& operator=(const Ar2vFile&) = delete; Ar2vFile(Ar2vFile&&) noexcept; diff --git a/wxdata/include/scwx/wsr88d/rda/digital_radar_data.hpp b/wxdata/include/scwx/wsr88d/rda/digital_radar_data_generic.hpp similarity index 82% rename from wxdata/include/scwx/wsr88d/rda/digital_radar_data.hpp rename to wxdata/include/scwx/wsr88d/rda/digital_radar_data_generic.hpp index 17a56b57..0e0afdc5 100644 --- a/wxdata/include/scwx/wsr88d/rda/digital_radar_data.hpp +++ b/wxdata/include/scwx/wsr88d/rda/digital_radar_data_generic.hpp @@ -34,10 +34,11 @@ class MomentDataBlockImpl; class RadialDataBlockImpl; class VolumeDataBlockImpl; -class DigitalRadarData; -class DigitalRadarDataImpl; +class DigitalRadarDataGeneric; +class DigitalRadarDataGenericImpl; -typedef std::map> ElevationScan; +typedef std::map> + ElevationScan; class DataBlock { @@ -46,7 +47,7 @@ protected: const std::string& dataName); ~DataBlock(); - DataBlock(const DataBlock&) = delete; + DataBlock(const DataBlock&) = delete; DataBlock& operator=(const DataBlock&) = delete; DataBlock(DataBlock&&) noexcept; @@ -63,7 +64,7 @@ public: const std::string& dataName); ~ElevationDataBlock(); - ElevationDataBlock(const ElevationDataBlock&) = delete; + ElevationDataBlock(const ElevationDataBlock&) = delete; ElevationDataBlock& operator=(const ElevationDataBlock&) = delete; ElevationDataBlock(ElevationDataBlock&&) noexcept; @@ -87,7 +88,7 @@ public: const std::string& dataName); ~MomentDataBlock(); - MomentDataBlock(const MomentDataBlock&) = delete; + MomentDataBlock(const MomentDataBlock&) = delete; MomentDataBlock& operator=(const MomentDataBlock&) = delete; MomentDataBlock(MomentDataBlock&&) noexcept; @@ -123,7 +124,7 @@ public: const std::string& dataName); ~RadialDataBlock(); - RadialDataBlock(const RadialDataBlock&) = delete; + RadialDataBlock(const RadialDataBlock&) = delete; RadialDataBlock& operator=(const RadialDataBlock&) = delete; RadialDataBlock(RadialDataBlock&&) noexcept; @@ -149,7 +150,7 @@ public: const std::string& dataName); ~VolumeDataBlock(); - VolumeDataBlock(const VolumeDataBlock&) = delete; + VolumeDataBlock(const VolumeDataBlock&) = delete; VolumeDataBlock& operator=(const VolumeDataBlock&) = delete; VolumeDataBlock(VolumeDataBlock&&) noexcept; @@ -170,17 +171,17 @@ private: bool Parse(std::istream& is); }; -class DigitalRadarData : public Level2Message +class DigitalRadarDataGeneric : public Level2Message { public: - explicit DigitalRadarData(); - ~DigitalRadarData(); + explicit DigitalRadarDataGeneric(); + ~DigitalRadarDataGeneric(); - DigitalRadarData(const DigitalRadarData&) = delete; - DigitalRadarData& operator=(const DigitalRadarData&) = delete; + DigitalRadarDataGeneric(const DigitalRadarDataGeneric&) = delete; + DigitalRadarDataGeneric& operator=(const DigitalRadarDataGeneric&) = delete; - DigitalRadarData(DigitalRadarData&&) noexcept; - DigitalRadarData& operator=(DigitalRadarData&&) noexcept; + DigitalRadarDataGeneric(DigitalRadarDataGeneric&&) noexcept; + DigitalRadarDataGeneric& operator=(DigitalRadarDataGeneric&&) noexcept; std::string radar_identifier() const; uint32_t collection_time() const; @@ -205,11 +206,11 @@ public: bool Parse(std::istream& is); - static std::shared_ptr Create(Level2MessageHeader&& header, - std::istream& is); + static std::shared_ptr + Create(Level2MessageHeader&& header, std::istream& is); private: - std::unique_ptr p; + std::unique_ptr p; }; } // namespace rda diff --git a/wxdata/source/scwx/wsr88d/ar2v_file.cpp b/wxdata/source/scwx/wsr88d/ar2v_file.cpp index b1790d6f..12763f83 100644 --- a/wxdata/source/scwx/wsr88d/ar2v_file.cpp +++ b/wxdata/source/scwx/wsr88d/ar2v_file.cpp @@ -58,7 +58,8 @@ public: void IndexFile(); void ParseLDMRecords(); void ParseLDMRecord(std::istream& is); - void ProcessRadarData(std::shared_ptr message); + void ProcessRadarData( + const std::shared_ptr& message); std::string tapeFilename_; std::string extensionNumber_; @@ -108,7 +109,7 @@ std::chrono::system_clock::time_point Ar2vFile::end_time() const if (p->radarData_.size() > 0) { - std::shared_ptr lastRadial = + std::shared_ptr lastRadial = p->radarData_.crbegin()->second->crbegin()->second; endTime = util::TimePoint(lastRadial->modified_julian_date(), @@ -389,7 +390,7 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr& message) case static_cast(rda::MessageId::DigitalRadarData): ProcessRadarData( - std::static_pointer_cast(message)); + std::static_pointer_cast(message)); break; default: @@ -398,7 +399,7 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr& message) } void Ar2vFileImpl::ProcessRadarData( - std::shared_ptr message) + const std::shared_ptr& message) { uint16_t azimuthIndex = message->azimuth_number() - 1; uint16_t elevationIndex = message->elevation_number() - 1; @@ -421,14 +422,14 @@ void Ar2vFileImpl::IndexFile() return; } - for (auto elevationCut : radarData_) + for (auto& elevationCut : radarData_) { uint16_t elevationAngle = vcpData_->elevation_angle_raw(elevationCut.first); rda::WaveformType waveformType = vcpData_->waveform_type(elevationCut.first); - std::shared_ptr radial0 = + std::shared_ptr& radial0 = (*elevationCut.second)[0]; if (radial0 == nullptr) diff --git a/wxdata/source/scwx/wsr88d/rda/digital_radar_data.cpp b/wxdata/source/scwx/wsr88d/rda/digital_radar_data_generic.cpp similarity index 90% rename from wxdata/source/scwx/wsr88d/rda/digital_radar_data.cpp rename to wxdata/source/scwx/wsr88d/rda/digital_radar_data_generic.cpp index b31955a7..bad25049 100644 --- a/wxdata/source/scwx/wsr88d/rda/digital_radar_data.cpp +++ b/wxdata/source/scwx/wsr88d/rda/digital_radar_data_generic.cpp @@ -1,4 +1,4 @@ -#include +#include #include namespace scwx @@ -8,8 +8,9 @@ namespace wsr88d namespace rda { -static const std::string logPrefix_ = "scwx::wsr88d::rda::digital_radar_data"; -static const auto logger_ = util::Logger::Create(logPrefix_); +static const std::string logPrefix_ = + "scwx::wsr88d::rda::digital_radar_data_generic"; +static const auto logger_ = util::Logger::Create(logPrefix_); static const std::unordered_map strToDataBlock_ { {"VOL", DataBlockType::Volume}, @@ -493,10 +494,10 @@ bool RadialDataBlock::Parse(std::istream& is) return dataBlockValid; } -class DigitalRadarDataImpl +class DigitalRadarDataGenericImpl { public: - explicit DigitalRadarDataImpl() : + explicit DigitalRadarDataGenericImpl() : radarIdentifier_ {}, collectionTime_ {0}, modifiedJulianDate_ {0}, @@ -517,7 +518,7 @@ public: elevationDataBlock_ {nullptr}, radialDataBlock_ {nullptr}, momentDataBlock_ {} {}; - ~DigitalRadarDataImpl() = default; + ~DigitalRadarDataGenericImpl() = default; std::string radarIdentifier_; uint32_t collectionTime_; @@ -543,109 +544,112 @@ public: momentDataBlock_; }; -DigitalRadarData::DigitalRadarData() : - Level2Message(), p(std::make_unique()) +DigitalRadarDataGeneric::DigitalRadarDataGeneric() : + Level2Message(), p(std::make_unique()) { } -DigitalRadarData::~DigitalRadarData() = default; +DigitalRadarDataGeneric::~DigitalRadarDataGeneric() = default; -DigitalRadarData::DigitalRadarData(DigitalRadarData&&) noexcept = default; -DigitalRadarData& -DigitalRadarData::operator=(DigitalRadarData&&) noexcept = default; +DigitalRadarDataGeneric::DigitalRadarDataGeneric( + DigitalRadarDataGeneric&&) noexcept = default; +DigitalRadarDataGeneric& DigitalRadarDataGeneric::operator=( + DigitalRadarDataGeneric&&) noexcept = default; -std::string DigitalRadarData::radar_identifier() const +std::string DigitalRadarDataGeneric::radar_identifier() const { return p->radarIdentifier_; } -uint32_t DigitalRadarData::collection_time() const +uint32_t DigitalRadarDataGeneric::collection_time() const { return p->collectionTime_; } -uint16_t DigitalRadarData::modified_julian_date() const +uint16_t DigitalRadarDataGeneric::modified_julian_date() const { return p->modifiedJulianDate_; } -uint16_t DigitalRadarData::azimuth_number() const +uint16_t DigitalRadarDataGeneric::azimuth_number() const { return p->azimuthNumber_; } -float DigitalRadarData::azimuth_angle() const +float DigitalRadarDataGeneric::azimuth_angle() const { return p->azimuthAngle_; } -uint8_t DigitalRadarData::compression_indicator() const +uint8_t DigitalRadarDataGeneric::compression_indicator() const { return p->compressionIndicator_; } -uint16_t DigitalRadarData::radial_length() const +uint16_t DigitalRadarDataGeneric::radial_length() const { return p->radialLength_; } -uint8_t DigitalRadarData::azimuth_resolution_spacing() const +uint8_t DigitalRadarDataGeneric::azimuth_resolution_spacing() const { return p->azimuthResolutionSpacing_; } -uint8_t DigitalRadarData::radial_status() const +uint8_t DigitalRadarDataGeneric::radial_status() const { return p->radialStatus_; } -uint8_t DigitalRadarData::elevation_number() const +uint8_t DigitalRadarDataGeneric::elevation_number() const { return p->elevationNumber_; } -uint8_t DigitalRadarData::cut_sector_number() const +uint8_t DigitalRadarDataGeneric::cut_sector_number() const { return p->cutSectorNumber_; } -float DigitalRadarData::elevation_angle() const +float DigitalRadarDataGeneric::elevation_angle() const { return p->elevationAngle_; } -uint8_t DigitalRadarData::radial_spot_blanking_status() const +uint8_t DigitalRadarDataGeneric::radial_spot_blanking_status() const { return p->radialSpotBlankingStatus_; } -uint8_t DigitalRadarData::azimuth_indexing_mode() const +uint8_t DigitalRadarDataGeneric::azimuth_indexing_mode() const { return p->azimuthIndexingMode_; } -uint16_t DigitalRadarData::data_block_count() const +uint16_t DigitalRadarDataGeneric::data_block_count() const { return p->dataBlockCount_; } std::shared_ptr -DigitalRadarData::elevation_data_block() const +DigitalRadarDataGeneric::elevation_data_block() const { return p->elevationDataBlock_; } -std::shared_ptr DigitalRadarData::radial_data_block() const +std::shared_ptr +DigitalRadarDataGeneric::radial_data_block() const { return p->radialDataBlock_; } -std::shared_ptr DigitalRadarData::volume_data_block() const +std::shared_ptr +DigitalRadarDataGeneric::volume_data_block() const { return p->volumeDataBlock_; } std::shared_ptr -DigitalRadarData::moment_data_block(DataBlockType type) const +DigitalRadarDataGeneric::moment_data_block(DataBlockType type) const { std::shared_ptr momentDataBlock = nullptr; @@ -658,7 +662,7 @@ DigitalRadarData::moment_data_block(DataBlockType type) const return momentDataBlock; } -bool DigitalRadarData::Parse(std::istream& is) +bool DigitalRadarDataGeneric::Parse(std::istream& is) { logger_->trace("Parsing Digital Radar Data (Message Type 31)"); @@ -784,11 +788,11 @@ bool DigitalRadarData::Parse(std::istream& is) return messageValid; } -std::shared_ptr -DigitalRadarData::Create(Level2MessageHeader&& header, std::istream& is) +std::shared_ptr +DigitalRadarDataGeneric::Create(Level2MessageHeader&& header, std::istream& is) { - std::shared_ptr message = - std::make_shared(); + std::shared_ptr message = + std::make_shared(); message->set_header(std::move(header)); if (!message->Parse(is)) diff --git a/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp b/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp index 48d2d8d7..db76fafb 100644 --- a/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp +++ b/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include #include @@ -28,14 +28,14 @@ typedef std::function(Level2MessageHeader&&, std::istream&)> CreateLevel2MessageFunction; -static const std::unordered_map create_ { - {2, RdaStatusData::Create}, - {3, PerformanceMaintenanceData::Create}, - {5, VolumeCoveragePatternData::Create}, - {13, ClutterFilterBypassMap::Create}, - {15, ClutterFilterMap::Create}, - {18, RdaAdaptationData::Create}, - {31, DigitalRadarData::Create}}; +static const std::unordered_map + create_ {{2, RdaStatusData::Create}, + {3, PerformanceMaintenanceData::Create}, + {5, VolumeCoveragePatternData::Create}, + {13, ClutterFilterBypassMap::Create}, + {15, ClutterFilterMap::Create}, + {18, RdaAdaptationData::Create}, + {31, DigitalRadarDataGeneric::Create}}; struct Level2MessageFactory::Context { diff --git a/wxdata/wxdata.cmake b/wxdata/wxdata.cmake index d0170819..e2cdec59 100644 --- a/wxdata/wxdata.cmake +++ b/wxdata/wxdata.cmake @@ -102,7 +102,7 @@ set(SRC_WSR88D source/scwx/wsr88d/ar2v_file.cpp source/scwx/wsr88d/wsr88d_types.cpp) 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/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_factory.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) 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/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_factory.cpp source/scwx/wsr88d/rda/level2_message_header.cpp