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
#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>

View file

@ -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
{
@ -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

View file

@ -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)

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>
namespace scwx
@ -8,7 +8,8 @@ namespace wsr88d
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 std::unordered_map<std::string, DataBlockType> strToDataBlock_ {
@ -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))

View file

@ -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},
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}};
{31, DigitalRadarDataGeneric::Create}};
struct Level2MessageFactory::Context
{

View file

@ -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