use chrono::serde::ts_nanoseconds; use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct Telemetry { #[serde(with = "ts_nanoseconds")] pub timestamp: DateTime, pub message: TelemetryMessage, } #[derive(Copy, Clone, Debug, Serialize, Deserialize)] pub enum SwitchBank { A, B, } #[derive(Clone, Debug, Serialize, Deserialize)] pub enum TelemetryMessage { SwitchState { bank: SwitchBank, switches: [bool; 16], } }