use serde::{Deserialize, Serialize};
use super::{JsonLdContext, ValueUnit};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarStationFeature {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub geometry: Option<PointGeometry>,
#[serde(rename = "properties", skip_serializing_if = "Option::is_none")]
pub radar_station: Option<RadarStation>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarStation {
#[serde(rename = "@context", skip_serializing_if = "Option::is_none")]
pub at_context: Option<Box<JsonLdContext>>,
#[serde(rename = "@id", skip_serializing_if = "Option::is_none")]
pub at_id: Option<String>,
#[serde(rename = "@type", skip_serializing_if = "Option::is_none")]
pub at_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "stationType", skip_serializing_if = "Option::is_none")]
pub station_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub elevation: Option<ValueUnit>,
#[serde(rename = "timeZone", skip_serializing_if = "Option::is_none")]
pub time_zone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub latency: Option<LatencyInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rda: Option<RdaInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub performance: Option<PerformanceInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub adaptation: Option<AdaptationInfo>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PointGeometry {
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coordinates: Option<Vec<f64>>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct LatencyInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub current: Option<ValueUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub average: Option<ValueUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max: Option<ValueUnit>,
#[serde(
rename = "levelTwoLastReceivedTime",
skip_serializing_if = "Option::is_none"
)]
pub level_two_last_received_time: Option<String>,
#[serde(rename = "maxLatencyTime", skip_serializing_if = "Option::is_none")]
pub max_latency_time: Option<String>,
#[serde(rename = "reportingHost", skip_serializing_if = "Option::is_none")]
pub reporting_host: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub host: Option<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RdaProperties {
#[serde(rename = "resolutionVersion", skip_serializing_if = "Option::is_none")]
pub resolution_version: Option<i32>,
#[serde(rename = "nl2Path", skip_serializing_if = "Option::is_none")]
pub nl2_path: Option<String>,
#[serde(
rename = "volumeCoveragePattern",
skip_serializing_if = "Option::is_none"
)]
pub volume_coverage_pattern: Option<String>,
#[serde(rename = "controlStatus", skip_serializing_if = "Option::is_none")]
pub control_status: Option<String>,
#[serde(rename = "buildNumber", skip_serializing_if = "Option::is_none")]
pub build_number: Option<f64>, #[serde(rename = "alarmSummary", skip_serializing_if = "Option::is_none")]
pub alarm_summary: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<String>,
#[serde(rename = "generatorState", skip_serializing_if = "Option::is_none")]
pub generator_state: Option<String>,
#[serde(
rename = "superResolutionStatus",
skip_serializing_if = "Option::is_none"
)]
pub super_resolution_status: Option<String>,
#[serde(rename = "operabilityStatus", skip_serializing_if = "Option::is_none")]
pub operability_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(
rename = "averageTransmitterPower",
skip_serializing_if = "Option::is_none"
)]
pub average_transmitter_power: Option<ValueUnit>,
#[serde(
rename = "reflectivityCalibrationCorrection",
skip_serializing_if = "Option::is_none"
)]
pub reflectivity_calibration_correction: Option<ValueUnit>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RdaInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(rename = "reportingHost", skip_serializing_if = "Option::is_none")]
pub reporting_host: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<RdaProperties>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct RadarStationProperties {
#[serde(rename = "@id", skip_serializing_if = "Option::is_none")]
pub at_id: Option<String>,
#[serde(rename = "@type", skip_serializing_if = "Option::is_none")]
pub at_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "stationType", skip_serializing_if = "Option::is_none")]
pub station_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub elevation: Option<ValueUnit>,
#[serde(rename = "timeZone", skip_serializing_if = "Option::is_none")]
pub time_zone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub latency: Option<LatencyInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rda: Option<RdaInfo>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Feature {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub geometry: Option<PointGeometry>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<RadarStationProperties>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PerformanceProperties {
#[serde(rename = "ntp_status", skip_serializing_if = "Option::is_none")]
pub ntp_status: Option<i32>,
#[serde(rename = "commandChannel", skip_serializing_if = "Option::is_none")]
pub command_channel: Option<String>,
#[serde(
rename = "radomeAirTemperature",
skip_serializing_if = "Option::is_none"
)]
pub radome_air_temperature: Option<ValueUnit>,
#[serde(
rename = "transitionalPowerSource",
skip_serializing_if = "Option::is_none"
)]
pub transitional_power_source: Option<String>,
#[serde(
rename = "horizontalShortPulseNoise",
skip_serializing_if = "Option::is_none"
)]
pub horizontal_short_pulse_noise: Option<ValueUnit>,
#[serde(
rename = "elevationEncoderLight",
skip_serializing_if = "Option::is_none"
)]
pub elevation_encoder_light: Option<String>,
#[serde(
rename = "horizontalLongPulseNoise",
skip_serializing_if = "Option::is_none"
)]
pub horizontal_long_pulse_noise: Option<ValueUnit>,
#[serde(
rename = "azimuthEncoderLight",
skip_serializing_if = "Option::is_none"
)]
pub azimuth_encoder_light: Option<String>,
#[serde(
rename = "horizontalNoiseTemperature",
skip_serializing_if = "Option::is_none"
)]
pub horizontal_noise_temperature: Option<ValueUnit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub linearity: Option<f64>,
#[serde(
rename = "transmitterPeakPower",
skip_serializing_if = "Option::is_none"
)]
pub transmitter_peak_power: Option<ValueUnit>,
#[serde(
rename = "horizontalDeltadBZ0",
skip_serializing_if = "Option::is_none"
)]
pub horizontal_deltad_bz0: Option<ValueUnit>,
#[serde(
rename = "transmitterRecycleCount",
skip_serializing_if = "Option::is_none"
)]
pub transmitter_recycle_count: Option<i32>,
#[serde(rename = "verticalDeltadBZ0", skip_serializing_if = "Option::is_none")]
pub vertical_deltad_bz0: Option<ValueUnit>,
#[serde(rename = "receiverBias", skip_serializing_if = "Option::is_none")]
pub receiver_bias: Option<ValueUnit>,
#[serde(
rename = "shortPulseHorizontaldBZ0",
skip_serializing_if = "Option::is_none"
)]
pub short_pulse_horizontal_dbz0: Option<ValueUnit>,
#[serde(
rename = "transmitterImbalance",
skip_serializing_if = "Option::is_none"
)]
pub transmitter_imbalance: Option<ValueUnit>,
#[serde(
rename = "longPulseHorizontaldBZ0",
skip_serializing_if = "Option::is_none"
)]
pub long_pulse_horizontal_dbz0: Option<ValueUnit>,
#[serde(
rename = "performanceCheckTime",
skip_serializing_if = "Option::is_none"
)]
pub performance_check_time: Option<String>,
#[serde(
rename = "transmitterLeavingAirTemperature",
skip_serializing_if = "Option::is_none"
)]
pub transmitter_leaving_air_temperature: Option<ValueUnit>,
#[serde(rename = "shelterTemperature", skip_serializing_if = "Option::is_none")]
pub shelter_temperature: Option<ValueUnit>,
#[serde(rename = "powerSource", skip_serializing_if = "Option::is_none")]
pub power_source: Option<String>,
#[serde(rename = "dynamicRange", skip_serializing_if = "Option::is_none")]
pub dynamic_range: Option<ValueUnit>,
#[serde(rename = "fuelLevel", skip_serializing_if = "Option::is_none")]
pub fuel_level: Option<ValueUnit>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PerformanceInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(rename = "reportingHost", skip_serializing_if = "Option::is_none")]
pub reporting_host: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<PerformanceProperties>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AdaptationProperties {
#[serde(
rename = "transmitterFrequency",
skip_serializing_if = "Option::is_none"
)]
pub transmitter_frequency: Option<ValueUnit>,
#[serde(
rename = "pathLossWG04Circulator",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_wg04_circulator: Option<ValueUnit>,
#[serde(
rename = "antennaGainIncludingRadome",
skip_serializing_if = "Option::is_none"
)]
pub antenna_gain_including_radome: Option<ValueUnit>,
#[serde(
rename = "pathLossA6ArcDetector",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_a6_arc_detector: Option<ValueUnit>,
#[serde(rename = "cohoPowerAtA1J4", skip_serializing_if = "Option::is_none")]
pub coho_power_at_a1j4: Option<ValueUnit>,
#[serde(
rename = "ameHorzizontalTestSignalPower",
skip_serializing_if = "Option::is_none"
)]
pub ame_horizontal_test_signal_power: Option<ValueUnit>,
#[serde(
rename = "pathLossTransmitterCouplerCoupling",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_transmitter_coupler_coupling: Option<ValueUnit>,
#[serde(rename = "staloPowerAtA1J2", skip_serializing_if = "Option::is_none")]
pub stalo_power_at_a1j2: Option<ValueUnit>,
#[serde(
rename = "ameNoiseSourceHorizontalExcessNoiseRatio",
skip_serializing_if = "Option::is_none"
)]
pub ame_noise_source_horizontal_excess_noise_ratio: Option<ValueUnit>,
#[serde(
rename = "pathLossVerticalIFHeliaxTo4AT16",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_vertical_if_heliax_to_4at16: Option<ValueUnit>,
#[serde(
rename = "pathLossAT4Attenuator",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_at4_attenuator: Option<ValueUnit>,
#[serde(
rename = "pathLossHorzontalIFHeliaxTo4AT17",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_horizontal_if_heliax_to_4at17: Option<ValueUnit>,
#[serde(
rename = "pathLossIFDRIFAntiAliasFilter",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_ifdrif_anti_alias_filter: Option<ValueUnit>,
#[serde(
rename = "pathLossIFDBurstAntiAliasFilter",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_ifd_burst_anti_alias_filter: Option<ValueUnit>,
#[serde(
rename = "pathLossWG02HarmonicFilter",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_wg02_harmonic_filter: Option<ValueUnit>,
#[serde(
rename = "transmitterPowerDataWattsFactor",
skip_serializing_if = "Option::is_none"
)]
pub transmitter_power_data_watts_factor: Option<ValueUnit>,
#[serde(
rename = "pathLossWaveguideKlystronToSwitch",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_waveguide_klystron_to_switch: Option<ValueUnit>,
#[serde(
rename = "pulseWidthTransmitterOutputShortPulse",
skip_serializing_if = "Option::is_none"
)]
pub pulse_width_transmitter_output_short_pulse: Option<ValueUnit>,
#[serde(
rename = "pulseWidthTransmitterOutputLongPulse",
skip_serializing_if = "Option::is_none"
)]
pub pulse_width_transmitter_output_long_pulse: Option<ValueUnit>,
#[serde(
rename = "pathLossWG06SpectrumFilter",
skip_serializing_if = "Option::is_none"
)]
pub path_loss_wg06_spectrum_filter: Option<ValueUnit>,
#[serde(
rename = "horizontalReceiverNoiseShortPulse",
skip_serializing_if = "Option::is_none"
)]
pub horizontal_receiver_noise_short_pulse: Option<ValueUnit>,
#[serde(
rename = "horizontalReceiverNoiseLongPulse",
skip_serializing_if = "Option::is_none"
)]
pub horizontal_receiver_noise_long_pulse: Option<ValueUnit>,
#[serde(
rename = "transmitterSpectrumFilterInstalled",
skip_serializing_if = "Option::is_none"
)]
pub transmitter_spectrum_filter_installed: Option<String>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AdaptationInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(rename = "reportingHost", skip_serializing_if = "Option::is_none")]
pub reporting_host: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub properties: Option<AdaptationProperties>,
}