use crate::lib::{String, Vec};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub struct FDSNSchema {
fdsn: Option<Fdsn>,
}
impl FDSNSchema {
pub fn new() -> Self {
Self { fdsn: None }
}
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Fdsn {
calibration: Option<Calibration>,
clock: Option<Clock>,
data_quality: Option<String>,
event: Option<Event>,
flags: Option<Flags>,
logger: Option<Clock>,
#[serde(rename = "ProvenanceURI")]
provenance_uri: Option<String>,
recenter: Option<Recenter>,
sensor: Option<Clock>,
sequence: Option<i64>,
time: Option<Time>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Calibration {
sequence: Option<Vec<CalibrationSequence>>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct CalibrationSequence {
amplitude: Option<f64>,
amplitude_range: Option<String>,
begin_time: Option<String>,
continued: Option<bool>,
coupling: Option<String>,
duration: Option<f64>,
end_time: Option<String>,
input_channel: Option<String>,
input_units: Option<String>,
noise: Option<String>,
reference_amplitude: Option<f64>,
rolloff: Option<String>,
sine_period: Option<f64>,
step_alternate_sign: Option<bool>,
step_between: Option<f64>,
step_first_pulse_positive: Option<bool>,
steps: Option<f64>,
trigger: Option<String>,
#[serde(rename = "Type")]
sequence_type: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Clock {
model: Option<String>,
serial: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Event {
begin: Option<bool>,
detection: Option<Vec<Detection>>,
end: Option<bool>,
in_progress: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Detection {
background_estimate: Option<f64>,
detector: Option<String>,
#[serde(rename = "MEDLookback")]
med_lookback: Option<i64>,
#[serde(rename = "MEDPickAlgorithm")]
med_pick_algorithm: Option<i64>,
#[serde(rename = "MEDSNR")]
medsnr: Option<Vec<f64>>,
onset_time: Option<String>,
signal_amplitude: Option<f64>,
signal_period: Option<f64>,
#[serde(rename = "Type")]
detection_type: Option<String>,
units: Option<String>,
wave: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Flags {
amplifier_saturation: Option<bool>,
digitizer_clipping: Option<bool>,
end_of_time_series: Option<bool>,
filter_charging: Option<bool>,
glitches: Option<bool>,
long_record_read: Option<bool>,
mass_position_offscale: Option<bool>,
missing_data: Option<bool>,
short_record_read: Option<bool>,
spikes: Option<bool>,
start_of_time_series: Option<bool>,
station_volume_parity_error: Option<bool>,
telemetry_sync_error: Option<bool>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Recenter {
sequence: Option<Vec<RecenterSequence>>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct RecenterSequence {
begin_time: Option<String>,
end_time: Option<String>,
trigger: Option<String>,
#[serde(rename = "Type")]
sequence_type: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Time {
correction: Option<f64>,
exception: Option<Vec<Exception>>,
leap_second: Option<i64>,
max_estimated_error: Option<f64>,
quality: Option<i64>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "PascalCase")]
pub struct Exception {
clock_status: Option<String>,
count: Option<i64>,
reception_quality: Option<i64>,
time: Option<String>,
#[serde(rename = "Type")]
exception_type: Option<String>,
#[serde(rename = "VCOCorrection")]
vco_correction: Option<f64>,
}