1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
use crate::samplic; use chrono::offset::Utc; use chrono::DateTime; use indexmap::IndexMap; use uuid::Uuid; pub mod filesystem; pub mod interface; mod loadable_device; mod storable_device; pub use loadable_device::LoadableDevice; pub use storable_device::StorableDevice; #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub struct SamplingSettings { #[serde(default, skip_serializing_if = "Option::is_none")] pub preparation: Option<PreparationSettings>, pub measurement: MeasurementSettings, pub interface: Interface, #[serde( rename = "idle_before_preparation", default, skip_serializing_if = "IndexMap::is_empty" )] pub idle_before_preparation_mapping: IndexMap<String, String>, #[serde( rename = "idle_before_measurement", default, skip_serializing_if = "IndexMap::is_empty" )] pub idle_before_measurement_mapping: IndexMap<String, String>, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase", tag = "type")] pub enum Interface { SingleAlignmentTabbed(SingleAlignmentTabbedInterface), SingleValueWithProperties(SingleValueWithPropertiesInterface), MultipleValuesWithProperties(MultipleValuesWithPropertiesInterface), } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub struct SingleAlignmentTabbedInterface { grid_columns: usize, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub struct SingleValueWithPropertiesInterface { grid_columns: usize, properties: Vec<IndexMap<String, samplic::Parameter>>, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub struct MultipleValuesWithPropertiesInterface { grid_columns: usize, properties: Vec<IndexMap<String, samplic::Parameter>>, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub struct PreparationSettings { #[serde(rename = "_caption")] pub caption: String, #[serde(rename = "_description")] pub description: String, pub icon_id: String, pub mode: PreparationMode, #[serde(default, skip_serializing_if = "Option::is_none")] pub timeout: Option<usize>, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub enum PreparationMode { Disabled, BeforeFirstMeasurement, BeforeEveryMeasurement, } #[derive(Serialize, Deserialize, Debug, PartialEq)] #[serde(rename_all = "camelCase")] pub struct MeasurementSettings { pub grid_columns: usize, } #[derive(Serialize, Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct SampleCachedInformation { pub identifier: String, pub uuid: Uuid, pub measurement_count: usize, pub moment: DateTime<Utc>, pub source: samplic::Source, } #[derive(Clone, Serialize, Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct CalibrationDescription { #[serde(rename = "_caption")] pub caption: String, pub icon_id: String, pub curve: crate::samplic::Cartesian2dCoordinateSystemDescription, pub jobs: IndexMap<String, CalibrationJobDescription>, } #[derive(Clone, Serialize, Deserialize, Debug)] #[serde(rename_all = "camelCase")] pub struct CalibrationJobDescription { pub curve_mapping: IndexMap<String, String>, #[serde(default, skip_serializing_if = "IndexMap::is_empty")] pub parameters: IndexMap<String, crate::samplic::ParameterDescription>, #[serde(default, skip_serializing_if = "IndexMap::is_empty")] pub profile_parameters: IndexMap<String, crate::samplic::ProfileParameterDescription>, #[serde(default, skip_serializing_if = "Option::is_none")] pub curve: Option<crate::samplic::CoordinateSystemDescription>, }