fidl_fuchsia_system_state__common/
fidl_fuchsia_system_state__common.rs1#![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
11pub 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 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 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 fidl::decode!(SystemPowerState, D, &mut self.state, decoder, offset + 0, _depth)?;
215 Ok(())
216 }
217 }
218}