1#![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#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
12pub enum WlanPhyNotifyError {
13 Internal,
15 NotSupported,
17 ShouldWait,
19 InvalidArgs,
21 #[doc(hidden)]
22 __SourceBreaking { unknown_ordinal: u32 },
23}
24
25#[macro_export]
27macro_rules! WlanPhyNotifyErrorUnknown {
28 () => {
29 _
30 };
31}
32
33impl WlanPhyNotifyError {
34 #[inline]
35 pub fn from_primitive(prim: u32) -> Option<Self> {
36 match prim {
37 1 => Some(Self::Internal),
38 2 => Some(Self::NotSupported),
39 3 => Some(Self::ShouldWait),
40 4 => Some(Self::InvalidArgs),
41 _ => None,
42 }
43 }
44
45 #[inline]
46 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
47 match prim {
48 1 => Self::Internal,
49 2 => Self::NotSupported,
50 3 => Self::ShouldWait,
51 4 => Self::InvalidArgs,
52 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
53 }
54 }
55
56 #[inline]
57 pub fn unknown() -> Self {
58 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
59 }
60
61 #[inline]
62 pub const fn into_primitive(self) -> u32 {
63 match self {
64 Self::Internal => 1,
65 Self::NotSupported => 2,
66 Self::ShouldWait => 3,
67 Self::InvalidArgs => 4,
68 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
69 }
70 }
71
72 #[inline]
73 pub fn is_unknown(&self) -> bool {
74 match self {
75 Self::__SourceBreaking { unknown_ordinal: _ } => true,
76 _ => false,
77 }
78 }
79}
80
81#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
82#[repr(C)]
83pub struct WlanPhySetCountryRequest {
84 pub country: [u8; 2],
85}
86
87impl fidl::Persistable for WlanPhySetCountryRequest {}
88
89#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
90#[repr(C)]
91pub struct WlanPhyGetCountryResponse {
92 pub country: [u8; 2],
93}
94
95impl fidl::Persistable for WlanPhyGetCountryResponse {}
96
97#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
98pub struct WlanPhyGetTxPowerScenarioResponse {
99 pub scenario: fidl_fuchsia_wlan_internal_common::TxPowerScenario,
100}
101
102impl fidl::Persistable for WlanPhyGetTxPowerScenarioResponse {}
103
104#[derive(Clone, Debug, Default, PartialEq)]
105pub struct WlanPhyDestroyIfaceRequest {
106 pub iface_id: Option<u16>,
108 #[doc(hidden)]
109 pub __source_breaking: fidl::marker::SourceBreaking,
110}
111
112impl fidl::Persistable for WlanPhyDestroyIfaceRequest {}
113
114#[derive(Clone, Debug, Default, PartialEq)]
115pub struct WlanPhyNotifyOnCountryCodeChangeRequest {
116 pub phy_country: Option<[u8; 2]>,
117 #[doc(hidden)]
118 pub __source_breaking: fidl::marker::SourceBreaking,
119}
120
121impl fidl::Persistable for WlanPhyNotifyOnCountryCodeChangeRequest {}
122
123#[derive(Clone, Debug, Default, PartialEq)]
124pub struct WlanPhyNotifyOnCriticalErrorRequest {
125 pub reason_code: Option<fidl_fuchsia_wlan_internal_common::CriticalErrorReason>,
126 #[doc(hidden)]
127 pub __source_breaking: fidl::marker::SourceBreaking,
128}
129
130impl fidl::Persistable for WlanPhyNotifyOnCriticalErrorRequest {}
131
132#[derive(Clone, Debug, Default, PartialEq)]
133pub struct WlanPhySetBtCoexistenceModeRequest {
134 pub mode: Option<fidl_fuchsia_wlan_internal_common::BtCoexistenceMode>,
135 #[doc(hidden)]
136 pub __source_breaking: fidl::marker::SourceBreaking,
137}
138
139impl fidl::Persistable for WlanPhySetBtCoexistenceModeRequest {}
140
141#[derive(Clone, Debug, Default, PartialEq)]
142pub struct WlanPhySetPowerSaveModeRequest {
143 pub ps_mode: Option<fidl_fuchsia_wlan_common_common::PowerSaveType>,
145 #[doc(hidden)]
146 pub __source_breaking: fidl::marker::SourceBreaking,
147}
148
149impl fidl::Persistable for WlanPhySetPowerSaveModeRequest {}
150
151#[derive(Clone, Debug, Default, PartialEq)]
152pub struct WlanPhySetTxPowerScenarioRequest {
153 pub scenario: Option<fidl_fuchsia_wlan_internal_common::TxPowerScenario>,
154 #[doc(hidden)]
155 pub __source_breaking: fidl::marker::SourceBreaking,
156}
157
158impl fidl::Persistable for WlanPhySetTxPowerScenarioRequest {}
159
160#[derive(Clone, Debug, Default, PartialEq)]
161pub struct WlanPhyCreateIfaceResponse {
162 pub iface_id: Option<u16>,
164 #[doc(hidden)]
165 pub __source_breaking: fidl::marker::SourceBreaking,
166}
167
168impl fidl::Persistable for WlanPhyCreateIfaceResponse {}
169
170#[derive(Clone, Debug, Default, PartialEq)]
171pub struct WlanPhyGetPowerSaveModeResponse {
172 pub ps_mode: Option<fidl_fuchsia_wlan_common_common::PowerSaveType>,
174 #[doc(hidden)]
175 pub __source_breaking: fidl::marker::SourceBreaking,
176}
177
178impl fidl::Persistable for WlanPhyGetPowerSaveModeResponse {}
179
180#[derive(Clone, Debug, Default, PartialEq)]
181pub struct WlanPhyGetPowerStateResponse {
182 pub power_on: Option<bool>,
183 #[doc(hidden)]
184 pub __source_breaking: fidl::marker::SourceBreaking,
185}
186
187impl fidl::Persistable for WlanPhyGetPowerStateResponse {}
188
189#[derive(Clone, Debug, Default, PartialEq)]
190pub struct WlanPhyGetSupportedMacRolesResponse {
191 pub supported_mac_roles: Option<Vec<fidl_fuchsia_wlan_common_common::WlanMacRole>>,
192 #[doc(hidden)]
193 pub __source_breaking: fidl::marker::SourceBreaking,
194}
195
196impl fidl::Persistable for WlanPhyGetSupportedMacRolesResponse {}
197
198pub mod wlan_phy_ordinals {
199 pub const INIT: u64 = 0x399fe5e97bb0eff3;
200 pub const GET_SUPPORTED_MAC_ROLES: u64 = 0x36891bcf679ad34a;
201 pub const CREATE_IFACE: u64 = 0x4cc00e15727fbb8e;
202 pub const DESTROY_IFACE: u64 = 0xfa408ede62bf8bc;
203 pub const SET_COUNTRY: u64 = 0x6d1258ed25af4a0f;
204 pub const CLEAR_COUNTRY: u64 = 0x73f333d223cec34f;
205 pub const GET_COUNTRY: u64 = 0x13ee2c5158d8507a;
206 pub const SET_POWER_SAVE_MODE: u64 = 0x4e164c65070f890d;
207 pub const GET_POWER_SAVE_MODE: u64 = 0x1cbd3390a4230826;
208 pub const POWER_DOWN: u64 = 0x79fb1043c6355d0a;
209 pub const POWER_UP: u64 = 0x6dcde9a4259494f2;
210 pub const RESET: u64 = 0x2f0f1d8f2f22988f;
211 pub const GET_POWER_STATE: u64 = 0x4639d1e5e93102c1;
212 pub const SET_BT_COEXISTENCE_MODE: u64 = 0x5ac69f24a87cac05;
213 pub const SET_TX_POWER_SCENARIO: u64 = 0x72e4d055cd3a18dc;
214 pub const RESET_TX_POWER_SCENARIO: u64 = 0x78c3bd271b3bb712;
215 pub const GET_TX_POWER_SCENARIO: u64 = 0x62f9717d964b3c8e;
216}
217
218pub mod wlan_phy_notify_ordinals {
219 pub const ON_CRITICAL_ERROR: u64 = 0x621a4bea612fda2;
220 pub const ON_COUNTRY_CODE_CHANGE: u64 = 0x9db74ddfe1fa156;
221}
222
223mod internal {
224 use super::*;
225 unsafe impl fidl::encoding::TypeMarker for WlanPhyNotifyError {
226 type Owned = Self;
227
228 #[inline(always)]
229 fn inline_align(_context: fidl::encoding::Context) -> usize {
230 std::mem::align_of::<u32>()
231 }
232
233 #[inline(always)]
234 fn inline_size(_context: fidl::encoding::Context) -> usize {
235 std::mem::size_of::<u32>()
236 }
237
238 #[inline(always)]
239 fn encode_is_copy() -> bool {
240 false
241 }
242
243 #[inline(always)]
244 fn decode_is_copy() -> bool {
245 false
246 }
247 }
248
249 impl fidl::encoding::ValueTypeMarker for WlanPhyNotifyError {
250 type Borrowed<'a> = Self;
251 #[inline(always)]
252 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
253 *value
254 }
255 }
256
257 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
258 for WlanPhyNotifyError
259 {
260 #[inline]
261 unsafe fn encode(
262 self,
263 encoder: &mut fidl::encoding::Encoder<'_, D>,
264 offset: usize,
265 _depth: fidl::encoding::Depth,
266 ) -> fidl::Result<()> {
267 encoder.debug_check_bounds::<Self>(offset);
268 encoder.write_num(self.into_primitive(), offset);
269 Ok(())
270 }
271 }
272
273 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanPhyNotifyError {
274 #[inline(always)]
275 fn new_empty() -> Self {
276 Self::unknown()
277 }
278
279 #[inline]
280 unsafe fn decode(
281 &mut self,
282 decoder: &mut fidl::encoding::Decoder<'_, D>,
283 offset: usize,
284 _depth: fidl::encoding::Depth,
285 ) -> fidl::Result<()> {
286 decoder.debug_check_bounds::<Self>(offset);
287 let prim = decoder.read_num::<u32>(offset);
288
289 *self = Self::from_primitive_allow_unknown(prim);
290 Ok(())
291 }
292 }
293
294 impl fidl::encoding::ValueTypeMarker for WlanPhySetCountryRequest {
295 type Borrowed<'a> = &'a Self;
296 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
297 value
298 }
299 }
300
301 unsafe impl fidl::encoding::TypeMarker for WlanPhySetCountryRequest {
302 type Owned = Self;
303
304 #[inline(always)]
305 fn inline_align(_context: fidl::encoding::Context) -> usize {
306 1
307 }
308
309 #[inline(always)]
310 fn inline_size(_context: fidl::encoding::Context) -> usize {
311 2
312 }
313 #[inline(always)]
314 fn encode_is_copy() -> bool {
315 true
316 }
317
318 #[inline(always)]
319 fn decode_is_copy() -> bool {
320 true
321 }
322 }
323
324 unsafe impl<D: fidl::encoding::ResourceDialect>
325 fidl::encoding::Encode<WlanPhySetCountryRequest, D> for &WlanPhySetCountryRequest
326 {
327 #[inline]
328 unsafe fn encode(
329 self,
330 encoder: &mut fidl::encoding::Encoder<'_, D>,
331 offset: usize,
332 _depth: fidl::encoding::Depth,
333 ) -> fidl::Result<()> {
334 encoder.debug_check_bounds::<WlanPhySetCountryRequest>(offset);
335 unsafe {
336 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
338 (buf_ptr as *mut WlanPhySetCountryRequest)
339 .write_unaligned((self as *const WlanPhySetCountryRequest).read());
340 }
343 Ok(())
344 }
345 }
346 unsafe impl<
347 D: fidl::encoding::ResourceDialect,
348 T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
349 > fidl::encoding::Encode<WlanPhySetCountryRequest, D> for (T0,)
350 {
351 #[inline]
352 unsafe fn encode(
353 self,
354 encoder: &mut fidl::encoding::Encoder<'_, D>,
355 offset: usize,
356 depth: fidl::encoding::Depth,
357 ) -> fidl::Result<()> {
358 encoder.debug_check_bounds::<WlanPhySetCountryRequest>(offset);
359 self.0.encode(encoder, offset + 0, depth)?;
363 Ok(())
364 }
365 }
366
367 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
368 for WlanPhySetCountryRequest
369 {
370 #[inline(always)]
371 fn new_empty() -> Self {
372 Self { country: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D) }
373 }
374
375 #[inline]
376 unsafe fn decode(
377 &mut self,
378 decoder: &mut fidl::encoding::Decoder<'_, D>,
379 offset: usize,
380 _depth: fidl::encoding::Depth,
381 ) -> fidl::Result<()> {
382 decoder.debug_check_bounds::<Self>(offset);
383 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
384 unsafe {
387 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
388 }
389 Ok(())
390 }
391 }
392
393 impl fidl::encoding::ValueTypeMarker for WlanPhyGetCountryResponse {
394 type Borrowed<'a> = &'a Self;
395 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
396 value
397 }
398 }
399
400 unsafe impl fidl::encoding::TypeMarker for WlanPhyGetCountryResponse {
401 type Owned = Self;
402
403 #[inline(always)]
404 fn inline_align(_context: fidl::encoding::Context) -> usize {
405 1
406 }
407
408 #[inline(always)]
409 fn inline_size(_context: fidl::encoding::Context) -> usize {
410 2
411 }
412 #[inline(always)]
413 fn encode_is_copy() -> bool {
414 true
415 }
416
417 #[inline(always)]
418 fn decode_is_copy() -> bool {
419 true
420 }
421 }
422
423 unsafe impl<D: fidl::encoding::ResourceDialect>
424 fidl::encoding::Encode<WlanPhyGetCountryResponse, D> for &WlanPhyGetCountryResponse
425 {
426 #[inline]
427 unsafe fn encode(
428 self,
429 encoder: &mut fidl::encoding::Encoder<'_, D>,
430 offset: usize,
431 _depth: fidl::encoding::Depth,
432 ) -> fidl::Result<()> {
433 encoder.debug_check_bounds::<WlanPhyGetCountryResponse>(offset);
434 unsafe {
435 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
437 (buf_ptr as *mut WlanPhyGetCountryResponse)
438 .write_unaligned((self as *const WlanPhyGetCountryResponse).read());
439 }
442 Ok(())
443 }
444 }
445 unsafe impl<
446 D: fidl::encoding::ResourceDialect,
447 T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 2>, D>,
448 > fidl::encoding::Encode<WlanPhyGetCountryResponse, D> for (T0,)
449 {
450 #[inline]
451 unsafe fn encode(
452 self,
453 encoder: &mut fidl::encoding::Encoder<'_, D>,
454 offset: usize,
455 depth: fidl::encoding::Depth,
456 ) -> fidl::Result<()> {
457 encoder.debug_check_bounds::<WlanPhyGetCountryResponse>(offset);
458 self.0.encode(encoder, offset + 0, depth)?;
462 Ok(())
463 }
464 }
465
466 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
467 for WlanPhyGetCountryResponse
468 {
469 #[inline(always)]
470 fn new_empty() -> Self {
471 Self { country: fidl::new_empty!(fidl::encoding::Array<u8, 2>, D) }
472 }
473
474 #[inline]
475 unsafe fn decode(
476 &mut self,
477 decoder: &mut fidl::encoding::Decoder<'_, D>,
478 offset: usize,
479 _depth: fidl::encoding::Depth,
480 ) -> fidl::Result<()> {
481 decoder.debug_check_bounds::<Self>(offset);
482 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
483 unsafe {
486 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 2);
487 }
488 Ok(())
489 }
490 }
491
492 impl fidl::encoding::ValueTypeMarker for WlanPhyGetTxPowerScenarioResponse {
493 type Borrowed<'a> = &'a Self;
494 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
495 value
496 }
497 }
498
499 unsafe impl fidl::encoding::TypeMarker for WlanPhyGetTxPowerScenarioResponse {
500 type Owned = Self;
501
502 #[inline(always)]
503 fn inline_align(_context: fidl::encoding::Context) -> usize {
504 4
505 }
506
507 #[inline(always)]
508 fn inline_size(_context: fidl::encoding::Context) -> usize {
509 4
510 }
511 }
512
513 unsafe impl<D: fidl::encoding::ResourceDialect>
514 fidl::encoding::Encode<WlanPhyGetTxPowerScenarioResponse, D>
515 for &WlanPhyGetTxPowerScenarioResponse
516 {
517 #[inline]
518 unsafe fn encode(
519 self,
520 encoder: &mut fidl::encoding::Encoder<'_, D>,
521 offset: usize,
522 _depth: fidl::encoding::Depth,
523 ) -> fidl::Result<()> {
524 encoder.debug_check_bounds::<WlanPhyGetTxPowerScenarioResponse>(offset);
525 fidl::encoding::Encode::<WlanPhyGetTxPowerScenarioResponse, D>::encode(
527 (
528 <fidl_fuchsia_wlan_internal_common::TxPowerScenario as fidl::encoding::ValueTypeMarker>::borrow(&self.scenario),
529 ),
530 encoder, offset, _depth
531 )
532 }
533 }
534 unsafe impl<
535 D: fidl::encoding::ResourceDialect,
536 T0: fidl::encoding::Encode<fidl_fuchsia_wlan_internal_common::TxPowerScenario, D>,
537 > fidl::encoding::Encode<WlanPhyGetTxPowerScenarioResponse, D> for (T0,)
538 {
539 #[inline]
540 unsafe fn encode(
541 self,
542 encoder: &mut fidl::encoding::Encoder<'_, D>,
543 offset: usize,
544 depth: fidl::encoding::Depth,
545 ) -> fidl::Result<()> {
546 encoder.debug_check_bounds::<WlanPhyGetTxPowerScenarioResponse>(offset);
547 self.0.encode(encoder, offset + 0, depth)?;
551 Ok(())
552 }
553 }
554
555 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
556 for WlanPhyGetTxPowerScenarioResponse
557 {
558 #[inline(always)]
559 fn new_empty() -> Self {
560 Self {
561 scenario: fidl::new_empty!(fidl_fuchsia_wlan_internal_common::TxPowerScenario, D),
562 }
563 }
564
565 #[inline]
566 unsafe fn decode(
567 &mut self,
568 decoder: &mut fidl::encoding::Decoder<'_, D>,
569 offset: usize,
570 _depth: fidl::encoding::Depth,
571 ) -> fidl::Result<()> {
572 decoder.debug_check_bounds::<Self>(offset);
573 fidl::decode!(
575 fidl_fuchsia_wlan_internal_common::TxPowerScenario,
576 D,
577 &mut self.scenario,
578 decoder,
579 offset + 0,
580 _depth
581 )?;
582 Ok(())
583 }
584 }
585
586 impl WlanPhyDestroyIfaceRequest {
587 #[inline(always)]
588 fn max_ordinal_present(&self) -> u64 {
589 if let Some(_) = self.iface_id {
590 return 1;
591 }
592 0
593 }
594 }
595
596 impl fidl::encoding::ValueTypeMarker for WlanPhyDestroyIfaceRequest {
597 type Borrowed<'a> = &'a Self;
598 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
599 value
600 }
601 }
602
603 unsafe impl fidl::encoding::TypeMarker for WlanPhyDestroyIfaceRequest {
604 type Owned = Self;
605
606 #[inline(always)]
607 fn inline_align(_context: fidl::encoding::Context) -> usize {
608 8
609 }
610
611 #[inline(always)]
612 fn inline_size(_context: fidl::encoding::Context) -> usize {
613 16
614 }
615 }
616
617 unsafe impl<D: fidl::encoding::ResourceDialect>
618 fidl::encoding::Encode<WlanPhyDestroyIfaceRequest, D> for &WlanPhyDestroyIfaceRequest
619 {
620 unsafe fn encode(
621 self,
622 encoder: &mut fidl::encoding::Encoder<'_, D>,
623 offset: usize,
624 mut depth: fidl::encoding::Depth,
625 ) -> fidl::Result<()> {
626 encoder.debug_check_bounds::<WlanPhyDestroyIfaceRequest>(offset);
627 let max_ordinal: u64 = self.max_ordinal_present();
629 encoder.write_num(max_ordinal, offset);
630 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
631 if max_ordinal == 0 {
633 return Ok(());
634 }
635 depth.increment()?;
636 let envelope_size = 8;
637 let bytes_len = max_ordinal as usize * envelope_size;
638 #[allow(unused_variables)]
639 let offset = encoder.out_of_line_offset(bytes_len);
640 let mut _prev_end_offset: usize = 0;
641 if 1 > max_ordinal {
642 return Ok(());
643 }
644
645 let cur_offset: usize = (1 - 1) * envelope_size;
648
649 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
651
652 fidl::encoding::encode_in_envelope_optional::<u16, D>(
657 self.iface_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
658 encoder,
659 offset + cur_offset,
660 depth,
661 )?;
662
663 _prev_end_offset = cur_offset + envelope_size;
664
665 Ok(())
666 }
667 }
668
669 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
670 for WlanPhyDestroyIfaceRequest
671 {
672 #[inline(always)]
673 fn new_empty() -> Self {
674 Self::default()
675 }
676
677 unsafe fn decode(
678 &mut self,
679 decoder: &mut fidl::encoding::Decoder<'_, D>,
680 offset: usize,
681 mut depth: fidl::encoding::Depth,
682 ) -> fidl::Result<()> {
683 decoder.debug_check_bounds::<Self>(offset);
684 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
685 None => return Err(fidl::Error::NotNullable),
686 Some(len) => len,
687 };
688 if len == 0 {
690 return Ok(());
691 };
692 depth.increment()?;
693 let envelope_size = 8;
694 let bytes_len = len * envelope_size;
695 let offset = decoder.out_of_line_offset(bytes_len)?;
696 let mut _next_ordinal_to_read = 0;
698 let mut next_offset = offset;
699 let end_offset = offset + bytes_len;
700 _next_ordinal_to_read += 1;
701 if next_offset >= end_offset {
702 return Ok(());
703 }
704
705 while _next_ordinal_to_read < 1 {
707 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
708 _next_ordinal_to_read += 1;
709 next_offset += envelope_size;
710 }
711
712 let next_out_of_line = decoder.next_out_of_line();
713 let handles_before = decoder.remaining_handles();
714 if let Some((inlined, num_bytes, num_handles)) =
715 fidl::encoding::decode_envelope_header(decoder, next_offset)?
716 {
717 let member_inline_size =
718 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
719 if inlined != (member_inline_size <= 4) {
720 return Err(fidl::Error::InvalidInlineBitInEnvelope);
721 }
722 let inner_offset;
723 let mut inner_depth = depth.clone();
724 if inlined {
725 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
726 inner_offset = next_offset;
727 } else {
728 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
729 inner_depth.increment()?;
730 }
731 let val_ref = self.iface_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
732 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
733 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
734 {
735 return Err(fidl::Error::InvalidNumBytesInEnvelope);
736 }
737 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
738 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
739 }
740 }
741
742 next_offset += envelope_size;
743
744 while next_offset < end_offset {
746 _next_ordinal_to_read += 1;
747 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
748 next_offset += envelope_size;
749 }
750
751 Ok(())
752 }
753 }
754
755 impl WlanPhyNotifyOnCountryCodeChangeRequest {
756 #[inline(always)]
757 fn max_ordinal_present(&self) -> u64 {
758 if let Some(_) = self.phy_country {
759 return 1;
760 }
761 0
762 }
763 }
764
765 impl fidl::encoding::ValueTypeMarker for WlanPhyNotifyOnCountryCodeChangeRequest {
766 type Borrowed<'a> = &'a Self;
767 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
768 value
769 }
770 }
771
772 unsafe impl fidl::encoding::TypeMarker for WlanPhyNotifyOnCountryCodeChangeRequest {
773 type Owned = Self;
774
775 #[inline(always)]
776 fn inline_align(_context: fidl::encoding::Context) -> usize {
777 8
778 }
779
780 #[inline(always)]
781 fn inline_size(_context: fidl::encoding::Context) -> usize {
782 16
783 }
784 }
785
786 unsafe impl<D: fidl::encoding::ResourceDialect>
787 fidl::encoding::Encode<WlanPhyNotifyOnCountryCodeChangeRequest, D>
788 for &WlanPhyNotifyOnCountryCodeChangeRequest
789 {
790 unsafe fn encode(
791 self,
792 encoder: &mut fidl::encoding::Encoder<'_, D>,
793 offset: usize,
794 mut depth: fidl::encoding::Depth,
795 ) -> fidl::Result<()> {
796 encoder.debug_check_bounds::<WlanPhyNotifyOnCountryCodeChangeRequest>(offset);
797 let max_ordinal: u64 = self.max_ordinal_present();
799 encoder.write_num(max_ordinal, offset);
800 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
801 if max_ordinal == 0 {
803 return Ok(());
804 }
805 depth.increment()?;
806 let envelope_size = 8;
807 let bytes_len = max_ordinal as usize * envelope_size;
808 #[allow(unused_variables)]
809 let offset = encoder.out_of_line_offset(bytes_len);
810 let mut _prev_end_offset: usize = 0;
811 if 1 > max_ordinal {
812 return Ok(());
813 }
814
815 let cur_offset: usize = (1 - 1) * envelope_size;
818
819 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
821
822 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 2>, D>(
827 self.phy_country
828 .as_ref()
829 .map(<fidl::encoding::Array<u8, 2> as fidl::encoding::ValueTypeMarker>::borrow),
830 encoder,
831 offset + cur_offset,
832 depth,
833 )?;
834
835 _prev_end_offset = cur_offset + envelope_size;
836
837 Ok(())
838 }
839 }
840
841 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
842 for WlanPhyNotifyOnCountryCodeChangeRequest
843 {
844 #[inline(always)]
845 fn new_empty() -> Self {
846 Self::default()
847 }
848
849 unsafe fn decode(
850 &mut self,
851 decoder: &mut fidl::encoding::Decoder<'_, D>,
852 offset: usize,
853 mut depth: fidl::encoding::Depth,
854 ) -> fidl::Result<()> {
855 decoder.debug_check_bounds::<Self>(offset);
856 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
857 None => return Err(fidl::Error::NotNullable),
858 Some(len) => len,
859 };
860 if len == 0 {
862 return Ok(());
863 };
864 depth.increment()?;
865 let envelope_size = 8;
866 let bytes_len = len * envelope_size;
867 let offset = decoder.out_of_line_offset(bytes_len)?;
868 let mut _next_ordinal_to_read = 0;
870 let mut next_offset = offset;
871 let end_offset = offset + bytes_len;
872 _next_ordinal_to_read += 1;
873 if next_offset >= end_offset {
874 return Ok(());
875 }
876
877 while _next_ordinal_to_read < 1 {
879 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
880 _next_ordinal_to_read += 1;
881 next_offset += envelope_size;
882 }
883
884 let next_out_of_line = decoder.next_out_of_line();
885 let handles_before = decoder.remaining_handles();
886 if let Some((inlined, num_bytes, num_handles)) =
887 fidl::encoding::decode_envelope_header(decoder, next_offset)?
888 {
889 let member_inline_size =
890 <fidl::encoding::Array<u8, 2> as fidl::encoding::TypeMarker>::inline_size(
891 decoder.context,
892 );
893 if inlined != (member_inline_size <= 4) {
894 return Err(fidl::Error::InvalidInlineBitInEnvelope);
895 }
896 let inner_offset;
897 let mut inner_depth = depth.clone();
898 if inlined {
899 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
900 inner_offset = next_offset;
901 } else {
902 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
903 inner_depth.increment()?;
904 }
905 let val_ref = self
906 .phy_country
907 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 2>, D));
908 fidl::decode!(fidl::encoding::Array<u8, 2>, D, val_ref, decoder, inner_offset, inner_depth)?;
909 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
910 {
911 return Err(fidl::Error::InvalidNumBytesInEnvelope);
912 }
913 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
914 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
915 }
916 }
917
918 next_offset += envelope_size;
919
920 while next_offset < end_offset {
922 _next_ordinal_to_read += 1;
923 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
924 next_offset += envelope_size;
925 }
926
927 Ok(())
928 }
929 }
930
931 impl WlanPhyNotifyOnCriticalErrorRequest {
932 #[inline(always)]
933 fn max_ordinal_present(&self) -> u64 {
934 if let Some(_) = self.reason_code {
935 return 1;
936 }
937 0
938 }
939 }
940
941 impl fidl::encoding::ValueTypeMarker for WlanPhyNotifyOnCriticalErrorRequest {
942 type Borrowed<'a> = &'a Self;
943 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
944 value
945 }
946 }
947
948 unsafe impl fidl::encoding::TypeMarker for WlanPhyNotifyOnCriticalErrorRequest {
949 type Owned = Self;
950
951 #[inline(always)]
952 fn inline_align(_context: fidl::encoding::Context) -> usize {
953 8
954 }
955
956 #[inline(always)]
957 fn inline_size(_context: fidl::encoding::Context) -> usize {
958 16
959 }
960 }
961
962 unsafe impl<D: fidl::encoding::ResourceDialect>
963 fidl::encoding::Encode<WlanPhyNotifyOnCriticalErrorRequest, D>
964 for &WlanPhyNotifyOnCriticalErrorRequest
965 {
966 unsafe fn encode(
967 self,
968 encoder: &mut fidl::encoding::Encoder<'_, D>,
969 offset: usize,
970 mut depth: fidl::encoding::Depth,
971 ) -> fidl::Result<()> {
972 encoder.debug_check_bounds::<WlanPhyNotifyOnCriticalErrorRequest>(offset);
973 let max_ordinal: u64 = self.max_ordinal_present();
975 encoder.write_num(max_ordinal, offset);
976 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
977 if max_ordinal == 0 {
979 return Ok(());
980 }
981 depth.increment()?;
982 let envelope_size = 8;
983 let bytes_len = max_ordinal as usize * envelope_size;
984 #[allow(unused_variables)]
985 let offset = encoder.out_of_line_offset(bytes_len);
986 let mut _prev_end_offset: usize = 0;
987 if 1 > max_ordinal {
988 return Ok(());
989 }
990
991 let cur_offset: usize = (1 - 1) * envelope_size;
994
995 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
997
998 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_internal_common::CriticalErrorReason, D>(
1003 self.reason_code.as_ref().map(<fidl_fuchsia_wlan_internal_common::CriticalErrorReason as fidl::encoding::ValueTypeMarker>::borrow),
1004 encoder, offset + cur_offset, depth
1005 )?;
1006
1007 _prev_end_offset = cur_offset + envelope_size;
1008
1009 Ok(())
1010 }
1011 }
1012
1013 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1014 for WlanPhyNotifyOnCriticalErrorRequest
1015 {
1016 #[inline(always)]
1017 fn new_empty() -> Self {
1018 Self::default()
1019 }
1020
1021 unsafe fn decode(
1022 &mut self,
1023 decoder: &mut fidl::encoding::Decoder<'_, D>,
1024 offset: usize,
1025 mut depth: fidl::encoding::Depth,
1026 ) -> fidl::Result<()> {
1027 decoder.debug_check_bounds::<Self>(offset);
1028 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1029 None => return Err(fidl::Error::NotNullable),
1030 Some(len) => len,
1031 };
1032 if len == 0 {
1034 return Ok(());
1035 };
1036 depth.increment()?;
1037 let envelope_size = 8;
1038 let bytes_len = len * envelope_size;
1039 let offset = decoder.out_of_line_offset(bytes_len)?;
1040 let mut _next_ordinal_to_read = 0;
1042 let mut next_offset = offset;
1043 let end_offset = offset + bytes_len;
1044 _next_ordinal_to_read += 1;
1045 if next_offset >= end_offset {
1046 return Ok(());
1047 }
1048
1049 while _next_ordinal_to_read < 1 {
1051 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1052 _next_ordinal_to_read += 1;
1053 next_offset += envelope_size;
1054 }
1055
1056 let next_out_of_line = decoder.next_out_of_line();
1057 let handles_before = decoder.remaining_handles();
1058 if let Some((inlined, num_bytes, num_handles)) =
1059 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1060 {
1061 let member_inline_size = <fidl_fuchsia_wlan_internal_common::CriticalErrorReason as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1062 if inlined != (member_inline_size <= 4) {
1063 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1064 }
1065 let inner_offset;
1066 let mut inner_depth = depth.clone();
1067 if inlined {
1068 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1069 inner_offset = next_offset;
1070 } else {
1071 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1072 inner_depth.increment()?;
1073 }
1074 let val_ref = self.reason_code.get_or_insert_with(|| {
1075 fidl::new_empty!(fidl_fuchsia_wlan_internal_common::CriticalErrorReason, D)
1076 });
1077 fidl::decode!(
1078 fidl_fuchsia_wlan_internal_common::CriticalErrorReason,
1079 D,
1080 val_ref,
1081 decoder,
1082 inner_offset,
1083 inner_depth
1084 )?;
1085 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1086 {
1087 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1088 }
1089 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1090 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1091 }
1092 }
1093
1094 next_offset += envelope_size;
1095
1096 while next_offset < end_offset {
1098 _next_ordinal_to_read += 1;
1099 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1100 next_offset += envelope_size;
1101 }
1102
1103 Ok(())
1104 }
1105 }
1106
1107 impl WlanPhySetBtCoexistenceModeRequest {
1108 #[inline(always)]
1109 fn max_ordinal_present(&self) -> u64 {
1110 if let Some(_) = self.mode {
1111 return 1;
1112 }
1113 0
1114 }
1115 }
1116
1117 impl fidl::encoding::ValueTypeMarker for WlanPhySetBtCoexistenceModeRequest {
1118 type Borrowed<'a> = &'a Self;
1119 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1120 value
1121 }
1122 }
1123
1124 unsafe impl fidl::encoding::TypeMarker for WlanPhySetBtCoexistenceModeRequest {
1125 type Owned = Self;
1126
1127 #[inline(always)]
1128 fn inline_align(_context: fidl::encoding::Context) -> usize {
1129 8
1130 }
1131
1132 #[inline(always)]
1133 fn inline_size(_context: fidl::encoding::Context) -> usize {
1134 16
1135 }
1136 }
1137
1138 unsafe impl<D: fidl::encoding::ResourceDialect>
1139 fidl::encoding::Encode<WlanPhySetBtCoexistenceModeRequest, D>
1140 for &WlanPhySetBtCoexistenceModeRequest
1141 {
1142 unsafe fn encode(
1143 self,
1144 encoder: &mut fidl::encoding::Encoder<'_, D>,
1145 offset: usize,
1146 mut depth: fidl::encoding::Depth,
1147 ) -> fidl::Result<()> {
1148 encoder.debug_check_bounds::<WlanPhySetBtCoexistenceModeRequest>(offset);
1149 let max_ordinal: u64 = self.max_ordinal_present();
1151 encoder.write_num(max_ordinal, offset);
1152 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1153 if max_ordinal == 0 {
1155 return Ok(());
1156 }
1157 depth.increment()?;
1158 let envelope_size = 8;
1159 let bytes_len = max_ordinal as usize * envelope_size;
1160 #[allow(unused_variables)]
1161 let offset = encoder.out_of_line_offset(bytes_len);
1162 let mut _prev_end_offset: usize = 0;
1163 if 1 > max_ordinal {
1164 return Ok(());
1165 }
1166
1167 let cur_offset: usize = (1 - 1) * envelope_size;
1170
1171 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1173
1174 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_internal_common::BtCoexistenceMode, D>(
1179 self.mode.as_ref().map(<fidl_fuchsia_wlan_internal_common::BtCoexistenceMode as fidl::encoding::ValueTypeMarker>::borrow),
1180 encoder, offset + cur_offset, depth
1181 )?;
1182
1183 _prev_end_offset = cur_offset + envelope_size;
1184
1185 Ok(())
1186 }
1187 }
1188
1189 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1190 for WlanPhySetBtCoexistenceModeRequest
1191 {
1192 #[inline(always)]
1193 fn new_empty() -> Self {
1194 Self::default()
1195 }
1196
1197 unsafe fn decode(
1198 &mut self,
1199 decoder: &mut fidl::encoding::Decoder<'_, D>,
1200 offset: usize,
1201 mut depth: fidl::encoding::Depth,
1202 ) -> fidl::Result<()> {
1203 decoder.debug_check_bounds::<Self>(offset);
1204 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1205 None => return Err(fidl::Error::NotNullable),
1206 Some(len) => len,
1207 };
1208 if len == 0 {
1210 return Ok(());
1211 };
1212 depth.increment()?;
1213 let envelope_size = 8;
1214 let bytes_len = len * envelope_size;
1215 let offset = decoder.out_of_line_offset(bytes_len)?;
1216 let mut _next_ordinal_to_read = 0;
1218 let mut next_offset = offset;
1219 let end_offset = offset + bytes_len;
1220 _next_ordinal_to_read += 1;
1221 if next_offset >= end_offset {
1222 return Ok(());
1223 }
1224
1225 while _next_ordinal_to_read < 1 {
1227 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1228 _next_ordinal_to_read += 1;
1229 next_offset += envelope_size;
1230 }
1231
1232 let next_out_of_line = decoder.next_out_of_line();
1233 let handles_before = decoder.remaining_handles();
1234 if let Some((inlined, num_bytes, num_handles)) =
1235 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1236 {
1237 let member_inline_size = <fidl_fuchsia_wlan_internal_common::BtCoexistenceMode as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1238 if inlined != (member_inline_size <= 4) {
1239 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1240 }
1241 let inner_offset;
1242 let mut inner_depth = depth.clone();
1243 if inlined {
1244 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1245 inner_offset = next_offset;
1246 } else {
1247 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1248 inner_depth.increment()?;
1249 }
1250 let val_ref = self.mode.get_or_insert_with(|| {
1251 fidl::new_empty!(fidl_fuchsia_wlan_internal_common::BtCoexistenceMode, D)
1252 });
1253 fidl::decode!(
1254 fidl_fuchsia_wlan_internal_common::BtCoexistenceMode,
1255 D,
1256 val_ref,
1257 decoder,
1258 inner_offset,
1259 inner_depth
1260 )?;
1261 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1262 {
1263 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1264 }
1265 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1266 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1267 }
1268 }
1269
1270 next_offset += envelope_size;
1271
1272 while next_offset < end_offset {
1274 _next_ordinal_to_read += 1;
1275 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1276 next_offset += envelope_size;
1277 }
1278
1279 Ok(())
1280 }
1281 }
1282
1283 impl WlanPhySetPowerSaveModeRequest {
1284 #[inline(always)]
1285 fn max_ordinal_present(&self) -> u64 {
1286 if let Some(_) = self.ps_mode {
1287 return 1;
1288 }
1289 0
1290 }
1291 }
1292
1293 impl fidl::encoding::ValueTypeMarker for WlanPhySetPowerSaveModeRequest {
1294 type Borrowed<'a> = &'a Self;
1295 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1296 value
1297 }
1298 }
1299
1300 unsafe impl fidl::encoding::TypeMarker for WlanPhySetPowerSaveModeRequest {
1301 type Owned = Self;
1302
1303 #[inline(always)]
1304 fn inline_align(_context: fidl::encoding::Context) -> usize {
1305 8
1306 }
1307
1308 #[inline(always)]
1309 fn inline_size(_context: fidl::encoding::Context) -> usize {
1310 16
1311 }
1312 }
1313
1314 unsafe impl<D: fidl::encoding::ResourceDialect>
1315 fidl::encoding::Encode<WlanPhySetPowerSaveModeRequest, D>
1316 for &WlanPhySetPowerSaveModeRequest
1317 {
1318 unsafe fn encode(
1319 self,
1320 encoder: &mut fidl::encoding::Encoder<'_, D>,
1321 offset: usize,
1322 mut depth: fidl::encoding::Depth,
1323 ) -> fidl::Result<()> {
1324 encoder.debug_check_bounds::<WlanPhySetPowerSaveModeRequest>(offset);
1325 let max_ordinal: u64 = self.max_ordinal_present();
1327 encoder.write_num(max_ordinal, offset);
1328 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1329 if max_ordinal == 0 {
1331 return Ok(());
1332 }
1333 depth.increment()?;
1334 let envelope_size = 8;
1335 let bytes_len = max_ordinal as usize * envelope_size;
1336 #[allow(unused_variables)]
1337 let offset = encoder.out_of_line_offset(bytes_len);
1338 let mut _prev_end_offset: usize = 0;
1339 if 1 > max_ordinal {
1340 return Ok(());
1341 }
1342
1343 let cur_offset: usize = (1 - 1) * envelope_size;
1346
1347 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1349
1350 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::PowerSaveType, D>(
1355 self.ps_mode.as_ref().map(<fidl_fuchsia_wlan_common_common::PowerSaveType as fidl::encoding::ValueTypeMarker>::borrow),
1356 encoder, offset + cur_offset, depth
1357 )?;
1358
1359 _prev_end_offset = cur_offset + envelope_size;
1360
1361 Ok(())
1362 }
1363 }
1364
1365 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1366 for WlanPhySetPowerSaveModeRequest
1367 {
1368 #[inline(always)]
1369 fn new_empty() -> Self {
1370 Self::default()
1371 }
1372
1373 unsafe fn decode(
1374 &mut self,
1375 decoder: &mut fidl::encoding::Decoder<'_, D>,
1376 offset: usize,
1377 mut depth: fidl::encoding::Depth,
1378 ) -> fidl::Result<()> {
1379 decoder.debug_check_bounds::<Self>(offset);
1380 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1381 None => return Err(fidl::Error::NotNullable),
1382 Some(len) => len,
1383 };
1384 if len == 0 {
1386 return Ok(());
1387 };
1388 depth.increment()?;
1389 let envelope_size = 8;
1390 let bytes_len = len * envelope_size;
1391 let offset = decoder.out_of_line_offset(bytes_len)?;
1392 let mut _next_ordinal_to_read = 0;
1394 let mut next_offset = offset;
1395 let end_offset = offset + bytes_len;
1396 _next_ordinal_to_read += 1;
1397 if next_offset >= end_offset {
1398 return Ok(());
1399 }
1400
1401 while _next_ordinal_to_read < 1 {
1403 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1404 _next_ordinal_to_read += 1;
1405 next_offset += envelope_size;
1406 }
1407
1408 let next_out_of_line = decoder.next_out_of_line();
1409 let handles_before = decoder.remaining_handles();
1410 if let Some((inlined, num_bytes, num_handles)) =
1411 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1412 {
1413 let member_inline_size = <fidl_fuchsia_wlan_common_common::PowerSaveType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1414 if inlined != (member_inline_size <= 4) {
1415 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1416 }
1417 let inner_offset;
1418 let mut inner_depth = depth.clone();
1419 if inlined {
1420 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1421 inner_offset = next_offset;
1422 } else {
1423 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1424 inner_depth.increment()?;
1425 }
1426 let val_ref = self.ps_mode.get_or_insert_with(|| {
1427 fidl::new_empty!(fidl_fuchsia_wlan_common_common::PowerSaveType, D)
1428 });
1429 fidl::decode!(
1430 fidl_fuchsia_wlan_common_common::PowerSaveType,
1431 D,
1432 val_ref,
1433 decoder,
1434 inner_offset,
1435 inner_depth
1436 )?;
1437 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1438 {
1439 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1440 }
1441 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1442 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1443 }
1444 }
1445
1446 next_offset += envelope_size;
1447
1448 while next_offset < end_offset {
1450 _next_ordinal_to_read += 1;
1451 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1452 next_offset += envelope_size;
1453 }
1454
1455 Ok(())
1456 }
1457 }
1458
1459 impl WlanPhySetTxPowerScenarioRequest {
1460 #[inline(always)]
1461 fn max_ordinal_present(&self) -> u64 {
1462 if let Some(_) = self.scenario {
1463 return 1;
1464 }
1465 0
1466 }
1467 }
1468
1469 impl fidl::encoding::ValueTypeMarker for WlanPhySetTxPowerScenarioRequest {
1470 type Borrowed<'a> = &'a Self;
1471 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1472 value
1473 }
1474 }
1475
1476 unsafe impl fidl::encoding::TypeMarker for WlanPhySetTxPowerScenarioRequest {
1477 type Owned = Self;
1478
1479 #[inline(always)]
1480 fn inline_align(_context: fidl::encoding::Context) -> usize {
1481 8
1482 }
1483
1484 #[inline(always)]
1485 fn inline_size(_context: fidl::encoding::Context) -> usize {
1486 16
1487 }
1488 }
1489
1490 unsafe impl<D: fidl::encoding::ResourceDialect>
1491 fidl::encoding::Encode<WlanPhySetTxPowerScenarioRequest, D>
1492 for &WlanPhySetTxPowerScenarioRequest
1493 {
1494 unsafe fn encode(
1495 self,
1496 encoder: &mut fidl::encoding::Encoder<'_, D>,
1497 offset: usize,
1498 mut depth: fidl::encoding::Depth,
1499 ) -> fidl::Result<()> {
1500 encoder.debug_check_bounds::<WlanPhySetTxPowerScenarioRequest>(offset);
1501 let max_ordinal: u64 = self.max_ordinal_present();
1503 encoder.write_num(max_ordinal, offset);
1504 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1505 if max_ordinal == 0 {
1507 return Ok(());
1508 }
1509 depth.increment()?;
1510 let envelope_size = 8;
1511 let bytes_len = max_ordinal as usize * envelope_size;
1512 #[allow(unused_variables)]
1513 let offset = encoder.out_of_line_offset(bytes_len);
1514 let mut _prev_end_offset: usize = 0;
1515 if 1 > max_ordinal {
1516 return Ok(());
1517 }
1518
1519 let cur_offset: usize = (1 - 1) * envelope_size;
1522
1523 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1525
1526 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_internal_common::TxPowerScenario, D>(
1531 self.scenario.as_ref().map(<fidl_fuchsia_wlan_internal_common::TxPowerScenario as fidl::encoding::ValueTypeMarker>::borrow),
1532 encoder, offset + cur_offset, depth
1533 )?;
1534
1535 _prev_end_offset = cur_offset + envelope_size;
1536
1537 Ok(())
1538 }
1539 }
1540
1541 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1542 for WlanPhySetTxPowerScenarioRequest
1543 {
1544 #[inline(always)]
1545 fn new_empty() -> Self {
1546 Self::default()
1547 }
1548
1549 unsafe fn decode(
1550 &mut self,
1551 decoder: &mut fidl::encoding::Decoder<'_, D>,
1552 offset: usize,
1553 mut depth: fidl::encoding::Depth,
1554 ) -> fidl::Result<()> {
1555 decoder.debug_check_bounds::<Self>(offset);
1556 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1557 None => return Err(fidl::Error::NotNullable),
1558 Some(len) => len,
1559 };
1560 if len == 0 {
1562 return Ok(());
1563 };
1564 depth.increment()?;
1565 let envelope_size = 8;
1566 let bytes_len = len * envelope_size;
1567 let offset = decoder.out_of_line_offset(bytes_len)?;
1568 let mut _next_ordinal_to_read = 0;
1570 let mut next_offset = offset;
1571 let end_offset = offset + bytes_len;
1572 _next_ordinal_to_read += 1;
1573 if next_offset >= end_offset {
1574 return Ok(());
1575 }
1576
1577 while _next_ordinal_to_read < 1 {
1579 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1580 _next_ordinal_to_read += 1;
1581 next_offset += envelope_size;
1582 }
1583
1584 let next_out_of_line = decoder.next_out_of_line();
1585 let handles_before = decoder.remaining_handles();
1586 if let Some((inlined, num_bytes, num_handles)) =
1587 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1588 {
1589 let member_inline_size = <fidl_fuchsia_wlan_internal_common::TxPowerScenario as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1590 if inlined != (member_inline_size <= 4) {
1591 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1592 }
1593 let inner_offset;
1594 let mut inner_depth = depth.clone();
1595 if inlined {
1596 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1597 inner_offset = next_offset;
1598 } else {
1599 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1600 inner_depth.increment()?;
1601 }
1602 let val_ref = self.scenario.get_or_insert_with(|| {
1603 fidl::new_empty!(fidl_fuchsia_wlan_internal_common::TxPowerScenario, D)
1604 });
1605 fidl::decode!(
1606 fidl_fuchsia_wlan_internal_common::TxPowerScenario,
1607 D,
1608 val_ref,
1609 decoder,
1610 inner_offset,
1611 inner_depth
1612 )?;
1613 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1614 {
1615 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1616 }
1617 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1618 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1619 }
1620 }
1621
1622 next_offset += envelope_size;
1623
1624 while next_offset < end_offset {
1626 _next_ordinal_to_read += 1;
1627 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1628 next_offset += envelope_size;
1629 }
1630
1631 Ok(())
1632 }
1633 }
1634
1635 impl WlanPhyCreateIfaceResponse {
1636 #[inline(always)]
1637 fn max_ordinal_present(&self) -> u64 {
1638 if let Some(_) = self.iface_id {
1639 return 1;
1640 }
1641 0
1642 }
1643 }
1644
1645 impl fidl::encoding::ValueTypeMarker for WlanPhyCreateIfaceResponse {
1646 type Borrowed<'a> = &'a Self;
1647 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1648 value
1649 }
1650 }
1651
1652 unsafe impl fidl::encoding::TypeMarker for WlanPhyCreateIfaceResponse {
1653 type Owned = Self;
1654
1655 #[inline(always)]
1656 fn inline_align(_context: fidl::encoding::Context) -> usize {
1657 8
1658 }
1659
1660 #[inline(always)]
1661 fn inline_size(_context: fidl::encoding::Context) -> usize {
1662 16
1663 }
1664 }
1665
1666 unsafe impl<D: fidl::encoding::ResourceDialect>
1667 fidl::encoding::Encode<WlanPhyCreateIfaceResponse, D> for &WlanPhyCreateIfaceResponse
1668 {
1669 unsafe fn encode(
1670 self,
1671 encoder: &mut fidl::encoding::Encoder<'_, D>,
1672 offset: usize,
1673 mut depth: fidl::encoding::Depth,
1674 ) -> fidl::Result<()> {
1675 encoder.debug_check_bounds::<WlanPhyCreateIfaceResponse>(offset);
1676 let max_ordinal: u64 = self.max_ordinal_present();
1678 encoder.write_num(max_ordinal, offset);
1679 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1680 if max_ordinal == 0 {
1682 return Ok(());
1683 }
1684 depth.increment()?;
1685 let envelope_size = 8;
1686 let bytes_len = max_ordinal as usize * envelope_size;
1687 #[allow(unused_variables)]
1688 let offset = encoder.out_of_line_offset(bytes_len);
1689 let mut _prev_end_offset: usize = 0;
1690 if 1 > max_ordinal {
1691 return Ok(());
1692 }
1693
1694 let cur_offset: usize = (1 - 1) * envelope_size;
1697
1698 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1700
1701 fidl::encoding::encode_in_envelope_optional::<u16, D>(
1706 self.iface_id.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
1707 encoder,
1708 offset + cur_offset,
1709 depth,
1710 )?;
1711
1712 _prev_end_offset = cur_offset + envelope_size;
1713
1714 Ok(())
1715 }
1716 }
1717
1718 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1719 for WlanPhyCreateIfaceResponse
1720 {
1721 #[inline(always)]
1722 fn new_empty() -> Self {
1723 Self::default()
1724 }
1725
1726 unsafe fn decode(
1727 &mut self,
1728 decoder: &mut fidl::encoding::Decoder<'_, D>,
1729 offset: usize,
1730 mut depth: fidl::encoding::Depth,
1731 ) -> fidl::Result<()> {
1732 decoder.debug_check_bounds::<Self>(offset);
1733 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1734 None => return Err(fidl::Error::NotNullable),
1735 Some(len) => len,
1736 };
1737 if len == 0 {
1739 return Ok(());
1740 };
1741 depth.increment()?;
1742 let envelope_size = 8;
1743 let bytes_len = len * envelope_size;
1744 let offset = decoder.out_of_line_offset(bytes_len)?;
1745 let mut _next_ordinal_to_read = 0;
1747 let mut next_offset = offset;
1748 let end_offset = offset + bytes_len;
1749 _next_ordinal_to_read += 1;
1750 if next_offset >= end_offset {
1751 return Ok(());
1752 }
1753
1754 while _next_ordinal_to_read < 1 {
1756 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1757 _next_ordinal_to_read += 1;
1758 next_offset += envelope_size;
1759 }
1760
1761 let next_out_of_line = decoder.next_out_of_line();
1762 let handles_before = decoder.remaining_handles();
1763 if let Some((inlined, num_bytes, num_handles)) =
1764 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1765 {
1766 let member_inline_size =
1767 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1768 if inlined != (member_inline_size <= 4) {
1769 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1770 }
1771 let inner_offset;
1772 let mut inner_depth = depth.clone();
1773 if inlined {
1774 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1775 inner_offset = next_offset;
1776 } else {
1777 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1778 inner_depth.increment()?;
1779 }
1780 let val_ref = self.iface_id.get_or_insert_with(|| fidl::new_empty!(u16, D));
1781 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
1782 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1783 {
1784 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1785 }
1786 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1787 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1788 }
1789 }
1790
1791 next_offset += envelope_size;
1792
1793 while next_offset < end_offset {
1795 _next_ordinal_to_read += 1;
1796 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1797 next_offset += envelope_size;
1798 }
1799
1800 Ok(())
1801 }
1802 }
1803
1804 impl WlanPhyGetPowerSaveModeResponse {
1805 #[inline(always)]
1806 fn max_ordinal_present(&self) -> u64 {
1807 if let Some(_) = self.ps_mode {
1808 return 1;
1809 }
1810 0
1811 }
1812 }
1813
1814 impl fidl::encoding::ValueTypeMarker for WlanPhyGetPowerSaveModeResponse {
1815 type Borrowed<'a> = &'a Self;
1816 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1817 value
1818 }
1819 }
1820
1821 unsafe impl fidl::encoding::TypeMarker for WlanPhyGetPowerSaveModeResponse {
1822 type Owned = Self;
1823
1824 #[inline(always)]
1825 fn inline_align(_context: fidl::encoding::Context) -> usize {
1826 8
1827 }
1828
1829 #[inline(always)]
1830 fn inline_size(_context: fidl::encoding::Context) -> usize {
1831 16
1832 }
1833 }
1834
1835 unsafe impl<D: fidl::encoding::ResourceDialect>
1836 fidl::encoding::Encode<WlanPhyGetPowerSaveModeResponse, D>
1837 for &WlanPhyGetPowerSaveModeResponse
1838 {
1839 unsafe fn encode(
1840 self,
1841 encoder: &mut fidl::encoding::Encoder<'_, D>,
1842 offset: usize,
1843 mut depth: fidl::encoding::Depth,
1844 ) -> fidl::Result<()> {
1845 encoder.debug_check_bounds::<WlanPhyGetPowerSaveModeResponse>(offset);
1846 let max_ordinal: u64 = self.max_ordinal_present();
1848 encoder.write_num(max_ordinal, offset);
1849 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1850 if max_ordinal == 0 {
1852 return Ok(());
1853 }
1854 depth.increment()?;
1855 let envelope_size = 8;
1856 let bytes_len = max_ordinal as usize * envelope_size;
1857 #[allow(unused_variables)]
1858 let offset = encoder.out_of_line_offset(bytes_len);
1859 let mut _prev_end_offset: usize = 0;
1860 if 1 > max_ordinal {
1861 return Ok(());
1862 }
1863
1864 let cur_offset: usize = (1 - 1) * envelope_size;
1867
1868 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1870
1871 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_common_common::PowerSaveType, D>(
1876 self.ps_mode.as_ref().map(<fidl_fuchsia_wlan_common_common::PowerSaveType as fidl::encoding::ValueTypeMarker>::borrow),
1877 encoder, offset + cur_offset, depth
1878 )?;
1879
1880 _prev_end_offset = cur_offset + envelope_size;
1881
1882 Ok(())
1883 }
1884 }
1885
1886 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1887 for WlanPhyGetPowerSaveModeResponse
1888 {
1889 #[inline(always)]
1890 fn new_empty() -> Self {
1891 Self::default()
1892 }
1893
1894 unsafe fn decode(
1895 &mut self,
1896 decoder: &mut fidl::encoding::Decoder<'_, D>,
1897 offset: usize,
1898 mut depth: fidl::encoding::Depth,
1899 ) -> fidl::Result<()> {
1900 decoder.debug_check_bounds::<Self>(offset);
1901 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1902 None => return Err(fidl::Error::NotNullable),
1903 Some(len) => len,
1904 };
1905 if len == 0 {
1907 return Ok(());
1908 };
1909 depth.increment()?;
1910 let envelope_size = 8;
1911 let bytes_len = len * envelope_size;
1912 let offset = decoder.out_of_line_offset(bytes_len)?;
1913 let mut _next_ordinal_to_read = 0;
1915 let mut next_offset = offset;
1916 let end_offset = offset + bytes_len;
1917 _next_ordinal_to_read += 1;
1918 if next_offset >= end_offset {
1919 return Ok(());
1920 }
1921
1922 while _next_ordinal_to_read < 1 {
1924 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1925 _next_ordinal_to_read += 1;
1926 next_offset += envelope_size;
1927 }
1928
1929 let next_out_of_line = decoder.next_out_of_line();
1930 let handles_before = decoder.remaining_handles();
1931 if let Some((inlined, num_bytes, num_handles)) =
1932 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1933 {
1934 let member_inline_size = <fidl_fuchsia_wlan_common_common::PowerSaveType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1935 if inlined != (member_inline_size <= 4) {
1936 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1937 }
1938 let inner_offset;
1939 let mut inner_depth = depth.clone();
1940 if inlined {
1941 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1942 inner_offset = next_offset;
1943 } else {
1944 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1945 inner_depth.increment()?;
1946 }
1947 let val_ref = self.ps_mode.get_or_insert_with(|| {
1948 fidl::new_empty!(fidl_fuchsia_wlan_common_common::PowerSaveType, D)
1949 });
1950 fidl::decode!(
1951 fidl_fuchsia_wlan_common_common::PowerSaveType,
1952 D,
1953 val_ref,
1954 decoder,
1955 inner_offset,
1956 inner_depth
1957 )?;
1958 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1959 {
1960 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1961 }
1962 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1963 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1964 }
1965 }
1966
1967 next_offset += envelope_size;
1968
1969 while next_offset < end_offset {
1971 _next_ordinal_to_read += 1;
1972 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1973 next_offset += envelope_size;
1974 }
1975
1976 Ok(())
1977 }
1978 }
1979
1980 impl WlanPhyGetPowerStateResponse {
1981 #[inline(always)]
1982 fn max_ordinal_present(&self) -> u64 {
1983 if let Some(_) = self.power_on {
1984 return 1;
1985 }
1986 0
1987 }
1988 }
1989
1990 impl fidl::encoding::ValueTypeMarker for WlanPhyGetPowerStateResponse {
1991 type Borrowed<'a> = &'a Self;
1992 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1993 value
1994 }
1995 }
1996
1997 unsafe impl fidl::encoding::TypeMarker for WlanPhyGetPowerStateResponse {
1998 type Owned = Self;
1999
2000 #[inline(always)]
2001 fn inline_align(_context: fidl::encoding::Context) -> usize {
2002 8
2003 }
2004
2005 #[inline(always)]
2006 fn inline_size(_context: fidl::encoding::Context) -> usize {
2007 16
2008 }
2009 }
2010
2011 unsafe impl<D: fidl::encoding::ResourceDialect>
2012 fidl::encoding::Encode<WlanPhyGetPowerStateResponse, D> for &WlanPhyGetPowerStateResponse
2013 {
2014 unsafe fn encode(
2015 self,
2016 encoder: &mut fidl::encoding::Encoder<'_, D>,
2017 offset: usize,
2018 mut depth: fidl::encoding::Depth,
2019 ) -> fidl::Result<()> {
2020 encoder.debug_check_bounds::<WlanPhyGetPowerStateResponse>(offset);
2021 let max_ordinal: u64 = self.max_ordinal_present();
2023 encoder.write_num(max_ordinal, offset);
2024 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2025 if max_ordinal == 0 {
2027 return Ok(());
2028 }
2029 depth.increment()?;
2030 let envelope_size = 8;
2031 let bytes_len = max_ordinal as usize * envelope_size;
2032 #[allow(unused_variables)]
2033 let offset = encoder.out_of_line_offset(bytes_len);
2034 let mut _prev_end_offset: usize = 0;
2035 if 1 > max_ordinal {
2036 return Ok(());
2037 }
2038
2039 let cur_offset: usize = (1 - 1) * envelope_size;
2042
2043 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2045
2046 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2051 self.power_on.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2052 encoder,
2053 offset + cur_offset,
2054 depth,
2055 )?;
2056
2057 _prev_end_offset = cur_offset + envelope_size;
2058
2059 Ok(())
2060 }
2061 }
2062
2063 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2064 for WlanPhyGetPowerStateResponse
2065 {
2066 #[inline(always)]
2067 fn new_empty() -> Self {
2068 Self::default()
2069 }
2070
2071 unsafe fn decode(
2072 &mut self,
2073 decoder: &mut fidl::encoding::Decoder<'_, D>,
2074 offset: usize,
2075 mut depth: fidl::encoding::Depth,
2076 ) -> fidl::Result<()> {
2077 decoder.debug_check_bounds::<Self>(offset);
2078 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2079 None => return Err(fidl::Error::NotNullable),
2080 Some(len) => len,
2081 };
2082 if len == 0 {
2084 return Ok(());
2085 };
2086 depth.increment()?;
2087 let envelope_size = 8;
2088 let bytes_len = len * envelope_size;
2089 let offset = decoder.out_of_line_offset(bytes_len)?;
2090 let mut _next_ordinal_to_read = 0;
2092 let mut next_offset = offset;
2093 let end_offset = offset + bytes_len;
2094 _next_ordinal_to_read += 1;
2095 if next_offset >= end_offset {
2096 return Ok(());
2097 }
2098
2099 while _next_ordinal_to_read < 1 {
2101 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2102 _next_ordinal_to_read += 1;
2103 next_offset += envelope_size;
2104 }
2105
2106 let next_out_of_line = decoder.next_out_of_line();
2107 let handles_before = decoder.remaining_handles();
2108 if let Some((inlined, num_bytes, num_handles)) =
2109 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2110 {
2111 let member_inline_size =
2112 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2113 if inlined != (member_inline_size <= 4) {
2114 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2115 }
2116 let inner_offset;
2117 let mut inner_depth = depth.clone();
2118 if inlined {
2119 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2120 inner_offset = next_offset;
2121 } else {
2122 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2123 inner_depth.increment()?;
2124 }
2125 let val_ref = self.power_on.get_or_insert_with(|| fidl::new_empty!(bool, D));
2126 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2127 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2128 {
2129 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2130 }
2131 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2132 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2133 }
2134 }
2135
2136 next_offset += envelope_size;
2137
2138 while next_offset < end_offset {
2140 _next_ordinal_to_read += 1;
2141 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2142 next_offset += envelope_size;
2143 }
2144
2145 Ok(())
2146 }
2147 }
2148
2149 impl WlanPhyGetSupportedMacRolesResponse {
2150 #[inline(always)]
2151 fn max_ordinal_present(&self) -> u64 {
2152 if let Some(_) = self.supported_mac_roles {
2153 return 1;
2154 }
2155 0
2156 }
2157 }
2158
2159 impl fidl::encoding::ValueTypeMarker for WlanPhyGetSupportedMacRolesResponse {
2160 type Borrowed<'a> = &'a Self;
2161 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2162 value
2163 }
2164 }
2165
2166 unsafe impl fidl::encoding::TypeMarker for WlanPhyGetSupportedMacRolesResponse {
2167 type Owned = Self;
2168
2169 #[inline(always)]
2170 fn inline_align(_context: fidl::encoding::Context) -> usize {
2171 8
2172 }
2173
2174 #[inline(always)]
2175 fn inline_size(_context: fidl::encoding::Context) -> usize {
2176 16
2177 }
2178 }
2179
2180 unsafe impl<D: fidl::encoding::ResourceDialect>
2181 fidl::encoding::Encode<WlanPhyGetSupportedMacRolesResponse, D>
2182 for &WlanPhyGetSupportedMacRolesResponse
2183 {
2184 unsafe fn encode(
2185 self,
2186 encoder: &mut fidl::encoding::Encoder<'_, D>,
2187 offset: usize,
2188 mut depth: fidl::encoding::Depth,
2189 ) -> fidl::Result<()> {
2190 encoder.debug_check_bounds::<WlanPhyGetSupportedMacRolesResponse>(offset);
2191 let max_ordinal: u64 = self.max_ordinal_present();
2193 encoder.write_num(max_ordinal, offset);
2194 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2195 if max_ordinal == 0 {
2197 return Ok(());
2198 }
2199 depth.increment()?;
2200 let envelope_size = 8;
2201 let bytes_len = max_ordinal as usize * envelope_size;
2202 #[allow(unused_variables)]
2203 let offset = encoder.out_of_line_offset(bytes_len);
2204 let mut _prev_end_offset: usize = 0;
2205 if 1 > max_ordinal {
2206 return Ok(());
2207 }
2208
2209 let cur_offset: usize = (1 - 1) * envelope_size;
2212
2213 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2215
2216 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16>, D>(
2221 self.supported_mac_roles.as_ref().map(<fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16> as fidl::encoding::ValueTypeMarker>::borrow),
2222 encoder, offset + cur_offset, depth
2223 )?;
2224
2225 _prev_end_offset = cur_offset + envelope_size;
2226
2227 Ok(())
2228 }
2229 }
2230
2231 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2232 for WlanPhyGetSupportedMacRolesResponse
2233 {
2234 #[inline(always)]
2235 fn new_empty() -> Self {
2236 Self::default()
2237 }
2238
2239 unsafe fn decode(
2240 &mut self,
2241 decoder: &mut fidl::encoding::Decoder<'_, D>,
2242 offset: usize,
2243 mut depth: fidl::encoding::Depth,
2244 ) -> fidl::Result<()> {
2245 decoder.debug_check_bounds::<Self>(offset);
2246 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2247 None => return Err(fidl::Error::NotNullable),
2248 Some(len) => len,
2249 };
2250 if len == 0 {
2252 return Ok(());
2253 };
2254 depth.increment()?;
2255 let envelope_size = 8;
2256 let bytes_len = len * envelope_size;
2257 let offset = decoder.out_of_line_offset(bytes_len)?;
2258 let mut _next_ordinal_to_read = 0;
2260 let mut next_offset = offset;
2261 let end_offset = offset + bytes_len;
2262 _next_ordinal_to_read += 1;
2263 if next_offset >= end_offset {
2264 return Ok(());
2265 }
2266
2267 while _next_ordinal_to_read < 1 {
2269 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2270 _next_ordinal_to_read += 1;
2271 next_offset += envelope_size;
2272 }
2273
2274 let next_out_of_line = decoder.next_out_of_line();
2275 let handles_before = decoder.remaining_handles();
2276 if let Some((inlined, num_bytes, num_handles)) =
2277 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2278 {
2279 let member_inline_size = <fidl::encoding::Vector<
2280 fidl_fuchsia_wlan_common_common::WlanMacRole,
2281 16,
2282 > as fidl::encoding::TypeMarker>::inline_size(
2283 decoder.context
2284 );
2285 if inlined != (member_inline_size <= 4) {
2286 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2287 }
2288 let inner_offset;
2289 let mut inner_depth = depth.clone();
2290 if inlined {
2291 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2292 inner_offset = next_offset;
2293 } else {
2294 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2295 inner_depth.increment()?;
2296 }
2297 let val_ref =
2298 self.supported_mac_roles.get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16>, D));
2299 fidl::decode!(fidl::encoding::Vector<fidl_fuchsia_wlan_common_common::WlanMacRole, 16>, D, val_ref, decoder, inner_offset, inner_depth)?;
2300 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2301 {
2302 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2303 }
2304 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2305 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2306 }
2307 }
2308
2309 next_offset += envelope_size;
2310
2311 while next_offset < end_offset {
2313 _next_ordinal_to_read += 1;
2314 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2315 next_offset += envelope_size;
2316 }
2317
2318 Ok(())
2319 }
2320 }
2321}