mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-29 20:30:05 +00:00
Modified RDA message clang-tidy cleanup
This commit is contained in:
parent
2025698d88
commit
fd6c224fc2
10 changed files with 1365 additions and 1310 deletions
|
|
@ -13,12 +13,8 @@
|
|||
# include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
namespace scwx
|
||||
namespace scwx::awips
|
||||
{
|
||||
namespace awips
|
||||
{
|
||||
|
||||
class MessageImpl;
|
||||
|
||||
class Message
|
||||
{
|
||||
|
|
@ -135,8 +131,8 @@ public:
|
|||
}
|
||||
|
||||
private:
|
||||
std::unique_ptr<MessageImpl> p;
|
||||
class Impl;
|
||||
std::unique_ptr<Impl> p;
|
||||
};
|
||||
|
||||
} // namespace awips
|
||||
} // namespace scwx
|
||||
} // namespace scwx::awips
|
||||
|
|
|
|||
|
|
@ -2,11 +2,7 @@
|
|||
|
||||
#include <scwx/wsr88d/rda/generic_radar_data.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
class DigitalRadarDataGeneric : public GenericRadarData
|
||||
|
|
@ -27,30 +23,31 @@ public:
|
|||
DigitalRadarDataGeneric(DigitalRadarDataGeneric&&) noexcept;
|
||||
DigitalRadarDataGeneric& operator=(DigitalRadarDataGeneric&&) noexcept;
|
||||
|
||||
std::string radar_identifier() const;
|
||||
std::uint32_t collection_time() const;
|
||||
std::uint16_t modified_julian_date() const;
|
||||
std::uint16_t azimuth_number() const;
|
||||
units::degrees<float> azimuth_angle() const;
|
||||
std::uint8_t compression_indicator() const;
|
||||
std::uint16_t radial_length() const;
|
||||
std::uint8_t azimuth_resolution_spacing() const;
|
||||
std::uint8_t radial_status() const;
|
||||
std::uint16_t elevation_number() const;
|
||||
std::uint8_t cut_sector_number() const;
|
||||
units::degrees<float> elevation_angle() const;
|
||||
std::uint8_t radial_spot_blanking_status() const;
|
||||
std::uint8_t azimuth_indexing_mode() const;
|
||||
std::uint16_t data_block_count() const;
|
||||
std::uint16_t volume_coverage_pattern_number() const;
|
||||
[[nodiscard]] std::string radar_identifier() const;
|
||||
[[nodiscard]] std::uint32_t collection_time() const override;
|
||||
[[nodiscard]] std::uint16_t modified_julian_date() const override;
|
||||
[[nodiscard]] std::uint16_t azimuth_number() const override;
|
||||
[[nodiscard]] units::degrees<float> azimuth_angle() const override;
|
||||
[[nodiscard]] std::uint8_t compression_indicator() const;
|
||||
[[nodiscard]] std::uint16_t radial_length() const;
|
||||
[[nodiscard]] std::uint8_t azimuth_resolution_spacing() const;
|
||||
[[nodiscard]] std::uint8_t radial_status() const;
|
||||
[[nodiscard]] std::uint16_t elevation_number() const override;
|
||||
[[nodiscard]] std::uint8_t cut_sector_number() const;
|
||||
[[nodiscard]] units::degrees<float> elevation_angle() const;
|
||||
[[nodiscard]] std::uint8_t radial_spot_blanking_status() const;
|
||||
[[nodiscard]] std::uint8_t azimuth_indexing_mode() const;
|
||||
[[nodiscard]] std::uint16_t data_block_count() const;
|
||||
[[nodiscard]] std::uint16_t volume_coverage_pattern_number() const override;
|
||||
|
||||
std::shared_ptr<ElevationDataBlock> elevation_data_block() const;
|
||||
std::shared_ptr<RadialDataBlock> radial_data_block() const;
|
||||
std::shared_ptr<VolumeDataBlock> volume_data_block() const;
|
||||
std::shared_ptr<GenericRadarData::MomentDataBlock>
|
||||
moment_data_block(DataBlockType type) const;
|
||||
[[nodiscard]] std::shared_ptr<ElevationDataBlock>
|
||||
elevation_data_block() const;
|
||||
[[nodiscard]] std::shared_ptr<RadialDataBlock> radial_data_block() const;
|
||||
[[nodiscard]] std::shared_ptr<VolumeDataBlock> volume_data_block() const;
|
||||
[[nodiscard]] std::shared_ptr<GenericRadarData::MomentDataBlock>
|
||||
moment_data_block(DataBlockType type) const override;
|
||||
|
||||
bool Parse(std::istream& is);
|
||||
bool Parse(std::istream& is) override;
|
||||
|
||||
static std::shared_ptr<DigitalRadarDataGeneric>
|
||||
Create(Level2MessageHeader&& header, std::istream& is);
|
||||
|
|
@ -65,11 +62,14 @@ class DigitalRadarDataGeneric::DataBlock
|
|||
protected:
|
||||
explicit DataBlock(const std::string& dataBlockType,
|
||||
const std::string& dataName);
|
||||
|
||||
public:
|
||||
virtual ~DataBlock();
|
||||
|
||||
DataBlock(const DataBlock&) = delete;
|
||||
DataBlock& operator=(const DataBlock&) = delete;
|
||||
|
||||
protected:
|
||||
DataBlock(DataBlock&&) noexcept;
|
||||
DataBlock& operator=(DataBlock&&) noexcept;
|
||||
|
||||
|
|
@ -118,17 +118,17 @@ public:
|
|||
MomentDataBlock(MomentDataBlock&&) noexcept;
|
||||
MomentDataBlock& operator=(MomentDataBlock&&) noexcept;
|
||||
|
||||
std::uint16_t number_of_data_moment_gates() const;
|
||||
units::kilometers<float> data_moment_range() const;
|
||||
std::int16_t data_moment_range_raw() const;
|
||||
units::kilometers<float> data_moment_range_sample_interval() const;
|
||||
std::uint16_t data_moment_range_sample_interval_raw() const;
|
||||
float snr_threshold() const;
|
||||
std::int16_t snr_threshold_raw() const;
|
||||
std::uint8_t data_word_size() const;
|
||||
float scale() const;
|
||||
float offset() const;
|
||||
const void* data_moments() const;
|
||||
[[nodiscard]] std::uint16_t number_of_data_moment_gates() const override;
|
||||
[[nodiscard]] units::kilometers<float> data_moment_range() const override;
|
||||
[[nodiscard]] std::int16_t data_moment_range_raw() const override;
|
||||
[[nodiscard]] units::kilometers<float> data_moment_range_sample_interval() const override;
|
||||
[[nodiscard]] std::uint16_t data_moment_range_sample_interval_raw() const override;
|
||||
[[nodiscard]] float snr_threshold() const;
|
||||
[[nodiscard]] std::int16_t snr_threshold_raw() const override;
|
||||
[[nodiscard]] std::uint8_t data_word_size() const override;
|
||||
[[nodiscard]] float scale() const override;
|
||||
[[nodiscard]] float offset() const override;
|
||||
[[nodiscard]] const void* data_moments() const override;
|
||||
|
||||
static std::shared_ptr<MomentDataBlock>
|
||||
Create(const std::string& dataBlockType,
|
||||
|
|
@ -155,7 +155,7 @@ public:
|
|||
RadialDataBlock(RadialDataBlock&&) noexcept;
|
||||
RadialDataBlock& operator=(RadialDataBlock&&) noexcept;
|
||||
|
||||
float unambiguous_range() const;
|
||||
[[nodiscard]] float unambiguous_range() const;
|
||||
|
||||
static std::shared_ptr<RadialDataBlock>
|
||||
Create(const std::string& dataBlockType,
|
||||
|
|
@ -182,9 +182,9 @@ public:
|
|||
VolumeDataBlock(VolumeDataBlock&&) noexcept;
|
||||
VolumeDataBlock& operator=(VolumeDataBlock&&) noexcept;
|
||||
|
||||
float latitude() const;
|
||||
float longitude() const;
|
||||
std::uint16_t volume_coverage_pattern_number() const;
|
||||
[[nodiscard]] float latitude() const;
|
||||
[[nodiscard]] float longitude() const;
|
||||
[[nodiscard]] std::uint16_t volume_coverage_pattern_number() const;
|
||||
|
||||
static std::shared_ptr<VolumeDataBlock>
|
||||
Create(const std::string& dataBlockType,
|
||||
|
|
@ -198,6 +198,4 @@ private:
|
|||
bool Parse(std::istream& is);
|
||||
};
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
|
|
@ -2,14 +2,8 @@
|
|||
|
||||
#include <scwx/wsr88d/rda/level2_message.hpp>
|
||||
|
||||
namespace scwx
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
{
|
||||
|
||||
class PerformanceMaintenanceDataImpl;
|
||||
|
||||
class PerformanceMaintenanceData : public Level2Message
|
||||
{
|
||||
|
|
@ -24,261 +18,261 @@ public:
|
|||
PerformanceMaintenanceData(PerformanceMaintenanceData&&) noexcept;
|
||||
PerformanceMaintenanceData& operator=(PerformanceMaintenanceData&&) noexcept;
|
||||
|
||||
uint16_t loop_back_set_status() const;
|
||||
uint32_t t1_output_frames() const;
|
||||
uint32_t t1_input_frames() const;
|
||||
uint32_t router_memory_used() const;
|
||||
uint32_t router_memory_free() const;
|
||||
uint16_t router_memory_utilization() const;
|
||||
uint16_t route_to_rpg() const;
|
||||
uint16_t t1_port_status() const;
|
||||
uint16_t router_dedicated_ethernet_port_status() const;
|
||||
uint16_t router_commercial_ethernet_port_status() const;
|
||||
uint32_t csu_24hr_errored_seconds() const;
|
||||
uint32_t csu_24hr_severely_errored_seconds() const;
|
||||
uint32_t csu_24hr_severely_errored_framing_seconds() const;
|
||||
uint32_t csu_24hr_unavailable_seconds() const;
|
||||
uint32_t csu_24hr_controlled_slip_seconds() const;
|
||||
uint32_t csu_24hr_path_coding_violations() const;
|
||||
uint32_t csu_24hr_line_errored_seconds() const;
|
||||
uint32_t csu_24hr_bursty_errored_seconds() const;
|
||||
uint32_t csu_24hr_degraded_minutes() const;
|
||||
uint32_t lan_switch_cpu_utilization() const;
|
||||
uint16_t lan_switch_memory_utilization() const;
|
||||
uint16_t ifdr_chasis_temperature() const;
|
||||
uint16_t ifdr_fpga_temperature() const;
|
||||
uint16_t ntp_status() const;
|
||||
uint16_t ipc_status() const;
|
||||
uint16_t commanded_channel_control() const;
|
||||
uint16_t polarization() const;
|
||||
float ame_internal_temperature() const;
|
||||
float ame_receiver_module_temperature() const;
|
||||
float ame_bite_cal_module_temperature() const;
|
||||
uint16_t ame_peltier_pulse_width_modulation() const;
|
||||
uint16_t ame_peltier_status() const;
|
||||
uint16_t ame_a_d_converter_status() const;
|
||||
uint16_t ame_state() const;
|
||||
float ame_3_3v_ps_voltage() const;
|
||||
float ame_5v_ps_voltage() const;
|
||||
float ame_6_5v_ps_voltage() const;
|
||||
float ame_15v_ps_voltage() const;
|
||||
float ame_48v_ps_voltage() const;
|
||||
float ame_stalo_power() const;
|
||||
float peltier_current() const;
|
||||
float adc_calibration_reference_voltage() const;
|
||||
uint16_t ame_mode() const;
|
||||
uint16_t ame_peltier_mode() const;
|
||||
float ame_peltier_inside_fan_current() const;
|
||||
float ame_peltier_outside_fan_current() const;
|
||||
float horizontal_tr_limiter_voltage() const;
|
||||
float vertical_tr_limiter_voltage() const;
|
||||
float adc_calibration_offset_voltage() const;
|
||||
float adc_calibration_gain_correction() const;
|
||||
uint16_t rcp_status() const;
|
||||
std::string rcp_string() const;
|
||||
uint16_t spip_power_buttons() const;
|
||||
float master_power_administrator_load() const;
|
||||
float expansion_power_administrator_load() const;
|
||||
uint16_t _5vdc_ps() const;
|
||||
uint16_t _15vdc_ps() const;
|
||||
uint16_t _28vdc_ps() const;
|
||||
uint16_t neg_15vdc_ps() const;
|
||||
uint16_t _45vdc_ps() const;
|
||||
uint16_t filament_ps_voltage() const;
|
||||
uint16_t vacuum_pump_ps_voltage() const;
|
||||
uint16_t focus_coil_ps_voltage() const;
|
||||
uint16_t filament_ps() const;
|
||||
uint16_t klystron_warmup() const;
|
||||
uint16_t transmitter_available() const;
|
||||
uint16_t wg_switch_position() const;
|
||||
uint16_t wg_pfn_transfer_interlock() const;
|
||||
uint16_t maintenance_mode() const;
|
||||
uint16_t maintenance_required() const;
|
||||
uint16_t pfn_switch_position() const;
|
||||
uint16_t modulator_overload() const;
|
||||
uint16_t modulator_inv_current() const;
|
||||
uint16_t modulator_switch_fail() const;
|
||||
uint16_t main_power_voltage() const;
|
||||
uint16_t charging_system_fail() const;
|
||||
uint16_t inverse_diode_current() const;
|
||||
uint16_t trigger_amplifier() const;
|
||||
uint16_t circulator_temperature() const;
|
||||
uint16_t spectrum_filter_pressure() const;
|
||||
uint16_t wg_arc_vswr() const;
|
||||
uint16_t cabinet_interlock() const;
|
||||
uint16_t cabinet_air_temperature() const;
|
||||
uint16_t cabinet_airflow() const;
|
||||
uint16_t klystron_current() const;
|
||||
uint16_t klystron_filament_current() const;
|
||||
uint16_t klystron_vacion_current() const;
|
||||
uint16_t klystron_air_temperature() const;
|
||||
uint16_t klystron_airflow() const;
|
||||
uint16_t modulator_switch_maintenance() const;
|
||||
uint16_t post_charge_regulator_maintenance() const;
|
||||
uint16_t wg_pressure_humidity() const;
|
||||
uint16_t transmitter_overvoltage() const;
|
||||
uint16_t transmitter_overcurrent() const;
|
||||
uint16_t focus_coil_current() const;
|
||||
uint16_t focus_coil_airflow() const;
|
||||
uint16_t oil_temperature() const;
|
||||
uint16_t prf_limit() const;
|
||||
uint16_t transmitter_oil_level() const;
|
||||
uint16_t transmitter_battery_charging() const;
|
||||
uint16_t high_voltage_status() const;
|
||||
uint16_t transmitter_recycling_summary() const;
|
||||
uint16_t transmitter_inoperable() const;
|
||||
uint16_t transmitter_air_filter() const;
|
||||
uint16_t zero_test_bit(unsigned i) const;
|
||||
uint16_t one_test_bit(unsigned i) const;
|
||||
uint16_t xmtr_spip_interface() const;
|
||||
uint16_t transmitter_summary_status() const;
|
||||
float transmitter_rf_power() const;
|
||||
float horizontal_xmtr_peak_power() const;
|
||||
float xmtr_peak_power() const;
|
||||
float vertical_xmtr_peak_power() const;
|
||||
float xmtr_rf_avg_power() const;
|
||||
uint32_t xmtr_recycle_count() const;
|
||||
float receiver_bias() const;
|
||||
float transmit_imbalance() const;
|
||||
float xmtr_power_meter_zero() const;
|
||||
uint16_t ac_unit1_compressor_shut_off() const;
|
||||
uint16_t ac_unit2_compressor_shut_off() const;
|
||||
uint16_t generator_maintenance_required() const;
|
||||
uint16_t generator_battery_voltage() const;
|
||||
uint16_t generator_engine() const;
|
||||
uint16_t generator_volt_frequency() const;
|
||||
uint16_t power_source() const;
|
||||
uint16_t transitional_power_source() const;
|
||||
uint16_t generator_auto_run_off_switch() const;
|
||||
uint16_t aircraft_hazard_lighting() const;
|
||||
uint16_t equipment_shelter_fire_detection_system() const;
|
||||
uint16_t equipment_shelter_fire_smoke() const;
|
||||
uint16_t generator_shelter_fire_smoke() const;
|
||||
uint16_t utility_voltage_frequency() const;
|
||||
uint16_t site_security_alarm() const;
|
||||
uint16_t security_equipment() const;
|
||||
uint16_t security_system() const;
|
||||
uint16_t receiver_connected_to_antenna() const;
|
||||
uint16_t radome_hatch() const;
|
||||
uint16_t ac_unit1_filter_dirty() const;
|
||||
uint16_t ac_unit2_filter_dirty() const;
|
||||
float equipment_shelter_temperature() const;
|
||||
float outside_ambient_temperature() const;
|
||||
float transmitter_leaving_air_temp() const;
|
||||
float ac_unit1_discharge_air_temp() const;
|
||||
float generator_shelter_temperature() const;
|
||||
float radome_air_temperature() const;
|
||||
float ac_unit2_discharge_air_temp() const;
|
||||
float spip_15v_ps() const;
|
||||
float spip_neg_15v_ps() const;
|
||||
uint16_t spip_28v_ps_status() const;
|
||||
float spip_5v_ps() const;
|
||||
uint16_t converted_generator_fuel_level() const;
|
||||
uint16_t elevation_pos_dead_limit() const;
|
||||
uint16_t _150v_overvoltage() const;
|
||||
uint16_t _150v_undervoltage() const;
|
||||
uint16_t elevation_servo_amp_inhibit() const;
|
||||
uint16_t elevation_servo_amp_short_circuit() const;
|
||||
uint16_t elevation_servo_amp_overtemp() const;
|
||||
uint16_t elevation_motor_overtemp() const;
|
||||
uint16_t elevation_stow_pin() const;
|
||||
uint16_t elevation_housing_5v_ps() const;
|
||||
uint16_t elevation_neg_dead_limit() const;
|
||||
uint16_t elevation_pos_normal_limit() const;
|
||||
uint16_t elevation_neg_normal_limit() const;
|
||||
uint16_t elevation_encoder_light() const;
|
||||
uint16_t elevation_gearbox_oil() const;
|
||||
uint16_t elevation_handwheel() const;
|
||||
uint16_t elevation_amp_ps() const;
|
||||
uint16_t azimuth_servo_amp_inhibit() const;
|
||||
uint16_t azimuth_servo_amp_short_circuit() const;
|
||||
uint16_t azimuth_servo_amp_overtemp() const;
|
||||
uint16_t azimuth_motor_overtemp() const;
|
||||
uint16_t azimuth_stow_pin() const;
|
||||
uint16_t azimuth_housing_5v_ps() const;
|
||||
uint16_t azimuth_encoder_light() const;
|
||||
uint16_t azimuth_gearbox_oil() const;
|
||||
uint16_t azimuth_bull_gear_oil() const;
|
||||
uint16_t azimuth_handwheel() const;
|
||||
uint16_t azimuth_servo_amp_ps() const;
|
||||
uint16_t servo() const;
|
||||
uint16_t pedestal_interlock_switch() const;
|
||||
uint16_t coho_clock() const;
|
||||
uint16_t rf_generator_frequency_select_oscillator() const;
|
||||
uint16_t rf_generator_rf_stalo() const;
|
||||
uint16_t rf_generator_phase_shifted_coho() const;
|
||||
uint16_t _9v_receiver_ps() const;
|
||||
uint16_t _5v_receiver_ps() const;
|
||||
uint16_t _18v_receiver_ps() const;
|
||||
uint16_t neg_9v_receiver_ps() const;
|
||||
uint16_t _5v_single_channel_rdaiu_ps() const;
|
||||
float horizontal_short_pulse_noise() const;
|
||||
float horizontal_long_pulse_noise() const;
|
||||
float horizontal_noise_temperature() const;
|
||||
float vertical_short_pulse_noise() const;
|
||||
float vertical_long_pulse_noise() const;
|
||||
float vertical_noise_temperature() const;
|
||||
float horizontal_linearity() const;
|
||||
float horizontal_dynamic_range() const;
|
||||
float horizontal_delta_dbz0() const;
|
||||
float vertical_delta_dbz0() const;
|
||||
float kd_peak_measured() const;
|
||||
float short_pulse_horizontal_dbz0() const;
|
||||
float long_pulse_horizontal_dbz0() const;
|
||||
uint16_t velocity_processed() const;
|
||||
uint16_t width_processed() const;
|
||||
uint16_t velocity_rf_gen() const;
|
||||
uint16_t width_rf_gen() const;
|
||||
float horizontal_i0() const;
|
||||
float vertical_i0() const;
|
||||
float vertical_dynamic_range() const;
|
||||
float short_pulse_vertical_dbz0() const;
|
||||
float long_pulse_vertical_dbz0() const;
|
||||
float horizontal_power_sense() const;
|
||||
float vertical_power_sense() const;
|
||||
float zdr_offset() const;
|
||||
float clutter_suppression_delta() const;
|
||||
float clutter_suppression_unfiltered_power() const;
|
||||
float clutter_suppression_filtered_power() const;
|
||||
float vertical_linearity() const;
|
||||
uint16_t state_file_read_status() const;
|
||||
uint16_t state_file_write_status() const;
|
||||
uint16_t bypass_map_file_read_status() const;
|
||||
uint16_t bypass_map_file_write_status() const;
|
||||
uint16_t current_adaptation_file_read_status() const;
|
||||
uint16_t current_adaptation_file_write_status() const;
|
||||
uint16_t censor_zone_file_read_status() const;
|
||||
uint16_t censor_zone_file_write_status() const;
|
||||
uint16_t remote_vcp_file_read_status() const;
|
||||
uint16_t remote_vcp_file_write_status() const;
|
||||
uint16_t baseline_adaptation_file_read_status() const;
|
||||
uint16_t read_status_of_prf_sets() const;
|
||||
uint16_t clutter_filter_map_file_read_status() const;
|
||||
uint16_t clutter_filter_map_file_write_status() const;
|
||||
uint16_t general_disk_io_error() const;
|
||||
uint8_t rsp_status() const;
|
||||
uint8_t cpu1_temperature() const;
|
||||
uint8_t cpu2_temperature() const;
|
||||
uint16_t rsp_motherboard_power() const;
|
||||
uint16_t spip_comm_status() const;
|
||||
uint16_t hci_comm_status() const;
|
||||
uint16_t signal_processor_command_status() const;
|
||||
uint16_t ame_communication_status() const;
|
||||
uint16_t rms_link_status() const;
|
||||
uint16_t rpg_link_status() const;
|
||||
uint16_t interpanel_link_status() const;
|
||||
uint32_t performance_check_time() const;
|
||||
uint16_t version() const;
|
||||
[[nodiscard]] std::uint16_t loop_back_set_status() const;
|
||||
[[nodiscard]] std::uint32_t t1_output_frames() const;
|
||||
[[nodiscard]] std::uint32_t t1_input_frames() const;
|
||||
[[nodiscard]] std::uint32_t router_memory_used() const;
|
||||
[[nodiscard]] std::uint32_t router_memory_free() const;
|
||||
[[nodiscard]] std::uint16_t router_memory_utilization() const;
|
||||
[[nodiscard]] std::uint16_t route_to_rpg() const;
|
||||
[[nodiscard]] std::uint16_t t1_port_status() const;
|
||||
[[nodiscard]] std::uint16_t router_dedicated_ethernet_port_status() const;
|
||||
[[nodiscard]] std::uint16_t router_commercial_ethernet_port_status() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_errored_seconds() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_severely_errored_seconds() const;
|
||||
[[nodiscard]] std::uint32_t
|
||||
csu_24hr_severely_errored_framing_seconds() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_unavailable_seconds() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_controlled_slip_seconds() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_path_coding_violations() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_line_errored_seconds() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_bursty_errored_seconds() const;
|
||||
[[nodiscard]] std::uint32_t csu_24hr_degraded_minutes() const;
|
||||
[[nodiscard]] std::uint32_t lan_switch_cpu_utilization() const;
|
||||
[[nodiscard]] std::uint16_t lan_switch_memory_utilization() const;
|
||||
[[nodiscard]] std::uint16_t ifdr_chasis_temperature() const;
|
||||
[[nodiscard]] std::uint16_t ifdr_fpga_temperature() const;
|
||||
[[nodiscard]] std::uint16_t ntp_status() const;
|
||||
[[nodiscard]] std::uint16_t ipc_status() const;
|
||||
[[nodiscard]] std::uint16_t commanded_channel_control() const;
|
||||
[[nodiscard]] std::uint16_t polarization() const;
|
||||
[[nodiscard]] float ame_internal_temperature() const;
|
||||
[[nodiscard]] float ame_receiver_module_temperature() const;
|
||||
[[nodiscard]] float ame_bite_cal_module_temperature() const;
|
||||
[[nodiscard]] std::uint16_t ame_peltier_pulse_width_modulation() const;
|
||||
[[nodiscard]] std::uint16_t ame_peltier_status() const;
|
||||
[[nodiscard]] std::uint16_t ame_a_d_converter_status() const;
|
||||
[[nodiscard]] std::uint16_t ame_state() const;
|
||||
[[nodiscard]] float ame_3_3v_ps_voltage() const;
|
||||
[[nodiscard]] float ame_5v_ps_voltage() const;
|
||||
[[nodiscard]] float ame_6_5v_ps_voltage() const;
|
||||
[[nodiscard]] float ame_15v_ps_voltage() const;
|
||||
[[nodiscard]] float ame_48v_ps_voltage() const;
|
||||
[[nodiscard]] float ame_stalo_power() const;
|
||||
[[nodiscard]] float peltier_current() const;
|
||||
[[nodiscard]] float adc_calibration_reference_voltage() const;
|
||||
[[nodiscard]] std::uint16_t ame_mode() const;
|
||||
[[nodiscard]] std::uint16_t ame_peltier_mode() const;
|
||||
[[nodiscard]] float ame_peltier_inside_fan_current() const;
|
||||
[[nodiscard]] float ame_peltier_outside_fan_current() const;
|
||||
[[nodiscard]] float horizontal_tr_limiter_voltage() const;
|
||||
[[nodiscard]] float vertical_tr_limiter_voltage() const;
|
||||
[[nodiscard]] float adc_calibration_offset_voltage() const;
|
||||
[[nodiscard]] float adc_calibration_gain_correction() const;
|
||||
[[nodiscard]] std::uint16_t rcp_status() const;
|
||||
[[nodiscard]] std::string rcp_string() const;
|
||||
[[nodiscard]] std::uint16_t spip_power_buttons() const;
|
||||
[[nodiscard]] float master_power_administrator_load() const;
|
||||
[[nodiscard]] float expansion_power_administrator_load() const;
|
||||
[[nodiscard]] std::uint16_t _5vdc_ps() const;
|
||||
[[nodiscard]] std::uint16_t _15vdc_ps() const;
|
||||
[[nodiscard]] std::uint16_t _28vdc_ps() const;
|
||||
[[nodiscard]] std::uint16_t neg_15vdc_ps() const;
|
||||
[[nodiscard]] std::uint16_t _45vdc_ps() const;
|
||||
[[nodiscard]] std::uint16_t filament_ps_voltage() const;
|
||||
[[nodiscard]] std::uint16_t vacuum_pump_ps_voltage() const;
|
||||
[[nodiscard]] std::uint16_t focus_coil_ps_voltage() const;
|
||||
[[nodiscard]] std::uint16_t filament_ps() const;
|
||||
[[nodiscard]] std::uint16_t klystron_warmup() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_available() const;
|
||||
[[nodiscard]] std::uint16_t wg_switch_position() const;
|
||||
[[nodiscard]] std::uint16_t wg_pfn_transfer_interlock() const;
|
||||
[[nodiscard]] std::uint16_t maintenance_mode() const;
|
||||
[[nodiscard]] std::uint16_t maintenance_required() const;
|
||||
[[nodiscard]] std::uint16_t pfn_switch_position() const;
|
||||
[[nodiscard]] std::uint16_t modulator_overload() const;
|
||||
[[nodiscard]] std::uint16_t modulator_inv_current() const;
|
||||
[[nodiscard]] std::uint16_t modulator_switch_fail() const;
|
||||
[[nodiscard]] std::uint16_t main_power_voltage() const;
|
||||
[[nodiscard]] std::uint16_t charging_system_fail() const;
|
||||
[[nodiscard]] std::uint16_t inverse_diode_current() const;
|
||||
[[nodiscard]] std::uint16_t trigger_amplifier() const;
|
||||
[[nodiscard]] std::uint16_t circulator_temperature() const;
|
||||
[[nodiscard]] std::uint16_t spectrum_filter_pressure() const;
|
||||
[[nodiscard]] std::uint16_t wg_arc_vswr() const;
|
||||
[[nodiscard]] std::uint16_t cabinet_interlock() const;
|
||||
[[nodiscard]] std::uint16_t cabinet_air_temperature() const;
|
||||
[[nodiscard]] std::uint16_t cabinet_airflow() const;
|
||||
[[nodiscard]] std::uint16_t klystron_current() const;
|
||||
[[nodiscard]] std::uint16_t klystron_filament_current() const;
|
||||
[[nodiscard]] std::uint16_t klystron_vacion_current() const;
|
||||
[[nodiscard]] std::uint16_t klystron_air_temperature() const;
|
||||
[[nodiscard]] std::uint16_t klystron_airflow() const;
|
||||
[[nodiscard]] std::uint16_t modulator_switch_maintenance() const;
|
||||
[[nodiscard]] std::uint16_t post_charge_regulator_maintenance() const;
|
||||
[[nodiscard]] std::uint16_t wg_pressure_humidity() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_overvoltage() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_overcurrent() const;
|
||||
[[nodiscard]] std::uint16_t focus_coil_current() const;
|
||||
[[nodiscard]] std::uint16_t focus_coil_airflow() const;
|
||||
[[nodiscard]] std::uint16_t oil_temperature() const;
|
||||
[[nodiscard]] std::uint16_t prf_limit() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_oil_level() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_battery_charging() const;
|
||||
[[nodiscard]] std::uint16_t high_voltage_status() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_recycling_summary() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_inoperable() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_air_filter() const;
|
||||
[[nodiscard]] std::uint16_t zero_test_bit(unsigned i) const;
|
||||
[[nodiscard]] std::uint16_t one_test_bit(unsigned i) const;
|
||||
[[nodiscard]] std::uint16_t xmtr_spip_interface() const;
|
||||
[[nodiscard]] std::uint16_t transmitter_summary_status() const;
|
||||
[[nodiscard]] float transmitter_rf_power() const;
|
||||
[[nodiscard]] float horizontal_xmtr_peak_power() const;
|
||||
[[nodiscard]] float xmtr_peak_power() const;
|
||||
[[nodiscard]] float vertical_xmtr_peak_power() const;
|
||||
[[nodiscard]] float xmtr_rf_avg_power() const;
|
||||
[[nodiscard]] std::uint32_t xmtr_recycle_count() const;
|
||||
[[nodiscard]] float receiver_bias() const;
|
||||
[[nodiscard]] float transmit_imbalance() const;
|
||||
[[nodiscard]] float xmtr_power_meter_zero() const;
|
||||
[[nodiscard]] std::uint16_t ac_unit1_compressor_shut_off() const;
|
||||
[[nodiscard]] std::uint16_t ac_unit2_compressor_shut_off() const;
|
||||
[[nodiscard]] std::uint16_t generator_maintenance_required() const;
|
||||
[[nodiscard]] std::uint16_t generator_battery_voltage() const;
|
||||
[[nodiscard]] std::uint16_t generator_engine() const;
|
||||
[[nodiscard]] std::uint16_t generator_volt_frequency() const;
|
||||
[[nodiscard]] std::uint16_t power_source() const;
|
||||
[[nodiscard]] std::uint16_t transitional_power_source() const;
|
||||
[[nodiscard]] std::uint16_t generator_auto_run_off_switch() const;
|
||||
[[nodiscard]] std::uint16_t aircraft_hazard_lighting() const;
|
||||
[[nodiscard]] std::uint16_t equipment_shelter_fire_detection_system() const;
|
||||
[[nodiscard]] std::uint16_t equipment_shelter_fire_smoke() const;
|
||||
[[nodiscard]] std::uint16_t generator_shelter_fire_smoke() const;
|
||||
[[nodiscard]] std::uint16_t utility_voltage_frequency() const;
|
||||
[[nodiscard]] std::uint16_t site_security_alarm() const;
|
||||
[[nodiscard]] std::uint16_t security_equipment() const;
|
||||
[[nodiscard]] std::uint16_t security_system() const;
|
||||
[[nodiscard]] std::uint16_t receiver_connected_to_antenna() const;
|
||||
[[nodiscard]] std::uint16_t radome_hatch() const;
|
||||
[[nodiscard]] std::uint16_t ac_unit1_filter_dirty() const;
|
||||
[[nodiscard]] std::uint16_t ac_unit2_filter_dirty() const;
|
||||
[[nodiscard]] float equipment_shelter_temperature() const;
|
||||
[[nodiscard]] float outside_ambient_temperature() const;
|
||||
[[nodiscard]] float transmitter_leaving_air_temp() const;
|
||||
[[nodiscard]] float ac_unit1_discharge_air_temp() const;
|
||||
[[nodiscard]] float generator_shelter_temperature() const;
|
||||
[[nodiscard]] float radome_air_temperature() const;
|
||||
[[nodiscard]] float ac_unit2_discharge_air_temp() const;
|
||||
[[nodiscard]] float spip_15v_ps() const;
|
||||
[[nodiscard]] float spip_neg_15v_ps() const;
|
||||
[[nodiscard]] std::uint16_t spip_28v_ps_status() const;
|
||||
[[nodiscard]] float spip_5v_ps() const;
|
||||
[[nodiscard]] std::uint16_t converted_generator_fuel_level() const;
|
||||
[[nodiscard]] std::uint16_t elevation_pos_dead_limit() const;
|
||||
[[nodiscard]] std::uint16_t _150v_overvoltage() const;
|
||||
[[nodiscard]] std::uint16_t _150v_undervoltage() const;
|
||||
[[nodiscard]] std::uint16_t elevation_servo_amp_inhibit() const;
|
||||
[[nodiscard]] std::uint16_t elevation_servo_amp_short_circuit() const;
|
||||
[[nodiscard]] std::uint16_t elevation_servo_amp_overtemp() const;
|
||||
[[nodiscard]] std::uint16_t elevation_motor_overtemp() const;
|
||||
[[nodiscard]] std::uint16_t elevation_stow_pin() const;
|
||||
[[nodiscard]] std::uint16_t elevation_housing_5v_ps() const;
|
||||
[[nodiscard]] std::uint16_t elevation_neg_dead_limit() const;
|
||||
[[nodiscard]] std::uint16_t elevation_pos_normal_limit() const;
|
||||
[[nodiscard]] std::uint16_t elevation_neg_normal_limit() const;
|
||||
[[nodiscard]] std::uint16_t elevation_encoder_light() const;
|
||||
[[nodiscard]] std::uint16_t elevation_gearbox_oil() const;
|
||||
[[nodiscard]] std::uint16_t elevation_handwheel() const;
|
||||
[[nodiscard]] std::uint16_t elevation_amp_ps() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_servo_amp_inhibit() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_servo_amp_short_circuit() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_servo_amp_overtemp() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_motor_overtemp() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_stow_pin() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_housing_5v_ps() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_encoder_light() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_gearbox_oil() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_bull_gear_oil() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_handwheel() const;
|
||||
[[nodiscard]] std::uint16_t azimuth_servo_amp_ps() const;
|
||||
[[nodiscard]] std::uint16_t servo() const;
|
||||
[[nodiscard]] std::uint16_t pedestal_interlock_switch() const;
|
||||
[[nodiscard]] std::uint16_t coho_clock() const;
|
||||
[[nodiscard]] std::uint16_t rf_generator_frequency_select_oscillator() const;
|
||||
[[nodiscard]] std::uint16_t rf_generator_rf_stalo() const;
|
||||
[[nodiscard]] std::uint16_t rf_generator_phase_shifted_coho() const;
|
||||
[[nodiscard]] std::uint16_t _9v_receiver_ps() const;
|
||||
[[nodiscard]] std::uint16_t _5v_receiver_ps() const;
|
||||
[[nodiscard]] std::uint16_t _18v_receiver_ps() const;
|
||||
[[nodiscard]] std::uint16_t neg_9v_receiver_ps() const;
|
||||
[[nodiscard]] std::uint16_t _5v_single_channel_rdaiu_ps() const;
|
||||
[[nodiscard]] float horizontal_short_pulse_noise() const;
|
||||
[[nodiscard]] float horizontal_long_pulse_noise() const;
|
||||
[[nodiscard]] float horizontal_noise_temperature() const;
|
||||
[[nodiscard]] float vertical_short_pulse_noise() const;
|
||||
[[nodiscard]] float vertical_long_pulse_noise() const;
|
||||
[[nodiscard]] float vertical_noise_temperature() const;
|
||||
[[nodiscard]] float horizontal_linearity() const;
|
||||
[[nodiscard]] float horizontal_dynamic_range() const;
|
||||
[[nodiscard]] float horizontal_delta_dbz0() const;
|
||||
[[nodiscard]] float vertical_delta_dbz0() const;
|
||||
[[nodiscard]] float kd_peak_measured() const;
|
||||
[[nodiscard]] float short_pulse_horizontal_dbz0() const;
|
||||
[[nodiscard]] float long_pulse_horizontal_dbz0() const;
|
||||
[[nodiscard]] std::uint16_t velocity_processed() const;
|
||||
[[nodiscard]] std::uint16_t width_processed() const;
|
||||
[[nodiscard]] std::uint16_t velocity_rf_gen() const;
|
||||
[[nodiscard]] std::uint16_t width_rf_gen() const;
|
||||
[[nodiscard]] float horizontal_i0() const;
|
||||
[[nodiscard]] float vertical_i0() const;
|
||||
[[nodiscard]] float vertical_dynamic_range() const;
|
||||
[[nodiscard]] float short_pulse_vertical_dbz0() const;
|
||||
[[nodiscard]] float long_pulse_vertical_dbz0() const;
|
||||
[[nodiscard]] float horizontal_power_sense() const;
|
||||
[[nodiscard]] float vertical_power_sense() const;
|
||||
[[nodiscard]] float zdr_offset() const;
|
||||
[[nodiscard]] float clutter_suppression_delta() const;
|
||||
[[nodiscard]] float clutter_suppression_unfiltered_power() const;
|
||||
[[nodiscard]] float clutter_suppression_filtered_power() const;
|
||||
[[nodiscard]] float vertical_linearity() const;
|
||||
[[nodiscard]] std::uint16_t state_file_read_status() const;
|
||||
[[nodiscard]] std::uint16_t state_file_write_status() const;
|
||||
[[nodiscard]] std::uint16_t bypass_map_file_read_status() const;
|
||||
[[nodiscard]] std::uint16_t bypass_map_file_write_status() const;
|
||||
[[nodiscard]] std::uint16_t current_adaptation_file_read_status() const;
|
||||
[[nodiscard]] std::uint16_t current_adaptation_file_write_status() const;
|
||||
[[nodiscard]] std::uint16_t censor_zone_file_read_status() const;
|
||||
[[nodiscard]] std::uint16_t censor_zone_file_write_status() const;
|
||||
[[nodiscard]] std::uint16_t remote_vcp_file_read_status() const;
|
||||
[[nodiscard]] std::uint16_t remote_vcp_file_write_status() const;
|
||||
[[nodiscard]] std::uint16_t baseline_adaptation_file_read_status() const;
|
||||
[[nodiscard]] std::uint16_t read_status_of_prf_sets() const;
|
||||
[[nodiscard]] std::uint16_t clutter_filter_map_file_read_status() const;
|
||||
[[nodiscard]] std::uint16_t clutter_filter_map_file_write_status() const;
|
||||
[[nodiscard]] std::uint16_t general_disk_io_error() const;
|
||||
[[nodiscard]] std::uint8_t rsp_status() const;
|
||||
[[nodiscard]] std::uint8_t cpu1_temperature() const;
|
||||
[[nodiscard]] std::uint8_t cpu2_temperature() const;
|
||||
[[nodiscard]] std::uint16_t rsp_motherboard_power() const;
|
||||
[[nodiscard]] std::uint16_t spip_comm_status() const;
|
||||
[[nodiscard]] std::uint16_t hci_comm_status() const;
|
||||
[[nodiscard]] std::uint16_t signal_processor_command_status() const;
|
||||
[[nodiscard]] std::uint16_t ame_communication_status() const;
|
||||
[[nodiscard]] std::uint16_t rms_link_status() const;
|
||||
[[nodiscard]] std::uint16_t rpg_link_status() const;
|
||||
[[nodiscard]] std::uint16_t interpanel_link_status() const;
|
||||
[[nodiscard]] std::uint32_t performance_check_time() const;
|
||||
[[nodiscard]] std::uint16_t version() const;
|
||||
|
||||
bool Parse(std::istream& is);
|
||||
bool Parse(std::istream& is) override;
|
||||
|
||||
static std::shared_ptr<PerformanceMaintenanceData>
|
||||
Create(Level2MessageHeader&& header, std::istream& is);
|
||||
|
||||
private:
|
||||
std::unique_ptr<PerformanceMaintenanceDataImpl> p;
|
||||
class Impl;
|
||||
std::unique_ptr<Impl> p;
|
||||
};
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
|
|
@ -2,14 +2,8 @@
|
|||
|
||||
#include <scwx/wsr88d/rda/level2_message.hpp>
|
||||
|
||||
namespace scwx
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
{
|
||||
|
||||
class RdaAdaptationDataImpl;
|
||||
|
||||
class RdaAdaptationData : public Level2Message
|
||||
{
|
||||
|
|
@ -23,200 +17,199 @@ public:
|
|||
RdaAdaptationData(RdaAdaptationData&&) noexcept;
|
||||
RdaAdaptationData& operator=(RdaAdaptationData&&) noexcept;
|
||||
|
||||
std::string adap_file_name() const;
|
||||
std::string adap_format() const;
|
||||
std::string adap_revision() const;
|
||||
std::string adap_date() const;
|
||||
std::string adap_time() const;
|
||||
float lower_pre_limit() const;
|
||||
float az_lat() const;
|
||||
float upper_pre_limit() const;
|
||||
float el_lat() const;
|
||||
float parkaz() const;
|
||||
float parkel() const;
|
||||
float a_fuel_conv(unsigned i) const;
|
||||
float a_min_shelter_temp() const;
|
||||
float a_max_shelter_temp() const;
|
||||
float a_min_shelter_ac_temp_diff() const;
|
||||
float a_max_xmtr_air_temp() const;
|
||||
float a_max_rad_temp() const;
|
||||
float a_max_rad_temp_rise() const;
|
||||
float lower_dead_limit() const;
|
||||
float upper_dead_limit() const;
|
||||
float a_min_gen_room_temp() const;
|
||||
float a_max_gen_room_temp() const;
|
||||
float spip_5v_reg_lim() const;
|
||||
float spip_15v_reg_lim() const;
|
||||
bool rpg_co_located() const;
|
||||
bool spec_filter_installed() const;
|
||||
bool tps_installed() const;
|
||||
bool rms_installed() const;
|
||||
uint32_t a_hvdl_tst_int() const;
|
||||
uint32_t a_rpg_lt_int() const;
|
||||
uint32_t a_min_stab_util_pwr_time() const;
|
||||
uint32_t a_gen_auto_exer_interval() const;
|
||||
uint32_t a_util_pwr_sw_req_interval() const;
|
||||
float a_low_fuel_level() const;
|
||||
uint32_t config_chan_number() const;
|
||||
uint32_t redundant_chan_config() const;
|
||||
float atten_table(unsigned i) const;
|
||||
float path_losses(unsigned i) const;
|
||||
float h_coupler_xmt_loss() const;
|
||||
float h_coupler_cw_loss() const;
|
||||
float v_coupler_xmt_loss() const;
|
||||
float ame_ts_bias() const;
|
||||
float v_coupler_cw_loss() const;
|
||||
float pwr_sense_bias() const;
|
||||
float ame_v_noise_enr() const;
|
||||
float chan_cal_diff() const;
|
||||
float v_ts_cw() const;
|
||||
float h_rnscale(unsigned i) const;
|
||||
float atmos(unsigned i) const;
|
||||
float el_index(unsigned i) const;
|
||||
uint32_t tfreq_mhz() const;
|
||||
float base_data_tcn() const;
|
||||
float refl_data_tover() const;
|
||||
float tar_h_dbz0_lp() const;
|
||||
float tar_v_dbz0_lp() const;
|
||||
uint32_t init_phi_dp() const;
|
||||
uint32_t norm_init_phi_dp() const;
|
||||
float lx_lp() const;
|
||||
float lx_sp() const;
|
||||
float meteor_param() const;
|
||||
float antenna_gain() const;
|
||||
float vel_degrad_limit() const;
|
||||
float wth_degrad_limit() const;
|
||||
float h_noisetemp_dgrad_limit() const;
|
||||
uint32_t h_min_noisetemp() const;
|
||||
float v_noisetemp_dgrad_limit() const;
|
||||
uint32_t v_min_noisetemp() const;
|
||||
float kly_degrade_limit() const;
|
||||
float ts_coho() const;
|
||||
float h_ts_cw() const;
|
||||
float ts_stalo() const;
|
||||
float ame_h_noise_enr() const;
|
||||
float xmtr_peak_pwr_high_limit() const;
|
||||
float xmtr_peak_pwr_low_limit() const;
|
||||
float h_dbz0_delta_limit() const;
|
||||
float threshold1() const;
|
||||
float threshold2() const;
|
||||
float clut_supp_dgrad_lim() const;
|
||||
float range0_value() const;
|
||||
float xmtr_pwr_mtr_scale() const;
|
||||
float v_dbz0_delta_limit() const;
|
||||
float tar_h_dbz0_sp() const;
|
||||
float tar_v_dbz0_sp() const;
|
||||
uint32_t deltaprf() const;
|
||||
uint32_t tau_sp() const;
|
||||
uint32_t tau_lp() const;
|
||||
uint32_t nc_dead_value() const;
|
||||
uint32_t tau_rf_sp() const;
|
||||
uint32_t tau_rf_lp() const;
|
||||
float seg1_lim() const;
|
||||
float slatsec() const;
|
||||
float slonsec() const;
|
||||
uint32_t slatdeg() const;
|
||||
uint32_t slatmin() const;
|
||||
uint32_t slondeg() const;
|
||||
uint32_t slonmin() const;
|
||||
char slatdir() const;
|
||||
char slondir() const;
|
||||
double dig_rcvr_clock_freq() const;
|
||||
double coho_freq() const;
|
||||
float az_correction_factor() const;
|
||||
float el_correction_factor() const;
|
||||
std::string site_name() const;
|
||||
float ant_manual_setup_ielmin() const;
|
||||
float ant_manual_setup_ielmax() const;
|
||||
uint32_t ant_manual_setup_fazvelmax() const;
|
||||
uint32_t ant_manual_setup_felvelmax() const;
|
||||
int32_t ant_manual_setup_ignd_hgt() const;
|
||||
uint32_t ant_manual_setup_irad_hgt() const;
|
||||
float az_pos_sustain_drive() const;
|
||||
float az_neg_sustain_drive() const;
|
||||
float az_nom_pos_drive_slope() const;
|
||||
float az_nom_neg_drive_slope() const;
|
||||
float az_feedback_slope() const;
|
||||
float el_pos_sustain_drive() const;
|
||||
float el_neg_sustain_drive() const;
|
||||
float el_nom_pos_drive_slope() const;
|
||||
float el_nom_neg_drive_slope() const;
|
||||
float el_feedback_slope() const;
|
||||
float el_first_slope() const;
|
||||
float el_second_slope() const;
|
||||
float el_third_slope() const;
|
||||
float el_droop_pos() const;
|
||||
float el_off_neutral_drive() const;
|
||||
float az_intertia() const;
|
||||
float el_inertia() const;
|
||||
float az_stow_angle() const;
|
||||
float el_stow_angle() const;
|
||||
float az_encoder_alignment() const;
|
||||
float el_encoder_alignment() const;
|
||||
std::string refined_park() const;
|
||||
uint32_t rvp8nv_iwaveguide_length() const;
|
||||
float v_rnscale(unsigned i) const;
|
||||
float vel_data_tover() const;
|
||||
float width_data_tover() const;
|
||||
float doppler_range_start() const;
|
||||
uint32_t max_el_index() const;
|
||||
float seg2_lim() const;
|
||||
float seg3_lim() const;
|
||||
float seg4_lim() const;
|
||||
uint32_t nbr_el_segments() const;
|
||||
float h_noise_long() const;
|
||||
float ant_noise_temp() const;
|
||||
float h_noise_short() const;
|
||||
float h_noise_tolerance() const;
|
||||
float min_h_dyn_range() const;
|
||||
bool gen_installed() const;
|
||||
bool gen_exercise() const;
|
||||
float v_noise_tolerance() const;
|
||||
float min_v_dyn_range() const;
|
||||
float zdr_offset_dgrad_lim() const;
|
||||
float baseline_zdr_offset() const;
|
||||
float v_noise_long() const;
|
||||
float v_noise_short() const;
|
||||
float zdr_data_tover() const;
|
||||
float phi_data_tover() const;
|
||||
float rho_data_tover() const;
|
||||
float stalo_power_dgrad_limit() const;
|
||||
float stalo_power_maint_limit() const;
|
||||
float min_h_pwr_sense() const;
|
||||
float min_v_pwr_sense() const;
|
||||
float h_pwr_sense_offset() const;
|
||||
float v_pwr_sense_offset() const;
|
||||
float ps_gain_ref() const;
|
||||
float rf_pallet_broad_loss() const;
|
||||
float ame_ps_tolerance() const;
|
||||
float ame_max_temp() const;
|
||||
float ame_min_temp() const;
|
||||
float rcvr_mod_max_temp() const;
|
||||
float rcvr_mod_min_temp() const;
|
||||
float bite_mod_max_temp() const;
|
||||
float bite_mod_min_temp() const;
|
||||
uint32_t default_polarization() const;
|
||||
float tr_limit_dgrad_limit() const;
|
||||
float tr_limit_fail_limit() const;
|
||||
bool rfp_stepper_enabled() const;
|
||||
float ame_current_tolerance() const;
|
||||
uint32_t h_only_polarization() const;
|
||||
uint32_t v_only_polarization() const;
|
||||
float sun_bias() const;
|
||||
float a_min_shelter_temp_warn() const;
|
||||
float power_meter_zero() const;
|
||||
float txb_baseline() const;
|
||||
float txb_alarm_thresh() const;
|
||||
[[nodiscard]] std::string adap_file_name() const;
|
||||
[[nodiscard]] std::string adap_format() const;
|
||||
[[nodiscard]] std::string adap_revision() const;
|
||||
[[nodiscard]] std::string adap_date() const;
|
||||
[[nodiscard]] std::string adap_time() const;
|
||||
[[nodiscard]] float lower_pre_limit() const;
|
||||
[[nodiscard]] float az_lat() const;
|
||||
[[nodiscard]] float upper_pre_limit() const;
|
||||
[[nodiscard]] float el_lat() const;
|
||||
[[nodiscard]] float parkaz() const;
|
||||
[[nodiscard]] float parkel() const;
|
||||
[[nodiscard]] float a_fuel_conv(unsigned i) const;
|
||||
[[nodiscard]] float a_min_shelter_temp() const;
|
||||
[[nodiscard]] float a_max_shelter_temp() const;
|
||||
[[nodiscard]] float a_min_shelter_ac_temp_diff() const;
|
||||
[[nodiscard]] float a_max_xmtr_air_temp() const;
|
||||
[[nodiscard]] float a_max_rad_temp() const;
|
||||
[[nodiscard]] float a_max_rad_temp_rise() const;
|
||||
[[nodiscard]] float lower_dead_limit() const;
|
||||
[[nodiscard]] float upper_dead_limit() const;
|
||||
[[nodiscard]] float a_min_gen_room_temp() const;
|
||||
[[nodiscard]] float a_max_gen_room_temp() const;
|
||||
[[nodiscard]] float spip_5v_reg_lim() const;
|
||||
[[nodiscard]] float spip_15v_reg_lim() const;
|
||||
[[nodiscard]] bool rpg_co_located() const;
|
||||
[[nodiscard]] bool spec_filter_installed() const;
|
||||
[[nodiscard]] bool tps_installed() const;
|
||||
[[nodiscard]] bool rms_installed() const;
|
||||
[[nodiscard]] std::uint32_t a_hvdl_tst_int() const;
|
||||
[[nodiscard]] std::uint32_t a_rpg_lt_int() const;
|
||||
[[nodiscard]] std::uint32_t a_min_stab_util_pwr_time() const;
|
||||
[[nodiscard]] std::uint32_t a_gen_auto_exer_interval() const;
|
||||
[[nodiscard]] std::uint32_t a_util_pwr_sw_req_interval() const;
|
||||
[[nodiscard]] float a_low_fuel_level() const;
|
||||
[[nodiscard]] std::uint32_t config_chan_number() const;
|
||||
[[nodiscard]] std::uint32_t redundant_chan_config() const;
|
||||
[[nodiscard]] float atten_table(unsigned i) const;
|
||||
[[nodiscard]] float path_losses(unsigned i) const;
|
||||
[[nodiscard]] float h_coupler_xmt_loss() const;
|
||||
[[nodiscard]] float h_coupler_cw_loss() const;
|
||||
[[nodiscard]] float v_coupler_xmt_loss() const;
|
||||
[[nodiscard]] float ame_ts_bias() const;
|
||||
[[nodiscard]] float v_coupler_cw_loss() const;
|
||||
[[nodiscard]] float pwr_sense_bias() const;
|
||||
[[nodiscard]] float ame_v_noise_enr() const;
|
||||
[[nodiscard]] float chan_cal_diff() const;
|
||||
[[nodiscard]] float v_ts_cw() const;
|
||||
[[nodiscard]] float h_rnscale(unsigned i) const;
|
||||
[[nodiscard]] float atmos(unsigned i) const;
|
||||
[[nodiscard]] float el_index(unsigned i) const;
|
||||
[[nodiscard]] std::uint32_t tfreq_mhz() const;
|
||||
[[nodiscard]] float base_data_tcn() const;
|
||||
[[nodiscard]] float refl_data_tover() const;
|
||||
[[nodiscard]] float tar_h_dbz0_lp() const;
|
||||
[[nodiscard]] float tar_v_dbz0_lp() const;
|
||||
[[nodiscard]] std::uint32_t init_phi_dp() const;
|
||||
[[nodiscard]] std::uint32_t norm_init_phi_dp() const;
|
||||
[[nodiscard]] float lx_lp() const;
|
||||
[[nodiscard]] float lx_sp() const;
|
||||
[[nodiscard]] float meteor_param() const;
|
||||
[[nodiscard]] float antenna_gain() const;
|
||||
[[nodiscard]] float vel_degrad_limit() const;
|
||||
[[nodiscard]] float wth_degrad_limit() const;
|
||||
[[nodiscard]] float h_noisetemp_dgrad_limit() const;
|
||||
[[nodiscard]] std::uint32_t h_min_noisetemp() const;
|
||||
[[nodiscard]] float v_noisetemp_dgrad_limit() const;
|
||||
[[nodiscard]] std::uint32_t v_min_noisetemp() const;
|
||||
[[nodiscard]] float kly_degrade_limit() const;
|
||||
[[nodiscard]] float ts_coho() const;
|
||||
[[nodiscard]] float h_ts_cw() const;
|
||||
[[nodiscard]] float ts_stalo() const;
|
||||
[[nodiscard]] float ame_h_noise_enr() const;
|
||||
[[nodiscard]] float xmtr_peak_pwr_high_limit() const;
|
||||
[[nodiscard]] float xmtr_peak_pwr_low_limit() const;
|
||||
[[nodiscard]] float h_dbz0_delta_limit() const;
|
||||
[[nodiscard]] float threshold1() const;
|
||||
[[nodiscard]] float threshold2() const;
|
||||
[[nodiscard]] float clut_supp_dgrad_lim() const;
|
||||
[[nodiscard]] float range0_value() const;
|
||||
[[nodiscard]] float xmtr_pwr_mtr_scale() const;
|
||||
[[nodiscard]] float v_dbz0_delta_limit() const;
|
||||
[[nodiscard]] float tar_h_dbz0_sp() const;
|
||||
[[nodiscard]] float tar_v_dbz0_sp() const;
|
||||
[[nodiscard]] std::uint32_t deltaprf() const;
|
||||
[[nodiscard]] std::uint32_t tau_sp() const;
|
||||
[[nodiscard]] std::uint32_t tau_lp() const;
|
||||
[[nodiscard]] std::uint32_t nc_dead_value() const;
|
||||
[[nodiscard]] std::uint32_t tau_rf_sp() const;
|
||||
[[nodiscard]] std::uint32_t tau_rf_lp() const;
|
||||
[[nodiscard]] float seg1_lim() const;
|
||||
[[nodiscard]] float slatsec() const;
|
||||
[[nodiscard]] float slonsec() const;
|
||||
[[nodiscard]] std::uint32_t slatdeg() const;
|
||||
[[nodiscard]] std::uint32_t slatmin() const;
|
||||
[[nodiscard]] std::uint32_t slondeg() const;
|
||||
[[nodiscard]] std::uint32_t slonmin() const;
|
||||
[[nodiscard]] char slatdir() const;
|
||||
[[nodiscard]] char slondir() const;
|
||||
[[nodiscard]] double dig_rcvr_clock_freq() const;
|
||||
[[nodiscard]] double coho_freq() const;
|
||||
[[nodiscard]] float az_correction_factor() const;
|
||||
[[nodiscard]] float el_correction_factor() const;
|
||||
[[nodiscard]] std::string site_name() const;
|
||||
[[nodiscard]] float ant_manual_setup_ielmin() const;
|
||||
[[nodiscard]] float ant_manual_setup_ielmax() const;
|
||||
[[nodiscard]] std::uint32_t ant_manual_setup_fazvelmax() const;
|
||||
[[nodiscard]] std::uint32_t ant_manual_setup_felvelmax() const;
|
||||
[[nodiscard]] std::int32_t ant_manual_setup_ignd_hgt() const;
|
||||
[[nodiscard]] std::uint32_t ant_manual_setup_irad_hgt() const;
|
||||
[[nodiscard]] float az_pos_sustain_drive() const;
|
||||
[[nodiscard]] float az_neg_sustain_drive() const;
|
||||
[[nodiscard]] float az_nom_pos_drive_slope() const;
|
||||
[[nodiscard]] float az_nom_neg_drive_slope() const;
|
||||
[[nodiscard]] float az_feedback_slope() const;
|
||||
[[nodiscard]] float el_pos_sustain_drive() const;
|
||||
[[nodiscard]] float el_neg_sustain_drive() const;
|
||||
[[nodiscard]] float el_nom_pos_drive_slope() const;
|
||||
[[nodiscard]] float el_nom_neg_drive_slope() const;
|
||||
[[nodiscard]] float el_feedback_slope() const;
|
||||
[[nodiscard]] float el_first_slope() const;
|
||||
[[nodiscard]] float el_second_slope() const;
|
||||
[[nodiscard]] float el_third_slope() const;
|
||||
[[nodiscard]] float el_droop_pos() const;
|
||||
[[nodiscard]] float el_off_neutral_drive() const;
|
||||
[[nodiscard]] float az_intertia() const;
|
||||
[[nodiscard]] float el_inertia() const;
|
||||
[[nodiscard]] float az_stow_angle() const;
|
||||
[[nodiscard]] float el_stow_angle() const;
|
||||
[[nodiscard]] float az_encoder_alignment() const;
|
||||
[[nodiscard]] float el_encoder_alignment() const;
|
||||
[[nodiscard]] std::string refined_park() const;
|
||||
[[nodiscard]] std::uint32_t rvp8nv_iwaveguide_length() const;
|
||||
[[nodiscard]] float v_rnscale(unsigned i) const;
|
||||
[[nodiscard]] float vel_data_tover() const;
|
||||
[[nodiscard]] float width_data_tover() const;
|
||||
[[nodiscard]] float doppler_range_start() const;
|
||||
[[nodiscard]] std::uint32_t max_el_index() const;
|
||||
[[nodiscard]] float seg2_lim() const;
|
||||
[[nodiscard]] float seg3_lim() const;
|
||||
[[nodiscard]] float seg4_lim() const;
|
||||
[[nodiscard]] std::uint32_t nbr_el_segments() const;
|
||||
[[nodiscard]] float h_noise_long() const;
|
||||
[[nodiscard]] float ant_noise_temp() const;
|
||||
[[nodiscard]] float h_noise_short() const;
|
||||
[[nodiscard]] float h_noise_tolerance() const;
|
||||
[[nodiscard]] float min_h_dyn_range() const;
|
||||
[[nodiscard]] bool gen_installed() const;
|
||||
[[nodiscard]] bool gen_exercise() const;
|
||||
[[nodiscard]] float v_noise_tolerance() const;
|
||||
[[nodiscard]] float min_v_dyn_range() const;
|
||||
[[nodiscard]] float zdr_offset_dgrad_lim() const;
|
||||
[[nodiscard]] float baseline_zdr_offset() const;
|
||||
[[nodiscard]] float v_noise_long() const;
|
||||
[[nodiscard]] float v_noise_short() const;
|
||||
[[nodiscard]] float zdr_data_tover() const;
|
||||
[[nodiscard]] float phi_data_tover() const;
|
||||
[[nodiscard]] float rho_data_tover() const;
|
||||
[[nodiscard]] float stalo_power_dgrad_limit() const;
|
||||
[[nodiscard]] float stalo_power_maint_limit() const;
|
||||
[[nodiscard]] float min_h_pwr_sense() const;
|
||||
[[nodiscard]] float min_v_pwr_sense() const;
|
||||
[[nodiscard]] float h_pwr_sense_offset() const;
|
||||
[[nodiscard]] float v_pwr_sense_offset() const;
|
||||
[[nodiscard]] float ps_gain_ref() const;
|
||||
[[nodiscard]] float rf_pallet_broad_loss() const;
|
||||
[[nodiscard]] float ame_ps_tolerance() const;
|
||||
[[nodiscard]] float ame_max_temp() const;
|
||||
[[nodiscard]] float ame_min_temp() const;
|
||||
[[nodiscard]] float rcvr_mod_max_temp() const;
|
||||
[[nodiscard]] float rcvr_mod_min_temp() const;
|
||||
[[nodiscard]] float bite_mod_max_temp() const;
|
||||
[[nodiscard]] float bite_mod_min_temp() const;
|
||||
[[nodiscard]] std::uint32_t default_polarization() const;
|
||||
[[nodiscard]] float tr_limit_dgrad_limit() const;
|
||||
[[nodiscard]] float tr_limit_fail_limit() const;
|
||||
[[nodiscard]] bool rfp_stepper_enabled() const;
|
||||
[[nodiscard]] float ame_current_tolerance() const;
|
||||
[[nodiscard]] std::uint32_t h_only_polarization() const;
|
||||
[[nodiscard]] std::uint32_t v_only_polarization() const;
|
||||
[[nodiscard]] float sun_bias() const;
|
||||
[[nodiscard]] float a_min_shelter_temp_warn() const;
|
||||
[[nodiscard]] float power_meter_zero() const;
|
||||
[[nodiscard]] float txb_baseline() const;
|
||||
[[nodiscard]] float txb_alarm_thresh() const;
|
||||
|
||||
bool Parse(std::istream& is);
|
||||
bool Parse(std::istream& is) override;
|
||||
|
||||
static std::shared_ptr<RdaAdaptationData>
|
||||
Create(Level2MessageHeader&& header, std::istream& is);
|
||||
|
||||
private:
|
||||
std::unique_ptr<RdaAdaptationDataImpl> p;
|
||||
class Impl;
|
||||
std::unique_ptr<Impl> p;
|
||||
};
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
|
|
@ -2,14 +2,8 @@
|
|||
|
||||
#include <scwx/wsr88d/rda/level2_message.hpp>
|
||||
|
||||
namespace scwx
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
{
|
||||
|
||||
class RdaStatusDataImpl;
|
||||
|
||||
class RdaStatusData : public Level2Message
|
||||
{
|
||||
|
|
@ -23,46 +17,45 @@ public:
|
|||
RdaStatusData(RdaStatusData&&) noexcept;
|
||||
RdaStatusData& operator=(RdaStatusData&&) noexcept;
|
||||
|
||||
uint16_t rda_status() const;
|
||||
uint16_t operability_status() const;
|
||||
uint16_t control_status() const;
|
||||
uint16_t auxiliary_power_generator_state() const;
|
||||
uint16_t average_transmitter_power() const;
|
||||
float horizontal_reflectivity_calibration_correction() const;
|
||||
uint16_t data_transmission_enabled() const;
|
||||
uint16_t volume_coverage_pattern_number() const;
|
||||
uint16_t rda_control_authorization() const;
|
||||
uint16_t rda_build_number() const;
|
||||
uint16_t operational_mode() const;
|
||||
uint16_t super_resolution_status() const;
|
||||
uint16_t clutter_mitigation_decision_status() const;
|
||||
uint16_t rda_scan_and_data_flags() const;
|
||||
uint16_t rda_alarm_summary() const;
|
||||
uint16_t command_acknowledgement() const;
|
||||
uint16_t channel_control_status() const;
|
||||
uint16_t spot_blanking_status() const;
|
||||
uint16_t bypass_map_generation_date() const;
|
||||
uint16_t bypass_map_generation_time() const;
|
||||
uint16_t clutter_filter_map_generation_date() const;
|
||||
uint16_t clutter_filter_map_generation_time() const;
|
||||
float vertical_reflectivity_calibration_correction() const;
|
||||
uint16_t transition_power_source_status() const;
|
||||
uint16_t rms_control_status() const;
|
||||
uint16_t performance_check_status() const;
|
||||
uint16_t alarm_codes(unsigned i) const;
|
||||
uint16_t signal_processing_options() const;
|
||||
uint16_t downloaded_pattern_number() const;
|
||||
uint16_t status_version() const;
|
||||
[[nodiscard]] std::uint16_t rda_status() const;
|
||||
[[nodiscard]] std::uint16_t operability_status() const;
|
||||
[[nodiscard]] std::uint16_t control_status() const;
|
||||
[[nodiscard]] std::uint16_t auxiliary_power_generator_state() const;
|
||||
[[nodiscard]] std::uint16_t average_transmitter_power() const;
|
||||
[[nodiscard]] float horizontal_reflectivity_calibration_correction() const;
|
||||
[[nodiscard]] std::uint16_t data_transmission_enabled() const;
|
||||
[[nodiscard]] std::uint16_t volume_coverage_pattern_number() const;
|
||||
[[nodiscard]] std::uint16_t rda_control_authorization() const;
|
||||
[[nodiscard]] std::uint16_t rda_build_number() const;
|
||||
[[nodiscard]] std::uint16_t operational_mode() const;
|
||||
[[nodiscard]] std::uint16_t super_resolution_status() const;
|
||||
[[nodiscard]] std::uint16_t clutter_mitigation_decision_status() const;
|
||||
[[nodiscard]] std::uint16_t rda_scan_and_data_flags() const;
|
||||
[[nodiscard]] std::uint16_t rda_alarm_summary() const;
|
||||
[[nodiscard]] std::uint16_t command_acknowledgement() const;
|
||||
[[nodiscard]] std::uint16_t channel_control_status() const;
|
||||
[[nodiscard]] std::uint16_t spot_blanking_status() const;
|
||||
[[nodiscard]] std::uint16_t bypass_map_generation_date() const;
|
||||
[[nodiscard]] std::uint16_t bypass_map_generation_time() const;
|
||||
[[nodiscard]] std::uint16_t clutter_filter_map_generation_date() const;
|
||||
[[nodiscard]] std::uint16_t clutter_filter_map_generation_time() const;
|
||||
[[nodiscard]] float vertical_reflectivity_calibration_correction() const;
|
||||
[[nodiscard]] std::uint16_t transition_power_source_status() const;
|
||||
[[nodiscard]] std::uint16_t rms_control_status() const;
|
||||
[[nodiscard]] std::uint16_t performance_check_status() const;
|
||||
[[nodiscard]] std::uint16_t alarm_codes(unsigned i) const;
|
||||
[[nodiscard]] std::uint16_t signal_processing_options() const;
|
||||
[[nodiscard]] std::uint16_t downloaded_pattern_number() const;
|
||||
[[nodiscard]] std::uint16_t status_version() const;
|
||||
|
||||
bool Parse(std::istream& is);
|
||||
bool Parse(std::istream& is) override;
|
||||
|
||||
static std::shared_ptr<RdaStatusData> Create(Level2MessageHeader&& header,
|
||||
std::istream& is);
|
||||
|
||||
private:
|
||||
std::unique_ptr<RdaStatusDataImpl> p;
|
||||
class Impl;
|
||||
std::unique_ptr<Impl> p;
|
||||
};
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
|
|
@ -9,17 +9,22 @@ namespace awips
|
|||
static const std::string logPrefix_ = "scwx::awips::message";
|
||||
static const auto logger_ = util::Logger::Create(logPrefix_);
|
||||
|
||||
class MessageImpl
|
||||
class Message::Impl
|
||||
{
|
||||
public:
|
||||
explicit MessageImpl() {};
|
||||
~MessageImpl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
};
|
||||
|
||||
Message::Message() : p(std::make_unique<MessageImpl>()) {}
|
||||
Message::Message() : p(std::make_unique<Impl>()) {}
|
||||
Message::~Message() = default;
|
||||
|
||||
Message::Message(Message&&) noexcept = default;
|
||||
Message::Message(Message&&) noexcept = default;
|
||||
Message& Message::operator=(Message&&) noexcept = default;
|
||||
|
||||
bool Message::ValidateMessage(std::istream& is, size_t bytesRead) const
|
||||
|
|
|
|||
|
|
@ -1,11 +1,7 @@
|
|||
#include <scwx/wsr88d/rda/digital_radar_data_generic.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ =
|
||||
|
|
@ -27,9 +23,9 @@ static const std::unordered_map<std::string, DataBlockType> strToDataBlock_ {
|
|||
class DigitalRadarDataGeneric::DataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl(const std::string& dataBlockType,
|
||||
const std::string& dataName) :
|
||||
dataBlockType_ {dataBlockType}, dataName_ {dataName}
|
||||
explicit Impl(std::string dataBlockType, std::string dataName) :
|
||||
dataBlockType_ {std::move(dataBlockType)},
|
||||
dataName_ {std::move(dataName)}
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -51,7 +47,13 @@ DigitalRadarDataGeneric::DataBlock::operator=(DataBlock&&) noexcept = default;
|
|||
class DigitalRadarDataGeneric::MomentDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t numberOfDataMomentGates_ {0};
|
||||
std::int16_t dataMomentRange_ {0};
|
||||
|
|
@ -89,7 +91,9 @@ DigitalRadarDataGeneric::MomentDataBlock::number_of_data_moment_gates() const
|
|||
units::kilometers<float>
|
||||
DigitalRadarDataGeneric::MomentDataBlock::data_moment_range() const
|
||||
{
|
||||
return units::kilometers<float> {p->dataMomentRange_ * 0.001f};
|
||||
static constexpr float kScale_ = 0.001f;
|
||||
return units::kilometers<float> {static_cast<float>(p->dataMomentRange_) *
|
||||
kScale_};
|
||||
}
|
||||
|
||||
std::int16_t
|
||||
|
|
@ -102,7 +106,9 @@ units::kilometers<float>
|
|||
DigitalRadarDataGeneric::MomentDataBlock::data_moment_range_sample_interval()
|
||||
const
|
||||
{
|
||||
return units::kilometers<float> {p->dataMomentRangeSampleInterval_ * 0.001f};
|
||||
static constexpr float kScale_ = 0.001f;
|
||||
return units::kilometers<float> {
|
||||
static_cast<float>(p->dataMomentRangeSampleInterval_) * kScale_};
|
||||
}
|
||||
|
||||
std::uint16_t DigitalRadarDataGeneric::MomentDataBlock::
|
||||
|
|
@ -113,7 +119,8 @@ std::uint16_t DigitalRadarDataGeneric::MomentDataBlock::
|
|||
|
||||
float DigitalRadarDataGeneric::MomentDataBlock::snr_threshold() const
|
||||
{
|
||||
return p->snrThreshold_ * 0.1f;
|
||||
static constexpr float kScale_ = 0.1f;
|
||||
return static_cast<float>(p->snrThreshold_) * kScale_;
|
||||
}
|
||||
|
||||
std::int16_t DigitalRadarDataGeneric::MomentDataBlock::snr_threshold_raw() const
|
||||
|
|
@ -138,14 +145,14 @@ float DigitalRadarDataGeneric::MomentDataBlock::offset() const
|
|||
|
||||
const void* DigitalRadarDataGeneric::MomentDataBlock::data_moments() const
|
||||
{
|
||||
const void* dataMoments;
|
||||
const void* dataMoments = nullptr;
|
||||
|
||||
switch (p->dataWordSize_)
|
||||
{
|
||||
case 8:
|
||||
case 8: // NOLINT(cppcoreguidelines-avoid-magic-numbers)
|
||||
dataMoments = p->momentGates8_.data();
|
||||
break;
|
||||
case 16:
|
||||
case 16: // NOLINT(cppcoreguidelines-avoid-magic-numbers)
|
||||
dataMoments = p->momentGates16_.data();
|
||||
break;
|
||||
default:
|
||||
|
|
@ -189,13 +196,15 @@ bool DigitalRadarDataGeneric::MomentDataBlock::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->scale_), 4); // 20-23
|
||||
is.read(reinterpret_cast<char*>(&p->offset_), 4); // 24-27
|
||||
|
||||
p->numberOfDataMomentGates_ = ntohs(p->numberOfDataMomentGates_);
|
||||
p->dataMomentRange_ = ntohs(p->dataMomentRange_);
|
||||
p->numberOfDataMomentGates_ = ntohs(p->numberOfDataMomentGates_);
|
||||
p->dataMomentRange_ = static_cast<std::int16_t>(ntohs(p->dataMomentRange_));
|
||||
p->dataMomentRangeSampleInterval_ = ntohs(p->dataMomentRangeSampleInterval_);
|
||||
p->tover_ = ntohs(p->tover_);
|
||||
p->snrThreshold_ = ntohs(p->snrThreshold_);
|
||||
p->scale_ = awips::Message::SwapFloat(p->scale_);
|
||||
p->offset_ = awips::Message::SwapFloat(p->offset_);
|
||||
p->snrThreshold_ = static_cast<std::int16_t>(ntohs(p->snrThreshold_));
|
||||
p->scale_ = awips::Message::SwapFloat(p->scale_);
|
||||
p->offset_ = awips::Message::SwapFloat(p->offset_);
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (p->numberOfDataMomentGates_ <= 1840)
|
||||
{
|
||||
|
|
@ -209,7 +218,7 @@ bool DigitalRadarDataGeneric::MomentDataBlock::Parse(std::istream& is)
|
|||
{
|
||||
p->momentGates16_.resize(p->numberOfDataMomentGates_);
|
||||
is.read(reinterpret_cast<char*>(p->momentGates16_.data()),
|
||||
p->numberOfDataMomentGates_ * 2);
|
||||
static_cast<std::streamsize>(p->numberOfDataMomentGates_) * 2);
|
||||
awips::Message::SwapVector(p->momentGates16_);
|
||||
}
|
||||
else
|
||||
|
|
@ -225,13 +234,21 @@ bool DigitalRadarDataGeneric::MomentDataBlock::Parse(std::istream& is)
|
|||
dataBlockValid = false;
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
return dataBlockValid;
|
||||
}
|
||||
|
||||
class DigitalRadarDataGeneric::VolumeDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t lrtup_ {0};
|
||||
std::uint8_t versionNumberMajor_ {0};
|
||||
|
|
@ -321,7 +338,7 @@ bool DigitalRadarDataGeneric::VolumeDataBlock::Parse(std::istream& is)
|
|||
p->lrtup_ = ntohs(p->lrtup_);
|
||||
p->latitude_ = awips::Message::SwapFloat(p->latitude_);
|
||||
p->longitude_ = awips::Message::SwapFloat(p->longitude_);
|
||||
p->siteHeight_ = ntohs(p->siteHeight_);
|
||||
p->siteHeight_ = static_cast<std::int16_t>(ntohs(p->siteHeight_));
|
||||
p->feedhornHeight_ = ntohs(p->feedhornHeight_);
|
||||
p->calibrationConstant_ = awips::Message::SwapFloat(p->calibrationConstant_);
|
||||
p->horizontaShvTxPower_ = awips::Message::SwapFloat(p->horizontaShvTxPower_);
|
||||
|
|
@ -333,6 +350,8 @@ bool DigitalRadarDataGeneric::VolumeDataBlock::Parse(std::istream& is)
|
|||
p->volumeCoveragePatternNumber_ = ntohs(p->volumeCoveragePatternNumber_);
|
||||
p->processingStatus_ = ntohs(p->processingStatus_);
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (p->lrtup_ >= 46)
|
||||
{
|
||||
is.read(reinterpret_cast<char*>(&p->zdrBiasEstimateWeightedMean_),
|
||||
|
|
@ -345,13 +364,21 @@ bool DigitalRadarDataGeneric::VolumeDataBlock::Parse(std::istream& is)
|
|||
is.seekg(6, std::ios_base::cur); // 46-51
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
return dataBlockValid;
|
||||
}
|
||||
|
||||
class DigitalRadarDataGeneric::ElevationDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t lrtup_ {0};
|
||||
std::int16_t atmos_ {0};
|
||||
|
|
@ -397,7 +424,7 @@ bool DigitalRadarDataGeneric::ElevationDataBlock::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->calibrationConstant_), 4); // 8-11
|
||||
|
||||
p->lrtup_ = ntohs(p->lrtup_);
|
||||
p->atmos_ = ntohs(p->atmos_);
|
||||
p->atmos_ = static_cast<std::int16_t>(ntohs(p->atmos_));
|
||||
p->calibrationConstant_ = awips::Message::SwapFloat(p->calibrationConstant_);
|
||||
|
||||
return dataBlockValid;
|
||||
|
|
@ -406,7 +433,13 @@ bool DigitalRadarDataGeneric::ElevationDataBlock::Parse(std::istream& is)
|
|||
class DigitalRadarDataGeneric::RadialDataBlock::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {}
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t lrtup_ {0};
|
||||
std::uint16_t unambigiousRange_ {0};
|
||||
|
|
@ -433,7 +466,8 @@ DigitalRadarDataGeneric::RadialDataBlock::operator=(
|
|||
|
||||
float DigitalRadarDataGeneric::RadialDataBlock::unambiguous_range() const
|
||||
{
|
||||
return p->unambigiousRange_ / 10.0f;
|
||||
static constexpr float kScale_ = 0.1f;
|
||||
return static_cast<float>(p->unambigiousRange_) * kScale_;
|
||||
}
|
||||
|
||||
std::shared_ptr<DigitalRadarDataGeneric::RadialDataBlock>
|
||||
|
|
@ -486,24 +520,31 @@ bool DigitalRadarDataGeneric::RadialDataBlock::Parse(std::istream& is)
|
|||
class DigitalRadarDataGeneric::Impl
|
||||
{
|
||||
public:
|
||||
explicit Impl() {};
|
||||
~Impl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
std::string radarIdentifier_ {};
|
||||
std::uint32_t collectionTime_ {0};
|
||||
std::uint16_t modifiedJulianDate_ {0};
|
||||
std::uint16_t azimuthNumber_ {0};
|
||||
float azimuthAngle_ {0.0f};
|
||||
std::uint8_t compressionIndicator_ {0};
|
||||
std::uint16_t radialLength_ {0};
|
||||
std::uint8_t azimuthResolutionSpacing_ {0};
|
||||
std::uint8_t radialStatus_ {0};
|
||||
std::uint8_t elevationNumber_ {0};
|
||||
std::uint8_t cutSectorNumber_ {0};
|
||||
float elevationAngle_ {0.0f};
|
||||
std::uint8_t radialSpotBlankingStatus_ {0};
|
||||
std::uint8_t azimuthIndexingMode_ {0};
|
||||
std::uint16_t dataBlockCount_ {0};
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::string radarIdentifier_ {};
|
||||
std::uint32_t collectionTime_ {0};
|
||||
std::uint16_t modifiedJulianDate_ {0};
|
||||
std::uint16_t azimuthNumber_ {0};
|
||||
float azimuthAngle_ {0.0f};
|
||||
std::uint8_t compressionIndicator_ {0};
|
||||
std::uint16_t radialLength_ {0};
|
||||
std::uint8_t azimuthResolutionSpacing_ {0};
|
||||
std::uint8_t radialStatus_ {0};
|
||||
std::uint8_t elevationNumber_ {0};
|
||||
std::uint8_t cutSectorNumber_ {0};
|
||||
float elevationAngle_ {0.0f};
|
||||
std::uint8_t radialSpotBlankingStatus_ {0};
|
||||
std::uint8_t azimuthIndexingMode_ {0};
|
||||
std::uint16_t dataBlockCount_ {0};
|
||||
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
std::array<std::uint32_t, 10> dataBlockPointer_ {0};
|
||||
|
||||
std::shared_ptr<VolumeDataBlock> volumeDataBlock_ {nullptr};
|
||||
|
|
@ -679,6 +720,8 @@ bool DigitalRadarDataGeneric::Parse(std::istream& is)
|
|||
p->elevationAngle_ = SwapFloat(p->elevationAngle_);
|
||||
p->dataBlockCount_ = ntohs(p->dataBlockCount_);
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (p->azimuthNumber_ < 1 || p->azimuthNumber_ > 720)
|
||||
{
|
||||
logger_->warn("Invalid azimuth number: {}", p->azimuthNumber_);
|
||||
|
|
@ -700,18 +743,22 @@ bool DigitalRadarDataGeneric::Parse(std::istream& is)
|
|||
messageValid = false;
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (!messageValid)
|
||||
{
|
||||
p->dataBlockCount_ = 0;
|
||||
}
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->dataBlockPointer_),
|
||||
p->dataBlockCount_ * 4);
|
||||
static_cast<std::streamsize>(p->dataBlockCount_) * 4);
|
||||
|
||||
SwapArray(p->dataBlockPointer_, p->dataBlockCount_);
|
||||
|
||||
for (uint16_t b = 0; b < p->dataBlockCount_; ++b)
|
||||
{
|
||||
// Index already has bounds check
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-constant-array-index)
|
||||
is.seekg(isBegin + std::streamoff(p->dataBlockPointer_[b]),
|
||||
std::ios_base::beg);
|
||||
|
||||
|
|
@ -784,6 +831,4 @@ DigitalRadarDataGeneric::Create(Level2MessageHeader&& header, std::istream& is)
|
|||
return message;
|
||||
}
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,11 +1,7 @@
|
|||
#include <scwx/wsr88d/rda/rda_adaptation_data.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::wsr88d::rda::rda_adaptation_data";
|
||||
|
|
@ -13,30 +9,26 @@ static const auto logger_ = util::Logger::Create(logPrefix_);
|
|||
|
||||
struct AntManualSetup
|
||||
{
|
||||
int32_t ielmin_;
|
||||
int32_t ielmax_;
|
||||
uint32_t fazvelmax_;
|
||||
uint32_t felvelmax_;
|
||||
int32_t igndHgt_;
|
||||
uint32_t iradHgt_;
|
||||
|
||||
AntManualSetup() :
|
||||
ielmin_ {0},
|
||||
ielmax_ {0},
|
||||
fazvelmax_ {0},
|
||||
felvelmax_ {0},
|
||||
igndHgt_ {0},
|
||||
iradHgt_ {0}
|
||||
{
|
||||
}
|
||||
std::int32_t ielmin_ {0};
|
||||
std::int32_t ielmax_ {0};
|
||||
std::uint32_t fazvelmax_ {0};
|
||||
std::uint32_t felvelmax_ {0};
|
||||
std::int32_t igndHgt_ {0};
|
||||
std::uint32_t iradHgt_ {0};
|
||||
};
|
||||
|
||||
class RdaAdaptationDataImpl
|
||||
class RdaAdaptationData::Impl
|
||||
{
|
||||
public:
|
||||
explicit RdaAdaptationDataImpl() = default;
|
||||
~RdaAdaptationDataImpl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers)
|
||||
std::string adapFileName_ {};
|
||||
std::string adapFormat_ {};
|
||||
std::string adapRevision_ {};
|
||||
|
|
@ -65,27 +57,27 @@ public:
|
|||
bool specFilterInstalled_ {false};
|
||||
bool tpsInstalled_ {false};
|
||||
bool rmsInstalled_ {false};
|
||||
uint32_t aHvdlTstInt_ {0};
|
||||
uint32_t aRpgLtInt_ {0};
|
||||
uint32_t aMinStabUtilPwrTime_ {0};
|
||||
uint32_t aGenAutoExerInterval_ {0};
|
||||
uint32_t aUtilPwrSwReqInterval_ {0};
|
||||
std::uint32_t aHvdlTstInt_ {0};
|
||||
std::uint32_t aRpgLtInt_ {0};
|
||||
std::uint32_t aMinStabUtilPwrTime_ {0};
|
||||
std::uint32_t aGenAutoExerInterval_ {0};
|
||||
std::uint32_t aUtilPwrSwReqInterval_ {0};
|
||||
float aLowFuelLevel_ {0.0f};
|
||||
uint32_t configChanNumber_ {0};
|
||||
uint32_t redundantChanConfig_ {0};
|
||||
std::uint32_t configChanNumber_ {0};
|
||||
std::uint32_t redundantChanConfig_ {0};
|
||||
std::array<float, 104> attenTable_ {0.0f};
|
||||
std::map<unsigned, float> pathLosses_ {};
|
||||
float vTsCw_ {0.0f};
|
||||
std::array<float, 13> hRnscale_ {0.0f};
|
||||
std::array<float, 13> atmos_ {0.0f};
|
||||
std::array<float, 12> elIndex_ {0.0f};
|
||||
uint32_t tfreqMhz_ {0};
|
||||
std::uint32_t tfreqMhz_ {0};
|
||||
float baseDataTcn_ {0.0f};
|
||||
float reflDataTover_ {0.0f};
|
||||
float tarHDbz0Lp_ {0.0f};
|
||||
float tarVDbz0Lp_ {0.0f};
|
||||
uint32_t initPhiDp_ {0};
|
||||
uint32_t normInitPhiDp_ {0};
|
||||
std::uint32_t initPhiDp_ {0};
|
||||
std::uint32_t normInitPhiDp_ {0};
|
||||
float lxLp_ {0.0f};
|
||||
float lxSp_ {0.0f};
|
||||
float meteorParam_ {0.0f};
|
||||
|
|
@ -93,9 +85,9 @@ public:
|
|||
float velDegradLimit_ {0.0f};
|
||||
float wthDegradLimit_ {0.0f};
|
||||
float hNoisetempDgradLimit_ {0.0f};
|
||||
uint32_t hMinNoisetemp_ {0};
|
||||
std::uint32_t hMinNoisetemp_ {0};
|
||||
float vNoisetempDgradLimit_ {0.0f};
|
||||
uint32_t vMinNoisetemp_ {0};
|
||||
std::uint32_t vMinNoisetemp_ {0};
|
||||
float klyDegradeLimit_ {0.0f};
|
||||
float tsCoho_ {0.0f};
|
||||
float hTsCw_ {0.0f};
|
||||
|
|
@ -112,19 +104,19 @@ public:
|
|||
float vDbz0DeltaLimit_ {0.0f};
|
||||
float tarHDbz0Sp_ {0.0f};
|
||||
float tarVDbz0Sp_ {0.0f};
|
||||
uint32_t deltaprf_ {0};
|
||||
uint32_t tauSp_ {0};
|
||||
uint32_t tauLp_ {0};
|
||||
uint32_t ncDeadValue_ {0};
|
||||
uint32_t tauRfSp_ {0};
|
||||
uint32_t tauRfLp_ {0};
|
||||
std::uint32_t deltaprf_ {0};
|
||||
std::uint32_t tauSp_ {0};
|
||||
std::uint32_t tauLp_ {0};
|
||||
std::uint32_t ncDeadValue_ {0};
|
||||
std::uint32_t tauRfSp_ {0};
|
||||
std::uint32_t tauRfLp_ {0};
|
||||
float seg1Lim_ {0.0f};
|
||||
float slatsec_ {0.0f};
|
||||
float slonsec_ {0.0f};
|
||||
uint32_t slatdeg_ {0};
|
||||
uint32_t slatmin_ {0};
|
||||
uint32_t slondeg_ {0};
|
||||
uint32_t slonmin_ {0};
|
||||
std::uint32_t slatdeg_ {0};
|
||||
std::uint32_t slatmin_ {0};
|
||||
std::uint32_t slondeg_ {0};
|
||||
std::uint32_t slonmin_ {0};
|
||||
char slatdir_ {0};
|
||||
char slondir_ {0};
|
||||
double digRcvrClockFreq_ {0.0};
|
||||
|
|
@ -155,16 +147,16 @@ public:
|
|||
float azEncoderAlignment_ {0.0f};
|
||||
float elEncoderAlignment_ {0.0f};
|
||||
std::string refinedPark_ {};
|
||||
uint32_t rvp8nvIwaveguideLength_ {0};
|
||||
std::uint32_t rvp8nvIwaveguideLength_ {0};
|
||||
std::array<float, 13> vRnscale_ {0.0f};
|
||||
float velDataTover_ {0.0f};
|
||||
float widthDataTover_ {0.0f};
|
||||
float dopplerRangeStart_ {0.0f};
|
||||
uint32_t maxElIndex_ {0};
|
||||
std::uint32_t maxElIndex_ {0};
|
||||
float seg2Lim_ {0.0f};
|
||||
float seg3Lim_ {0.0f};
|
||||
float seg4Lim_ {0.0f};
|
||||
uint32_t nbrElSegments_ {0};
|
||||
std::uint32_t nbrElSegments_ {0};
|
||||
float hNoiseLong_ {0.0f};
|
||||
float antNoiseTemp_ {0.0f};
|
||||
float hNoiseShort_ {0.0f};
|
||||
|
|
@ -196,22 +188,23 @@ public:
|
|||
float rcvrModMinTemp_ {0.0f};
|
||||
float biteModMaxTemp_ {0.0f};
|
||||
float biteModMinTemp_ {0.0f};
|
||||
uint32_t defaultPolarization_ {0};
|
||||
std::uint32_t defaultPolarization_ {0};
|
||||
float trLimitDgradLimit_ {0.0f};
|
||||
float trLimitFailLimit_ {0.0f};
|
||||
bool rfpStepperEnabled_ {false};
|
||||
float ameCurrentTolerance_ {0.0f};
|
||||
uint32_t hOnlyPolarization_ {0};
|
||||
uint32_t vOnlyPolarization_ {0};
|
||||
std::uint32_t hOnlyPolarization_ {0};
|
||||
std::uint32_t vOnlyPolarization_ {0};
|
||||
float sunBias_ {0.0f};
|
||||
float aMinShelterTempWarn_ {0.0f};
|
||||
float powerMeterZero_ {0.0f};
|
||||
float txbBaseline_ {0.0f};
|
||||
float txbAlarmThresh_ {0.0f};
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
};
|
||||
|
||||
RdaAdaptationData::RdaAdaptationData() :
|
||||
Level2Message(), p(std::make_unique<RdaAdaptationDataImpl>())
|
||||
Level2Message(), p(std::make_unique<Impl>())
|
||||
{
|
||||
}
|
||||
RdaAdaptationData::~RdaAdaptationData() = default;
|
||||
|
|
@ -277,7 +270,7 @@ float RdaAdaptationData::parkel() const
|
|||
|
||||
float RdaAdaptationData::a_fuel_conv(unsigned i) const
|
||||
{
|
||||
return p->aFuelConv_[i];
|
||||
return p->aFuelConv_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::a_min_shelter_temp() const
|
||||
|
|
@ -360,27 +353,27 @@ bool RdaAdaptationData::rms_installed() const
|
|||
return p->rmsInstalled_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_hvdl_tst_int() const
|
||||
std::uint32_t RdaAdaptationData::a_hvdl_tst_int() const
|
||||
{
|
||||
return p->aHvdlTstInt_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_rpg_lt_int() const
|
||||
std::uint32_t RdaAdaptationData::a_rpg_lt_int() const
|
||||
{
|
||||
return p->aRpgLtInt_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_min_stab_util_pwr_time() const
|
||||
std::uint32_t RdaAdaptationData::a_min_stab_util_pwr_time() const
|
||||
{
|
||||
return p->aMinStabUtilPwrTime_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_gen_auto_exer_interval() const
|
||||
std::uint32_t RdaAdaptationData::a_gen_auto_exer_interval() const
|
||||
{
|
||||
return p->aGenAutoExerInterval_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::a_util_pwr_sw_req_interval() const
|
||||
std::uint32_t RdaAdaptationData::a_util_pwr_sw_req_interval() const
|
||||
{
|
||||
return p->aUtilPwrSwReqInterval_;
|
||||
}
|
||||
|
|
@ -390,19 +383,19 @@ float RdaAdaptationData::a_low_fuel_level() const
|
|||
return p->aLowFuelLevel_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::config_chan_number() const
|
||||
std::uint32_t RdaAdaptationData::config_chan_number() const
|
||||
{
|
||||
return p->configChanNumber_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::redundant_chan_config() const
|
||||
std::uint32_t RdaAdaptationData::redundant_chan_config() const
|
||||
{
|
||||
return p->redundantChanConfig_;
|
||||
}
|
||||
|
||||
float RdaAdaptationData::atten_table(unsigned i) const
|
||||
{
|
||||
return p->attenTable_[i];
|
||||
return p->attenTable_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::path_losses(unsigned i) const
|
||||
|
|
@ -412,41 +405,49 @@ float RdaAdaptationData::path_losses(unsigned i) const
|
|||
|
||||
float RdaAdaptationData::h_coupler_xmt_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(29);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::h_coupler_cw_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(48);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::v_coupler_xmt_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(49);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::ame_ts_bias() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(51);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::v_coupler_cw_loss() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(53);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::pwr_sense_bias() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(56);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::ame_v_noise_enr() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(57);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::chan_cal_diff() const
|
||||
{
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
return path_losses(70);
|
||||
}
|
||||
|
||||
|
|
@ -457,20 +458,20 @@ float RdaAdaptationData::v_ts_cw() const
|
|||
|
||||
float RdaAdaptationData::h_rnscale(unsigned i) const
|
||||
{
|
||||
return p->hRnscale_[i];
|
||||
return p->hRnscale_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::atmos(unsigned i) const
|
||||
{
|
||||
return p->atmos_[i];
|
||||
return p->atmos_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::el_index(unsigned i) const
|
||||
{
|
||||
return p->elIndex_[i];
|
||||
return p->elIndex_.at(i);
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tfreq_mhz() const
|
||||
std::uint32_t RdaAdaptationData::tfreq_mhz() const
|
||||
{
|
||||
return p->tfreqMhz_;
|
||||
}
|
||||
|
|
@ -495,12 +496,12 @@ float RdaAdaptationData::tar_v_dbz0_lp() const
|
|||
return p->tarVDbz0Lp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::init_phi_dp() const
|
||||
std::uint32_t RdaAdaptationData::init_phi_dp() const
|
||||
{
|
||||
return p->initPhiDp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::norm_init_phi_dp() const
|
||||
std::uint32_t RdaAdaptationData::norm_init_phi_dp() const
|
||||
{
|
||||
return p->normInitPhiDp_;
|
||||
}
|
||||
|
|
@ -540,7 +541,7 @@ float RdaAdaptationData::h_noisetemp_dgrad_limit() const
|
|||
return p->hNoisetempDgradLimit_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::h_min_noisetemp() const
|
||||
std::uint32_t RdaAdaptationData::h_min_noisetemp() const
|
||||
{
|
||||
return p->hMinNoisetemp_;
|
||||
}
|
||||
|
|
@ -550,7 +551,7 @@ float RdaAdaptationData::v_noisetemp_dgrad_limit() const
|
|||
return p->vNoisetempDgradLimit_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::v_min_noisetemp() const
|
||||
std::uint32_t RdaAdaptationData::v_min_noisetemp() const
|
||||
{
|
||||
return p->vMinNoisetemp_;
|
||||
}
|
||||
|
|
@ -635,32 +636,32 @@ float RdaAdaptationData::tar_v_dbz0_sp() const
|
|||
return p->tarVDbz0Sp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::deltaprf() const
|
||||
std::uint32_t RdaAdaptationData::deltaprf() const
|
||||
{
|
||||
return p->deltaprf_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_sp() const
|
||||
std::uint32_t RdaAdaptationData::tau_sp() const
|
||||
{
|
||||
return p->tauSp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_lp() const
|
||||
std::uint32_t RdaAdaptationData::tau_lp() const
|
||||
{
|
||||
return p->tauLp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::nc_dead_value() const
|
||||
std::uint32_t RdaAdaptationData::nc_dead_value() const
|
||||
{
|
||||
return p->ncDeadValue_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_rf_sp() const
|
||||
std::uint32_t RdaAdaptationData::tau_rf_sp() const
|
||||
{
|
||||
return p->tauRfSp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::tau_rf_lp() const
|
||||
std::uint32_t RdaAdaptationData::tau_rf_lp() const
|
||||
{
|
||||
return p->tauRfLp_;
|
||||
}
|
||||
|
|
@ -680,22 +681,22 @@ float RdaAdaptationData::slonsec() const
|
|||
return p->slonsec_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slatdeg() const
|
||||
std::uint32_t RdaAdaptationData::slatdeg() const
|
||||
{
|
||||
return p->slatdeg_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slatmin() const
|
||||
std::uint32_t RdaAdaptationData::slatmin() const
|
||||
{
|
||||
return p->slatmin_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slondeg() const
|
||||
std::uint32_t RdaAdaptationData::slondeg() const
|
||||
{
|
||||
return p->slondeg_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::slonmin() const
|
||||
std::uint32_t RdaAdaptationData::slonmin() const
|
||||
{
|
||||
return p->slonmin_;
|
||||
}
|
||||
|
|
@ -738,31 +739,31 @@ std::string RdaAdaptationData::site_name() const
|
|||
float RdaAdaptationData::ant_manual_setup_ielmin() const
|
||||
{
|
||||
constexpr float SCALE = 360.0f / 65536.0f;
|
||||
return p->antManualSetup_.ielmin_ * SCALE;
|
||||
return static_cast<float>(p->antManualSetup_.ielmin_) * SCALE;
|
||||
}
|
||||
|
||||
float RdaAdaptationData::ant_manual_setup_ielmax() const
|
||||
{
|
||||
constexpr float SCALE = 360.0f / 65536.0f;
|
||||
return p->antManualSetup_.ielmax_ * SCALE;
|
||||
return static_cast<float>(p->antManualSetup_.ielmax_) * SCALE;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::ant_manual_setup_fazvelmax() const
|
||||
std::uint32_t RdaAdaptationData::ant_manual_setup_fazvelmax() const
|
||||
{
|
||||
return p->antManualSetup_.fazvelmax_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::ant_manual_setup_felvelmax() const
|
||||
std::uint32_t RdaAdaptationData::ant_manual_setup_felvelmax() const
|
||||
{
|
||||
return p->antManualSetup_.felvelmax_;
|
||||
}
|
||||
|
||||
int32_t RdaAdaptationData::ant_manual_setup_ignd_hgt() const
|
||||
std::int32_t RdaAdaptationData::ant_manual_setup_ignd_hgt() const
|
||||
{
|
||||
return p->antManualSetup_.igndHgt_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::ant_manual_setup_irad_hgt() const
|
||||
std::uint32_t RdaAdaptationData::ant_manual_setup_irad_hgt() const
|
||||
{
|
||||
return p->antManualSetup_.iradHgt_;
|
||||
}
|
||||
|
|
@ -877,14 +878,14 @@ std::string RdaAdaptationData::refined_park() const
|
|||
return p->refinedPark_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::rvp8nv_iwaveguide_length() const
|
||||
std::uint32_t RdaAdaptationData::rvp8nv_iwaveguide_length() const
|
||||
{
|
||||
return p->rvp8nvIwaveguideLength_;
|
||||
}
|
||||
|
||||
float RdaAdaptationData::v_rnscale(unsigned i) const
|
||||
{
|
||||
return p->vRnscale_[i];
|
||||
return p->vRnscale_.at(i);
|
||||
}
|
||||
|
||||
float RdaAdaptationData::vel_data_tover() const
|
||||
|
|
@ -902,7 +903,7 @@ float RdaAdaptationData::doppler_range_start() const
|
|||
return p->dopplerRangeStart_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::max_el_index() const
|
||||
std::uint32_t RdaAdaptationData::max_el_index() const
|
||||
{
|
||||
return p->maxElIndex_;
|
||||
}
|
||||
|
|
@ -922,7 +923,7 @@ float RdaAdaptationData::seg4_lim() const
|
|||
return p->seg4Lim_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::nbr_el_segments() const
|
||||
std::uint32_t RdaAdaptationData::nbr_el_segments() const
|
||||
{
|
||||
return p->nbrElSegments_;
|
||||
}
|
||||
|
|
@ -1082,7 +1083,7 @@ float RdaAdaptationData::bite_mod_min_temp() const
|
|||
return p->biteModMinTemp_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::default_polarization() const
|
||||
std::uint32_t RdaAdaptationData::default_polarization() const
|
||||
{
|
||||
return p->defaultPolarization_;
|
||||
}
|
||||
|
|
@ -1107,12 +1108,12 @@ float RdaAdaptationData::ame_current_tolerance() const
|
|||
return p->ameCurrentTolerance_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::h_only_polarization() const
|
||||
std::uint32_t RdaAdaptationData::h_only_polarization() const
|
||||
{
|
||||
return p->hOnlyPolarization_;
|
||||
}
|
||||
|
||||
uint32_t RdaAdaptationData::v_only_polarization() const
|
||||
std::uint32_t RdaAdaptationData::v_only_polarization() const
|
||||
{
|
||||
return p->vOnlyPolarization_;
|
||||
}
|
||||
|
|
@ -1146,9 +1147,10 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
{
|
||||
logger_->trace("Parsing RDA Adaptation Data (Message Type 18)");
|
||||
|
||||
bool messageValid = true;
|
||||
size_t bytesRead = 0;
|
||||
bool messageValid = true;
|
||||
std::size_t bytesRead = 0;
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers): Readability
|
||||
p->adapFileName_.resize(12);
|
||||
p->adapFormat_.resize(4);
|
||||
p->adapRevision_.resize(4);
|
||||
|
|
@ -1171,7 +1173,7 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->parkel_), 4); // 64-67
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->aFuelConv_[0]),
|
||||
p->aFuelConv_.size() * 4); // 68-111
|
||||
static_cast<std::streamsize>(p->aFuelConv_.size() * 4)); // 68-111
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->aMinShelterTemp_), 4); // 112-115
|
||||
is.read(reinterpret_cast<char*>(&p->aMaxShelterTemp_), 4); // 116-119
|
||||
|
|
@ -1209,7 +1211,7 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->redundantChanConfig_), 4); // 224-227
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->attenTable_[0]),
|
||||
p->attenTable_.size() * 4); // 228-643
|
||||
static_cast<std::streamsize>(p->attenTable_.size() * 4)); // 228-643
|
||||
|
||||
is.seekg(24, std::ios_base::cur); // 644-667
|
||||
is.read(reinterpret_cast<char*>(&p->pathLosses_[7]), 4); // 668-671
|
||||
|
|
@ -1262,13 +1264,13 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->vTsCw_), 4); // 936-939
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->hRnscale_[0]),
|
||||
p->hRnscale_.size() * 4); // 940-991
|
||||
static_cast<std::streamsize>(p->hRnscale_.size() * 4)); // 940-991
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->atmos_[0]),
|
||||
p->atmos_.size() * 4); // 992-1043
|
||||
static_cast<std::streamsize>(p->atmos_.size() * 4)); // 992-1043
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->elIndex_[0]),
|
||||
p->elIndex_.size() * 4); // 1044-1091
|
||||
static_cast<std::streamsize>(p->elIndex_.size() * 4)); // 1044-1091
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->tfreqMhz_), 4); // 1092-1095
|
||||
is.read(reinterpret_cast<char*>(&p->baseDataTcn_), 4); // 1096-1099
|
||||
|
|
@ -1394,11 +1396,12 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
4); // 8696-8699
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->vRnscale_[0]),
|
||||
11 * 4); // 8700-8743
|
||||
static_cast<std::streamsize>(11 * 4)); // 8700-8743
|
||||
|
||||
is.read(reinterpret_cast<char*>(&p->velDataTover_), 4); // 8744-8747
|
||||
is.read(reinterpret_cast<char*>(&p->widthDataTover_), 4); // 8748-8751
|
||||
is.read(reinterpret_cast<char*>(&p->vRnscale_[11]), 2 * 4); // 8752-8759
|
||||
is.read(reinterpret_cast<char*>(&p->velDataTover_), 4); // 8744-8747
|
||||
is.read(reinterpret_cast<char*>(&p->widthDataTover_), 4); // 8748-8751
|
||||
is.read(reinterpret_cast<char*>(&p->vRnscale_[11]),
|
||||
static_cast<std::streamsize>(2 * 4)); // 8752-8759
|
||||
|
||||
is.seekg(4, std::ios_base::cur); // 8760-8763
|
||||
|
||||
|
|
@ -1468,6 +1471,8 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
|
||||
bytesRead += 9468;
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
p->lowerPreLimit_ = SwapFloat(p->lowerPreLimit_);
|
||||
p->azLat_ = SwapFloat(p->azLat_);
|
||||
p->upperPreLimit_ = SwapFloat(p->upperPreLimit_);
|
||||
|
|
@ -1507,84 +1512,87 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
SwapArray(p->atmos_);
|
||||
SwapArray(p->elIndex_);
|
||||
|
||||
p->tfreqMhz_ = ntohl(p->tfreqMhz_);
|
||||
p->baseDataTcn_ = SwapFloat(p->baseDataTcn_);
|
||||
p->reflDataTover_ = SwapFloat(p->reflDataTover_);
|
||||
p->tarHDbz0Lp_ = SwapFloat(p->tarHDbz0Lp_);
|
||||
p->tarVDbz0Lp_ = SwapFloat(p->tarVDbz0Lp_);
|
||||
p->initPhiDp_ = ntohl(p->initPhiDp_);
|
||||
p->normInitPhiDp_ = ntohl(p->normInitPhiDp_);
|
||||
p->lxLp_ = SwapFloat(p->lxLp_);
|
||||
p->lxSp_ = SwapFloat(p->lxSp_);
|
||||
p->meteorParam_ = SwapFloat(p->meteorParam_);
|
||||
p->antennaGain_ = SwapFloat(p->antennaGain_);
|
||||
p->velDegradLimit_ = SwapFloat(p->velDegradLimit_);
|
||||
p->wthDegradLimit_ = SwapFloat(p->wthDegradLimit_);
|
||||
p->hNoisetempDgradLimit_ = SwapFloat(p->hNoisetempDgradLimit_);
|
||||
p->hMinNoisetemp_ = ntohl(p->hMinNoisetemp_);
|
||||
p->vNoisetempDgradLimit_ = SwapFloat(p->vNoisetempDgradLimit_);
|
||||
p->vMinNoisetemp_ = ntohl(p->vMinNoisetemp_);
|
||||
p->klyDegradeLimit_ = SwapFloat(p->klyDegradeLimit_);
|
||||
p->tsCoho_ = SwapFloat(p->tsCoho_);
|
||||
p->hTsCw_ = SwapFloat(p->hTsCw_);
|
||||
p->tsStalo_ = SwapFloat(p->tsStalo_);
|
||||
p->ameHNoiseEnr_ = SwapFloat(p->ameHNoiseEnr_);
|
||||
p->xmtrPeakPwrHighLimit_ = SwapFloat(p->xmtrPeakPwrHighLimit_);
|
||||
p->xmtrPeakPwrLowLimit_ = SwapFloat(p->xmtrPeakPwrLowLimit_);
|
||||
p->hDbz0DeltaLimit_ = SwapFloat(p->hDbz0DeltaLimit_);
|
||||
p->threshold1_ = SwapFloat(p->threshold1_);
|
||||
p->threshold2_ = SwapFloat(p->threshold2_);
|
||||
p->clutSuppDgradLim_ = SwapFloat(p->clutSuppDgradLim_);
|
||||
p->range0Value_ = SwapFloat(p->range0Value_);
|
||||
p->xmtrPwrMtrScale_ = SwapFloat(p->xmtrPwrMtrScale_);
|
||||
p->vDbz0DeltaLimit_ = SwapFloat(p->vDbz0DeltaLimit_);
|
||||
p->tarHDbz0Sp_ = SwapFloat(p->tarHDbz0Sp_);
|
||||
p->tarVDbz0Sp_ = SwapFloat(p->tarVDbz0Sp_);
|
||||
p->deltaprf_ = ntohl(p->deltaprf_);
|
||||
p->tauSp_ = ntohl(p->tauSp_);
|
||||
p->tauLp_ = ntohl(p->tauLp_);
|
||||
p->ncDeadValue_ = ntohl(p->ncDeadValue_);
|
||||
p->tauRfSp_ = ntohl(p->tauRfSp_);
|
||||
p->tauRfLp_ = ntohl(p->tauRfLp_);
|
||||
p->seg1Lim_ = SwapFloat(p->seg1Lim_);
|
||||
p->slatsec_ = SwapFloat(p->slatsec_);
|
||||
p->slonsec_ = SwapFloat(p->slonsec_);
|
||||
p->slatdeg_ = ntohl(p->slatdeg_);
|
||||
p->slatmin_ = ntohl(p->slatmin_);
|
||||
p->slondeg_ = ntohl(p->slondeg_);
|
||||
p->slonmin_ = ntohl(p->slonmin_);
|
||||
p->digRcvrClockFreq_ = SwapDouble(p->digRcvrClockFreq_);
|
||||
p->cohoFreq_ = SwapDouble(p->cohoFreq_);
|
||||
p->azCorrectionFactor_ = SwapFloat(p->azCorrectionFactor_);
|
||||
p->elCorrectionFactor_ = SwapFloat(p->elCorrectionFactor_);
|
||||
p->antManualSetup_.ielmin_ = ntohl(p->antManualSetup_.ielmin_);
|
||||
p->antManualSetup_.ielmax_ = ntohl(p->antManualSetup_.ielmax_);
|
||||
p->tfreqMhz_ = ntohl(p->tfreqMhz_);
|
||||
p->baseDataTcn_ = SwapFloat(p->baseDataTcn_);
|
||||
p->reflDataTover_ = SwapFloat(p->reflDataTover_);
|
||||
p->tarHDbz0Lp_ = SwapFloat(p->tarHDbz0Lp_);
|
||||
p->tarVDbz0Lp_ = SwapFloat(p->tarVDbz0Lp_);
|
||||
p->initPhiDp_ = ntohl(p->initPhiDp_);
|
||||
p->normInitPhiDp_ = ntohl(p->normInitPhiDp_);
|
||||
p->lxLp_ = SwapFloat(p->lxLp_);
|
||||
p->lxSp_ = SwapFloat(p->lxSp_);
|
||||
p->meteorParam_ = SwapFloat(p->meteorParam_);
|
||||
p->antennaGain_ = SwapFloat(p->antennaGain_);
|
||||
p->velDegradLimit_ = SwapFloat(p->velDegradLimit_);
|
||||
p->wthDegradLimit_ = SwapFloat(p->wthDegradLimit_);
|
||||
p->hNoisetempDgradLimit_ = SwapFloat(p->hNoisetempDgradLimit_);
|
||||
p->hMinNoisetemp_ = ntohl(p->hMinNoisetemp_);
|
||||
p->vNoisetempDgradLimit_ = SwapFloat(p->vNoisetempDgradLimit_);
|
||||
p->vMinNoisetemp_ = ntohl(p->vMinNoisetemp_);
|
||||
p->klyDegradeLimit_ = SwapFloat(p->klyDegradeLimit_);
|
||||
p->tsCoho_ = SwapFloat(p->tsCoho_);
|
||||
p->hTsCw_ = SwapFloat(p->hTsCw_);
|
||||
p->tsStalo_ = SwapFloat(p->tsStalo_);
|
||||
p->ameHNoiseEnr_ = SwapFloat(p->ameHNoiseEnr_);
|
||||
p->xmtrPeakPwrHighLimit_ = SwapFloat(p->xmtrPeakPwrHighLimit_);
|
||||
p->xmtrPeakPwrLowLimit_ = SwapFloat(p->xmtrPeakPwrLowLimit_);
|
||||
p->hDbz0DeltaLimit_ = SwapFloat(p->hDbz0DeltaLimit_);
|
||||
p->threshold1_ = SwapFloat(p->threshold1_);
|
||||
p->threshold2_ = SwapFloat(p->threshold2_);
|
||||
p->clutSuppDgradLim_ = SwapFloat(p->clutSuppDgradLim_);
|
||||
p->range0Value_ = SwapFloat(p->range0Value_);
|
||||
p->xmtrPwrMtrScale_ = SwapFloat(p->xmtrPwrMtrScale_);
|
||||
p->vDbz0DeltaLimit_ = SwapFloat(p->vDbz0DeltaLimit_);
|
||||
p->tarHDbz0Sp_ = SwapFloat(p->tarHDbz0Sp_);
|
||||
p->tarVDbz0Sp_ = SwapFloat(p->tarVDbz0Sp_);
|
||||
p->deltaprf_ = ntohl(p->deltaprf_);
|
||||
p->tauSp_ = ntohl(p->tauSp_);
|
||||
p->tauLp_ = ntohl(p->tauLp_);
|
||||
p->ncDeadValue_ = ntohl(p->ncDeadValue_);
|
||||
p->tauRfSp_ = ntohl(p->tauRfSp_);
|
||||
p->tauRfLp_ = ntohl(p->tauRfLp_);
|
||||
p->seg1Lim_ = SwapFloat(p->seg1Lim_);
|
||||
p->slatsec_ = SwapFloat(p->slatsec_);
|
||||
p->slonsec_ = SwapFloat(p->slonsec_);
|
||||
p->slatdeg_ = ntohl(p->slatdeg_);
|
||||
p->slatmin_ = ntohl(p->slatmin_);
|
||||
p->slondeg_ = ntohl(p->slondeg_);
|
||||
p->slonmin_ = ntohl(p->slonmin_);
|
||||
p->digRcvrClockFreq_ = SwapDouble(p->digRcvrClockFreq_);
|
||||
p->cohoFreq_ = SwapDouble(p->cohoFreq_);
|
||||
p->azCorrectionFactor_ = SwapFloat(p->azCorrectionFactor_);
|
||||
p->elCorrectionFactor_ = SwapFloat(p->elCorrectionFactor_);
|
||||
p->antManualSetup_.ielmin_ =
|
||||
static_cast<std::int32_t>(ntohl(p->antManualSetup_.ielmin_));
|
||||
p->antManualSetup_.ielmax_ =
|
||||
static_cast<std::int32_t>(ntohl(p->antManualSetup_.ielmax_));
|
||||
p->antManualSetup_.fazvelmax_ = ntohl(p->antManualSetup_.fazvelmax_);
|
||||
p->antManualSetup_.felvelmax_ = ntohl(p->antManualSetup_.felvelmax_);
|
||||
p->antManualSetup_.igndHgt_ = ntohl(p->antManualSetup_.igndHgt_);
|
||||
p->antManualSetup_.iradHgt_ = ntohl(p->antManualSetup_.iradHgt_);
|
||||
p->azPosSustainDrive_ = SwapFloat(p->azPosSustainDrive_);
|
||||
p->azNegSustainDrive_ = SwapFloat(p->azNegSustainDrive_);
|
||||
p->azNomPosDriveSlope_ = SwapFloat(p->azNomPosDriveSlope_);
|
||||
p->azNomNegDriveSlope_ = SwapFloat(p->azNomNegDriveSlope_);
|
||||
p->azFeedbackSlope_ = SwapFloat(p->azFeedbackSlope_);
|
||||
p->elPosSustainDrive_ = SwapFloat(p->elPosSustainDrive_);
|
||||
p->elNegSustainDrive_ = SwapFloat(p->elNegSustainDrive_);
|
||||
p->elNomPosDriveSlope_ = SwapFloat(p->elNomPosDriveSlope_);
|
||||
p->elNomNegDriveSlope_ = SwapFloat(p->elNomNegDriveSlope_);
|
||||
p->elFeedbackSlope_ = SwapFloat(p->elFeedbackSlope_);
|
||||
p->elFirstSlope_ = SwapFloat(p->elFirstSlope_);
|
||||
p->elSecondSlope_ = SwapFloat(p->elSecondSlope_);
|
||||
p->elThirdSlope_ = SwapFloat(p->elThirdSlope_);
|
||||
p->elDroopPos_ = SwapFloat(p->elDroopPos_);
|
||||
p->elOffNeutralDrive_ = SwapFloat(p->elOffNeutralDrive_);
|
||||
p->azIntertia_ = SwapFloat(p->azIntertia_);
|
||||
p->elInertia_ = SwapFloat(p->elInertia_);
|
||||
p->azStowAngle_ = SwapFloat(p->azStowAngle_);
|
||||
p->elStowAngle_ = SwapFloat(p->elStowAngle_);
|
||||
p->azEncoderAlignment_ = SwapFloat(p->azEncoderAlignment_);
|
||||
p->elEncoderAlignment_ = SwapFloat(p->elEncoderAlignment_);
|
||||
p->rvp8nvIwaveguideLength_ = ntohl(p->rvp8nvIwaveguideLength_);
|
||||
p->antManualSetup_.igndHgt_ =
|
||||
static_cast<std::int32_t>(ntohl(p->antManualSetup_.igndHgt_));
|
||||
p->antManualSetup_.iradHgt_ = ntohl(p->antManualSetup_.iradHgt_);
|
||||
p->azPosSustainDrive_ = SwapFloat(p->azPosSustainDrive_);
|
||||
p->azNegSustainDrive_ = SwapFloat(p->azNegSustainDrive_);
|
||||
p->azNomPosDriveSlope_ = SwapFloat(p->azNomPosDriveSlope_);
|
||||
p->azNomNegDriveSlope_ = SwapFloat(p->azNomNegDriveSlope_);
|
||||
p->azFeedbackSlope_ = SwapFloat(p->azFeedbackSlope_);
|
||||
p->elPosSustainDrive_ = SwapFloat(p->elPosSustainDrive_);
|
||||
p->elNegSustainDrive_ = SwapFloat(p->elNegSustainDrive_);
|
||||
p->elNomPosDriveSlope_ = SwapFloat(p->elNomPosDriveSlope_);
|
||||
p->elNomNegDriveSlope_ = SwapFloat(p->elNomNegDriveSlope_);
|
||||
p->elFeedbackSlope_ = SwapFloat(p->elFeedbackSlope_);
|
||||
p->elFirstSlope_ = SwapFloat(p->elFirstSlope_);
|
||||
p->elSecondSlope_ = SwapFloat(p->elSecondSlope_);
|
||||
p->elThirdSlope_ = SwapFloat(p->elThirdSlope_);
|
||||
p->elDroopPos_ = SwapFloat(p->elDroopPos_);
|
||||
p->elOffNeutralDrive_ = SwapFloat(p->elOffNeutralDrive_);
|
||||
p->azIntertia_ = SwapFloat(p->azIntertia_);
|
||||
p->elInertia_ = SwapFloat(p->elInertia_);
|
||||
p->azStowAngle_ = SwapFloat(p->azStowAngle_);
|
||||
p->elStowAngle_ = SwapFloat(p->elStowAngle_);
|
||||
p->azEncoderAlignment_ = SwapFloat(p->azEncoderAlignment_);
|
||||
p->elEncoderAlignment_ = SwapFloat(p->elEncoderAlignment_);
|
||||
p->rvp8nvIwaveguideLength_ = ntohl(p->rvp8nvIwaveguideLength_);
|
||||
|
||||
SwapArray(p->vRnscale_);
|
||||
|
||||
|
|
@ -1660,6 +1668,4 @@ RdaAdaptationData::Create(Level2MessageHeader&& header, std::istream& is)
|
|||
return message;
|
||||
}
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
|
|
@ -1,209 +1,214 @@
|
|||
#include <scwx/wsr88d/rda/rda_status_data.hpp>
|
||||
#include <scwx/util/logger.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
static const std::string logPrefix_ = "scwx::wsr88d::rda::rda_status_data";
|
||||
static const auto logger_ = util::Logger::Create(logPrefix_);
|
||||
|
||||
class RdaStatusDataImpl
|
||||
class RdaStatusData::Impl
|
||||
{
|
||||
public:
|
||||
explicit RdaStatusDataImpl() = default;
|
||||
~RdaStatusDataImpl() = default;
|
||||
explicit Impl() = default;
|
||||
~Impl() = default;
|
||||
|
||||
uint16_t rdaStatus_ {0};
|
||||
uint16_t operabilityStatus_ {0};
|
||||
uint16_t controlStatus_ {0};
|
||||
uint16_t auxiliaryPowerGeneratorState_ {0};
|
||||
uint16_t averageTransmitterPower_ {0};
|
||||
int16_t horizontalReflectivityCalibrationCorrection_ {0};
|
||||
uint16_t dataTransmissionEnabled_ {0};
|
||||
uint16_t volumeCoveragePatternNumber_ {0};
|
||||
uint16_t rdaControlAuthorization_ {0};
|
||||
uint16_t rdaBuildNumber_ {0};
|
||||
uint16_t operationalMode_ {0};
|
||||
uint16_t superResolutionStatus_ {0};
|
||||
uint16_t clutterMitigationDecisionStatus_ {0};
|
||||
uint16_t rdaScanAndDataFlags_ {0};
|
||||
uint16_t rdaAlarmSummary_ {0};
|
||||
uint16_t commandAcknowledgement_ {0};
|
||||
uint16_t channelControlStatus_ {0};
|
||||
uint16_t spotBlankingStatus_ {0};
|
||||
uint16_t bypassMapGenerationDate_ {0};
|
||||
uint16_t bypassMapGenerationTime_ {0};
|
||||
uint16_t clutterFilterMapGenerationDate_ {0};
|
||||
uint16_t clutterFilterMapGenerationTime_ {0};
|
||||
int16_t verticalReflectivityCalibrationCorrection_ {0};
|
||||
uint16_t transitionPowerSourceStatus_ {0};
|
||||
uint16_t rmsControlStatus_ {0};
|
||||
uint16_t performanceCheckStatus_ {0};
|
||||
std::array<uint16_t, 14> alarmCodes_ {0};
|
||||
uint16_t signalProcessingOptions_ {0};
|
||||
uint16_t downloadedPatternNumber_ {0};
|
||||
uint16_t statusVersion_ {0};
|
||||
Impl(const Impl&) = delete;
|
||||
Impl& operator=(const Impl&) = delete;
|
||||
Impl(const Impl&&) = delete;
|
||||
Impl& operator=(const Impl&&) = delete;
|
||||
|
||||
std::uint16_t rdaStatus_ {0};
|
||||
std::uint16_t operabilityStatus_ {0};
|
||||
std::uint16_t controlStatus_ {0};
|
||||
std::uint16_t auxiliaryPowerGeneratorState_ {0};
|
||||
std::uint16_t averageTransmitterPower_ {0};
|
||||
std::int16_t horizontalReflectivityCalibrationCorrection_ {0};
|
||||
std::uint16_t dataTransmissionEnabled_ {0};
|
||||
std::uint16_t volumeCoveragePatternNumber_ {0};
|
||||
std::uint16_t rdaControlAuthorization_ {0};
|
||||
std::uint16_t rdaBuildNumber_ {0};
|
||||
std::uint16_t operationalMode_ {0};
|
||||
std::uint16_t superResolutionStatus_ {0};
|
||||
std::uint16_t clutterMitigationDecisionStatus_ {0};
|
||||
std::uint16_t rdaScanAndDataFlags_ {0};
|
||||
std::uint16_t rdaAlarmSummary_ {0};
|
||||
std::uint16_t commandAcknowledgement_ {0};
|
||||
std::uint16_t channelControlStatus_ {0};
|
||||
std::uint16_t spotBlankingStatus_ {0};
|
||||
std::uint16_t bypassMapGenerationDate_ {0};
|
||||
std::uint16_t bypassMapGenerationTime_ {0};
|
||||
std::uint16_t clutterFilterMapGenerationDate_ {0};
|
||||
std::uint16_t clutterFilterMapGenerationTime_ {0};
|
||||
std::int16_t verticalReflectivityCalibrationCorrection_ {0};
|
||||
std::uint16_t transitionPowerSourceStatus_ {0};
|
||||
std::uint16_t rmsControlStatus_ {0};
|
||||
std::uint16_t performanceCheckStatus_ {0};
|
||||
|
||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||
std::array<std::uint16_t, 14> alarmCodes_ {0};
|
||||
|
||||
std::uint16_t signalProcessingOptions_ {0};
|
||||
std::uint16_t downloadedPatternNumber_ {0};
|
||||
std::uint16_t statusVersion_ {0};
|
||||
};
|
||||
|
||||
RdaStatusData::RdaStatusData() :
|
||||
Level2Message(), p(std::make_unique<RdaStatusDataImpl>())
|
||||
{
|
||||
}
|
||||
RdaStatusData::RdaStatusData() : Level2Message(), p(std::make_unique<Impl>()) {}
|
||||
RdaStatusData::~RdaStatusData() = default;
|
||||
|
||||
RdaStatusData::RdaStatusData(RdaStatusData&&) noexcept = default;
|
||||
RdaStatusData& RdaStatusData::operator=(RdaStatusData&&) noexcept = default;
|
||||
|
||||
uint16_t RdaStatusData::rda_status() const
|
||||
std::uint16_t RdaStatusData::rda_status() const
|
||||
{
|
||||
return p->rdaStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::operability_status() const
|
||||
std::uint16_t RdaStatusData::operability_status() const
|
||||
{
|
||||
return p->operabilityStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::control_status() const
|
||||
std::uint16_t RdaStatusData::control_status() const
|
||||
{
|
||||
return p->controlStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::auxiliary_power_generator_state() const
|
||||
std::uint16_t RdaStatusData::auxiliary_power_generator_state() const
|
||||
{
|
||||
return p->auxiliaryPowerGeneratorState_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::average_transmitter_power() const
|
||||
std::uint16_t RdaStatusData::average_transmitter_power() const
|
||||
{
|
||||
return p->averageTransmitterPower_;
|
||||
}
|
||||
|
||||
float RdaStatusData::horizontal_reflectivity_calibration_correction() const
|
||||
{
|
||||
return p->horizontalReflectivityCalibrationCorrection_ * 0.01f;
|
||||
constexpr float kScale_ = 0.01f;
|
||||
return static_cast<float>(p->horizontalReflectivityCalibrationCorrection_) *
|
||||
kScale_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::data_transmission_enabled() const
|
||||
std::uint16_t RdaStatusData::data_transmission_enabled() const
|
||||
{
|
||||
return p->dataTransmissionEnabled_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::volume_coverage_pattern_number() const
|
||||
std::uint16_t RdaStatusData::volume_coverage_pattern_number() const
|
||||
{
|
||||
return p->volumeCoveragePatternNumber_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_control_authorization() const
|
||||
std::uint16_t RdaStatusData::rda_control_authorization() const
|
||||
{
|
||||
return p->rdaControlAuthorization_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_build_number() const
|
||||
std::uint16_t RdaStatusData::rda_build_number() const
|
||||
{
|
||||
return p->rdaBuildNumber_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::operational_mode() const
|
||||
std::uint16_t RdaStatusData::operational_mode() const
|
||||
{
|
||||
return p->operationalMode_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::super_resolution_status() const
|
||||
std::uint16_t RdaStatusData::super_resolution_status() const
|
||||
{
|
||||
return p->superResolutionStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::clutter_mitigation_decision_status() const
|
||||
std::uint16_t RdaStatusData::clutter_mitigation_decision_status() const
|
||||
{
|
||||
return p->clutterMitigationDecisionStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_scan_and_data_flags() const
|
||||
std::uint16_t RdaStatusData::rda_scan_and_data_flags() const
|
||||
{
|
||||
return p->rdaScanAndDataFlags_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rda_alarm_summary() const
|
||||
std::uint16_t RdaStatusData::rda_alarm_summary() const
|
||||
{
|
||||
return p->rdaAlarmSummary_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::command_acknowledgement() const
|
||||
std::uint16_t RdaStatusData::command_acknowledgement() const
|
||||
{
|
||||
return p->commandAcknowledgement_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::channel_control_status() const
|
||||
std::uint16_t RdaStatusData::channel_control_status() const
|
||||
{
|
||||
return p->channelControlStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::spot_blanking_status() const
|
||||
std::uint16_t RdaStatusData::spot_blanking_status() const
|
||||
{
|
||||
return p->spotBlankingStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::bypass_map_generation_date() const
|
||||
std::uint16_t RdaStatusData::bypass_map_generation_date() const
|
||||
{
|
||||
return p->bypassMapGenerationDate_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::bypass_map_generation_time() const
|
||||
std::uint16_t RdaStatusData::bypass_map_generation_time() const
|
||||
{
|
||||
return p->bypassMapGenerationTime_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::clutter_filter_map_generation_date() const
|
||||
std::uint16_t RdaStatusData::clutter_filter_map_generation_date() const
|
||||
{
|
||||
return p->clutterFilterMapGenerationDate_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::clutter_filter_map_generation_time() const
|
||||
std::uint16_t RdaStatusData::clutter_filter_map_generation_time() const
|
||||
{
|
||||
return p->clutterFilterMapGenerationTime_;
|
||||
}
|
||||
|
||||
float RdaStatusData::vertical_reflectivity_calibration_correction() const
|
||||
{
|
||||
return p->verticalReflectivityCalibrationCorrection_ * 0.01f;
|
||||
constexpr float kScale_ = 0.01f;
|
||||
return static_cast<float>(p->verticalReflectivityCalibrationCorrection_) *
|
||||
kScale_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::transition_power_source_status() const
|
||||
std::uint16_t RdaStatusData::transition_power_source_status() const
|
||||
{
|
||||
return p->transitionPowerSourceStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::rms_control_status() const
|
||||
std::uint16_t RdaStatusData::rms_control_status() const
|
||||
{
|
||||
return p->rmsControlStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::performance_check_status() const
|
||||
std::uint16_t RdaStatusData::performance_check_status() const
|
||||
{
|
||||
return p->performanceCheckStatus_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::alarm_codes(unsigned i) const
|
||||
std::uint16_t RdaStatusData::alarm_codes(unsigned i) const
|
||||
{
|
||||
return p->alarmCodes_[i];
|
||||
return p->alarmCodes_.at(i);
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::signal_processing_options() const
|
||||
std::uint16_t RdaStatusData::signal_processing_options() const
|
||||
{
|
||||
return p->signalProcessingOptions_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::downloaded_pattern_number() const
|
||||
std::uint16_t RdaStatusData::downloaded_pattern_number() const
|
||||
{
|
||||
return p->downloadedPatternNumber_;
|
||||
}
|
||||
|
||||
uint16_t RdaStatusData::status_version() const
|
||||
std::uint16_t RdaStatusData::status_version() const
|
||||
{
|
||||
return p->statusVersion_;
|
||||
}
|
||||
|
|
@ -215,6 +220,7 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
bool messageValid = true;
|
||||
size_t bytesRead = 0;
|
||||
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-magic-numbers): Readability
|
||||
is.read(reinterpret_cast<char*>(&p->rdaStatus_), 2); // 1
|
||||
is.read(reinterpret_cast<char*>(&p->operabilityStatus_), 2); // 2
|
||||
is.read(reinterpret_cast<char*>(&p->controlStatus_), 2); // 3
|
||||
|
|
@ -249,7 +255,7 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
is.read(reinterpret_cast<char*>(&p->rmsControlStatus_), 2); // 25
|
||||
is.read(reinterpret_cast<char*>(&p->performanceCheckStatus_), 2); // 26
|
||||
is.read(reinterpret_cast<char*>(&p->alarmCodes_),
|
||||
p->alarmCodes_.size() * 2); // 27-40
|
||||
static_cast<std::streamsize>(p->alarmCodes_.size() * 2)); // 27-40
|
||||
bytesRead += 80;
|
||||
|
||||
p->rdaStatus_ = ntohs(p->rdaStatus_);
|
||||
|
|
@ -257,8 +263,8 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
p->controlStatus_ = ntohs(p->controlStatus_);
|
||||
p->auxiliaryPowerGeneratorState_ = ntohs(p->auxiliaryPowerGeneratorState_);
|
||||
p->averageTransmitterPower_ = ntohs(p->averageTransmitterPower_);
|
||||
p->horizontalReflectivityCalibrationCorrection_ =
|
||||
ntohs(p->horizontalReflectivityCalibrationCorrection_);
|
||||
p->horizontalReflectivityCalibrationCorrection_ = static_cast<std::int16_t>(
|
||||
ntohs(p->horizontalReflectivityCalibrationCorrection_));
|
||||
p->dataTransmissionEnabled_ = ntohs(p->dataTransmissionEnabled_);
|
||||
p->volumeCoveragePatternNumber_ = ntohs(p->volumeCoveragePatternNumber_);
|
||||
p->rdaControlAuthorization_ = ntohs(p->rdaControlAuthorization_);
|
||||
|
|
@ -278,15 +284,16 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
ntohs(p->clutterFilterMapGenerationDate_);
|
||||
p->clutterFilterMapGenerationTime_ =
|
||||
ntohs(p->clutterFilterMapGenerationTime_);
|
||||
p->verticalReflectivityCalibrationCorrection_ =
|
||||
ntohs(p->verticalReflectivityCalibrationCorrection_);
|
||||
p->verticalReflectivityCalibrationCorrection_ = static_cast<std::int16_t>(
|
||||
ntohs(p->verticalReflectivityCalibrationCorrection_));
|
||||
p->transitionPowerSourceStatus_ = ntohs(p->transitionPowerSourceStatus_);
|
||||
p->rmsControlStatus_ = ntohs(p->rmsControlStatus_);
|
||||
p->performanceCheckStatus_ = ntohs(p->performanceCheckStatus_);
|
||||
SwapArray(p->alarmCodes_);
|
||||
|
||||
// RDA Build 18.0 increased the size of the message from 80 to 120 bytes
|
||||
if (header().message_size() * 2 > Level2MessageHeader::SIZE + 80)
|
||||
if (static_cast<std::size_t>(header().message_size()) * 2 >
|
||||
Level2MessageHeader::SIZE + 80)
|
||||
{
|
||||
is.read(reinterpret_cast<char*>(&p->signalProcessingOptions_), 2); // 41
|
||||
is.seekg(34, std::ios_base::cur); // 42-58
|
||||
|
|
@ -297,6 +304,8 @@ bool RdaStatusData::Parse(std::istream& is)
|
|||
p->signalProcessingOptions_ = ntohs(p->signalProcessingOptions_);
|
||||
p->statusVersion_ = ntohs(p->statusVersion_);
|
||||
}
|
||||
|
||||
// NOLINTEND(cppcoreguidelines-avoid-magic-numbers)
|
||||
|
||||
if (!ValidateMessage(is, bytesRead))
|
||||
{
|
||||
|
|
@ -320,6 +329,4 @@ RdaStatusData::Create(Level2MessageHeader&& header, std::istream& is)
|
|||
return message;
|
||||
}
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
} // namespace scwx::wsr88d::rda
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue