use serde::Deserialize;
fn default_framerate() -> u16 {
60
}
fn default_graph_period() -> u16 {
16
}
fn default_range() -> f32 {
1.0
}
fn default_resolution() -> (u16, u16) {
(1920, 1080)
}
fn default_snapshot_buffer_len() -> u16 {
47
}
#[derive(PartialEq, Deserialize)]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case")]
pub struct Movie {
#[serde(default = "default_framerate")]
pub framerate: u16,
#[serde(default = "default_graph_period")]
pub graph_period: u16,
#[serde(default = "default_range")]
pub range: f32,
pub path: String,
#[serde(default = "default_resolution")]
pub resolution: (u16, u16),
#[serde(default = "default_snapshot_buffer_len")]
pub snapshot_buffer_len: u16,
}
#[derive(PartialEq, Deserialize)]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case")]
#[serde(tag = "type")]
pub enum Oscilloscope {
Movie(Movie),
}
#[derive(Eq, PartialEq, Deserialize)]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case")]
pub struct Signal {
pub location: usize,
pub path: String,
}
#[derive(PartialEq, Deserialize)]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case")]
pub struct Simulation {
pub oscilloscopes: Vec<Oscilloscope>,
pub signals: Vec<Signal>,
pub size: u64,
pub time: u64,
}