58 lines
1.0 KiB
Rust
58 lines
1.0 KiB
Rust
#![no_std]
|
|
|
|
use core::fmt::Debug;
|
|
|
|
use bme280::Measurements;
|
|
use defmt::Format;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Format, PartialEq, Clone, Copy, Serialize, Deserialize)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum FanSpeed {
|
|
Off,
|
|
Low,
|
|
Medium,
|
|
High,
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub struct FanState {
|
|
pub speed: FanSpeed,
|
|
pub manual: bool,
|
|
}
|
|
|
|
impl FanState {
|
|
pub fn new(speed: FanSpeed, manual: bool) -> Self {
|
|
Self { speed, manual }
|
|
}
|
|
}
|
|
|
|
#[derive(Deserialize)]
|
|
pub struct SetFanSpeed {
|
|
speed: FanSpeed,
|
|
}
|
|
|
|
impl SetFanSpeed {
|
|
pub fn speed(&self) -> FanSpeed {
|
|
self.speed
|
|
}
|
|
}
|
|
|
|
#[derive(Serialize)]
|
|
pub struct SensorData {
|
|
temperature: f32,
|
|
humidity: f32,
|
|
pressure: f32,
|
|
}
|
|
|
|
impl SensorData {
|
|
pub fn new<E: Debug>(measurements: Measurements<E>) -> Self {
|
|
Self {
|
|
temperature: measurements.temperature,
|
|
humidity: measurements.humidity,
|
|
pressure: measurements.pressure,
|
|
}
|
|
}
|
|
}
|