mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 07:20:04 +00:00 
			
		
		
		
	Rename DigitalRadarData to DigitalRadarDataGeneric to align with message type 31 name
This commit is contained in:
		
							parent
							
								
									6f73c19be8
								
							
						
					
					
						commit
						bfd7963d4c
					
				
					 6 changed files with 79 additions and 73 deletions
				
			
		|  | @ -1,7 +1,7 @@ | |||
| #pragma once | ||||
| 
 | ||||
| #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 <chrono> | ||||
|  | @ -26,7 +26,7 @@ public: | |||
|    explicit Ar2vFile(); | ||||
|    ~Ar2vFile(); | ||||
| 
 | ||||
|    Ar2vFile(const Ar2vFile&) = delete; | ||||
|    Ar2vFile(const Ar2vFile&)            = delete; | ||||
|    Ar2vFile& operator=(const Ar2vFile&) = delete; | ||||
| 
 | ||||
|    Ar2vFile(Ar2vFile&&) noexcept; | ||||
|  |  | |||
|  | @ -34,10 +34,11 @@ class MomentDataBlockImpl; | |||
| class RadialDataBlockImpl; | ||||
| class VolumeDataBlockImpl; | ||||
| 
 | ||||
| class DigitalRadarData; | ||||
| class DigitalRadarDataImpl; | ||||
| class DigitalRadarDataGeneric; | ||||
| class DigitalRadarDataGenericImpl; | ||||
| 
 | ||||
| typedef std::map<uint16_t, std::shared_ptr<DigitalRadarData>> ElevationScan; | ||||
| typedef std::map<uint16_t, std::shared_ptr<DigitalRadarDataGeneric>> | ||||
|    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<DigitalRadarData> Create(Level2MessageHeader&& header, | ||||
|                                                    std::istream&         is); | ||||
|    static std::shared_ptr<DigitalRadarDataGeneric> | ||||
|    Create(Level2MessageHeader&& header, std::istream& is); | ||||
| 
 | ||||
| private: | ||||
|    std::unique_ptr<DigitalRadarDataImpl> p; | ||||
|    std::unique_ptr<DigitalRadarDataGenericImpl> p; | ||||
| }; | ||||
| 
 | ||||
| } // namespace rda
 | ||||
|  | @ -58,7 +58,8 @@ public: | |||
|    void        IndexFile(); | ||||
|    void        ParseLDMRecords(); | ||||
|    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   extensionNumber_; | ||||
|  | @ -108,7 +109,7 @@ std::chrono::system_clock::time_point Ar2vFile::end_time() const | |||
| 
 | ||||
|    if (p->radarData_.size() > 0) | ||||
|    { | ||||
|       std::shared_ptr<rda::DigitalRadarData> lastRadial = | ||||
|       std::shared_ptr<rda::DigitalRadarDataGeneric> lastRadial = | ||||
|          p->radarData_.crbegin()->second->crbegin()->second; | ||||
| 
 | ||||
|       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): | ||||
|       ProcessRadarData( | ||||
|          std::static_pointer_cast<rda::DigitalRadarData>(message)); | ||||
|          std::static_pointer_cast<rda::DigitalRadarDataGeneric>(message)); | ||||
|       break; | ||||
| 
 | ||||
|    default: | ||||
|  | @ -398,7 +399,7 @@ void Ar2vFileImpl::HandleMessage(std::shared_ptr<rda::Level2Message>& message) | |||
| } | ||||
| 
 | ||||
| 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 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<rda::DigitalRadarData> radial0 = | ||||
|       std::shared_ptr<rda::DigitalRadarDataGeneric>& radial0 = | ||||
|          (*elevationCut.second)[0]; | ||||
| 
 | ||||
|       if (radial0 == nullptr) | ||||
|  |  | |||
|  | @ -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> | ||||
| 
 | ||||
| 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<std::string, DataBlockType> 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<DigitalRadarDataImpl>()) | ||||
| DigitalRadarDataGeneric::DigitalRadarDataGeneric() : | ||||
|     Level2Message(), p(std::make_unique<DigitalRadarDataGenericImpl>()) | ||||
| { | ||||
| } | ||||
| 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<ElevationDataBlock> | ||||
| DigitalRadarData::elevation_data_block() const | ||||
| DigitalRadarDataGeneric::elevation_data_block() const | ||||
| { | ||||
|    return p->elevationDataBlock_; | ||||
| } | ||||
| 
 | ||||
| std::shared_ptr<RadialDataBlock> DigitalRadarData::radial_data_block() const | ||||
| std::shared_ptr<RadialDataBlock> | ||||
| DigitalRadarDataGeneric::radial_data_block() const | ||||
| { | ||||
|    return p->radialDataBlock_; | ||||
| } | ||||
| 
 | ||||
| std::shared_ptr<VolumeDataBlock> DigitalRadarData::volume_data_block() const | ||||
| std::shared_ptr<VolumeDataBlock> | ||||
| DigitalRadarDataGeneric::volume_data_block() const | ||||
| { | ||||
|    return p->volumeDataBlock_; | ||||
| } | ||||
| 
 | ||||
| std::shared_ptr<MomentDataBlock> | ||||
| DigitalRadarData::moment_data_block(DataBlockType type) const | ||||
| DigitalRadarDataGeneric::moment_data_block(DataBlockType type) const | ||||
| { | ||||
|    std::shared_ptr<MomentDataBlock> 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> | ||||
| DigitalRadarData::Create(Level2MessageHeader&& header, std::istream& is) | ||||
| std::shared_ptr<DigitalRadarDataGeneric> | ||||
| DigitalRadarDataGeneric::Create(Level2MessageHeader&& header, std::istream& is) | ||||
| { | ||||
|    std::shared_ptr<DigitalRadarData> message = | ||||
|       std::make_shared<DigitalRadarData>(); | ||||
|    std::shared_ptr<DigitalRadarDataGeneric> message = | ||||
|       std::make_shared<DigitalRadarDataGeneric>(); | ||||
|    message->set_header(std::move(header)); | ||||
| 
 | ||||
|    if (!message->Parse(is)) | ||||
|  | @ -4,7 +4,7 @@ | |||
| #include <scwx/util/vectorbuf.hpp> | ||||
| #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/performance_maintenance_data.hpp> | ||||
| #include <scwx/wsr88d/rda/rda_adaptation_data.hpp> | ||||
| #include <scwx/wsr88d/rda/rda_status_data.hpp> | ||||
|  | @ -28,14 +28,14 @@ typedef std::function<std::shared_ptr<Level2Message>(Level2MessageHeader&&, | |||
|                                                      std::istream&)> | ||||
|    CreateLevel2MessageFunction; | ||||
| 
 | ||||
| static const std::unordered_map<unsigned int, CreateLevel2MessageFunction> 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<unsigned int, CreateLevel2MessageFunction> | ||||
|    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 | ||||
| { | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat