1use bincode::{Decode, Encode};
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, Encode, Decode)]
6pub enum DShotTelemetry {
7 EncodingError,
8 Erpm(u16),
9 Temp(u8),
10 Voltage(u8),
11 Amps(u8),
12 Debug1(u8),
13 Debug2(u8),
14 Debug3(u8),
15 Event(u8),
16}
17
18#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize, Encode, Decode)]
20pub struct EscCommand {
21 pub throttle: u16,
23 pub request_telemetry: bool,
25}
26
27impl Default for EscCommand {
28 fn default() -> Self {
29 Self {
30 throttle: 0,
31 request_telemetry: true,
32 }
33 }
34}
35
36impl EscCommand {
37 pub fn disarm() -> Self {
38 Self::default()
39 }
40}
41
42#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Serialize, Deserialize, Encode, Decode)]
44pub struct EscTelemetry {
45 pub sample: Option<DShotTelemetry>,
46}