blackbox_log/opt/rustwide/workdir/src/generated/
failsafe_phase.rs

1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
2#[cfg_attr(feature = "_serde", derive(serde::Serialize))]
3/// The current failsafe phase.
4#[non_exhaustive]
5pub enum FailsafePhase {
6    /// `GPS_RESCUE`
7    GpsRescue,
8    /// `IDLE`
9    Idle,
10    /// `LANDED`
11    Landed,
12    /// `LANDING`
13    Landing,
14    /// `RETURN_TO_HOME`
15    ReturnToHome,
16    /// `RX_LOSS_DETECTED`
17    RxLossDetected,
18    /// `RX_LOSS_IDLE`
19    RxLossIdle,
20    /// `RX_LOSS_MONITORING`
21    RxLossMonitoring,
22    /// `RX_LOSS_RECOVERED`
23    RxLossRecovered,
24    Unknown,
25}
26#[allow(unused_qualifications)]
27impl crate::units::Flag for FailsafePhase {
28    fn as_name(&self) -> &'static str {
29        match self {
30            Self::GpsRescue => "GPS_RESCUE",
31            Self::Idle => "IDLE",
32            Self::Landed => "LANDED",
33            Self::Landing => "LANDING",
34            Self::ReturnToHome => "RETURN_TO_HOME",
35            Self::RxLossDetected => "RX_LOSS_DETECTED",
36            Self::RxLossIdle => "RX_LOSS_IDLE",
37            Self::RxLossMonitoring => "RX_LOSS_MONITORING",
38            Self::RxLossRecovered => "RX_LOSS_RECOVERED",
39            Self::Unknown => "UNKNOWN",
40        }
41    }
42}
43#[allow(unused_qualifications)]
44impl ::core::fmt::Display for FailsafePhase {
45    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
46        let s = <Self as crate::units::Flag>::as_name(self);
47        f.write_str(s)
48    }
49}
50#[allow(
51    unused_qualifications,
52    clippy::enum_glob_use,
53    clippy::match_same_arms,
54    clippy::unseparated_literal_suffix
55)]
56impl FailsafePhase {
57    pub(crate) fn new(raw: u32, fw: crate::headers::InternalFirmware) -> Self {
58        use crate::headers::InternalFirmware::*;
59        match (raw, fw) {
60            (
61                0u32,
62                Betaflight4_2 | Betaflight4_3 | Betaflight4_4 | Betaflight4_5 | Inav5 | Inav6
63                | Inav7 | Inav8,
64            ) => Self::Idle,
65            (
66                1u32,
67                Betaflight4_2 | Betaflight4_3 | Betaflight4_4 | Betaflight4_5 | Inav5 | Inav6
68                | Inav7 | Inav8,
69            ) => Self::RxLossDetected,
70            (2u32, Betaflight4_2 | Betaflight4_3 | Betaflight4_4 | Betaflight4_5) => Self::Landing,
71            (2u32, Inav5 | Inav6 | Inav7 | Inav8) => Self::RxLossIdle,
72            (3u32, Betaflight4_2 | Betaflight4_3 | Betaflight4_4 | Betaflight4_5) => Self::Landed,
73            (3u32, Inav5 | Inav6 | Inav7 | Inav8) => Self::ReturnToHome,
74            (4u32, Betaflight4_2 | Betaflight4_3 | Betaflight4_4 | Betaflight4_5) => {
75                Self::RxLossMonitoring
76            }
77            (4u32, Inav5 | Inav6 | Inav7 | Inav8) => Self::Landing,
78            (5u32, Betaflight4_2 | Betaflight4_3 | Betaflight4_4 | Betaflight4_5) => {
79                Self::RxLossRecovered
80            }
81            (5u32, Inav5 | Inav6 | Inav7 | Inav8) => Self::Landed,
82            (6u32, Betaflight4_2 | Betaflight4_3 | Betaflight4_4 | Betaflight4_5) => {
83                Self::GpsRescue
84            }
85            (6u32, Inav5 | Inav6 | Inav7 | Inav8) => Self::RxLossMonitoring,
86            (7u32, Inav5 | Inav6 | Inav7 | Inav8) => Self::RxLossRecovered,
87            _ => {
88                #[allow(clippy::redundant_closure_call)]
89                (|raw| tracing::debug!("invalid failsafe phase ({raw})"))(raw);
90                Self::Unknown
91            }
92        }
93    }
94}