use bincode::{Decode, Encode};
use cu29::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, Encode, Decode, Reflect)]
pub enum DShotTelemetry {
EncodingError,
Erpm(u16),
Temp(u8),
Voltage(u8),
Amps(u8),
Debug1(u8),
Debug2(u8),
Debug3(u8),
Event(u8),
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, Encode, Decode, Reflect)]
pub struct EscCommand {
pub throttle: u16,
pub request_telemetry: bool,
}
impl Default for EscCommand {
fn default() -> Self {
Self {
throttle: 0,
request_telemetry: true,
}
}
}
impl EscCommand {
pub fn disarm() -> Self {
Self::default()
}
}
#[derive(
Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize, Encode, Decode, Reflect,
)]
pub struct EscTelemetry {
pub sample: Option<DShotTelemetry>,
}