mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 07:50:04 +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
|
||||
|
|
|
|||
|
|
@ -10,12 +10,6 @@
|
|||
#include <boost/iostreams/filter/bzip2.hpp>
|
||||
#include <boost/log/trivial.hpp>
|
||||
|
||||
#ifdef WIN32
|
||||
# include <WinSock2.h>
|
||||
#else
|
||||
# include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
|
|
|
|||
|
|
@ -1,16 +1,9 @@
|
|||
#include <scwx/wsr88d/rda/clutter_filter_map.hpp>
|
||||
|
||||
#include <istream>
|
||||
#include <vector>
|
||||
|
||||
#include <boost/log/trivial.hpp>
|
||||
|
||||
#ifdef WIN32
|
||||
# include <WinSock2.h>
|
||||
#else
|
||||
# include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
|
|
@ -205,7 +198,7 @@ bool ClutterFilterMap::Parse(std::istream& is)
|
|||
}
|
||||
}
|
||||
|
||||
if (!ValidateSize(is, bytesRead))
|
||||
if (!ValidateMessage(is, bytesRead))
|
||||
{
|
||||
messageValid = false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
#include <scwx/wsr88d/rda/message.hpp>
|
||||
|
||||
#include <istream>
|
||||
|
||||
#include <boost/log/trivial.hpp>
|
||||
|
||||
namespace scwx
|
||||
|
|
@ -28,12 +26,23 @@ Message::~Message() = default;
|
|||
Message::Message(Message&&) noexcept = default;
|
||||
Message& Message::operator=(Message&&) noexcept = default;
|
||||
|
||||
bool Message::ValidateSize(std::istream& is, size_t bytesRead) const
|
||||
bool Message::ValidateMessage(std::istream& is, size_t bytesRead) const
|
||||
{
|
||||
bool messageValid = true;
|
||||
size_t dataSize = header().message_size() * 2 - header().SIZE;
|
||||
|
||||
if (bytesRead != dataSize)
|
||||
if (is.eof())
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Reached end of file";
|
||||
messageValid = false;
|
||||
}
|
||||
else if (is.fail())
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(warning)
|
||||
<< logPrefix_ << "Could not read from input stream";
|
||||
messageValid = false;
|
||||
}
|
||||
else if (bytesRead != dataSize)
|
||||
{
|
||||
is.seekg(static_cast<std::streamoff>(dataSize) -
|
||||
static_cast<std::streamoff>(bytesRead),
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
#include <scwx/util/vectorbuf.hpp>
|
||||
#include <scwx/wsr88d/rda/clutter_filter_map.hpp>
|
||||
#include <scwx/wsr88d/rda/performance_maintenance_data.hpp>
|
||||
#include <scwx/wsr88d/rda/rda_adaptation_data.hpp>
|
||||
|
||||
#include <istream>
|
||||
#include <unordered_map>
|
||||
#include <vector>
|
||||
|
||||
|
|
@ -23,7 +23,9 @@ typedef std::function<std::unique_ptr<Message>(MessageHeader&&, std::istream&)>
|
|||
CreateMessageFunction;
|
||||
|
||||
static const std::unordered_map<uint8_t, CreateMessageFunction> create_ {
|
||||
{15, ClutterFilterMap::Create}, {18, RdaAdaptationData::Create}};
|
||||
{3, PerformanceMaintenanceData::Create},
|
||||
{15, ClutterFilterMap::Create},
|
||||
{18, RdaAdaptationData::Create}};
|
||||
|
||||
static std::vector<char> messageData_;
|
||||
static size_t bufferedSize_;
|
||||
|
|
|
|||
2483
wxdata/source/scwx/wsr88d/rda/performance_maintenance_data.cpp
Normal file
2483
wxdata/source/scwx/wsr88d/rda/performance_maintenance_data.cpp
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1,18 +1,7 @@
|
|||
#include <scwx/wsr88d/rda/rda_adaptation_data.hpp>
|
||||
|
||||
#include <array>
|
||||
#include <execution>
|
||||
#include <istream>
|
||||
#include <map>
|
||||
|
||||
#include <boost/log/trivial.hpp>
|
||||
|
||||
#ifdef WIN32
|
||||
# include <WinSock2.h>
|
||||
#else
|
||||
# include <arpa/inet.h>
|
||||
#endif
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
|
|
@ -23,14 +12,6 @@ namespace rda
|
|||
static const std::string logPrefix_ =
|
||||
"[scwx::wsr88d::rda::rda_adaptation_data] ";
|
||||
|
||||
static void ReadBoolean(std::istream& is, bool& value);
|
||||
static void ReadChar(std::istream& is, char& value);
|
||||
static float SwapFloat(float f);
|
||||
template<size_t _Size>
|
||||
static void SwapFloatArray(std::array<float, _Size>& arr);
|
||||
template<typename T>
|
||||
static void SwapFloatMap(std::map<T, float>& m);
|
||||
|
||||
struct AntManualSetup
|
||||
{
|
||||
int32_t ielmin_;
|
||||
|
|
@ -1757,13 +1738,7 @@ bool RdaAdaptationData::Parse(std::istream& is)
|
|||
p->txbBaseline_ = SwapFloat(p->txbBaseline_);
|
||||
p->txbAlarmThresh_ = SwapFloat(p->txbAlarmThresh_);
|
||||
|
||||
if (is.eof())
|
||||
{
|
||||
BOOST_LOG_TRIVIAL(warning) << logPrefix_ << "Reached end of file (1)";
|
||||
messageValid = false;
|
||||
}
|
||||
|
||||
if (!ValidateSize(is, bytesRead))
|
||||
if (!ValidateMessage(is, bytesRead))
|
||||
{
|
||||
messageValid = false;
|
||||
}
|
||||
|
|
@ -1781,43 +1756,6 @@ RdaAdaptationData::Create(MessageHeader&& header, std::istream& is)
|
|||
return message;
|
||||
}
|
||||
|
||||
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<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);
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace rda
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
|
|
|
|||
|
|
@ -12,11 +12,13 @@ set(HDR_WSR88D_RDA include/scwx/wsr88d/rda/clutter_filter_map.hpp
|
|||
include/scwx/wsr88d/rda/message.hpp
|
||||
include/scwx/wsr88d/rda/message_factory.hpp
|
||||
include/scwx/wsr88d/rda/message_header.hpp
|
||||
include/scwx/wsr88d/rda/performance_maintenance_data.hpp
|
||||
include/scwx/wsr88d/rda/rda_adaptation_data.hpp)
|
||||
set(SRC_WSR88D_RDA source/scwx/wsr88d/rda/clutter_filter_map.cpp
|
||||
source/scwx/wsr88d/rda/message.cpp
|
||||
source/scwx/wsr88d/rda/message_factory.cpp
|
||||
source/scwx/wsr88d/rda/message_header.cpp
|
||||
source/scwx/wsr88d/rda/performance_maintenance_data.cpp
|
||||
source/scwx/wsr88d/rda/rda_adaptation_data.cpp)
|
||||
|
||||
add_library(wxdata OBJECT ${HDR_UTIL}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue