mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 14:50:05 +00:00
General status message
This commit is contained in:
parent
dc545f19e9
commit
9b48db3d8d
5 changed files with 383 additions and 1 deletions
|
|
@ -68,6 +68,16 @@ public:
|
||||||
[](float f) { return SwapFloat(f); });
|
[](float f) { return SwapFloat(f); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<size_t _Size>
|
||||||
|
static void SwapArray(std::array<int16_t, _Size>& arr, size_t size = _Size)
|
||||||
|
{
|
||||||
|
std::transform(std::execution::par_unseq,
|
||||||
|
arr.begin(),
|
||||||
|
arr.begin() + size,
|
||||||
|
arr.begin(),
|
||||||
|
[](int16_t u) { return ntohs(u); });
|
||||||
|
}
|
||||||
|
|
||||||
template<size_t _Size>
|
template<size_t _Size>
|
||||||
static void SwapArray(std::array<uint16_t, _Size>& arr, size_t size = _Size)
|
static void SwapArray(std::array<uint16_t, _Size>& arr, size_t size = _Size)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
66
wxdata/include/scwx/wsr88d/rpg/general_status_message.hpp
Normal file
66
wxdata/include/scwx/wsr88d/rpg/general_status_message.hpp
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <scwx/wsr88d/rpg/level3_message.hpp>
|
||||||
|
#include <scwx/wsr88d/rpg/product_description_block.hpp>
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace wsr88d
|
||||||
|
{
|
||||||
|
namespace rpg
|
||||||
|
{
|
||||||
|
|
||||||
|
class GeneralStatusMessageImpl;
|
||||||
|
|
||||||
|
class GeneralStatusMessage : public Level3Message
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit GeneralStatusMessage();
|
||||||
|
~GeneralStatusMessage();
|
||||||
|
|
||||||
|
GeneralStatusMessage(const GeneralStatusMessage&) = delete;
|
||||||
|
GeneralStatusMessage& operator=(const GeneralStatusMessage&) = delete;
|
||||||
|
|
||||||
|
GeneralStatusMessage(GeneralStatusMessage&&) noexcept;
|
||||||
|
GeneralStatusMessage& operator=(GeneralStatusMessage&&) noexcept;
|
||||||
|
|
||||||
|
int16_t block_divider() const;
|
||||||
|
uint16_t length_of_block() const;
|
||||||
|
uint16_t mode_of_operation() const;
|
||||||
|
uint16_t rda_operability_status() const;
|
||||||
|
uint16_t volume_coverage_pattern() const;
|
||||||
|
uint16_t number_of_elevation_cuts() const;
|
||||||
|
float elevation(uint16_t e) const;
|
||||||
|
uint16_t rda_status() const;
|
||||||
|
uint16_t rda_alarms() const;
|
||||||
|
uint16_t data_transmission_enabled() const;
|
||||||
|
uint16_t rpg_operability_status() const;
|
||||||
|
uint16_t rpg_alarms() const;
|
||||||
|
uint16_t rpg_status() const;
|
||||||
|
uint16_t rpg_narrowband_status() const;
|
||||||
|
float horizontal_reflectivity_calibration_correction() const;
|
||||||
|
uint16_t product_availiability() const;
|
||||||
|
uint16_t super_resolution_elevation_cuts() const;
|
||||||
|
uint16_t clutter_mitigation_decision_status() const;
|
||||||
|
float vertical_reflectivity_calibration_correction() const;
|
||||||
|
uint16_t rda_build_number() const;
|
||||||
|
uint16_t rda_channel_number() const;
|
||||||
|
uint16_t build_version() const;
|
||||||
|
uint16_t vcp_supplemental_data() const;
|
||||||
|
uint32_t supplemental_cut_map() const;
|
||||||
|
|
||||||
|
bool Parse(std::istream& is) override;
|
||||||
|
|
||||||
|
static std::shared_ptr<GeneralStatusMessage>
|
||||||
|
Create(Level3MessageHeader&& header, std::istream& is);
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unique_ptr<GeneralStatusMessageImpl> p;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace rpg
|
||||||
|
} // namespace wsr88d
|
||||||
|
} // namespace scwx
|
||||||
302
wxdata/source/scwx/wsr88d/rpg/general_status_message.cpp
Normal file
302
wxdata/source/scwx/wsr88d/rpg/general_status_message.cpp
Normal file
|
|
@ -0,0 +1,302 @@
|
||||||
|
#include <scwx/wsr88d/rpg/general_status_message.hpp>
|
||||||
|
#include <scwx/util/rangebuf.hpp>
|
||||||
|
|
||||||
|
#include <istream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <boost/log/trivial.hpp>
|
||||||
|
|
||||||
|
namespace scwx
|
||||||
|
{
|
||||||
|
namespace wsr88d
|
||||||
|
{
|
||||||
|
namespace rpg
|
||||||
|
{
|
||||||
|
|
||||||
|
static const std::string logPrefix_ =
|
||||||
|
"[scwx::wsr88d::rpg::general_status_message] ";
|
||||||
|
|
||||||
|
class GeneralStatusMessageImpl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit GeneralStatusMessageImpl() :
|
||||||
|
blockDivider_ {0},
|
||||||
|
lengthOfBlock_ {0},
|
||||||
|
modeOfOperation_ {0},
|
||||||
|
rdaOperabilityStatus_ {0},
|
||||||
|
volumeCoveragePattern_ {0},
|
||||||
|
numberOfElevationCuts_ {0},
|
||||||
|
elevation_ {0},
|
||||||
|
rdaStatus_ {0},
|
||||||
|
rdaAlarms_ {0},
|
||||||
|
dataTransmissionEnabled_ {0},
|
||||||
|
rpgOperabilityStatus_ {0},
|
||||||
|
rpgAlarms_ {0},
|
||||||
|
rpgStatus_ {0},
|
||||||
|
rpgNarrowbandStatus_ {0},
|
||||||
|
horizontalReflectivityCalibrationCorrection_ {0},
|
||||||
|
productAvailiability_ {0},
|
||||||
|
superResolutionElevationCuts_ {0},
|
||||||
|
clutterMitigationDecisionStatus_ {0},
|
||||||
|
verticalReflectivityCalibrationCorrection_ {0},
|
||||||
|
rdaBuildNumber_ {0},
|
||||||
|
rdaChannelNumber_ {0},
|
||||||
|
buildVersion_ {0},
|
||||||
|
vcpSupplementalData_ {0},
|
||||||
|
supplementalCutMap_ {0}
|
||||||
|
{
|
||||||
|
}
|
||||||
|
~GeneralStatusMessageImpl() = default;
|
||||||
|
|
||||||
|
int16_t blockDivider_;
|
||||||
|
uint16_t lengthOfBlock_;
|
||||||
|
uint16_t modeOfOperation_;
|
||||||
|
uint16_t rdaOperabilityStatus_;
|
||||||
|
uint16_t volumeCoveragePattern_;
|
||||||
|
uint16_t numberOfElevationCuts_;
|
||||||
|
std::array<int16_t, 25> elevation_;
|
||||||
|
uint16_t rdaStatus_;
|
||||||
|
uint16_t rdaAlarms_;
|
||||||
|
uint16_t dataTransmissionEnabled_;
|
||||||
|
uint16_t rpgOperabilityStatus_;
|
||||||
|
uint16_t rpgAlarms_;
|
||||||
|
uint16_t rpgStatus_;
|
||||||
|
uint16_t rpgNarrowbandStatus_;
|
||||||
|
int16_t horizontalReflectivityCalibrationCorrection_;
|
||||||
|
uint16_t productAvailiability_;
|
||||||
|
uint16_t superResolutionElevationCuts_;
|
||||||
|
uint16_t clutterMitigationDecisionStatus_;
|
||||||
|
int16_t verticalReflectivityCalibrationCorrection_;
|
||||||
|
uint16_t rdaBuildNumber_;
|
||||||
|
uint16_t rdaChannelNumber_;
|
||||||
|
uint16_t buildVersion_;
|
||||||
|
uint16_t vcpSupplementalData_;
|
||||||
|
uint32_t supplementalCutMap_;
|
||||||
|
};
|
||||||
|
|
||||||
|
GeneralStatusMessage::GeneralStatusMessage() :
|
||||||
|
p(std::make_unique<GeneralStatusMessageImpl>())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
GeneralStatusMessage::~GeneralStatusMessage() = default;
|
||||||
|
|
||||||
|
GeneralStatusMessage::GeneralStatusMessage(GeneralStatusMessage&&) noexcept =
|
||||||
|
default;
|
||||||
|
GeneralStatusMessage&
|
||||||
|
GeneralStatusMessage::operator=(GeneralStatusMessage&&) noexcept = default;
|
||||||
|
|
||||||
|
int16_t GeneralStatusMessage::block_divider() const
|
||||||
|
{
|
||||||
|
return p->blockDivider_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::length_of_block() const
|
||||||
|
{
|
||||||
|
return p->lengthOfBlock_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::mode_of_operation() const
|
||||||
|
{
|
||||||
|
return p->modeOfOperation_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rda_operability_status() const
|
||||||
|
{
|
||||||
|
return p->rdaOperabilityStatus_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::volume_coverage_pattern() const
|
||||||
|
{
|
||||||
|
return p->volumeCoveragePattern_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::number_of_elevation_cuts() const
|
||||||
|
{
|
||||||
|
return p->numberOfElevationCuts_;
|
||||||
|
}
|
||||||
|
|
||||||
|
float GeneralStatusMessage::elevation(uint16_t e) const
|
||||||
|
{
|
||||||
|
return p->elevation_[e] * 0.1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rda_status() const
|
||||||
|
{
|
||||||
|
return p->rdaStatus_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rda_alarms() const
|
||||||
|
{
|
||||||
|
return p->rdaAlarms_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::data_transmission_enabled() const
|
||||||
|
{
|
||||||
|
return p->dataTransmissionEnabled_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rpg_operability_status() const
|
||||||
|
{
|
||||||
|
return p->rpgOperabilityStatus_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rpg_alarms() const
|
||||||
|
{
|
||||||
|
return p->rpgAlarms_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rpg_status() const
|
||||||
|
{
|
||||||
|
return p->rpgStatus_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rpg_narrowband_status() const
|
||||||
|
{
|
||||||
|
return p->rpgNarrowbandStatus_;
|
||||||
|
}
|
||||||
|
|
||||||
|
float GeneralStatusMessage::horizontal_reflectivity_calibration_correction()
|
||||||
|
const
|
||||||
|
{
|
||||||
|
return p->horizontalReflectivityCalibrationCorrection_ * 0.25f;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::product_availiability() const
|
||||||
|
{
|
||||||
|
return p->productAvailiability_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::super_resolution_elevation_cuts() const
|
||||||
|
{
|
||||||
|
return p->superResolutionElevationCuts_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::clutter_mitigation_decision_status() const
|
||||||
|
{
|
||||||
|
return p->clutterMitigationDecisionStatus_;
|
||||||
|
}
|
||||||
|
|
||||||
|
float GeneralStatusMessage::vertical_reflectivity_calibration_correction() const
|
||||||
|
{
|
||||||
|
return p->verticalReflectivityCalibrationCorrection_ * 0.25f;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rda_build_number() const
|
||||||
|
{
|
||||||
|
return p->rdaBuildNumber_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::rda_channel_number() const
|
||||||
|
{
|
||||||
|
return p->rdaChannelNumber_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::build_version() const
|
||||||
|
{
|
||||||
|
return p->buildVersion_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t GeneralStatusMessage::vcp_supplemental_data() const
|
||||||
|
{
|
||||||
|
return p->vcpSupplementalData_;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t GeneralStatusMessage::supplemental_cut_map() const
|
||||||
|
{
|
||||||
|
return p->supplementalCutMap_;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GeneralStatusMessage::Parse(std::istream& is)
|
||||||
|
{
|
||||||
|
bool dataValid = true;
|
||||||
|
|
||||||
|
const std::streampos dataStart = is.tellg();
|
||||||
|
|
||||||
|
is.read(reinterpret_cast<char*>(&p->blockDivider_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->lengthOfBlock_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->modeOfOperation_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rdaOperabilityStatus_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->volumeCoveragePattern_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->numberOfElevationCuts_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(p->elevation_.data()), 40);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rdaStatus_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rdaAlarms_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->dataTransmissionEnabled_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rpgOperabilityStatus_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rpgAlarms_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rpgStatus_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rpgNarrowbandStatus_), 2);
|
||||||
|
is.read(
|
||||||
|
reinterpret_cast<char*>(&p->horizontalReflectivityCalibrationCorrection_),
|
||||||
|
2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->productAvailiability_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->superResolutionElevationCuts_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->clutterMitigationDecisionStatus_), 2);
|
||||||
|
is.read(
|
||||||
|
reinterpret_cast<char*>(&p->verticalReflectivityCalibrationCorrection_),
|
||||||
|
2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rdaBuildNumber_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->rdaChannelNumber_), 2);
|
||||||
|
is.seekg(4, std::ios_base::cur);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->buildVersion_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->elevation_[20]), 10);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->vcpSupplementalData_), 2);
|
||||||
|
is.read(reinterpret_cast<char*>(&p->supplementalCutMap_), 4);
|
||||||
|
is.seekg(80, std::ios_base::cur);
|
||||||
|
|
||||||
|
p->blockDivider_ = ntohs(p->blockDivider_);
|
||||||
|
p->lengthOfBlock_ = ntohs(p->lengthOfBlock_);
|
||||||
|
p->modeOfOperation_ = ntohs(p->modeOfOperation_);
|
||||||
|
p->rdaOperabilityStatus_ = ntohs(p->rdaOperabilityStatus_);
|
||||||
|
p->volumeCoveragePattern_ = ntohs(p->volumeCoveragePattern_);
|
||||||
|
p->numberOfElevationCuts_ = ntohs(p->numberOfElevationCuts_);
|
||||||
|
p->rdaStatus_ = ntohs(p->rdaStatus_);
|
||||||
|
p->rdaAlarms_ = ntohs(p->rdaAlarms_);
|
||||||
|
p->dataTransmissionEnabled_ = ntohs(p->dataTransmissionEnabled_);
|
||||||
|
p->rpgOperabilityStatus_ = ntohs(p->rpgOperabilityStatus_);
|
||||||
|
p->rpgAlarms_ = ntohs(p->rpgAlarms_);
|
||||||
|
p->rpgStatus_ = ntohs(p->rpgStatus_);
|
||||||
|
p->rpgNarrowbandStatus_ = ntohs(p->rpgNarrowbandStatus_);
|
||||||
|
p->horizontalReflectivityCalibrationCorrection_ =
|
||||||
|
ntohs(p->horizontalReflectivityCalibrationCorrection_);
|
||||||
|
p->productAvailiability_ = ntohs(p->productAvailiability_);
|
||||||
|
p->superResolutionElevationCuts_ = ntohs(p->superResolutionElevationCuts_);
|
||||||
|
p->clutterMitigationDecisionStatus_ =
|
||||||
|
ntohs(p->clutterMitigationDecisionStatus_);
|
||||||
|
p->verticalReflectivityCalibrationCorrection_ =
|
||||||
|
ntohs(p->verticalReflectivityCalibrationCorrection_);
|
||||||
|
p->rdaBuildNumber_ = ntohs(p->rdaBuildNumber_);
|
||||||
|
p->rdaChannelNumber_ = ntohs(p->rdaChannelNumber_);
|
||||||
|
p->buildVersion_ = ntohs(p->buildVersion_);
|
||||||
|
p->vcpSupplementalData_ = ntohs(p->vcpSupplementalData_);
|
||||||
|
p->supplementalCutMap_ = ntohl(p->supplementalCutMap_);
|
||||||
|
|
||||||
|
SwapArray(p->elevation_);
|
||||||
|
|
||||||
|
const std::streampos dataEnd = is.tellg();
|
||||||
|
if (!ValidateMessage(is, dataEnd - dataStart))
|
||||||
|
{
|
||||||
|
dataValid = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dataValid;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<GeneralStatusMessage>
|
||||||
|
GeneralStatusMessage::Create(Level3MessageHeader&& header, std::istream& is)
|
||||||
|
{
|
||||||
|
std::shared_ptr<GeneralStatusMessage> message =
|
||||||
|
std::make_shared<GeneralStatusMessage>();
|
||||||
|
message->set_header(std::move(header));
|
||||||
|
|
||||||
|
if (!message->Parse(is))
|
||||||
|
{
|
||||||
|
message.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace rpg
|
||||||
|
} // namespace wsr88d
|
||||||
|
} // namespace scwx
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include <scwx/wsr88d/rpg/level3_message_factory.hpp>
|
#include <scwx/wsr88d/rpg/level3_message_factory.hpp>
|
||||||
|
|
||||||
#include <scwx/util/vectorbuf.hpp>
|
#include <scwx/util/vectorbuf.hpp>
|
||||||
|
#include <scwx/wsr88d/rpg/general_status_message.hpp>
|
||||||
#include <scwx/wsr88d/rpg/graphic_product_message.hpp>
|
#include <scwx/wsr88d/rpg/graphic_product_message.hpp>
|
||||||
#include <scwx/wsr88d/rpg/tabular_product_message.hpp>
|
#include <scwx/wsr88d/rpg/tabular_product_message.hpp>
|
||||||
|
|
||||||
|
|
@ -24,7 +25,8 @@ typedef std::function<std::shared_ptr<Level3Message>(Level3MessageHeader&&,
|
||||||
CreateLevel3MessageFunction;
|
CreateLevel3MessageFunction;
|
||||||
|
|
||||||
static const std::unordered_map<int16_t, CreateLevel3MessageFunction> //
|
static const std::unordered_map<int16_t, CreateLevel3MessageFunction> //
|
||||||
create_ {{19, GraphicProductMessage::Create},
|
create_ {{2, GeneralStatusMessage::Create},
|
||||||
|
{19, GraphicProductMessage::Create},
|
||||||
{20, GraphicProductMessage::Create},
|
{20, GraphicProductMessage::Create},
|
||||||
{27, GraphicProductMessage::Create},
|
{27, GraphicProductMessage::Create},
|
||||||
{30, GraphicProductMessage::Create},
|
{30, GraphicProductMessage::Create},
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ set(HDR_WSR88D_RPG include/scwx/wsr88d/rpg/ccb_header.hpp
|
||||||
include/scwx/wsr88d/rpg/cell_trend_volume_scan_times.hpp
|
include/scwx/wsr88d/rpg/cell_trend_volume_scan_times.hpp
|
||||||
include/scwx/wsr88d/rpg/digital_precipitation_data_array_packet.hpp
|
include/scwx/wsr88d/rpg/digital_precipitation_data_array_packet.hpp
|
||||||
include/scwx/wsr88d/rpg/digital_radial_data_array_packet.hpp
|
include/scwx/wsr88d/rpg/digital_radial_data_array_packet.hpp
|
||||||
|
include/scwx/wsr88d/rpg/general_status_message.hpp
|
||||||
include/scwx/wsr88d/rpg/generic_data_packet.hpp
|
include/scwx/wsr88d/rpg/generic_data_packet.hpp
|
||||||
include/scwx/wsr88d/rpg/graphic_alphanumeric_block.hpp
|
include/scwx/wsr88d/rpg/graphic_alphanumeric_block.hpp
|
||||||
include/scwx/wsr88d/rpg/graphic_product_message.hpp
|
include/scwx/wsr88d/rpg/graphic_product_message.hpp
|
||||||
|
|
@ -88,6 +89,7 @@ set(SRC_WSR88D_RPG source/scwx/wsr88d/rpg/ccb_header.cpp
|
||||||
source/scwx/wsr88d/rpg/cell_trend_volume_scan_times.cpp
|
source/scwx/wsr88d/rpg/cell_trend_volume_scan_times.cpp
|
||||||
source/scwx/wsr88d/rpg/digital_precipitation_data_array_packet.cpp
|
source/scwx/wsr88d/rpg/digital_precipitation_data_array_packet.cpp
|
||||||
source/scwx/wsr88d/rpg/digital_radial_data_array_packet.cpp
|
source/scwx/wsr88d/rpg/digital_radial_data_array_packet.cpp
|
||||||
|
source/scwx/wsr88d/rpg/general_status_message.cpp
|
||||||
source/scwx/wsr88d/rpg/generic_data_packet.cpp
|
source/scwx/wsr88d/rpg/generic_data_packet.cpp
|
||||||
source/scwx/wsr88d/rpg/graphic_alphanumeric_block.cpp
|
source/scwx/wsr88d/rpg/graphic_alphanumeric_block.cpp
|
||||||
source/scwx/wsr88d/rpg/graphic_product_message.cpp
|
source/scwx/wsr88d/rpg/graphic_product_message.cpp
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue