From a280f37289e6d4ad3460cf4265533680dcfd1eb1 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 23 Dec 2021 11:55:26 -0600 Subject: [PATCH] Refactoring, making level 2 message classes more explicitly named --- .../include/scwx/wsr88d/{rda => }/message.hpp | 21 ++------ .../scwx/wsr88d/rda/clutter_filter_map.hpp | 8 +-- .../scwx/wsr88d/rda/digital_radar_data.hpp | 8 +-- .../scwx/wsr88d/rda/level2_message.hpp | 50 +++++++++++++++++++ .../wsr88d/rda/level2_message_factory.hpp | 42 ++++++++++++++++ ...e_header.hpp => level2_message_header.hpp} | 18 +++---- .../scwx/wsr88d/rda/message_factory.hpp | 39 --------------- .../rda/performance_maintenance_data.hpp | 6 +-- .../scwx/wsr88d/rda/rda_adaptation_data.hpp | 8 +-- .../scwx/wsr88d/rda/rda_status_data.hpp | 8 +-- .../rda/volume_coverage_pattern_data.hpp | 6 +-- wxdata/source/scwx/wsr88d/ar2v_file.cpp | 8 +-- wxdata/source/scwx/wsr88d/message.cpp | 24 +++++++++ .../scwx/wsr88d/rda/clutter_filter_map.cpp | 4 +- .../scwx/wsr88d/rda/digital_radar_data.cpp | 4 +- .../rda/{message.cpp => level2_message.cpp} | 29 ++++++----- ...factory.cpp => level2_message_factory.cpp} | 26 +++++----- ...e_header.cpp => level2_message_header.cpp} | 44 +++++++++------- .../rda/performance_maintenance_data.cpp | 5 +- .../scwx/wsr88d/rda/rda_adaptation_data.cpp | 4 +- .../scwx/wsr88d/rda/rda_status_data.cpp | 6 +-- .../rda/volume_coverage_pattern_data.cpp | 5 +- wxdata/wxdata.cmake | 18 ++++--- 23 files changed, 236 insertions(+), 155 deletions(-) rename wxdata/include/scwx/wsr88d/{rda => }/message.hpp (82%) create mode 100644 wxdata/include/scwx/wsr88d/rda/level2_message.hpp create mode 100644 wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp rename wxdata/include/scwx/wsr88d/rda/{message_header.hpp => level2_message_header.hpp} (59%) delete mode 100644 wxdata/include/scwx/wsr88d/rda/message_factory.hpp create mode 100644 wxdata/source/scwx/wsr88d/message.cpp rename wxdata/source/scwx/wsr88d/rda/{message.cpp => level2_message.cpp} (64%) rename wxdata/source/scwx/wsr88d/rda/{message_factory.cpp => level2_message_factory.cpp} (82%) rename wxdata/source/scwx/wsr88d/rda/{message_header.cpp => level2_message_header.cpp} (73%) diff --git a/wxdata/include/scwx/wsr88d/rda/message.hpp b/wxdata/include/scwx/wsr88d/message.hpp similarity index 82% rename from wxdata/include/scwx/wsr88d/rda/message.hpp rename to wxdata/include/scwx/wsr88d/message.hpp index cf23fb83..b30570cf 100644 --- a/wxdata/include/scwx/wsr88d/rda/message.hpp +++ b/wxdata/include/scwx/wsr88d/message.hpp @@ -1,7 +1,5 @@ #pragma once -#include - #include #include #include @@ -18,8 +16,6 @@ namespace scwx { namespace wsr88d { -namespace rda -{ class MessageImpl; @@ -34,20 +30,13 @@ protected: Message(Message&&) noexcept; Message& operator=(Message&&) noexcept; - bool ValidateMessage(std::istream& is, size_t bytesRead) const; + virtual bool ValidateMessage(std::istream& is, size_t bytesRead) const = 0; public: virtual ~Message(); - const MessageHeader& header() const; - - void set_header(MessageHeader&& header); - virtual bool Parse(std::istream& is) = 0; - static constexpr double ANGLE_DATA_SCALE = 0.005493125; - static constexpr double AZ_EL_RATE_DATA_SCALE = 0.001373291015625; - static void ReadBoolean(std::istream& is, bool& value) { std::string data(4, ' '); @@ -100,9 +89,10 @@ public: template static void SwapMap(std::map& m) { - std::for_each(std::execution::par_unseq, m.begin(), m.end(), [](auto& p) { - p.second = SwapFloat(p.second); - }); + std::for_each(std::execution::par_unseq, + m.begin(), + m.end(), + [](auto& p) { p.second = SwapFloat(p.second); }); } static void SwapVector(std::vector& v) @@ -118,6 +108,5 @@ private: std::unique_ptr p; }; -} // namespace rda } // namespace wsr88d } // namespace scwx diff --git a/wxdata/include/scwx/wsr88d/rda/clutter_filter_map.hpp b/wxdata/include/scwx/wsr88d/rda/clutter_filter_map.hpp index 825622e7..a5983d4c 100644 --- a/wxdata/include/scwx/wsr88d/rda/clutter_filter_map.hpp +++ b/wxdata/include/scwx/wsr88d/rda/clutter_filter_map.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include namespace scwx { @@ -11,7 +11,7 @@ namespace rda class ClutterFilterMapImpl; -class ClutterFilterMap : public Message +class ClutterFilterMap : public Level2Message { public: explicit ClutterFilterMap(); @@ -32,8 +32,8 @@ public: bool Parse(std::istream& is); - static std::shared_ptr Create(MessageHeader&& header, - std::istream& is); + static std::shared_ptr Create(Level2MessageHeader&& header, + std::istream& is); static const size_t NUM_AZIMUTH_SEGMENTS = 360u; diff --git a/wxdata/include/scwx/wsr88d/rda/digital_radar_data.hpp b/wxdata/include/scwx/wsr88d/rda/digital_radar_data.hpp index 4975fd2f..d59fb296 100644 --- a/wxdata/include/scwx/wsr88d/rda/digital_radar_data.hpp +++ b/wxdata/include/scwx/wsr88d/rda/digital_radar_data.hpp @@ -1,7 +1,7 @@ #pragma once #include -#include +#include namespace scwx { @@ -170,7 +170,7 @@ private: bool Parse(std::istream& is); }; -class DigitalRadarData : public Message +class DigitalRadarData : public Level2Message { public: explicit DigitalRadarData(); @@ -205,8 +205,8 @@ public: bool Parse(std::istream& is); - static std::shared_ptr Create(MessageHeader&& header, - std::istream& is); + static std::shared_ptr Create(Level2MessageHeader&& header, + std::istream& is); private: std::unique_ptr p; diff --git a/wxdata/include/scwx/wsr88d/rda/level2_message.hpp b/wxdata/include/scwx/wsr88d/rda/level2_message.hpp new file mode 100644 index 00000000..e7996138 --- /dev/null +++ b/wxdata/include/scwx/wsr88d/rda/level2_message.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include +#include + +#ifdef WIN32 +# include +#else +# include +#endif + +namespace scwx +{ +namespace wsr88d +{ +namespace rda +{ + +class Level2MessageImpl; + +class Level2Message : public Message +{ +protected: + explicit Level2Message(); + + Level2Message(const Level2Message&) = delete; + Level2Message& operator=(const Level2Message&) = delete; + + Level2Message(Level2Message&&) noexcept; + Level2Message& operator=(Level2Message&&) noexcept; + + bool ValidateMessage(std::istream& is, size_t bytesRead) const override; + +public: + virtual ~Level2Message(); + + const Level2MessageHeader& header() const; + + void set_header(Level2MessageHeader&& header); + + static constexpr double ANGLE_DATA_SCALE = 0.005493125; + static constexpr double AZ_EL_RATE_DATA_SCALE = 0.001373291015625; + +private: + std::unique_ptr p; +}; + +} // namespace rda +} // namespace wsr88d +} // namespace scwx diff --git a/wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp b/wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp new file mode 100644 index 00000000..2e1690ec --- /dev/null +++ b/wxdata/include/scwx/wsr88d/rda/level2_message_factory.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include + +namespace scwx +{ +namespace wsr88d +{ +namespace rda +{ + +struct Level2MessageInfo +{ + std::shared_ptr message; + bool headerValid; + bool messageValid; + + Level2MessageInfo() : + message(nullptr), headerValid(false), messageValid(false) + { + } +}; + +class Level2MessageFactory +{ +private: + explicit Level2MessageFactory() = delete; + ~Level2MessageFactory() = delete; + + Level2MessageFactory(const Level2MessageFactory&) = delete; + Level2MessageFactory& operator=(const Level2MessageFactory&) = delete; + + Level2MessageFactory(Level2MessageFactory&&) noexcept = delete; + Level2MessageFactory& operator=(Level2MessageFactory&&) noexcept = delete; + +public: + static Level2MessageInfo Create(std::istream& is); +}; + +} // namespace rda +} // namespace wsr88d +} // namespace scwx diff --git a/wxdata/include/scwx/wsr88d/rda/message_header.hpp b/wxdata/include/scwx/wsr88d/rda/level2_message_header.hpp similarity index 59% rename from wxdata/include/scwx/wsr88d/rda/message_header.hpp rename to wxdata/include/scwx/wsr88d/rda/level2_message_header.hpp index 8aa5db44..a47c8948 100644 --- a/wxdata/include/scwx/wsr88d/rda/message_header.hpp +++ b/wxdata/include/scwx/wsr88d/rda/level2_message_header.hpp @@ -10,19 +10,19 @@ namespace wsr88d namespace rda { -class MessageHeaderImpl; +class Level2MessageHeaderImpl; -class MessageHeader +class Level2MessageHeader { public: - explicit MessageHeader(); - ~MessageHeader(); + explicit Level2MessageHeader(); + ~Level2MessageHeader(); - MessageHeader(const MessageHeader&) = delete; - MessageHeader& operator=(const MessageHeader&) = delete; + Level2MessageHeader(const Level2MessageHeader&) = delete; + Level2MessageHeader& operator=(const Level2MessageHeader&) = delete; - MessageHeader(MessageHeader&&) noexcept; - MessageHeader& operator=(MessageHeader&&) noexcept; + Level2MessageHeader(Level2MessageHeader&&) noexcept; + Level2MessageHeader& operator=(Level2MessageHeader&&) noexcept; uint16_t message_size() const; uint8_t rda_redundant_channel() const; @@ -40,7 +40,7 @@ public: static const size_t SIZE = 16u; private: - std::unique_ptr p; + std::unique_ptr p; }; } // namespace rda diff --git a/wxdata/include/scwx/wsr88d/rda/message_factory.hpp b/wxdata/include/scwx/wsr88d/rda/message_factory.hpp deleted file mode 100644 index 9494435d..00000000 --- a/wxdata/include/scwx/wsr88d/rda/message_factory.hpp +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include - -namespace scwx -{ -namespace wsr88d -{ -namespace rda -{ - -struct MessageInfo -{ - std::shared_ptr message; - bool headerValid; - bool messageValid; - - MessageInfo() : message(nullptr), headerValid(false), messageValid(false) {} -}; - -class MessageFactory -{ -private: - explicit MessageFactory() = delete; - ~MessageFactory() = delete; - - MessageFactory(const MessageFactory&) = delete; - MessageFactory& operator=(const MessageFactory&) = delete; - - MessageFactory(MessageFactory&&) noexcept = delete; - MessageFactory& operator=(MessageFactory&&) noexcept = delete; - -public: - static MessageInfo Create(std::istream& is); -}; - -} // namespace rda -} // namespace wsr88d -} // namespace scwx diff --git a/wxdata/include/scwx/wsr88d/rda/performance_maintenance_data.hpp b/wxdata/include/scwx/wsr88d/rda/performance_maintenance_data.hpp index e6e4a948..8e438811 100644 --- a/wxdata/include/scwx/wsr88d/rda/performance_maintenance_data.hpp +++ b/wxdata/include/scwx/wsr88d/rda/performance_maintenance_data.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include namespace scwx { @@ -11,7 +11,7 @@ namespace rda class PerformanceMaintenanceDataImpl; -class PerformanceMaintenanceData : public Message +class PerformanceMaintenanceData : public Level2Message { public: explicit PerformanceMaintenanceData(); @@ -279,7 +279,7 @@ public: bool Parse(std::istream& is); static std::shared_ptr - Create(MessageHeader&& header, std::istream& is); + Create(Level2MessageHeader&& header, std::istream& is); private: std::unique_ptr p; diff --git a/wxdata/include/scwx/wsr88d/rda/rda_adaptation_data.hpp b/wxdata/include/scwx/wsr88d/rda/rda_adaptation_data.hpp index 2329e62b..cac687a7 100644 --- a/wxdata/include/scwx/wsr88d/rda/rda_adaptation_data.hpp +++ b/wxdata/include/scwx/wsr88d/rda/rda_adaptation_data.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include namespace scwx { @@ -11,7 +11,7 @@ namespace rda class RdaAdaptationDataImpl; -class RdaAdaptationData : public Message +class RdaAdaptationData : public Level2Message { public: explicit RdaAdaptationData(); @@ -203,8 +203,8 @@ public: bool Parse(std::istream& is); - static std::shared_ptr Create(MessageHeader&& header, - std::istream& is); + static std::shared_ptr + Create(Level2MessageHeader&& header, std::istream& is); private: std::unique_ptr p; diff --git a/wxdata/include/scwx/wsr88d/rda/rda_status_data.hpp b/wxdata/include/scwx/wsr88d/rda/rda_status_data.hpp index eb9af08b..7dd51edf 100644 --- a/wxdata/include/scwx/wsr88d/rda/rda_status_data.hpp +++ b/wxdata/include/scwx/wsr88d/rda/rda_status_data.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include namespace scwx { @@ -11,7 +11,7 @@ namespace rda class RdaStatusDataImpl; -class RdaStatusData : public Message +class RdaStatusData : public Level2Message { public: explicit RdaStatusData(); @@ -55,8 +55,8 @@ public: bool Parse(std::istream& is); - static std::shared_ptr Create(MessageHeader&& header, - std::istream& is); + static std::shared_ptr Create(Level2MessageHeader&& header, + std::istream& is); private: std::unique_ptr p; diff --git a/wxdata/include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp b/wxdata/include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp index 97b4e8bd..e5b989dd 100644 --- a/wxdata/include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp +++ b/wxdata/include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include @@ -23,7 +23,7 @@ enum class WaveformType class VolumeCoveragePatternDataImpl; -class VolumeCoveragePatternData : public Message +class VolumeCoveragePatternData : public Level2Message { public: explicit VolumeCoveragePatternData(); @@ -90,7 +90,7 @@ public: bool Parse(std::istream& is); static std::shared_ptr - Create(MessageHeader&& header, std::istream& is); + Create(Level2MessageHeader&& header, std::istream& is); private: std::unique_ptr p; diff --git a/wxdata/source/scwx/wsr88d/ar2v_file.cpp b/wxdata/source/scwx/wsr88d/ar2v_file.cpp index 43f0ac80..da16c52e 100644 --- a/wxdata/source/scwx/wsr88d/ar2v_file.cpp +++ b/wxdata/source/scwx/wsr88d/ar2v_file.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -35,7 +35,7 @@ public: index_ {} {}; ~Ar2vFileImpl() = default; - void HandleMessage(std::shared_ptr& message); + void HandleMessage(std::shared_ptr& message); void IndexFile(); void LoadLDMRecords(std::ifstream& f); void ParseLDMRecords(); @@ -291,7 +291,7 @@ void Ar2vFileImpl::ParseLDMRecords() while (!ss.eof()) { - rda::MessageInfo msgInfo = rda::MessageFactory::Create(ss); + rda::Level2MessageInfo msgInfo = rda::Level2MessageFactory::Create(ss); if (!msgInfo.headerValid) { // Invalid message @@ -329,7 +329,7 @@ void Ar2vFileImpl::ParseLDMRecords() rawRecords_.clear(); } -void Ar2vFileImpl::HandleMessage(std::shared_ptr& message) +void Ar2vFileImpl::HandleMessage(std::shared_ptr& message) { switch (message->header().message_type()) { diff --git a/wxdata/source/scwx/wsr88d/message.cpp b/wxdata/source/scwx/wsr88d/message.cpp new file mode 100644 index 00000000..f178951a --- /dev/null +++ b/wxdata/source/scwx/wsr88d/message.cpp @@ -0,0 +1,24 @@ +#include + +namespace scwx +{ +namespace wsr88d +{ + +static const std::string logPrefix_ = "[scwx::wsr88d::message] "; + +class MessageImpl +{ +public: + explicit MessageImpl() {}; + ~MessageImpl() = default; +}; + +Message::Message() : p(std::make_unique()) {} +Message::~Message() = default; + +Message::Message(Message&&) noexcept = default; +Message& Message::operator=(Message&&) noexcept = default; + +} // namespace wsr88d +} // namespace scwx diff --git a/wxdata/source/scwx/wsr88d/rda/clutter_filter_map.cpp b/wxdata/source/scwx/wsr88d/rda/clutter_filter_map.cpp index f1692903..6433d70b 100644 --- a/wxdata/source/scwx/wsr88d/rda/clutter_filter_map.cpp +++ b/wxdata/source/scwx/wsr88d/rda/clutter_filter_map.cpp @@ -34,7 +34,7 @@ public: }; ClutterFilterMap::ClutterFilterMap() : - Message(), p(std::make_unique()) + Level2Message(), p(std::make_unique()) { } ClutterFilterMap::~ClutterFilterMap() = default; @@ -187,7 +187,7 @@ bool ClutterFilterMap::Parse(std::istream& is) } std::shared_ptr -ClutterFilterMap::Create(MessageHeader&& header, std::istream& is) +ClutterFilterMap::Create(Level2MessageHeader&& header, std::istream& is) { std::shared_ptr message = std::make_shared(); diff --git a/wxdata/source/scwx/wsr88d/rda/digital_radar_data.cpp b/wxdata/source/scwx/wsr88d/rda/digital_radar_data.cpp index 111596d2..424b1641 100644 --- a/wxdata/source/scwx/wsr88d/rda/digital_radar_data.cpp +++ b/wxdata/source/scwx/wsr88d/rda/digital_radar_data.cpp @@ -540,7 +540,7 @@ public: }; DigitalRadarData::DigitalRadarData() : - Message(), p(std::make_unique()) + Level2Message(), p(std::make_unique()) { } DigitalRadarData::~DigitalRadarData() = default; @@ -787,7 +787,7 @@ bool DigitalRadarData::Parse(std::istream& is) } std::shared_ptr -DigitalRadarData::Create(MessageHeader&& header, std::istream& is) +DigitalRadarData::Create(Level2MessageHeader&& header, std::istream& is) { std::shared_ptr message = std::make_shared(); diff --git a/wxdata/source/scwx/wsr88d/rda/message.cpp b/wxdata/source/scwx/wsr88d/rda/level2_message.cpp similarity index 64% rename from wxdata/source/scwx/wsr88d/rda/message.cpp rename to wxdata/source/scwx/wsr88d/rda/level2_message.cpp index 89915974..4baeab0f 100644 --- a/wxdata/source/scwx/wsr88d/rda/message.cpp +++ b/wxdata/source/scwx/wsr88d/rda/level2_message.cpp @@ -1,4 +1,4 @@ -#include +#include #include @@ -9,24 +9,27 @@ namespace wsr88d namespace rda { -static const std::string logPrefix_ = "[scwx::wsr88d::rda::message] "; +static const std::string logPrefix_ = "[scwx::wsr88d::rda::level2_message] "; -class MessageImpl +class Level2MessageImpl { public: - explicit MessageImpl() : header_() {}; - ~MessageImpl() = default; + explicit Level2MessageImpl() : header_() {}; + ~Level2MessageImpl() = default; - MessageHeader header_; + Level2MessageHeader header_; }; -Message::Message() : p(std::make_unique()) {} -Message::~Message() = default; +Level2Message::Level2Message() : + Message(), p(std::make_unique()) +{ +} +Level2Message::~Level2Message() = default; -Message::Message(Message&&) noexcept = default; -Message& Message::operator=(Message&&) noexcept = default; +Level2Message::Level2Message(Level2Message&&) noexcept = default; +Level2Message& Level2Message::operator=(Level2Message&&) noexcept = default; -bool Message::ValidateMessage(std::istream& is, size_t bytesRead) const +bool Level2Message::ValidateMessage(std::istream& is, size_t bytesRead) const { bool messageValid = true; size_t dataSize = header().message_size() * 2 - header().SIZE; @@ -66,12 +69,12 @@ bool Message::ValidateMessage(std::istream& is, size_t bytesRead) const return messageValid; } -const MessageHeader& Message::header() const +const Level2MessageHeader& Level2Message::header() const { return p->header_; } -void Message::set_header(MessageHeader&& header) +void Level2Message::set_header(Level2MessageHeader&& header) { p->header_ = std::move(header); } diff --git a/wxdata/source/scwx/wsr88d/rda/message_factory.cpp b/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp similarity index 82% rename from wxdata/source/scwx/wsr88d/rda/message_factory.cpp rename to wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp index 9ad034ef..b2b5e606 100644 --- a/wxdata/source/scwx/wsr88d/rda/message_factory.cpp +++ b/wxdata/source/scwx/wsr88d/rda/level2_message_factory.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include @@ -20,12 +20,14 @@ namespace wsr88d namespace rda { -static const std::string logPrefix_ = "[scwx::wsr88d::rda::message_factory] "; +static const std::string logPrefix_ = + "[scwx::wsr88d::rda::level2_message_factory] "; -typedef std::function(MessageHeader&&, std::istream&)> - CreateMessageFunction; +typedef std::function(Level2MessageHeader&&, + std::istream&)> + CreateLevel2MessageFunction; -static const std::unordered_map create_ { +static const std::unordered_map create_ { {2, RdaStatusData::Create}, {3, PerformanceMaintenanceData::Create}, {5, VolumeCoveragePatternData::Create}, @@ -38,10 +40,10 @@ static size_t bufferedSize_; static util::vectorbuf messageBuffer_(messageData_); static std::istream messageBufferStream_(&messageBuffer_); -MessageInfo MessageFactory::Create(std::istream& is) +Level2MessageInfo Level2MessageFactory::Create(std::istream& is) { - MessageInfo info; - MessageHeader header; + Level2MessageInfo info; + Level2MessageHeader header; info.headerValid = header.Parse(is); info.messageValid = info.headerValid; @@ -58,7 +60,7 @@ MessageInfo MessageFactory::Create(std::istream& is) uint16_t segment = header.message_segment_number(); uint16_t totalSegments = header.number_of_message_segments(); uint8_t messageType = header.message_type(); - size_t dataSize = header.message_size() * 2 - MessageHeader::SIZE; + size_t dataSize = header.message_size() * 2 - Level2MessageHeader::SIZE; std::istream* messageStream = nullptr; @@ -110,8 +112,8 @@ MessageInfo MessageFactory::Create(std::istream& is) else if (segment == totalSegments) { messageBuffer_.update_read_pointers(bufferedSize_); - header.set_message_size( - static_cast(bufferedSize_ / 2 + MessageHeader::SIZE)); + header.set_message_size(static_cast( + bufferedSize_ / 2 + Level2MessageHeader::SIZE)); messageStream = &messageBufferStream_; } @@ -129,7 +131,7 @@ MessageInfo MessageFactory::Create(std::istream& is) else if (info.headerValid) { // Seek to the end of the current message - is.seekg(header.message_size() * 2 - rda::MessageHeader::SIZE, + is.seekg(header.message_size() * 2 - rda::Level2MessageHeader::SIZE, std::ios_base::cur); } diff --git a/wxdata/source/scwx/wsr88d/rda/message_header.cpp b/wxdata/source/scwx/wsr88d/rda/level2_message_header.cpp similarity index 73% rename from wxdata/source/scwx/wsr88d/rda/message_header.cpp rename to wxdata/source/scwx/wsr88d/rda/level2_message_header.cpp index 297d8827..e1ef2f8b 100644 --- a/wxdata/source/scwx/wsr88d/rda/message_header.cpp +++ b/wxdata/source/scwx/wsr88d/rda/level2_message_header.cpp @@ -1,4 +1,4 @@ -#include +#include #include #include @@ -18,12 +18,13 @@ namespace wsr88d namespace rda { -static const std::string logPrefix_ = "[scwx::wsr88d::rda::message_header] "; +static const std::string logPrefix_ = + "[scwx::wsr88d::rda::level2_message_header] "; -class MessageHeaderImpl +class Level2MessageHeaderImpl { public: - explicit MessageHeaderImpl() : + explicit Level2MessageHeaderImpl() : messageSize_(), rdaRedundantChannel_(), messageType_(), @@ -32,7 +33,7 @@ public: millisecondsOfDay_(), numberOfMessageSegments_(), messageSegmentNumber_() {}; - ~MessageHeaderImpl() = default; + ~Level2MessageHeaderImpl() = default; uint16_t messageSize_; uint8_t rdaRedundantChannel_; @@ -44,58 +45,63 @@ public: uint16_t messageSegmentNumber_; }; -MessageHeader::MessageHeader() : p(std::make_unique()) {} -MessageHeader::~MessageHeader() = default; +Level2MessageHeader::Level2MessageHeader() : + p(std::make_unique()) +{ +} +Level2MessageHeader::~Level2MessageHeader() = default; -MessageHeader::MessageHeader(MessageHeader&&) noexcept = default; -MessageHeader& MessageHeader::operator=(MessageHeader&&) noexcept = default; +Level2MessageHeader::Level2MessageHeader(Level2MessageHeader&&) noexcept = + default; +Level2MessageHeader& +Level2MessageHeader::operator=(Level2MessageHeader&&) noexcept = default; -uint16_t MessageHeader::message_size() const +uint16_t Level2MessageHeader::message_size() const { return p->messageSize_; } -uint8_t MessageHeader::rda_redundant_channel() const +uint8_t Level2MessageHeader::rda_redundant_channel() const { return p->rdaRedundantChannel_; } -uint8_t MessageHeader::message_type() const +uint8_t Level2MessageHeader::message_type() const { return p->messageType_; } -uint16_t MessageHeader::id_sequence_number() const +uint16_t Level2MessageHeader::id_sequence_number() const { return p->idSequenceNumber_; } -uint16_t MessageHeader::julian_date() const +uint16_t Level2MessageHeader::julian_date() const { return p->julianDate_; } -uint32_t MessageHeader::milliseconds_of_day() const +uint32_t Level2MessageHeader::milliseconds_of_day() const { return p->millisecondsOfDay_; } -uint16_t MessageHeader::number_of_message_segments() const +uint16_t Level2MessageHeader::number_of_message_segments() const { return p->numberOfMessageSegments_; } -uint16_t MessageHeader::message_segment_number() const +uint16_t Level2MessageHeader::message_segment_number() const { return p->messageSegmentNumber_; } -void MessageHeader::set_message_size(uint16_t messageSize) +void Level2MessageHeader::set_message_size(uint16_t messageSize) { p->messageSize_ = messageSize; } -bool MessageHeader::Parse(std::istream& is) +bool Level2MessageHeader::Parse(std::istream& is) { bool headerValid = true; diff --git a/wxdata/source/scwx/wsr88d/rda/performance_maintenance_data.cpp b/wxdata/source/scwx/wsr88d/rda/performance_maintenance_data.cpp index 01bb2bec..2a5e4e5f 100644 --- a/wxdata/source/scwx/wsr88d/rda/performance_maintenance_data.cpp +++ b/wxdata/source/scwx/wsr88d/rda/performance_maintenance_data.cpp @@ -550,7 +550,7 @@ public: }; PerformanceMaintenanceData::PerformanceMaintenanceData() : - Message(), p(std::make_unique()) + Level2Message(), p(std::make_unique()) { } PerformanceMaintenanceData::~PerformanceMaintenanceData() = default; @@ -2469,7 +2469,8 @@ bool PerformanceMaintenanceData::Parse(std::istream& is) } std::shared_ptr -PerformanceMaintenanceData::Create(MessageHeader&& header, std::istream& is) +PerformanceMaintenanceData::Create(Level2MessageHeader&& header, + std::istream& is) { std::shared_ptr message = std::make_shared(); diff --git a/wxdata/source/scwx/wsr88d/rda/rda_adaptation_data.cpp b/wxdata/source/scwx/wsr88d/rda/rda_adaptation_data.cpp index bb256e51..0b579d1d 100644 --- a/wxdata/source/scwx/wsr88d/rda/rda_adaptation_data.cpp +++ b/wxdata/source/scwx/wsr88d/rda/rda_adaptation_data.cpp @@ -369,7 +369,7 @@ public: }; RdaAdaptationData::RdaAdaptationData() : - Message(), p(std::make_unique()) + Level2Message(), p(std::make_unique()) { } RdaAdaptationData::~RdaAdaptationData() = default; @@ -1747,7 +1747,7 @@ bool RdaAdaptationData::Parse(std::istream& is) } std::shared_ptr -RdaAdaptationData::Create(MessageHeader&& header, std::istream& is) +RdaAdaptationData::Create(Level2MessageHeader&& header, std::istream& is) { std::shared_ptr message = std::make_shared(); diff --git a/wxdata/source/scwx/wsr88d/rda/rda_status_data.cpp b/wxdata/source/scwx/wsr88d/rda/rda_status_data.cpp index 39a995f4..5741dfb3 100644 --- a/wxdata/source/scwx/wsr88d/rda/rda_status_data.cpp +++ b/wxdata/source/scwx/wsr88d/rda/rda_status_data.cpp @@ -78,7 +78,7 @@ public: }; RdaStatusData::RdaStatusData() : - Message(), p(std::make_unique()) + Level2Message(), p(std::make_unique()) { } RdaStatusData::~RdaStatusData() = default; @@ -322,8 +322,8 @@ bool RdaStatusData::Parse(std::istream& is) return messageValid; } -std::shared_ptr RdaStatusData::Create(MessageHeader&& header, - std::istream& is) +std::shared_ptr +RdaStatusData::Create(Level2MessageHeader&& header, std::istream& is) { std::shared_ptr message = std::make_shared(); message->set_header(std::move(header)); diff --git a/wxdata/source/scwx/wsr88d/rda/volume_coverage_pattern_data.cpp b/wxdata/source/scwx/wsr88d/rda/volume_coverage_pattern_data.cpp index c756294a..64e9fd0a 100644 --- a/wxdata/source/scwx/wsr88d/rda/volume_coverage_pattern_data.cpp +++ b/wxdata/source/scwx/wsr88d/rda/volume_coverage_pattern_data.cpp @@ -96,7 +96,7 @@ public: }; VolumeCoveragePatternData::VolumeCoveragePatternData() : - Message(), p(std::make_unique()) + Level2Message(), p(std::make_unique()) { } VolumeCoveragePatternData::~VolumeCoveragePatternData() = default; @@ -503,7 +503,8 @@ bool VolumeCoveragePatternData::Parse(std::istream& is) } std::shared_ptr -VolumeCoveragePatternData::Create(MessageHeader&& header, std::istream& is) +VolumeCoveragePatternData::Create(Level2MessageHeader&& header, + std::istream& is) { std::shared_ptr message = std::make_shared(); diff --git a/wxdata/wxdata.cmake b/wxdata/wxdata.cmake index 2d9e421c..dee3de34 100644 --- a/wxdata/wxdata.cmake +++ b/wxdata/wxdata.cmake @@ -21,13 +21,15 @@ set(SRC_UTIL source/scwx/util/rangebuf.cpp source/scwx/util/streams.cpp source/scwx/util/time.cpp source/scwx/util/vectorbuf.cpp) -set(HDR_WSR88D include/scwx/wsr88d/ar2v_file.hpp) -set(SRC_WSR88D source/scwx/wsr88d/ar2v_file.cpp) +set(HDR_WSR88D include/scwx/wsr88d/ar2v_file.hpp + include/scwx/wsr88d/message.hpp) +set(SRC_WSR88D source/scwx/wsr88d/ar2v_file.cpp + source/scwx/wsr88d/message.cpp) set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_map.hpp include/scwx/wsr88d/rda/digital_radar_data.hpp - include/scwx/wsr88d/rda/message.hpp - include/scwx/wsr88d/rda/message_factory.hpp - include/scwx/wsr88d/rda/message_header.hpp + include/scwx/wsr88d/rda/level2_message.hpp + include/scwx/wsr88d/rda/level2_message_factory.hpp + include/scwx/wsr88d/rda/level2_message_header.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 @@ -35,9 +37,9 @@ set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_map.hpp include/scwx/wsr88d/rda/volume_coverage_pattern_data.hpp) set(SRC_WSR88D_RDA source/scwx/wsr88d/rda/clutter_filter_map.cpp source/scwx/wsr88d/rda/digital_radar_data.cpp - source/scwx/wsr88d/rda/message.cpp - source/scwx/wsr88d/rda/message_factory.cpp - source/scwx/wsr88d/rda/message_header.cpp + source/scwx/wsr88d/rda/level2_message.cpp + source/scwx/wsr88d/rda/level2_message_factory.cpp + source/scwx/wsr88d/rda/level2_message_header.cpp source/scwx/wsr88d/rda/performance_maintenance_data.cpp source/scwx/wsr88d/rda/rda_adaptation_data.cpp source/scwx/wsr88d/rda/rda_status_data.cpp