mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 13:30:06 +00:00
Parse Performance/Maintenance Data (Message Type 3)
This commit is contained in:
parent
e440d8c657
commit
2fc12d44db
10 changed files with 2854 additions and 86 deletions
|
|
@ -2,6 +2,18 @@
|
|||
|
||||
#include <scwx/wsr88d/rda/message_header.hpp>
|
||||
|
||||
#include <array>
|
||||
#include <execution>
|
||||
#include <istream>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#ifdef WIN32
|
||||
# include <WinSock2.h>
|
||||
#else
|
||||
# include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
|
|
@ -22,7 +34,54 @@ protected:
|
|||
Message(Message&&) noexcept;
|
||||
Message& operator=(Message&&) noexcept;
|
||||
|
||||
bool ValidateSize(std::istream& is, size_t bytesRead) const;
|
||||
bool ValidateMessage(std::istream& is, size_t bytesRead) const;
|
||||
|
||||
static void ReadBoolean(std::istream& is, bool& value)
|
||||
{
|
||||
std::string data(4, ' ');
|
||||
is.read(reinterpret_cast<char*>(&data[0]), 4);
|
||||
value = (data.at(0) == 'T');
|
||||
}
|
||||
|
||||
static void ReadChar(std::istream& is, char& value)
|
||||
{
|
||||
std::string data(4, ' ');
|
||||
is.read(reinterpret_cast<char*>(&data[0]), 4);
|
||||
value = data.at(0);
|
||||
}
|
||||
|
||||
static float SwapFloat(float f)
|
||||
{
|
||||
return ntohf(*reinterpret_cast<uint32_t*>(&f));
|
||||
}
|
||||
|
||||
template<size_t _Size>
|
||||
static void SwapFloatArray(std::array<float, _Size>& arr)
|
||||
{
|
||||
std::transform(std::execution::par_unseq,
|
||||
arr.begin(),
|
||||
arr.end(),
|
||||
arr.begin(),
|
||||
[](float f) { return SwapFloat(f); });
|
||||
}
|
||||
|
||||
template<size_t _Size>
|
||||
static void SwapUInt16Array(std::array<uint16_t, _Size>& arr)
|
||||
{
|
||||
std::transform(std::execution::par_unseq,
|
||||
arr.begin(),
|
||||
arr.end(),
|
||||
arr.begin(),
|
||||
[](uint16_t u) { return ntohs(u); });
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static void SwapFloatMap(std::map<T, float>& m)
|
||||
{
|
||||
std::for_each(std::execution::par_unseq, m.begin(), m.end(), [](auto& p) {
|
||||
p.second = SwapFloat(p.second);
|
||||
});
|
||||
}
|
||||
|
||||
public:
|
||||
virtual ~Message();
|
||||
|
|
|
|||
290
wxdata/include/scwx/wsr88d/rda/performance_maintenance_data.hpp
Normal file
290
wxdata/include/scwx/wsr88d/rda/performance_maintenance_data.hpp
Normal file
|
|
@ -0,0 +1,290 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/rda/message.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rda
|
||||
{
|
||||
|
||||
class PerformanceMaintenanceDataImpl;
|
||||
|
||||
class PerformanceMaintenanceData : public Message
|
||||
{
|
||||
public:
|
||||
explicit PerformanceMaintenanceData();
|
||||
~PerformanceMaintenanceData();
|
||||
|
||||
PerformanceMaintenanceData(const Message&) = delete;
|
||||
PerformanceMaintenanceData&
|
||||
operator=(const PerformanceMaintenanceData&) = delete;
|
||||
|
||||
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;
|
||||
uint32_t csu_loss_of_signal() const;
|
||||
uint32_t csu_loss_of_frames() const;
|
||||
uint32_t csu_yellow_alarms() const;
|
||||
uint32_t csu_blue_alarms() 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;
|
||||
int32_t gps_satellites() 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;
|
||||
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_bias() 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 generatl_disk_io_error() const;
|
||||
uint8_t rsp_status() const;
|
||||
uint8_t motherboard_temperature() const;
|
||||
uint8_t cpu1_temperature() const;
|
||||
uint8_t cpu2_temperature() const;
|
||||
uint16_t cpu1_fan_speed() const;
|
||||
uint16_t cpu2_fan_speed() const;
|
||||
uint16_t rsp_fan1_speed() const;
|
||||
uint16_t rsp_fan2_speed() const;
|
||||
uint16_t rsp_fan3_speed() 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;
|
||||
|
||||
bool Parse(std::istream& is);
|
||||
|
||||
static std::unique_ptr<PerformanceMaintenanceData>
|
||||
Create(MessageHeader&& header, std::istream& is);
|
||||
|
||||
private:
|
||||
std::unique_ptr<PerformanceMaintenanceDataImpl> p;
|
||||
};
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
|
|
@ -2,8 +2,6 @@
|
|||
|
||||
#include <scwx/wsr88d/rda/message.hpp>
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue