fidl_fuchsia_system_state__common/
fidl_fuchsia_system_state__common.rs

1// WARNING: This file is machine generated by fidlgen.
2
3#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
8use futures::future::{self, MaybeDone, TryFutureExt};
9use zx_status;
10
11/// The number of variants of `SystemPowerState`.
12pub const MAX_SYSTEM_POWER_STATES: u32 = 8;
13
14#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
15#[repr(u8)]
16pub enum SystemPowerState {
17    FullyOn = 1,
18    Reboot = 2,
19    RebootBootloader = 3,
20    RebootRecovery = 4,
21    Poweroff = 5,
22    Mexec = 6,
23    SuspendRam = 7,
24    RebootKernelInitiated = 8,
25}
26
27impl SystemPowerState {
28    #[inline]
29    pub fn from_primitive(prim: u8) -> Option<Self> {
30        match prim {
31            1 => Some(Self::FullyOn),
32            2 => Some(Self::Reboot),
33            3 => Some(Self::RebootBootloader),
34            4 => Some(Self::RebootRecovery),
35            5 => Some(Self::Poweroff),
36            6 => Some(Self::Mexec),
37            7 => Some(Self::SuspendRam),
38            8 => Some(Self::RebootKernelInitiated),
39            _ => None,
40        }
41    }
42
43    #[inline]
44    pub const fn into_primitive(self) -> u8 {
45        self as u8
46    }
47}
48
49#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
50pub struct SystemStateTransitionGetTerminationSystemStateResponse {
51    pub state: SystemPowerState,
52}
53
54impl fidl::Persistable for SystemStateTransitionGetTerminationSystemStateResponse {}
55
56pub mod system_state_transition_ordinals {
57    pub const GET_TERMINATION_SYSTEM_STATE: u64 = 0x7570e8c601c5e27e;
58    pub const GET_MEXEC_ZBIS: u64 = 0x4d5efe452f310fef;
59}
60
61mod internal {
62    use super::*;
63    unsafe impl fidl::encoding::TypeMarker for SystemPowerState {
64        type Owned = Self;
65
66        #[inline(always)]
67        fn inline_align(_context: fidl::encoding::Context) -> usize {
68            std::mem::align_of::<u8>()
69        }
70
71        #[inline(always)]
72        fn inline_size(_context: fidl::encoding::Context) -> usize {
73            std::mem::size_of::<u8>()
74        }
75
76        #[inline(always)]
77        fn encode_is_copy() -> bool {
78            true
79        }
80
81        #[inline(always)]
82        fn decode_is_copy() -> bool {
83            false
84        }
85    }
86
87    impl fidl::encoding::ValueTypeMarker for SystemPowerState {
88        type Borrowed<'a> = Self;
89        #[inline(always)]
90        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
91            *value
92        }
93    }
94
95    unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
96        for SystemPowerState
97    {
98        #[inline]
99        unsafe fn encode(
100            self,
101            encoder: &mut fidl::encoding::Encoder<'_, D>,
102            offset: usize,
103            _depth: fidl::encoding::Depth,
104        ) -> fidl::Result<()> {
105            encoder.debug_check_bounds::<Self>(offset);
106            encoder.write_num(self.into_primitive(), offset);
107            Ok(())
108        }
109    }
110
111    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SystemPowerState {
112        #[inline(always)]
113        fn new_empty() -> Self {
114            Self::FullyOn
115        }
116
117        #[inline]
118        unsafe fn decode(
119            &mut self,
120            decoder: &mut fidl::encoding::Decoder<'_, D>,
121            offset: usize,
122            _depth: fidl::encoding::Depth,
123        ) -> fidl::Result<()> {
124            decoder.debug_check_bounds::<Self>(offset);
125            let prim = decoder.read_num::<u8>(offset);
126
127            *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
128            Ok(())
129        }
130    }
131
132    impl fidl::encoding::ValueTypeMarker for SystemStateTransitionGetTerminationSystemStateResponse {
133        type Borrowed<'a> = &'a Self;
134        fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
135            value
136        }
137    }
138
139    unsafe impl fidl::encoding::TypeMarker for SystemStateTransitionGetTerminationSystemStateResponse {
140        type Owned = Self;
141
142        #[inline(always)]
143        fn inline_align(_context: fidl::encoding::Context) -> usize {
144            1
145        }
146
147        #[inline(always)]
148        fn inline_size(_context: fidl::encoding::Context) -> usize {
149            1
150        }
151    }
152
153    unsafe impl<D: fidl::encoding::ResourceDialect>
154        fidl::encoding::Encode<SystemStateTransitionGetTerminationSystemStateResponse, D>
155        for &SystemStateTransitionGetTerminationSystemStateResponse
156    {
157        #[inline]
158        unsafe fn encode(
159            self,
160            encoder: &mut fidl::encoding::Encoder<'_, D>,
161            offset: usize,
162            _depth: fidl::encoding::Depth,
163        ) -> fidl::Result<()> {
164            encoder.debug_check_bounds::<SystemStateTransitionGetTerminationSystemStateResponse>(
165                offset,
166            );
167            // Delegate to tuple encoding.
168            fidl::encoding::Encode::<SystemStateTransitionGetTerminationSystemStateResponse, D>::encode(
169                (
170                    <SystemPowerState as fidl::encoding::ValueTypeMarker>::borrow(&self.state),
171                ),
172                encoder, offset, _depth
173            )
174        }
175    }
176    unsafe impl<D: fidl::encoding::ResourceDialect, T0: fidl::encoding::Encode<SystemPowerState, D>>
177        fidl::encoding::Encode<SystemStateTransitionGetTerminationSystemStateResponse, D> for (T0,)
178    {
179        #[inline]
180        unsafe fn encode(
181            self,
182            encoder: &mut fidl::encoding::Encoder<'_, D>,
183            offset: usize,
184            depth: fidl::encoding::Depth,
185        ) -> fidl::Result<()> {
186            encoder.debug_check_bounds::<SystemStateTransitionGetTerminationSystemStateResponse>(
187                offset,
188            );
189            // Zero out padding regions. There's no need to apply masks
190            // because the unmasked parts will be overwritten by fields.
191            // Write the fields.
192            self.0.encode(encoder, offset + 0, depth)?;
193            Ok(())
194        }
195    }
196
197    impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
198        for SystemStateTransitionGetTerminationSystemStateResponse
199    {
200        #[inline(always)]
201        fn new_empty() -> Self {
202            Self { state: fidl::new_empty!(SystemPowerState, D) }
203        }
204
205        #[inline]
206        unsafe fn decode(
207            &mut self,
208            decoder: &mut fidl::encoding::Decoder<'_, D>,
209            offset: usize,
210            _depth: fidl::encoding::Depth,
211        ) -> fidl::Result<()> {
212            decoder.debug_check_bounds::<Self>(offset);
213            // Verify that padding bytes are zero.
214            fidl::decode!(SystemPowerState, D, &mut self.state, decoder, offset + 0, _depth)?;
215            Ok(())
216        }
217    }
218}