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
11pub type WlanSoftmacHardwareCapability = u32;
12
13#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
14#[repr(u8)]
15pub enum WlanProtection {
16 None = 0,
17 Rx = 1,
18 Tx = 2,
19 RxTx = 3,
20}
21
22impl WlanProtection {
23 #[inline]
24 pub fn from_primitive(prim: u8) -> Option<Self> {
25 match prim {
26 0 => Some(Self::None),
27 1 => Some(Self::Rx),
28 2 => Some(Self::Tx),
29 3 => Some(Self::RxTx),
30 _ => None,
31 }
32 }
33
34 #[inline]
35 pub const fn into_primitive(self) -> u8 {
36 self as u8
37 }
38}
39
40#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
41#[repr(u32)]
42pub enum WlanSoftmacHardwareCapabilityBit {
43 ShortPreamble = 32,
45 SpectrumMgmt = 256,
47 Qos = 512,
48 ShortSlotTime = 1024,
50 RadioMsmt = 4096,
52 SimultaneousClientAp = 65536,
54}
55
56impl WlanSoftmacHardwareCapabilityBit {
57 #[inline]
58 pub fn from_primitive(prim: u32) -> Option<Self> {
59 match prim {
60 32 => Some(Self::ShortPreamble),
61 256 => Some(Self::SpectrumMgmt),
62 512 => Some(Self::Qos),
63 1024 => Some(Self::ShortSlotTime),
64 4096 => Some(Self::RadioMsmt),
65 65536 => Some(Self::SimultaneousClientAp),
66 _ => None,
67 }
68 }
69
70 #[inline]
71 pub const fn into_primitive(self) -> u32 {
72 self as u32
73 }
74}
75
76#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
78pub struct WlanWmmAccessCategoryParameters {
79 pub ecw_min: u8,
83 pub ecw_max: u8,
87 pub aifsn: u8,
89 pub txop_limit: u16,
91 pub acm: bool,
93}
94
95impl fidl::Persistable for WlanWmmAccessCategoryParameters {}
96
97#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
98pub struct WlanWmmParameters {
99 pub apsd: bool,
100 pub ac_be_params: WlanWmmAccessCategoryParameters,
101 pub ac_bk_params: WlanWmmAccessCategoryParameters,
102 pub ac_vi_params: WlanWmmAccessCategoryParameters,
103 pub ac_vo_params: WlanWmmAccessCategoryParameters,
104}
105
106impl fidl::Persistable for WlanWmmParameters {}
107
108#[derive(Clone, Debug, Default, PartialEq)]
111pub struct JoinBssRequest {
112 pub bssid: Option<[u8; 6]>,
113 pub bss_type: Option<fidl_fuchsia_wlan_ieee80211__common::BssType>,
114 pub remote: Option<bool>,
115 pub beacon_period: Option<u16>,
116 #[doc(hidden)]
117 pub __source_breaking: fidl::marker::SourceBreaking,
118}
119
120impl fidl::Persistable for JoinBssRequest {}
121
122#[derive(Clone, Debug, Default, PartialEq)]
123pub struct WlanKeyConfig {
124 pub protection: Option<WlanProtection>,
126 pub cipher_oui: Option<[u8; 3]>,
130 pub cipher_type: Option<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType>,
133 pub key_type: Option<fidl_fuchsia_wlan_ieee80211__common::KeyType>,
136 pub peer_addr: Option<[u8; 6]>,
140 pub key_idx: Option<u8>,
148 pub key: Option<Vec<u8>>,
151 pub rsc: Option<u64>,
155 #[doc(hidden)]
156 pub __source_breaking: fidl::marker::SourceBreaking,
157}
158
159impl fidl::Persistable for WlanKeyConfig {}
160
161mod internal {
162 use super::*;
163 unsafe impl fidl::encoding::TypeMarker for WlanProtection {
164 type Owned = Self;
165
166 #[inline(always)]
167 fn inline_align(_context: fidl::encoding::Context) -> usize {
168 std::mem::align_of::<u8>()
169 }
170
171 #[inline(always)]
172 fn inline_size(_context: fidl::encoding::Context) -> usize {
173 std::mem::size_of::<u8>()
174 }
175
176 #[inline(always)]
177 fn encode_is_copy() -> bool {
178 true
179 }
180
181 #[inline(always)]
182 fn decode_is_copy() -> bool {
183 false
184 }
185 }
186
187 impl fidl::encoding::ValueTypeMarker for WlanProtection {
188 type Borrowed<'a> = Self;
189 #[inline(always)]
190 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
191 *value
192 }
193 }
194
195 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanProtection {
196 #[inline]
197 unsafe fn encode(
198 self,
199 encoder: &mut fidl::encoding::Encoder<'_, D>,
200 offset: usize,
201 _depth: fidl::encoding::Depth,
202 ) -> fidl::Result<()> {
203 encoder.debug_check_bounds::<Self>(offset);
204 encoder.write_num(self.into_primitive(), offset);
205 Ok(())
206 }
207 }
208
209 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanProtection {
210 #[inline(always)]
211 fn new_empty() -> Self {
212 Self::None
213 }
214
215 #[inline]
216 unsafe fn decode(
217 &mut self,
218 decoder: &mut fidl::encoding::Decoder<'_, D>,
219 offset: usize,
220 _depth: fidl::encoding::Depth,
221 ) -> fidl::Result<()> {
222 decoder.debug_check_bounds::<Self>(offset);
223 let prim = decoder.read_num::<u8>(offset);
224
225 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
226 Ok(())
227 }
228 }
229 unsafe impl fidl::encoding::TypeMarker for WlanSoftmacHardwareCapabilityBit {
230 type Owned = Self;
231
232 #[inline(always)]
233 fn inline_align(_context: fidl::encoding::Context) -> usize {
234 std::mem::align_of::<u32>()
235 }
236
237 #[inline(always)]
238 fn inline_size(_context: fidl::encoding::Context) -> usize {
239 std::mem::size_of::<u32>()
240 }
241
242 #[inline(always)]
243 fn encode_is_copy() -> bool {
244 true
245 }
246
247 #[inline(always)]
248 fn decode_is_copy() -> bool {
249 false
250 }
251 }
252
253 impl fidl::encoding::ValueTypeMarker for WlanSoftmacHardwareCapabilityBit {
254 type Borrowed<'a> = Self;
255 #[inline(always)]
256 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
257 *value
258 }
259 }
260
261 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
262 for WlanSoftmacHardwareCapabilityBit
263 {
264 #[inline]
265 unsafe fn encode(
266 self,
267 encoder: &mut fidl::encoding::Encoder<'_, D>,
268 offset: usize,
269 _depth: fidl::encoding::Depth,
270 ) -> fidl::Result<()> {
271 encoder.debug_check_bounds::<Self>(offset);
272 encoder.write_num(self.into_primitive(), offset);
273 Ok(())
274 }
275 }
276
277 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
278 for WlanSoftmacHardwareCapabilityBit
279 {
280 #[inline(always)]
281 fn new_empty() -> Self {
282 Self::ShortPreamble
283 }
284
285 #[inline]
286 unsafe fn decode(
287 &mut self,
288 decoder: &mut fidl::encoding::Decoder<'_, D>,
289 offset: usize,
290 _depth: fidl::encoding::Depth,
291 ) -> fidl::Result<()> {
292 decoder.debug_check_bounds::<Self>(offset);
293 let prim = decoder.read_num::<u32>(offset);
294
295 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
296 Ok(())
297 }
298 }
299
300 impl fidl::encoding::ValueTypeMarker for WlanWmmAccessCategoryParameters {
301 type Borrowed<'a> = &'a Self;
302 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
303 value
304 }
305 }
306
307 unsafe impl fidl::encoding::TypeMarker for WlanWmmAccessCategoryParameters {
308 type Owned = Self;
309
310 #[inline(always)]
311 fn inline_align(_context: fidl::encoding::Context) -> usize {
312 2
313 }
314
315 #[inline(always)]
316 fn inline_size(_context: fidl::encoding::Context) -> usize {
317 8
318 }
319 }
320
321 unsafe impl<D: fidl::encoding::ResourceDialect>
322 fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>
323 for &WlanWmmAccessCategoryParameters
324 {
325 #[inline]
326 unsafe fn encode(
327 self,
328 encoder: &mut fidl::encoding::Encoder<'_, D>,
329 offset: usize,
330 _depth: fidl::encoding::Depth,
331 ) -> fidl::Result<()> {
332 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
333 fidl::encoding::Encode::<WlanWmmAccessCategoryParameters, D>::encode(
335 (
336 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_min),
337 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_max),
338 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.aifsn),
339 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.txop_limit),
340 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.acm),
341 ),
342 encoder,
343 offset,
344 _depth,
345 )
346 }
347 }
348 unsafe impl<
349 D: fidl::encoding::ResourceDialect,
350 T0: fidl::encoding::Encode<u8, D>,
351 T1: fidl::encoding::Encode<u8, D>,
352 T2: fidl::encoding::Encode<u8, D>,
353 T3: fidl::encoding::Encode<u16, D>,
354 T4: fidl::encoding::Encode<bool, D>,
355 > fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D> for (T0, T1, T2, T3, T4)
356 {
357 #[inline]
358 unsafe fn encode(
359 self,
360 encoder: &mut fidl::encoding::Encoder<'_, D>,
361 offset: usize,
362 depth: fidl::encoding::Depth,
363 ) -> fidl::Result<()> {
364 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
365 unsafe {
368 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
369 (ptr as *mut u16).write_unaligned(0);
370 }
371 unsafe {
372 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(6);
373 (ptr as *mut u16).write_unaligned(0);
374 }
375 self.0.encode(encoder, offset + 0, depth)?;
377 self.1.encode(encoder, offset + 1, depth)?;
378 self.2.encode(encoder, offset + 2, depth)?;
379 self.3.encode(encoder, offset + 4, depth)?;
380 self.4.encode(encoder, offset + 6, depth)?;
381 Ok(())
382 }
383 }
384
385 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
386 for WlanWmmAccessCategoryParameters
387 {
388 #[inline(always)]
389 fn new_empty() -> Self {
390 Self {
391 ecw_min: fidl::new_empty!(u8, D),
392 ecw_max: fidl::new_empty!(u8, D),
393 aifsn: fidl::new_empty!(u8, D),
394 txop_limit: fidl::new_empty!(u16, D),
395 acm: fidl::new_empty!(bool, D),
396 }
397 }
398
399 #[inline]
400 unsafe fn decode(
401 &mut self,
402 decoder: &mut fidl::encoding::Decoder<'_, D>,
403 offset: usize,
404 _depth: fidl::encoding::Depth,
405 ) -> fidl::Result<()> {
406 decoder.debug_check_bounds::<Self>(offset);
407 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(2) };
409 let padval = unsafe { (ptr as *const u16).read_unaligned() };
410 let mask = 0xff00u16;
411 let maskedval = padval & mask;
412 if maskedval != 0 {
413 return Err(fidl::Error::NonZeroPadding {
414 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
415 });
416 }
417 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(6) };
418 let padval = unsafe { (ptr as *const u16).read_unaligned() };
419 let mask = 0xff00u16;
420 let maskedval = padval & mask;
421 if maskedval != 0 {
422 return Err(fidl::Error::NonZeroPadding {
423 padding_start: offset + 6 + ((mask as u64).trailing_zeros() / 8) as usize,
424 });
425 }
426 fidl::decode!(u8, D, &mut self.ecw_min, decoder, offset + 0, _depth)?;
427 fidl::decode!(u8, D, &mut self.ecw_max, decoder, offset + 1, _depth)?;
428 fidl::decode!(u8, D, &mut self.aifsn, decoder, offset + 2, _depth)?;
429 fidl::decode!(u16, D, &mut self.txop_limit, decoder, offset + 4, _depth)?;
430 fidl::decode!(bool, D, &mut self.acm, decoder, offset + 6, _depth)?;
431 Ok(())
432 }
433 }
434
435 impl fidl::encoding::ValueTypeMarker for WlanWmmParameters {
436 type Borrowed<'a> = &'a Self;
437 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
438 value
439 }
440 }
441
442 unsafe impl fidl::encoding::TypeMarker for WlanWmmParameters {
443 type Owned = Self;
444
445 #[inline(always)]
446 fn inline_align(_context: fidl::encoding::Context) -> usize {
447 2
448 }
449
450 #[inline(always)]
451 fn inline_size(_context: fidl::encoding::Context) -> usize {
452 34
453 }
454 }
455
456 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanWmmParameters, D>
457 for &WlanWmmParameters
458 {
459 #[inline]
460 unsafe fn encode(
461 self,
462 encoder: &mut fidl::encoding::Encoder<'_, D>,
463 offset: usize,
464 _depth: fidl::encoding::Depth,
465 ) -> fidl::Result<()> {
466 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
467 fidl::encoding::Encode::<WlanWmmParameters, D>::encode(
469 (
470 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.apsd),
471 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
472 &self.ac_be_params,
473 ),
474 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
475 &self.ac_bk_params,
476 ),
477 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
478 &self.ac_vi_params,
479 ),
480 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
481 &self.ac_vo_params,
482 ),
483 ),
484 encoder,
485 offset,
486 _depth,
487 )
488 }
489 }
490 unsafe impl<
491 D: fidl::encoding::ResourceDialect,
492 T0: fidl::encoding::Encode<bool, D>,
493 T1: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
494 T2: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
495 T3: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
496 T4: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
497 > fidl::encoding::Encode<WlanWmmParameters, D> for (T0, T1, T2, T3, T4)
498 {
499 #[inline]
500 unsafe fn encode(
501 self,
502 encoder: &mut fidl::encoding::Encoder<'_, D>,
503 offset: usize,
504 depth: fidl::encoding::Depth,
505 ) -> fidl::Result<()> {
506 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
507 unsafe {
510 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
511 (ptr as *mut u16).write_unaligned(0);
512 }
513 self.0.encode(encoder, offset + 0, depth)?;
515 self.1.encode(encoder, offset + 2, depth)?;
516 self.2.encode(encoder, offset + 10, depth)?;
517 self.3.encode(encoder, offset + 18, depth)?;
518 self.4.encode(encoder, offset + 26, depth)?;
519 Ok(())
520 }
521 }
522
523 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanWmmParameters {
524 #[inline(always)]
525 fn new_empty() -> Self {
526 Self {
527 apsd: fidl::new_empty!(bool, D),
528 ac_be_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
529 ac_bk_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
530 ac_vi_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
531 ac_vo_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
532 }
533 }
534
535 #[inline]
536 unsafe fn decode(
537 &mut self,
538 decoder: &mut fidl::encoding::Decoder<'_, D>,
539 offset: usize,
540 _depth: fidl::encoding::Depth,
541 ) -> fidl::Result<()> {
542 decoder.debug_check_bounds::<Self>(offset);
543 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
545 let padval = unsafe { (ptr as *const u16).read_unaligned() };
546 let mask = 0xff00u16;
547 let maskedval = padval & mask;
548 if maskedval != 0 {
549 return Err(fidl::Error::NonZeroPadding {
550 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
551 });
552 }
553 fidl::decode!(bool, D, &mut self.apsd, decoder, offset + 0, _depth)?;
554 fidl::decode!(
555 WlanWmmAccessCategoryParameters,
556 D,
557 &mut self.ac_be_params,
558 decoder,
559 offset + 2,
560 _depth
561 )?;
562 fidl::decode!(
563 WlanWmmAccessCategoryParameters,
564 D,
565 &mut self.ac_bk_params,
566 decoder,
567 offset + 10,
568 _depth
569 )?;
570 fidl::decode!(
571 WlanWmmAccessCategoryParameters,
572 D,
573 &mut self.ac_vi_params,
574 decoder,
575 offset + 18,
576 _depth
577 )?;
578 fidl::decode!(
579 WlanWmmAccessCategoryParameters,
580 D,
581 &mut self.ac_vo_params,
582 decoder,
583 offset + 26,
584 _depth
585 )?;
586 Ok(())
587 }
588 }
589
590 impl JoinBssRequest {
591 #[inline(always)]
592 fn max_ordinal_present(&self) -> u64 {
593 if let Some(_) = self.beacon_period {
594 return 4;
595 }
596 if let Some(_) = self.remote {
597 return 3;
598 }
599 if let Some(_) = self.bss_type {
600 return 2;
601 }
602 if let Some(_) = self.bssid {
603 return 1;
604 }
605 0
606 }
607 }
608
609 impl fidl::encoding::ValueTypeMarker for JoinBssRequest {
610 type Borrowed<'a> = &'a Self;
611 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
612 value
613 }
614 }
615
616 unsafe impl fidl::encoding::TypeMarker for JoinBssRequest {
617 type Owned = Self;
618
619 #[inline(always)]
620 fn inline_align(_context: fidl::encoding::Context) -> usize {
621 8
622 }
623
624 #[inline(always)]
625 fn inline_size(_context: fidl::encoding::Context) -> usize {
626 16
627 }
628 }
629
630 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinBssRequest, D>
631 for &JoinBssRequest
632 {
633 unsafe fn encode(
634 self,
635 encoder: &mut fidl::encoding::Encoder<'_, D>,
636 offset: usize,
637 mut depth: fidl::encoding::Depth,
638 ) -> fidl::Result<()> {
639 encoder.debug_check_bounds::<JoinBssRequest>(offset);
640 let max_ordinal: u64 = self.max_ordinal_present();
642 encoder.write_num(max_ordinal, offset);
643 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
644 if max_ordinal == 0 {
646 return Ok(());
647 }
648 depth.increment()?;
649 let envelope_size = 8;
650 let bytes_len = max_ordinal as usize * envelope_size;
651 #[allow(unused_variables)]
652 let offset = encoder.out_of_line_offset(bytes_len);
653 let mut _prev_end_offset: usize = 0;
654 if 1 > max_ordinal {
655 return Ok(());
656 }
657
658 let cur_offset: usize = (1 - 1) * envelope_size;
661
662 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
664
665 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
670 self.bssid
671 .as_ref()
672 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
673 encoder,
674 offset + cur_offset,
675 depth,
676 )?;
677
678 _prev_end_offset = cur_offset + envelope_size;
679 if 2 > max_ordinal {
680 return Ok(());
681 }
682
683 let cur_offset: usize = (2 - 1) * envelope_size;
686
687 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
689
690 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::BssType, D>(
695 self.bss_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::BssType as fidl::encoding::ValueTypeMarker>::borrow),
696 encoder, offset + cur_offset, depth
697 )?;
698
699 _prev_end_offset = cur_offset + envelope_size;
700 if 3 > max_ordinal {
701 return Ok(());
702 }
703
704 let cur_offset: usize = (3 - 1) * envelope_size;
707
708 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
710
711 fidl::encoding::encode_in_envelope_optional::<bool, D>(
716 self.remote.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
717 encoder,
718 offset + cur_offset,
719 depth,
720 )?;
721
722 _prev_end_offset = cur_offset + envelope_size;
723 if 4 > max_ordinal {
724 return Ok(());
725 }
726
727 let cur_offset: usize = (4 - 1) * envelope_size;
730
731 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
733
734 fidl::encoding::encode_in_envelope_optional::<u16, D>(
739 self.beacon_period.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
740 encoder,
741 offset + cur_offset,
742 depth,
743 )?;
744
745 _prev_end_offset = cur_offset + envelope_size;
746
747 Ok(())
748 }
749 }
750
751 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinBssRequest {
752 #[inline(always)]
753 fn new_empty() -> Self {
754 Self::default()
755 }
756
757 unsafe fn decode(
758 &mut self,
759 decoder: &mut fidl::encoding::Decoder<'_, D>,
760 offset: usize,
761 mut depth: fidl::encoding::Depth,
762 ) -> fidl::Result<()> {
763 decoder.debug_check_bounds::<Self>(offset);
764 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
765 None => return Err(fidl::Error::NotNullable),
766 Some(len) => len,
767 };
768 if len == 0 {
770 return Ok(());
771 };
772 depth.increment()?;
773 let envelope_size = 8;
774 let bytes_len = len * envelope_size;
775 let offset = decoder.out_of_line_offset(bytes_len)?;
776 let mut _next_ordinal_to_read = 0;
778 let mut next_offset = offset;
779 let end_offset = offset + bytes_len;
780 _next_ordinal_to_read += 1;
781 if next_offset >= end_offset {
782 return Ok(());
783 }
784
785 while _next_ordinal_to_read < 1 {
787 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
788 _next_ordinal_to_read += 1;
789 next_offset += envelope_size;
790 }
791
792 let next_out_of_line = decoder.next_out_of_line();
793 let handles_before = decoder.remaining_handles();
794 if let Some((inlined, num_bytes, num_handles)) =
795 fidl::encoding::decode_envelope_header(decoder, next_offset)?
796 {
797 let member_inline_size =
798 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
799 decoder.context,
800 );
801 if inlined != (member_inline_size <= 4) {
802 return Err(fidl::Error::InvalidInlineBitInEnvelope);
803 }
804 let inner_offset;
805 let mut inner_depth = depth.clone();
806 if inlined {
807 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
808 inner_offset = next_offset;
809 } else {
810 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
811 inner_depth.increment()?;
812 }
813 let val_ref = self
814 .bssid
815 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
816 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
817 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
818 {
819 return Err(fidl::Error::InvalidNumBytesInEnvelope);
820 }
821 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
822 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
823 }
824 }
825
826 next_offset += envelope_size;
827 _next_ordinal_to_read += 1;
828 if next_offset >= end_offset {
829 return Ok(());
830 }
831
832 while _next_ordinal_to_read < 2 {
834 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
835 _next_ordinal_to_read += 1;
836 next_offset += envelope_size;
837 }
838
839 let next_out_of_line = decoder.next_out_of_line();
840 let handles_before = decoder.remaining_handles();
841 if let Some((inlined, num_bytes, num_handles)) =
842 fidl::encoding::decode_envelope_header(decoder, next_offset)?
843 {
844 let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
845 if inlined != (member_inline_size <= 4) {
846 return Err(fidl::Error::InvalidInlineBitInEnvelope);
847 }
848 let inner_offset;
849 let mut inner_depth = depth.clone();
850 if inlined {
851 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
852 inner_offset = next_offset;
853 } else {
854 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
855 inner_depth.increment()?;
856 }
857 let val_ref = self.bss_type.get_or_insert_with(|| {
858 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::BssType, D)
859 });
860 fidl::decode!(
861 fidl_fuchsia_wlan_ieee80211__common::BssType,
862 D,
863 val_ref,
864 decoder,
865 inner_offset,
866 inner_depth
867 )?;
868 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
869 {
870 return Err(fidl::Error::InvalidNumBytesInEnvelope);
871 }
872 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
873 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
874 }
875 }
876
877 next_offset += envelope_size;
878 _next_ordinal_to_read += 1;
879 if next_offset >= end_offset {
880 return Ok(());
881 }
882
883 while _next_ordinal_to_read < 3 {
885 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
886 _next_ordinal_to_read += 1;
887 next_offset += envelope_size;
888 }
889
890 let next_out_of_line = decoder.next_out_of_line();
891 let handles_before = decoder.remaining_handles();
892 if let Some((inlined, num_bytes, num_handles)) =
893 fidl::encoding::decode_envelope_header(decoder, next_offset)?
894 {
895 let member_inline_size =
896 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
897 if inlined != (member_inline_size <= 4) {
898 return Err(fidl::Error::InvalidInlineBitInEnvelope);
899 }
900 let inner_offset;
901 let mut inner_depth = depth.clone();
902 if inlined {
903 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
904 inner_offset = next_offset;
905 } else {
906 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
907 inner_depth.increment()?;
908 }
909 let val_ref = self.remote.get_or_insert_with(|| fidl::new_empty!(bool, D));
910 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
911 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
912 {
913 return Err(fidl::Error::InvalidNumBytesInEnvelope);
914 }
915 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
916 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
917 }
918 }
919
920 next_offset += envelope_size;
921 _next_ordinal_to_read += 1;
922 if next_offset >= end_offset {
923 return Ok(());
924 }
925
926 while _next_ordinal_to_read < 4 {
928 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
929 _next_ordinal_to_read += 1;
930 next_offset += envelope_size;
931 }
932
933 let next_out_of_line = decoder.next_out_of_line();
934 let handles_before = decoder.remaining_handles();
935 if let Some((inlined, num_bytes, num_handles)) =
936 fidl::encoding::decode_envelope_header(decoder, next_offset)?
937 {
938 let member_inline_size =
939 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
940 if inlined != (member_inline_size <= 4) {
941 return Err(fidl::Error::InvalidInlineBitInEnvelope);
942 }
943 let inner_offset;
944 let mut inner_depth = depth.clone();
945 if inlined {
946 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
947 inner_offset = next_offset;
948 } else {
949 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
950 inner_depth.increment()?;
951 }
952 let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u16, D));
953 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
954 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
955 {
956 return Err(fidl::Error::InvalidNumBytesInEnvelope);
957 }
958 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
959 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
960 }
961 }
962
963 next_offset += envelope_size;
964
965 while next_offset < end_offset {
967 _next_ordinal_to_read += 1;
968 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
969 next_offset += envelope_size;
970 }
971
972 Ok(())
973 }
974 }
975
976 impl WlanKeyConfig {
977 #[inline(always)]
978 fn max_ordinal_present(&self) -> u64 {
979 if let Some(_) = self.rsc {
980 return 8;
981 }
982 if let Some(_) = self.key {
983 return 7;
984 }
985 if let Some(_) = self.key_idx {
986 return 6;
987 }
988 if let Some(_) = self.peer_addr {
989 return 5;
990 }
991 if let Some(_) = self.key_type {
992 return 4;
993 }
994 if let Some(_) = self.cipher_type {
995 return 3;
996 }
997 if let Some(_) = self.cipher_oui {
998 return 2;
999 }
1000 if let Some(_) = self.protection {
1001 return 1;
1002 }
1003 0
1004 }
1005 }
1006
1007 impl fidl::encoding::ValueTypeMarker for WlanKeyConfig {
1008 type Borrowed<'a> = &'a Self;
1009 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1010 value
1011 }
1012 }
1013
1014 unsafe impl fidl::encoding::TypeMarker for WlanKeyConfig {
1015 type Owned = Self;
1016
1017 #[inline(always)]
1018 fn inline_align(_context: fidl::encoding::Context) -> usize {
1019 8
1020 }
1021
1022 #[inline(always)]
1023 fn inline_size(_context: fidl::encoding::Context) -> usize {
1024 16
1025 }
1026 }
1027
1028 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanKeyConfig, D>
1029 for &WlanKeyConfig
1030 {
1031 unsafe fn encode(
1032 self,
1033 encoder: &mut fidl::encoding::Encoder<'_, D>,
1034 offset: usize,
1035 mut depth: fidl::encoding::Depth,
1036 ) -> fidl::Result<()> {
1037 encoder.debug_check_bounds::<WlanKeyConfig>(offset);
1038 let max_ordinal: u64 = self.max_ordinal_present();
1040 encoder.write_num(max_ordinal, offset);
1041 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1042 if max_ordinal == 0 {
1044 return Ok(());
1045 }
1046 depth.increment()?;
1047 let envelope_size = 8;
1048 let bytes_len = max_ordinal as usize * envelope_size;
1049 #[allow(unused_variables)]
1050 let offset = encoder.out_of_line_offset(bytes_len);
1051 let mut _prev_end_offset: usize = 0;
1052 if 1 > max_ordinal {
1053 return Ok(());
1054 }
1055
1056 let cur_offset: usize = (1 - 1) * envelope_size;
1059
1060 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1062
1063 fidl::encoding::encode_in_envelope_optional::<WlanProtection, D>(
1068 self.protection
1069 .as_ref()
1070 .map(<WlanProtection as fidl::encoding::ValueTypeMarker>::borrow),
1071 encoder,
1072 offset + cur_offset,
1073 depth,
1074 )?;
1075
1076 _prev_end_offset = cur_offset + envelope_size;
1077 if 2 > max_ordinal {
1078 return Ok(());
1079 }
1080
1081 let cur_offset: usize = (2 - 1) * envelope_size;
1084
1085 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1087
1088 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 3>, D>(
1093 self.cipher_oui
1094 .as_ref()
1095 .map(<fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow),
1096 encoder,
1097 offset + cur_offset,
1098 depth,
1099 )?;
1100
1101 _prev_end_offset = cur_offset + envelope_size;
1102 if 3 > max_ordinal {
1103 return Ok(());
1104 }
1105
1106 let cur_offset: usize = (3 - 1) * envelope_size;
1109
1110 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1112
1113 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>(
1118 self.cipher_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow),
1119 encoder, offset + cur_offset, depth
1120 )?;
1121
1122 _prev_end_offset = cur_offset + envelope_size;
1123 if 4 > max_ordinal {
1124 return Ok(());
1125 }
1126
1127 let cur_offset: usize = (4 - 1) * envelope_size;
1130
1131 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1133
1134 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::KeyType, D>(
1139 self.key_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::KeyType as fidl::encoding::ValueTypeMarker>::borrow),
1140 encoder, offset + cur_offset, depth
1141 )?;
1142
1143 _prev_end_offset = cur_offset + envelope_size;
1144 if 5 > max_ordinal {
1145 return Ok(());
1146 }
1147
1148 let cur_offset: usize = (5 - 1) * envelope_size;
1151
1152 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1154
1155 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
1160 self.peer_addr
1161 .as_ref()
1162 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
1163 encoder,
1164 offset + cur_offset,
1165 depth,
1166 )?;
1167
1168 _prev_end_offset = cur_offset + envelope_size;
1169 if 6 > max_ordinal {
1170 return Ok(());
1171 }
1172
1173 let cur_offset: usize = (6 - 1) * envelope_size;
1176
1177 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1179
1180 fidl::encoding::encode_in_envelope_optional::<u8, D>(
1185 self.key_idx.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
1186 encoder,
1187 offset + cur_offset,
1188 depth,
1189 )?;
1190
1191 _prev_end_offset = cur_offset + envelope_size;
1192 if 7 > max_ordinal {
1193 return Ok(());
1194 }
1195
1196 let cur_offset: usize = (7 - 1) * envelope_size;
1199
1200 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1202
1203 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
1208 self.key.as_ref().map(
1209 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
1210 ),
1211 encoder,
1212 offset + cur_offset,
1213 depth,
1214 )?;
1215
1216 _prev_end_offset = cur_offset + envelope_size;
1217 if 8 > max_ordinal {
1218 return Ok(());
1219 }
1220
1221 let cur_offset: usize = (8 - 1) * envelope_size;
1224
1225 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1227
1228 fidl::encoding::encode_in_envelope_optional::<u64, D>(
1233 self.rsc.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
1234 encoder,
1235 offset + cur_offset,
1236 depth,
1237 )?;
1238
1239 _prev_end_offset = cur_offset + envelope_size;
1240
1241 Ok(())
1242 }
1243 }
1244
1245 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyConfig {
1246 #[inline(always)]
1247 fn new_empty() -> Self {
1248 Self::default()
1249 }
1250
1251 unsafe fn decode(
1252 &mut self,
1253 decoder: &mut fidl::encoding::Decoder<'_, D>,
1254 offset: usize,
1255 mut depth: fidl::encoding::Depth,
1256 ) -> fidl::Result<()> {
1257 decoder.debug_check_bounds::<Self>(offset);
1258 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1259 None => return Err(fidl::Error::NotNullable),
1260 Some(len) => len,
1261 };
1262 if len == 0 {
1264 return Ok(());
1265 };
1266 depth.increment()?;
1267 let envelope_size = 8;
1268 let bytes_len = len * envelope_size;
1269 let offset = decoder.out_of_line_offset(bytes_len)?;
1270 let mut _next_ordinal_to_read = 0;
1272 let mut next_offset = offset;
1273 let end_offset = offset + bytes_len;
1274 _next_ordinal_to_read += 1;
1275 if next_offset >= end_offset {
1276 return Ok(());
1277 }
1278
1279 while _next_ordinal_to_read < 1 {
1281 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1282 _next_ordinal_to_read += 1;
1283 next_offset += envelope_size;
1284 }
1285
1286 let next_out_of_line = decoder.next_out_of_line();
1287 let handles_before = decoder.remaining_handles();
1288 if let Some((inlined, num_bytes, num_handles)) =
1289 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1290 {
1291 let member_inline_size =
1292 <WlanProtection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1293 if inlined != (member_inline_size <= 4) {
1294 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1295 }
1296 let inner_offset;
1297 let mut inner_depth = depth.clone();
1298 if inlined {
1299 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1300 inner_offset = next_offset;
1301 } else {
1302 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1303 inner_depth.increment()?;
1304 }
1305 let val_ref =
1306 self.protection.get_or_insert_with(|| fidl::new_empty!(WlanProtection, D));
1307 fidl::decode!(WlanProtection, D, val_ref, decoder, inner_offset, inner_depth)?;
1308 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1309 {
1310 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1311 }
1312 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1313 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1314 }
1315 }
1316
1317 next_offset += envelope_size;
1318 _next_ordinal_to_read += 1;
1319 if next_offset >= end_offset {
1320 return Ok(());
1321 }
1322
1323 while _next_ordinal_to_read < 2 {
1325 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1326 _next_ordinal_to_read += 1;
1327 next_offset += envelope_size;
1328 }
1329
1330 let next_out_of_line = decoder.next_out_of_line();
1331 let handles_before = decoder.remaining_handles();
1332 if let Some((inlined, num_bytes, num_handles)) =
1333 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1334 {
1335 let member_inline_size =
1336 <fidl::encoding::Array<u8, 3> as fidl::encoding::TypeMarker>::inline_size(
1337 decoder.context,
1338 );
1339 if inlined != (member_inline_size <= 4) {
1340 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1341 }
1342 let inner_offset;
1343 let mut inner_depth = depth.clone();
1344 if inlined {
1345 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1346 inner_offset = next_offset;
1347 } else {
1348 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1349 inner_depth.increment()?;
1350 }
1351 let val_ref = self
1352 .cipher_oui
1353 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 3>, D));
1354 fidl::decode!(fidl::encoding::Array<u8, 3>, D, val_ref, decoder, inner_offset, inner_depth)?;
1355 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1356 {
1357 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1358 }
1359 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1360 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1361 }
1362 }
1363
1364 next_offset += envelope_size;
1365 _next_ordinal_to_read += 1;
1366 if next_offset >= end_offset {
1367 return Ok(());
1368 }
1369
1370 while _next_ordinal_to_read < 3 {
1372 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1373 _next_ordinal_to_read += 1;
1374 next_offset += envelope_size;
1375 }
1376
1377 let next_out_of_line = decoder.next_out_of_line();
1378 let handles_before = decoder.remaining_handles();
1379 if let Some((inlined, num_bytes, num_handles)) =
1380 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1381 {
1382 let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1383 if inlined != (member_inline_size <= 4) {
1384 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1385 }
1386 let inner_offset;
1387 let mut inner_depth = depth.clone();
1388 if inlined {
1389 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1390 inner_offset = next_offset;
1391 } else {
1392 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1393 inner_depth.increment()?;
1394 }
1395 let val_ref = self.cipher_type.get_or_insert_with(|| {
1396 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D)
1397 });
1398 fidl::decode!(
1399 fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
1400 D,
1401 val_ref,
1402 decoder,
1403 inner_offset,
1404 inner_depth
1405 )?;
1406 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1407 {
1408 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1409 }
1410 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1411 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1412 }
1413 }
1414
1415 next_offset += envelope_size;
1416 _next_ordinal_to_read += 1;
1417 if next_offset >= end_offset {
1418 return Ok(());
1419 }
1420
1421 while _next_ordinal_to_read < 4 {
1423 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1424 _next_ordinal_to_read += 1;
1425 next_offset += envelope_size;
1426 }
1427
1428 let next_out_of_line = decoder.next_out_of_line();
1429 let handles_before = decoder.remaining_handles();
1430 if let Some((inlined, num_bytes, num_handles)) =
1431 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1432 {
1433 let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::KeyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1434 if inlined != (member_inline_size <= 4) {
1435 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1436 }
1437 let inner_offset;
1438 let mut inner_depth = depth.clone();
1439 if inlined {
1440 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1441 inner_offset = next_offset;
1442 } else {
1443 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1444 inner_depth.increment()?;
1445 }
1446 let val_ref = self.key_type.get_or_insert_with(|| {
1447 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::KeyType, D)
1448 });
1449 fidl::decode!(
1450 fidl_fuchsia_wlan_ieee80211__common::KeyType,
1451 D,
1452 val_ref,
1453 decoder,
1454 inner_offset,
1455 inner_depth
1456 )?;
1457 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1458 {
1459 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1460 }
1461 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1462 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1463 }
1464 }
1465
1466 next_offset += envelope_size;
1467 _next_ordinal_to_read += 1;
1468 if next_offset >= end_offset {
1469 return Ok(());
1470 }
1471
1472 while _next_ordinal_to_read < 5 {
1474 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1475 _next_ordinal_to_read += 1;
1476 next_offset += envelope_size;
1477 }
1478
1479 let next_out_of_line = decoder.next_out_of_line();
1480 let handles_before = decoder.remaining_handles();
1481 if let Some((inlined, num_bytes, num_handles)) =
1482 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1483 {
1484 let member_inline_size =
1485 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
1486 decoder.context,
1487 );
1488 if inlined != (member_inline_size <= 4) {
1489 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1490 }
1491 let inner_offset;
1492 let mut inner_depth = depth.clone();
1493 if inlined {
1494 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1495 inner_offset = next_offset;
1496 } else {
1497 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1498 inner_depth.increment()?;
1499 }
1500 let val_ref = self
1501 .peer_addr
1502 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
1503 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
1504 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1505 {
1506 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1507 }
1508 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1509 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1510 }
1511 }
1512
1513 next_offset += envelope_size;
1514 _next_ordinal_to_read += 1;
1515 if next_offset >= end_offset {
1516 return Ok(());
1517 }
1518
1519 while _next_ordinal_to_read < 6 {
1521 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1522 _next_ordinal_to_read += 1;
1523 next_offset += envelope_size;
1524 }
1525
1526 let next_out_of_line = decoder.next_out_of_line();
1527 let handles_before = decoder.remaining_handles();
1528 if let Some((inlined, num_bytes, num_handles)) =
1529 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1530 {
1531 let member_inline_size =
1532 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1533 if inlined != (member_inline_size <= 4) {
1534 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1535 }
1536 let inner_offset;
1537 let mut inner_depth = depth.clone();
1538 if inlined {
1539 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1540 inner_offset = next_offset;
1541 } else {
1542 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1543 inner_depth.increment()?;
1544 }
1545 let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(u8, D));
1546 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
1547 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1548 {
1549 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1550 }
1551 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1552 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1553 }
1554 }
1555
1556 next_offset += envelope_size;
1557 _next_ordinal_to_read += 1;
1558 if next_offset >= end_offset {
1559 return Ok(());
1560 }
1561
1562 while _next_ordinal_to_read < 7 {
1564 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1565 _next_ordinal_to_read += 1;
1566 next_offset += envelope_size;
1567 }
1568
1569 let next_out_of_line = decoder.next_out_of_line();
1570 let handles_before = decoder.remaining_handles();
1571 if let Some((inlined, num_bytes, num_handles)) =
1572 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1573 {
1574 let member_inline_size =
1575 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
1576 decoder.context,
1577 );
1578 if inlined != (member_inline_size <= 4) {
1579 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1580 }
1581 let inner_offset;
1582 let mut inner_depth = depth.clone();
1583 if inlined {
1584 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1585 inner_offset = next_offset;
1586 } else {
1587 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1588 inner_depth.increment()?;
1589 }
1590 let val_ref = self
1591 .key
1592 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
1593 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
1594 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1595 {
1596 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1597 }
1598 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1599 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1600 }
1601 }
1602
1603 next_offset += envelope_size;
1604 _next_ordinal_to_read += 1;
1605 if next_offset >= end_offset {
1606 return Ok(());
1607 }
1608
1609 while _next_ordinal_to_read < 8 {
1611 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1612 _next_ordinal_to_read += 1;
1613 next_offset += envelope_size;
1614 }
1615
1616 let next_out_of_line = decoder.next_out_of_line();
1617 let handles_before = decoder.remaining_handles();
1618 if let Some((inlined, num_bytes, num_handles)) =
1619 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1620 {
1621 let member_inline_size =
1622 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
1623 if inlined != (member_inline_size <= 4) {
1624 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1625 }
1626 let inner_offset;
1627 let mut inner_depth = depth.clone();
1628 if inlined {
1629 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1630 inner_offset = next_offset;
1631 } else {
1632 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1633 inner_depth.increment()?;
1634 }
1635 let val_ref = self.rsc.get_or_insert_with(|| fidl::new_empty!(u64, D));
1636 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
1637 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1638 {
1639 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1640 }
1641 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1642 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1643 }
1644 }
1645
1646 next_offset += envelope_size;
1647
1648 while next_offset < end_offset {
1650 _next_ordinal_to_read += 1;
1651 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1652 next_offset += envelope_size;
1653 }
1654
1655 Ok(())
1656 }
1657 }
1658}