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 CapabilityInfo = u16;
16
17pub type WlanSoftmacHardwareCapability = u32;
18
19pub const MAX_BANDS: u8 = 16;
22
23pub const MAX_SUPPORTED_MAC_ROLES: u8 = 16;
26
27pub const MAX_SUPPORTED_PHY_TYPES: u8 = 64;
30
31pub const WLAN_MAC_MAX_EXT_RATES: u32 = 255;
32
33pub const WLAN_MAC_MAX_SUPP_RATES: u32 = 8;
40
41pub const WLAN_TX_RESULT_MAX_ENTRY: u32 = 8;
42
43pub const WLAN_TX_VECTOR_IDX_INVALID: u16 = 0;
44
45#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
46pub enum BssType {
47 Unknown,
48 Infrastructure,
49 Independent,
50 Mesh,
51 Personal,
52 #[doc(hidden)]
53 __SourceBreaking {
54 unknown_ordinal: u32,
55 },
56}
57
58#[macro_export]
60macro_rules! BssTypeUnknown {
61 () => {
62 _
63 };
64}
65
66impl BssType {
67 #[inline]
68 pub fn from_primitive(prim: u32) -> Option<Self> {
69 match prim {
70 0 => Some(Self::Unknown),
71 1 => Some(Self::Infrastructure),
72 2 => Some(Self::Independent),
73 3 => Some(Self::Mesh),
74 4 => Some(Self::Personal),
75 _ => None,
76 }
77 }
78
79 #[inline]
80 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
81 match prim {
82 0 => Self::Unknown,
83 1 => Self::Infrastructure,
84 2 => Self::Independent,
85 3 => Self::Mesh,
86 4 => Self::Personal,
87 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
88 }
89 }
90
91 #[inline]
92 pub fn unknown() -> Self {
93 Self::__SourceBreaking { unknown_ordinal: 0x0 }
94 }
95
96 #[inline]
97 pub const fn into_primitive(self) -> u32 {
98 match self {
99 Self::Unknown => 0,
100 Self::Infrastructure => 1,
101 Self::Independent => 2,
102 Self::Mesh => 3,
103 Self::Personal => 4,
104 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
105 }
106 }
107
108 #[inline]
109 pub fn is_unknown(&self) -> bool {
110 match self {
111 Self::__SourceBreaking { unknown_ordinal: _ } => true,
112 _ => false,
113 }
114 }
115}
116
117#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
118pub enum ChannelBandwidth {
119 Cbw20,
120 Cbw40,
121 Cbw40Below,
122 Cbw80,
123 Cbw160,
124 Cbw80P80,
125 #[doc(hidden)]
126 __SourceBreaking {
127 unknown_ordinal: u32,
128 },
129}
130
131#[macro_export]
133macro_rules! ChannelBandwidthUnknown {
134 () => {
135 _
136 };
137}
138
139impl ChannelBandwidth {
140 #[inline]
141 pub fn from_primitive(prim: u32) -> Option<Self> {
142 match prim {
143 1 => Some(Self::Cbw20),
144 2 => Some(Self::Cbw40),
145 3 => Some(Self::Cbw40Below),
146 4 => Some(Self::Cbw80),
147 5 => Some(Self::Cbw160),
148 6 => Some(Self::Cbw80P80),
149 _ => None,
150 }
151 }
152
153 #[inline]
154 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
155 match prim {
156 1 => Self::Cbw20,
157 2 => Self::Cbw40,
158 3 => Self::Cbw40Below,
159 4 => Self::Cbw80,
160 5 => Self::Cbw160,
161 6 => Self::Cbw80P80,
162 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
163 }
164 }
165
166 #[inline]
167 pub fn unknown() -> Self {
168 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
169 }
170
171 #[inline]
172 pub const fn into_primitive(self) -> u32 {
173 match self {
174 Self::Cbw20 => 1,
175 Self::Cbw40 => 2,
176 Self::Cbw40Below => 3,
177 Self::Cbw80 => 4,
178 Self::Cbw160 => 5,
179 Self::Cbw80P80 => 6,
180 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
181 }
182 }
183
184 #[inline]
185 pub fn is_unknown(&self) -> bool {
186 match self {
187 Self::__SourceBreaking { unknown_ordinal: _ } => true,
188 _ => false,
189 }
190 }
191}
192
193#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
195pub enum DataPlaneType {
196 EthernetDevice,
197 GenericNetworkDevice,
198 #[doc(hidden)]
199 __SourceBreaking {
200 unknown_ordinal: u8,
201 },
202}
203
204#[macro_export]
206macro_rules! DataPlaneTypeUnknown {
207 () => {
208 _
209 };
210}
211
212impl DataPlaneType {
213 #[inline]
214 pub fn from_primitive(prim: u8) -> Option<Self> {
215 match prim {
216 1 => Some(Self::EthernetDevice),
217 2 => Some(Self::GenericNetworkDevice),
218 _ => None,
219 }
220 }
221
222 #[inline]
223 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
224 match prim {
225 1 => Self::EthernetDevice,
226 2 => Self::GenericNetworkDevice,
227 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
228 }
229 }
230
231 #[inline]
232 pub fn unknown() -> Self {
233 Self::__SourceBreaking { unknown_ordinal: 0xff }
234 }
235
236 #[inline]
237 pub const fn into_primitive(self) -> u8 {
238 match self {
239 Self::EthernetDevice => 1,
240 Self::GenericNetworkDevice => 2,
241 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
242 }
243 }
244
245 #[inline]
246 pub fn is_unknown(&self) -> bool {
247 match self {
248 Self::__SourceBreaking { unknown_ordinal: _ } => true,
249 _ => false,
250 }
251 }
252}
253
254#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
257#[repr(u8)]
258pub enum GuardInterval {
259 LongGi = 1,
260 ShortGi = 2,
261}
262
263impl GuardInterval {
264 #[inline]
265 pub fn from_primitive(prim: u8) -> Option<Self> {
266 match prim {
267 1 => Some(Self::LongGi),
268 2 => Some(Self::ShortGi),
269 _ => None,
270 }
271 }
272
273 #[inline]
274 pub const fn into_primitive(self) -> u8 {
275 self as u8
276 }
277}
278
279#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
281pub enum MacImplementationType {
282 Softmac,
283 Fullmac,
284 #[doc(hidden)]
285 __SourceBreaking {
286 unknown_ordinal: u8,
287 },
288}
289
290#[macro_export]
292macro_rules! MacImplementationTypeUnknown {
293 () => {
294 _
295 };
296}
297
298impl MacImplementationType {
299 #[inline]
300 pub fn from_primitive(prim: u8) -> Option<Self> {
301 match prim {
302 1 => Some(Self::Softmac),
303 2 => Some(Self::Fullmac),
304 _ => None,
305 }
306 }
307
308 #[inline]
309 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
310 match prim {
311 1 => Self::Softmac,
312 2 => Self::Fullmac,
313 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
314 }
315 }
316
317 #[inline]
318 pub fn unknown() -> Self {
319 Self::__SourceBreaking { unknown_ordinal: 0xff }
320 }
321
322 #[inline]
323 pub const fn into_primitive(self) -> u8 {
324 match self {
325 Self::Softmac => 1,
326 Self::Fullmac => 2,
327 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
328 }
329 }
330
331 #[inline]
332 pub fn is_unknown(&self) -> bool {
333 match self {
334 Self::__SourceBreaking { unknown_ordinal: _ } => true,
335 _ => false,
336 }
337 }
338}
339
340#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
341#[repr(u32)]
342pub enum PowerSaveType {
343 PsModeUltraLowPower = 0,
344 PsModeLowPower = 1,
345 PsModeBalanced = 2,
346 PsModePerformance = 3,
347}
348
349impl PowerSaveType {
350 #[inline]
351 pub fn from_primitive(prim: u32) -> Option<Self> {
352 match prim {
353 0 => Some(Self::PsModeUltraLowPower),
354 1 => Some(Self::PsModeLowPower),
355 2 => Some(Self::PsModeBalanced),
356 3 => Some(Self::PsModePerformance),
357 _ => None,
358 }
359 }
360
361 #[inline]
362 pub const fn into_primitive(self) -> u32 {
363 self as u32
364 }
365}
366
367#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
368#[repr(u32)]
369pub enum ScanType {
370 Active = 1,
371 Passive = 2,
372}
373
374impl ScanType {
375 #[inline]
376 pub fn from_primitive(prim: u32) -> Option<Self> {
377 match prim {
378 1 => Some(Self::Active),
379 2 => Some(Self::Passive),
380 _ => None,
381 }
382 }
383
384 #[inline]
385 pub const fn into_primitive(self) -> u32 {
386 self as u32
387 }
388}
389
390#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
391pub enum WlanKeyType {
392 Pairwise,
393 Group,
394 Igtk,
395 Peer,
396 #[doc(hidden)]
397 __SourceBreaking {
398 unknown_ordinal: u8,
399 },
400}
401
402#[macro_export]
404macro_rules! WlanKeyTypeUnknown {
405 () => {
406 _
407 };
408}
409
410impl WlanKeyType {
411 #[inline]
412 pub fn from_primitive(prim: u8) -> Option<Self> {
413 match prim {
414 1 => Some(Self::Pairwise),
415 2 => Some(Self::Group),
416 3 => Some(Self::Igtk),
417 4 => Some(Self::Peer),
418 _ => None,
419 }
420 }
421
422 #[inline]
423 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
424 match prim {
425 1 => Self::Pairwise,
426 2 => Self::Group,
427 3 => Self::Igtk,
428 4 => Self::Peer,
429 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
430 }
431 }
432
433 #[inline]
434 pub fn unknown() -> Self {
435 Self::__SourceBreaking { unknown_ordinal: 0xff }
436 }
437
438 #[inline]
439 pub const fn into_primitive(self) -> u8 {
440 match self {
441 Self::Pairwise => 1,
442 Self::Group => 2,
443 Self::Igtk => 3,
444 Self::Peer => 4,
445 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
446 }
447 }
448
449 #[inline]
450 pub fn is_unknown(&self) -> bool {
451 match self {
452 Self::__SourceBreaking { unknown_ordinal: _ } => true,
453 _ => false,
454 }
455 }
456}
457
458#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
459pub enum WlanMacRole {
460 Client,
461 Ap,
462 Mesh,
463 #[doc(hidden)]
464 __SourceBreaking {
465 unknown_ordinal: u32,
466 },
467}
468
469#[macro_export]
471macro_rules! WlanMacRoleUnknown {
472 () => {
473 _
474 };
475}
476
477impl WlanMacRole {
478 #[inline]
479 pub fn from_primitive(prim: u32) -> Option<Self> {
480 match prim {
481 1 => Some(Self::Client),
482 2 => Some(Self::Ap),
483 3 => Some(Self::Mesh),
484 _ => None,
485 }
486 }
487
488 #[inline]
489 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
490 match prim {
491 1 => Self::Client,
492 2 => Self::Ap,
493 3 => Self::Mesh,
494 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
495 }
496 }
497
498 #[inline]
499 pub fn unknown() -> Self {
500 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
501 }
502
503 #[inline]
504 pub const fn into_primitive(self) -> u32 {
505 match self {
506 Self::Client => 1,
507 Self::Ap => 2,
508 Self::Mesh => 3,
509 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
510 }
511 }
512
513 #[inline]
514 pub fn is_unknown(&self) -> bool {
515 match self {
516 Self::__SourceBreaking { unknown_ordinal: _ } => true,
517 _ => false,
518 }
519 }
520}
521
522#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
525pub enum WlanPhyType {
526 Dsss,
530 Hr,
535 Ofdm,
539 Erp,
544 Ht,
548 Dmg,
551 Vht,
555 Tvht,
559 S1G,
562 Cdmg,
565 Cmmg,
568 He,
571 #[doc(hidden)]
572 __SourceBreaking { unknown_ordinal: u32 },
573}
574
575#[macro_export]
577macro_rules! WlanPhyTypeUnknown {
578 () => {
579 _
580 };
581}
582
583impl WlanPhyType {
584 #[inline]
585 pub fn from_primitive(prim: u32) -> Option<Self> {
586 match prim {
587 1 => Some(Self::Dsss),
588 2 => Some(Self::Hr),
589 3 => Some(Self::Ofdm),
590 4 => Some(Self::Erp),
591 5 => Some(Self::Ht),
592 6 => Some(Self::Dmg),
593 7 => Some(Self::Vht),
594 8 => Some(Self::Tvht),
595 9 => Some(Self::S1G),
596 10 => Some(Self::Cdmg),
597 11 => Some(Self::Cmmg),
598 12 => Some(Self::He),
599 _ => None,
600 }
601 }
602
603 #[inline]
604 pub fn from_primitive_allow_unknown(prim: u32) -> Self {
605 match prim {
606 1 => Self::Dsss,
607 2 => Self::Hr,
608 3 => Self::Ofdm,
609 4 => Self::Erp,
610 5 => Self::Ht,
611 6 => Self::Dmg,
612 7 => Self::Vht,
613 8 => Self::Tvht,
614 9 => Self::S1G,
615 10 => Self::Cdmg,
616 11 => Self::Cmmg,
617 12 => Self::He,
618 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
619 }
620 }
621
622 #[inline]
623 pub fn unknown() -> Self {
624 Self::__SourceBreaking { unknown_ordinal: 0xffffffff }
625 }
626
627 #[inline]
628 pub const fn into_primitive(self) -> u32 {
629 match self {
630 Self::Dsss => 1,
631 Self::Hr => 2,
632 Self::Ofdm => 3,
633 Self::Erp => 4,
634 Self::Ht => 5,
635 Self::Dmg => 6,
636 Self::Vht => 7,
637 Self::Tvht => 8,
638 Self::S1G => 9,
639 Self::Cdmg => 10,
640 Self::Cmmg => 11,
641 Self::He => 12,
642 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
643 }
644 }
645
646 #[inline]
647 pub fn is_unknown(&self) -> bool {
648 match self {
649 Self::__SourceBreaking { unknown_ordinal: _ } => true,
650 _ => false,
651 }
652 }
653}
654
655#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
656#[repr(u8)]
657pub enum WlanProtection {
658 None = 0,
659 Rx = 1,
660 Tx = 2,
661 RxTx = 3,
662}
663
664impl WlanProtection {
665 #[inline]
666 pub fn from_primitive(prim: u8) -> Option<Self> {
667 match prim {
668 0 => Some(Self::None),
669 1 => Some(Self::Rx),
670 2 => Some(Self::Tx),
671 3 => Some(Self::RxTx),
672 _ => None,
673 }
674 }
675
676 #[inline]
677 pub const fn into_primitive(self) -> u8 {
678 self as u8
679 }
680}
681
682#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
683#[repr(u32)]
684pub enum WlanSoftmacHardwareCapabilityBit {
685 ShortPreamble = 32,
687 SpectrumMgmt = 256,
689 Qos = 512,
690 ShortSlotTime = 1024,
692 RadioMsmt = 4096,
694 SimultaneousClientAp = 65536,
695}
696
697impl WlanSoftmacHardwareCapabilityBit {
698 #[inline]
699 pub fn from_primitive(prim: u32) -> Option<Self> {
700 match prim {
701 32 => Some(Self::ShortPreamble),
702 256 => Some(Self::SpectrumMgmt),
703 512 => Some(Self::Qos),
704 1024 => Some(Self::ShortSlotTime),
705 4096 => Some(Self::RadioMsmt),
706 65536 => Some(Self::SimultaneousClientAp),
707 _ => None,
708 }
709 }
710
711 #[inline]
712 pub const fn into_primitive(self) -> u32 {
713 self as u32
714 }
715}
716
717#[derive(Copy, Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
719pub enum WlanTxResultCode {
720 Failed,
722 Success,
724 #[doc(hidden)]
725 __SourceBreaking { unknown_ordinal: u8 },
726}
727
728#[macro_export]
730macro_rules! WlanTxResultCodeUnknown {
731 () => {
732 _
733 };
734}
735
736impl WlanTxResultCode {
737 #[inline]
738 pub fn from_primitive(prim: u8) -> Option<Self> {
739 match prim {
740 0 => Some(Self::Failed),
741 1 => Some(Self::Success),
742 _ => None,
743 }
744 }
745
746 #[inline]
747 pub fn from_primitive_allow_unknown(prim: u8) -> Self {
748 match prim {
749 0 => Self::Failed,
750 1 => Self::Success,
751 unknown_ordinal => Self::__SourceBreaking { unknown_ordinal },
752 }
753 }
754
755 #[inline]
756 pub fn unknown() -> Self {
757 Self::__SourceBreaking { unknown_ordinal: 0xff }
758 }
759
760 #[inline]
761 pub const fn into_primitive(self) -> u8 {
762 match self {
763 Self::Failed => 0,
764 Self::Success => 1,
765 Self::__SourceBreaking { unknown_ordinal } => unknown_ordinal,
766 }
767 }
768
769 #[inline]
770 pub fn is_unknown(&self) -> bool {
771 match self {
772 Self::__SourceBreaking { unknown_ordinal: _ } => true,
773 _ => false,
774 }
775 }
776}
777
778#[derive(Clone, Debug, PartialEq)]
789pub struct BssDescription {
790 pub bssid: [u8; 6],
791 pub bss_type: BssType,
792 pub beacon_period: u16,
793 pub capability_info: u16,
794 pub ies: Vec<u8>,
797 pub channel: fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
799 pub rssi_dbm: i8,
801 pub snr_db: i8,
803}
804
805impl fidl::Persistable for BssDescription {}
806
807#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
808pub struct WlanChannel {
809 pub primary: u8,
810 pub cbw: ChannelBandwidth,
811 pub secondary80: u8,
812}
813
814impl fidl::Persistable for WlanChannel {}
815
816#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
819pub struct WlanTxResult {
820 pub tx_result_entry: [WlanTxResultEntry; 8],
823 pub peer_addr: [u8; 6],
825 pub result_code: WlanTxResultCode,
826}
827
828impl fidl::Persistable for WlanTxResult {}
829
830#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
833#[repr(C)]
834pub struct WlanTxResultEntry {
835 pub tx_vector_idx: u16,
836 pub attempts: u8,
839}
840
841impl fidl::Persistable for WlanTxResultEntry {}
842
843#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
845pub struct WlanWmmAccessCategoryParameters {
846 pub ecw_min: u8,
850 pub ecw_max: u8,
854 pub aifsn: u8,
856 pub txop_limit: u16,
858 pub acm: bool,
860}
861
862impl fidl::Persistable for WlanWmmAccessCategoryParameters {}
863
864#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
865pub struct WlanWmmParameters {
866 pub apsd: bool,
867 pub ac_be_params: WlanWmmAccessCategoryParameters,
868 pub ac_bk_params: WlanWmmAccessCategoryParameters,
869 pub ac_vi_params: WlanWmmAccessCategoryParameters,
870 pub ac_vo_params: WlanWmmAccessCategoryParameters,
871}
872
873impl fidl::Persistable for WlanWmmParameters {}
874
875#[derive(Clone, Debug, Default, PartialEq)]
879pub struct DataPlaneExtension {
880 pub data_plane_type: Option<DataPlaneType>,
881 #[doc(hidden)]
882 pub __source_breaking: fidl::marker::SourceBreaking,
883}
884
885impl fidl::Persistable for DataPlaneExtension {}
886
887#[derive(Clone, Debug, Default, PartialEq)]
891pub struct DeviceExtension {
892 pub is_synthetic: Option<bool>,
896 pub mac_implementation_type: Option<MacImplementationType>,
898 pub tx_status_report_supported: Option<bool>,
900 #[doc(hidden)]
901 pub __source_breaking: fidl::marker::SourceBreaking,
902}
903
904impl fidl::Persistable for DeviceExtension {}
905
906#[derive(Clone, Debug, Default, PartialEq)]
910pub struct DfsFeature {
911 pub supported: Option<bool>,
916 #[doc(hidden)]
917 pub __source_breaking: fidl::marker::SourceBreaking,
918}
919
920impl fidl::Persistable for DfsFeature {}
921
922#[derive(Clone, Debug, Default, PartialEq)]
925pub struct DiscoverySupport {
926 pub scan_offload: Option<ScanOffloadExtension>,
927 pub probe_response_offload: Option<ProbeResponseOffloadExtension>,
928 #[doc(hidden)]
929 pub __source_breaking: fidl::marker::SourceBreaking,
930}
931
932impl fidl::Persistable for DiscoverySupport {}
933
934#[derive(Clone, Debug, Default, PartialEq)]
935pub struct JoinBssRequest {
936 pub bssid: Option<[u8; 6]>,
937 pub bss_type: Option<BssType>,
938 pub remote: Option<bool>,
939 pub beacon_period: Option<u16>,
940 #[doc(hidden)]
941 pub __source_breaking: fidl::marker::SourceBreaking,
942}
943
944impl fidl::Persistable for JoinBssRequest {}
945
946#[derive(Clone, Debug, Default, PartialEq)]
949pub struct MacSublayerSupport {
950 pub rate_selection_offload: Option<RateSelectionOffloadExtension>,
951 pub data_plane: Option<DataPlaneExtension>,
952 pub device: Option<DeviceExtension>,
953 #[doc(hidden)]
954 pub __source_breaking: fidl::marker::SourceBreaking,
955}
956
957impl fidl::Persistable for MacSublayerSupport {}
958
959#[derive(Clone, Debug, Default, PartialEq)]
963pub struct MfpFeature {
964 pub supported: Option<bool>,
965 #[doc(hidden)]
966 pub __source_breaking: fidl::marker::SourceBreaking,
967}
968
969impl fidl::Persistable for MfpFeature {}
970
971#[derive(Clone, Debug, Default, PartialEq)]
975pub struct ProbeResponseOffloadExtension {
976 pub supported: Option<bool>,
978 #[doc(hidden)]
979 pub __source_breaking: fidl::marker::SourceBreaking,
980}
981
982impl fidl::Persistable for ProbeResponseOffloadExtension {}
983
984#[derive(Clone, Debug, Default, PartialEq)]
988pub struct RateSelectionOffloadExtension {
989 pub supported: Option<bool>,
991 #[doc(hidden)]
992 pub __source_breaking: fidl::marker::SourceBreaking,
993}
994
995impl fidl::Persistable for RateSelectionOffloadExtension {}
996
997#[derive(Clone, Debug, Default, PartialEq)]
1001pub struct SaeFeature {
1002 pub driver_handler_supported: Option<bool>,
1004 pub sme_handler_supported: Option<bool>,
1006 #[doc(hidden)]
1007 pub __source_breaking: fidl::marker::SourceBreaking,
1008}
1009
1010impl fidl::Persistable for SaeFeature {}
1011
1012#[derive(Clone, Debug, Default, PartialEq)]
1016pub struct ScanOffloadExtension {
1017 pub supported: Option<bool>,
1019 pub scan_cancel_supported: Option<bool>,
1020 #[doc(hidden)]
1021 pub __source_breaking: fidl::marker::SourceBreaking,
1022}
1023
1024impl fidl::Persistable for ScanOffloadExtension {}
1025
1026#[derive(Clone, Debug, Default, PartialEq)]
1029pub struct SecuritySupport {
1030 pub sae: Option<SaeFeature>,
1031 pub mfp: Option<MfpFeature>,
1032 #[doc(hidden)]
1033 pub __source_breaking: fidl::marker::SourceBreaking,
1034}
1035
1036impl fidl::Persistable for SecuritySupport {}
1037
1038#[derive(Clone, Debug, Default, PartialEq)]
1041pub struct SpectrumManagementSupport {
1042 pub dfs: Option<DfsFeature>,
1043 #[doc(hidden)]
1044 pub __source_breaking: fidl::marker::SourceBreaking,
1045}
1046
1047impl fidl::Persistable for SpectrumManagementSupport {}
1048
1049#[derive(Clone, Debug, Default, PartialEq)]
1050pub struct WlanKeyConfig {
1051 pub protection: Option<WlanProtection>,
1053 pub cipher_oui: Option<[u8; 3]>,
1057 pub cipher_type: Option<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType>,
1060 pub key_type: Option<WlanKeyType>,
1063 pub peer_addr: Option<[u8; 6]>,
1067 pub key_idx: Option<u8>,
1075 pub key: Option<Vec<u8>>,
1078 pub rsc: Option<u64>,
1082 #[doc(hidden)]
1083 pub __source_breaking: fidl::marker::SourceBreaking,
1084}
1085
1086impl fidl::Persistable for WlanKeyConfig {}
1087
1088mod internal {
1089 use super::*;
1090 unsafe impl fidl::encoding::TypeMarker for BssType {
1091 type Owned = Self;
1092
1093 #[inline(always)]
1094 fn inline_align(_context: fidl::encoding::Context) -> usize {
1095 std::mem::align_of::<u32>()
1096 }
1097
1098 #[inline(always)]
1099 fn inline_size(_context: fidl::encoding::Context) -> usize {
1100 std::mem::size_of::<u32>()
1101 }
1102
1103 #[inline(always)]
1104 fn encode_is_copy() -> bool {
1105 false
1106 }
1107
1108 #[inline(always)]
1109 fn decode_is_copy() -> bool {
1110 false
1111 }
1112 }
1113
1114 impl fidl::encoding::ValueTypeMarker for BssType {
1115 type Borrowed<'a> = Self;
1116 #[inline(always)]
1117 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1118 *value
1119 }
1120 }
1121
1122 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BssType {
1123 #[inline]
1124 unsafe fn encode(
1125 self,
1126 encoder: &mut fidl::encoding::Encoder<'_, D>,
1127 offset: usize,
1128 _depth: fidl::encoding::Depth,
1129 ) -> fidl::Result<()> {
1130 encoder.debug_check_bounds::<Self>(offset);
1131 encoder.write_num(self.into_primitive(), offset);
1132 Ok(())
1133 }
1134 }
1135
1136 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssType {
1137 #[inline(always)]
1138 fn new_empty() -> Self {
1139 Self::unknown()
1140 }
1141
1142 #[inline]
1143 unsafe fn decode(
1144 &mut self,
1145 decoder: &mut fidl::encoding::Decoder<'_, D>,
1146 offset: usize,
1147 _depth: fidl::encoding::Depth,
1148 ) -> fidl::Result<()> {
1149 decoder.debug_check_bounds::<Self>(offset);
1150 let prim = decoder.read_num::<u32>(offset);
1151
1152 *self = Self::from_primitive_allow_unknown(prim);
1153 Ok(())
1154 }
1155 }
1156 unsafe impl fidl::encoding::TypeMarker for ChannelBandwidth {
1157 type Owned = Self;
1158
1159 #[inline(always)]
1160 fn inline_align(_context: fidl::encoding::Context) -> usize {
1161 std::mem::align_of::<u32>()
1162 }
1163
1164 #[inline(always)]
1165 fn inline_size(_context: fidl::encoding::Context) -> usize {
1166 std::mem::size_of::<u32>()
1167 }
1168
1169 #[inline(always)]
1170 fn encode_is_copy() -> bool {
1171 false
1172 }
1173
1174 #[inline(always)]
1175 fn decode_is_copy() -> bool {
1176 false
1177 }
1178 }
1179
1180 impl fidl::encoding::ValueTypeMarker for ChannelBandwidth {
1181 type Borrowed<'a> = Self;
1182 #[inline(always)]
1183 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1184 *value
1185 }
1186 }
1187
1188 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1189 for ChannelBandwidth
1190 {
1191 #[inline]
1192 unsafe fn encode(
1193 self,
1194 encoder: &mut fidl::encoding::Encoder<'_, D>,
1195 offset: usize,
1196 _depth: fidl::encoding::Depth,
1197 ) -> fidl::Result<()> {
1198 encoder.debug_check_bounds::<Self>(offset);
1199 encoder.write_num(self.into_primitive(), offset);
1200 Ok(())
1201 }
1202 }
1203
1204 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelBandwidth {
1205 #[inline(always)]
1206 fn new_empty() -> Self {
1207 Self::unknown()
1208 }
1209
1210 #[inline]
1211 unsafe fn decode(
1212 &mut self,
1213 decoder: &mut fidl::encoding::Decoder<'_, D>,
1214 offset: usize,
1215 _depth: fidl::encoding::Depth,
1216 ) -> fidl::Result<()> {
1217 decoder.debug_check_bounds::<Self>(offset);
1218 let prim = decoder.read_num::<u32>(offset);
1219
1220 *self = Self::from_primitive_allow_unknown(prim);
1221 Ok(())
1222 }
1223 }
1224 unsafe impl fidl::encoding::TypeMarker for DataPlaneType {
1225 type Owned = Self;
1226
1227 #[inline(always)]
1228 fn inline_align(_context: fidl::encoding::Context) -> usize {
1229 std::mem::align_of::<u8>()
1230 }
1231
1232 #[inline(always)]
1233 fn inline_size(_context: fidl::encoding::Context) -> usize {
1234 std::mem::size_of::<u8>()
1235 }
1236
1237 #[inline(always)]
1238 fn encode_is_copy() -> bool {
1239 false
1240 }
1241
1242 #[inline(always)]
1243 fn decode_is_copy() -> bool {
1244 false
1245 }
1246 }
1247
1248 impl fidl::encoding::ValueTypeMarker for DataPlaneType {
1249 type Borrowed<'a> = Self;
1250 #[inline(always)]
1251 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1252 *value
1253 }
1254 }
1255
1256 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataPlaneType {
1257 #[inline]
1258 unsafe fn encode(
1259 self,
1260 encoder: &mut fidl::encoding::Encoder<'_, D>,
1261 offset: usize,
1262 _depth: fidl::encoding::Depth,
1263 ) -> fidl::Result<()> {
1264 encoder.debug_check_bounds::<Self>(offset);
1265 encoder.write_num(self.into_primitive(), offset);
1266 Ok(())
1267 }
1268 }
1269
1270 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneType {
1271 #[inline(always)]
1272 fn new_empty() -> Self {
1273 Self::unknown()
1274 }
1275
1276 #[inline]
1277 unsafe fn decode(
1278 &mut self,
1279 decoder: &mut fidl::encoding::Decoder<'_, D>,
1280 offset: usize,
1281 _depth: fidl::encoding::Depth,
1282 ) -> fidl::Result<()> {
1283 decoder.debug_check_bounds::<Self>(offset);
1284 let prim = decoder.read_num::<u8>(offset);
1285
1286 *self = Self::from_primitive_allow_unknown(prim);
1287 Ok(())
1288 }
1289 }
1290 unsafe impl fidl::encoding::TypeMarker for GuardInterval {
1291 type Owned = Self;
1292
1293 #[inline(always)]
1294 fn inline_align(_context: fidl::encoding::Context) -> usize {
1295 std::mem::align_of::<u8>()
1296 }
1297
1298 #[inline(always)]
1299 fn inline_size(_context: fidl::encoding::Context) -> usize {
1300 std::mem::size_of::<u8>()
1301 }
1302
1303 #[inline(always)]
1304 fn encode_is_copy() -> bool {
1305 true
1306 }
1307
1308 #[inline(always)]
1309 fn decode_is_copy() -> bool {
1310 false
1311 }
1312 }
1313
1314 impl fidl::encoding::ValueTypeMarker for GuardInterval {
1315 type Borrowed<'a> = Self;
1316 #[inline(always)]
1317 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1318 *value
1319 }
1320 }
1321
1322 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuardInterval {
1323 #[inline]
1324 unsafe fn encode(
1325 self,
1326 encoder: &mut fidl::encoding::Encoder<'_, D>,
1327 offset: usize,
1328 _depth: fidl::encoding::Depth,
1329 ) -> fidl::Result<()> {
1330 encoder.debug_check_bounds::<Self>(offset);
1331 encoder.write_num(self.into_primitive(), offset);
1332 Ok(())
1333 }
1334 }
1335
1336 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuardInterval {
1337 #[inline(always)]
1338 fn new_empty() -> Self {
1339 Self::LongGi
1340 }
1341
1342 #[inline]
1343 unsafe fn decode(
1344 &mut self,
1345 decoder: &mut fidl::encoding::Decoder<'_, D>,
1346 offset: usize,
1347 _depth: fidl::encoding::Depth,
1348 ) -> fidl::Result<()> {
1349 decoder.debug_check_bounds::<Self>(offset);
1350 let prim = decoder.read_num::<u8>(offset);
1351
1352 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1353 Ok(())
1354 }
1355 }
1356 unsafe impl fidl::encoding::TypeMarker for MacImplementationType {
1357 type Owned = Self;
1358
1359 #[inline(always)]
1360 fn inline_align(_context: fidl::encoding::Context) -> usize {
1361 std::mem::align_of::<u8>()
1362 }
1363
1364 #[inline(always)]
1365 fn inline_size(_context: fidl::encoding::Context) -> usize {
1366 std::mem::size_of::<u8>()
1367 }
1368
1369 #[inline(always)]
1370 fn encode_is_copy() -> bool {
1371 false
1372 }
1373
1374 #[inline(always)]
1375 fn decode_is_copy() -> bool {
1376 false
1377 }
1378 }
1379
1380 impl fidl::encoding::ValueTypeMarker for MacImplementationType {
1381 type Borrowed<'a> = Self;
1382 #[inline(always)]
1383 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1384 *value
1385 }
1386 }
1387
1388 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1389 for MacImplementationType
1390 {
1391 #[inline]
1392 unsafe fn encode(
1393 self,
1394 encoder: &mut fidl::encoding::Encoder<'_, D>,
1395 offset: usize,
1396 _depth: fidl::encoding::Depth,
1397 ) -> fidl::Result<()> {
1398 encoder.debug_check_bounds::<Self>(offset);
1399 encoder.write_num(self.into_primitive(), offset);
1400 Ok(())
1401 }
1402 }
1403
1404 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacImplementationType {
1405 #[inline(always)]
1406 fn new_empty() -> Self {
1407 Self::unknown()
1408 }
1409
1410 #[inline]
1411 unsafe fn decode(
1412 &mut self,
1413 decoder: &mut fidl::encoding::Decoder<'_, D>,
1414 offset: usize,
1415 _depth: fidl::encoding::Depth,
1416 ) -> fidl::Result<()> {
1417 decoder.debug_check_bounds::<Self>(offset);
1418 let prim = decoder.read_num::<u8>(offset);
1419
1420 *self = Self::from_primitive_allow_unknown(prim);
1421 Ok(())
1422 }
1423 }
1424 unsafe impl fidl::encoding::TypeMarker for PowerSaveType {
1425 type Owned = Self;
1426
1427 #[inline(always)]
1428 fn inline_align(_context: fidl::encoding::Context) -> usize {
1429 std::mem::align_of::<u32>()
1430 }
1431
1432 #[inline(always)]
1433 fn inline_size(_context: fidl::encoding::Context) -> usize {
1434 std::mem::size_of::<u32>()
1435 }
1436
1437 #[inline(always)]
1438 fn encode_is_copy() -> bool {
1439 true
1440 }
1441
1442 #[inline(always)]
1443 fn decode_is_copy() -> bool {
1444 false
1445 }
1446 }
1447
1448 impl fidl::encoding::ValueTypeMarker for PowerSaveType {
1449 type Borrowed<'a> = Self;
1450 #[inline(always)]
1451 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1452 *value
1453 }
1454 }
1455
1456 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerSaveType {
1457 #[inline]
1458 unsafe fn encode(
1459 self,
1460 encoder: &mut fidl::encoding::Encoder<'_, D>,
1461 offset: usize,
1462 _depth: fidl::encoding::Depth,
1463 ) -> fidl::Result<()> {
1464 encoder.debug_check_bounds::<Self>(offset);
1465 encoder.write_num(self.into_primitive(), offset);
1466 Ok(())
1467 }
1468 }
1469
1470 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerSaveType {
1471 #[inline(always)]
1472 fn new_empty() -> Self {
1473 Self::PsModeUltraLowPower
1474 }
1475
1476 #[inline]
1477 unsafe fn decode(
1478 &mut self,
1479 decoder: &mut fidl::encoding::Decoder<'_, D>,
1480 offset: usize,
1481 _depth: fidl::encoding::Depth,
1482 ) -> fidl::Result<()> {
1483 decoder.debug_check_bounds::<Self>(offset);
1484 let prim = decoder.read_num::<u32>(offset);
1485
1486 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1487 Ok(())
1488 }
1489 }
1490 unsafe impl fidl::encoding::TypeMarker for ScanType {
1491 type Owned = Self;
1492
1493 #[inline(always)]
1494 fn inline_align(_context: fidl::encoding::Context) -> usize {
1495 std::mem::align_of::<u32>()
1496 }
1497
1498 #[inline(always)]
1499 fn inline_size(_context: fidl::encoding::Context) -> usize {
1500 std::mem::size_of::<u32>()
1501 }
1502
1503 #[inline(always)]
1504 fn encode_is_copy() -> bool {
1505 true
1506 }
1507
1508 #[inline(always)]
1509 fn decode_is_copy() -> bool {
1510 false
1511 }
1512 }
1513
1514 impl fidl::encoding::ValueTypeMarker for ScanType {
1515 type Borrowed<'a> = Self;
1516 #[inline(always)]
1517 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1518 *value
1519 }
1520 }
1521
1522 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanType {
1523 #[inline]
1524 unsafe fn encode(
1525 self,
1526 encoder: &mut fidl::encoding::Encoder<'_, D>,
1527 offset: usize,
1528 _depth: fidl::encoding::Depth,
1529 ) -> fidl::Result<()> {
1530 encoder.debug_check_bounds::<Self>(offset);
1531 encoder.write_num(self.into_primitive(), offset);
1532 Ok(())
1533 }
1534 }
1535
1536 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanType {
1537 #[inline(always)]
1538 fn new_empty() -> Self {
1539 Self::Active
1540 }
1541
1542 #[inline]
1543 unsafe fn decode(
1544 &mut self,
1545 decoder: &mut fidl::encoding::Decoder<'_, D>,
1546 offset: usize,
1547 _depth: fidl::encoding::Depth,
1548 ) -> fidl::Result<()> {
1549 decoder.debug_check_bounds::<Self>(offset);
1550 let prim = decoder.read_num::<u32>(offset);
1551
1552 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1553 Ok(())
1554 }
1555 }
1556 unsafe impl fidl::encoding::TypeMarker for WlanKeyType {
1557 type Owned = Self;
1558
1559 #[inline(always)]
1560 fn inline_align(_context: fidl::encoding::Context) -> usize {
1561 std::mem::align_of::<u8>()
1562 }
1563
1564 #[inline(always)]
1565 fn inline_size(_context: fidl::encoding::Context) -> usize {
1566 std::mem::size_of::<u8>()
1567 }
1568
1569 #[inline(always)]
1570 fn encode_is_copy() -> bool {
1571 false
1572 }
1573
1574 #[inline(always)]
1575 fn decode_is_copy() -> bool {
1576 false
1577 }
1578 }
1579
1580 impl fidl::encoding::ValueTypeMarker for WlanKeyType {
1581 type Borrowed<'a> = Self;
1582 #[inline(always)]
1583 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1584 *value
1585 }
1586 }
1587
1588 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanKeyType {
1589 #[inline]
1590 unsafe fn encode(
1591 self,
1592 encoder: &mut fidl::encoding::Encoder<'_, D>,
1593 offset: usize,
1594 _depth: fidl::encoding::Depth,
1595 ) -> fidl::Result<()> {
1596 encoder.debug_check_bounds::<Self>(offset);
1597 encoder.write_num(self.into_primitive(), offset);
1598 Ok(())
1599 }
1600 }
1601
1602 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyType {
1603 #[inline(always)]
1604 fn new_empty() -> Self {
1605 Self::unknown()
1606 }
1607
1608 #[inline]
1609 unsafe fn decode(
1610 &mut self,
1611 decoder: &mut fidl::encoding::Decoder<'_, D>,
1612 offset: usize,
1613 _depth: fidl::encoding::Depth,
1614 ) -> fidl::Result<()> {
1615 decoder.debug_check_bounds::<Self>(offset);
1616 let prim = decoder.read_num::<u8>(offset);
1617
1618 *self = Self::from_primitive_allow_unknown(prim);
1619 Ok(())
1620 }
1621 }
1622 unsafe impl fidl::encoding::TypeMarker for WlanMacRole {
1623 type Owned = Self;
1624
1625 #[inline(always)]
1626 fn inline_align(_context: fidl::encoding::Context) -> usize {
1627 std::mem::align_of::<u32>()
1628 }
1629
1630 #[inline(always)]
1631 fn inline_size(_context: fidl::encoding::Context) -> usize {
1632 std::mem::size_of::<u32>()
1633 }
1634
1635 #[inline(always)]
1636 fn encode_is_copy() -> bool {
1637 false
1638 }
1639
1640 #[inline(always)]
1641 fn decode_is_copy() -> bool {
1642 false
1643 }
1644 }
1645
1646 impl fidl::encoding::ValueTypeMarker for WlanMacRole {
1647 type Borrowed<'a> = Self;
1648 #[inline(always)]
1649 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1650 *value
1651 }
1652 }
1653
1654 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanMacRole {
1655 #[inline]
1656 unsafe fn encode(
1657 self,
1658 encoder: &mut fidl::encoding::Encoder<'_, D>,
1659 offset: usize,
1660 _depth: fidl::encoding::Depth,
1661 ) -> fidl::Result<()> {
1662 encoder.debug_check_bounds::<Self>(offset);
1663 encoder.write_num(self.into_primitive(), offset);
1664 Ok(())
1665 }
1666 }
1667
1668 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanMacRole {
1669 #[inline(always)]
1670 fn new_empty() -> Self {
1671 Self::unknown()
1672 }
1673
1674 #[inline]
1675 unsafe fn decode(
1676 &mut self,
1677 decoder: &mut fidl::encoding::Decoder<'_, D>,
1678 offset: usize,
1679 _depth: fidl::encoding::Depth,
1680 ) -> fidl::Result<()> {
1681 decoder.debug_check_bounds::<Self>(offset);
1682 let prim = decoder.read_num::<u32>(offset);
1683
1684 *self = Self::from_primitive_allow_unknown(prim);
1685 Ok(())
1686 }
1687 }
1688 unsafe impl fidl::encoding::TypeMarker for WlanPhyType {
1689 type Owned = Self;
1690
1691 #[inline(always)]
1692 fn inline_align(_context: fidl::encoding::Context) -> usize {
1693 std::mem::align_of::<u32>()
1694 }
1695
1696 #[inline(always)]
1697 fn inline_size(_context: fidl::encoding::Context) -> usize {
1698 std::mem::size_of::<u32>()
1699 }
1700
1701 #[inline(always)]
1702 fn encode_is_copy() -> bool {
1703 false
1704 }
1705
1706 #[inline(always)]
1707 fn decode_is_copy() -> bool {
1708 false
1709 }
1710 }
1711
1712 impl fidl::encoding::ValueTypeMarker for WlanPhyType {
1713 type Borrowed<'a> = Self;
1714 #[inline(always)]
1715 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1716 *value
1717 }
1718 }
1719
1720 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanPhyType {
1721 #[inline]
1722 unsafe fn encode(
1723 self,
1724 encoder: &mut fidl::encoding::Encoder<'_, D>,
1725 offset: usize,
1726 _depth: fidl::encoding::Depth,
1727 ) -> fidl::Result<()> {
1728 encoder.debug_check_bounds::<Self>(offset);
1729 encoder.write_num(self.into_primitive(), offset);
1730 Ok(())
1731 }
1732 }
1733
1734 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanPhyType {
1735 #[inline(always)]
1736 fn new_empty() -> Self {
1737 Self::unknown()
1738 }
1739
1740 #[inline]
1741 unsafe fn decode(
1742 &mut self,
1743 decoder: &mut fidl::encoding::Decoder<'_, D>,
1744 offset: usize,
1745 _depth: fidl::encoding::Depth,
1746 ) -> fidl::Result<()> {
1747 decoder.debug_check_bounds::<Self>(offset);
1748 let prim = decoder.read_num::<u32>(offset);
1749
1750 *self = Self::from_primitive_allow_unknown(prim);
1751 Ok(())
1752 }
1753 }
1754 unsafe impl fidl::encoding::TypeMarker for WlanProtection {
1755 type Owned = Self;
1756
1757 #[inline(always)]
1758 fn inline_align(_context: fidl::encoding::Context) -> usize {
1759 std::mem::align_of::<u8>()
1760 }
1761
1762 #[inline(always)]
1763 fn inline_size(_context: fidl::encoding::Context) -> usize {
1764 std::mem::size_of::<u8>()
1765 }
1766
1767 #[inline(always)]
1768 fn encode_is_copy() -> bool {
1769 true
1770 }
1771
1772 #[inline(always)]
1773 fn decode_is_copy() -> bool {
1774 false
1775 }
1776 }
1777
1778 impl fidl::encoding::ValueTypeMarker for WlanProtection {
1779 type Borrowed<'a> = Self;
1780 #[inline(always)]
1781 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1782 *value
1783 }
1784 }
1785
1786 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanProtection {
1787 #[inline]
1788 unsafe fn encode(
1789 self,
1790 encoder: &mut fidl::encoding::Encoder<'_, D>,
1791 offset: usize,
1792 _depth: fidl::encoding::Depth,
1793 ) -> fidl::Result<()> {
1794 encoder.debug_check_bounds::<Self>(offset);
1795 encoder.write_num(self.into_primitive(), offset);
1796 Ok(())
1797 }
1798 }
1799
1800 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanProtection {
1801 #[inline(always)]
1802 fn new_empty() -> Self {
1803 Self::None
1804 }
1805
1806 #[inline]
1807 unsafe fn decode(
1808 &mut self,
1809 decoder: &mut fidl::encoding::Decoder<'_, D>,
1810 offset: usize,
1811 _depth: fidl::encoding::Depth,
1812 ) -> fidl::Result<()> {
1813 decoder.debug_check_bounds::<Self>(offset);
1814 let prim = decoder.read_num::<u8>(offset);
1815
1816 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1817 Ok(())
1818 }
1819 }
1820 unsafe impl fidl::encoding::TypeMarker for WlanSoftmacHardwareCapabilityBit {
1821 type Owned = Self;
1822
1823 #[inline(always)]
1824 fn inline_align(_context: fidl::encoding::Context) -> usize {
1825 std::mem::align_of::<u32>()
1826 }
1827
1828 #[inline(always)]
1829 fn inline_size(_context: fidl::encoding::Context) -> usize {
1830 std::mem::size_of::<u32>()
1831 }
1832
1833 #[inline(always)]
1834 fn encode_is_copy() -> bool {
1835 true
1836 }
1837
1838 #[inline(always)]
1839 fn decode_is_copy() -> bool {
1840 false
1841 }
1842 }
1843
1844 impl fidl::encoding::ValueTypeMarker for WlanSoftmacHardwareCapabilityBit {
1845 type Borrowed<'a> = Self;
1846 #[inline(always)]
1847 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1848 *value
1849 }
1850 }
1851
1852 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1853 for WlanSoftmacHardwareCapabilityBit
1854 {
1855 #[inline]
1856 unsafe fn encode(
1857 self,
1858 encoder: &mut fidl::encoding::Encoder<'_, D>,
1859 offset: usize,
1860 _depth: fidl::encoding::Depth,
1861 ) -> fidl::Result<()> {
1862 encoder.debug_check_bounds::<Self>(offset);
1863 encoder.write_num(self.into_primitive(), offset);
1864 Ok(())
1865 }
1866 }
1867
1868 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1869 for WlanSoftmacHardwareCapabilityBit
1870 {
1871 #[inline(always)]
1872 fn new_empty() -> Self {
1873 Self::ShortPreamble
1874 }
1875
1876 #[inline]
1877 unsafe fn decode(
1878 &mut self,
1879 decoder: &mut fidl::encoding::Decoder<'_, D>,
1880 offset: usize,
1881 _depth: fidl::encoding::Depth,
1882 ) -> fidl::Result<()> {
1883 decoder.debug_check_bounds::<Self>(offset);
1884 let prim = decoder.read_num::<u32>(offset);
1885
1886 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1887 Ok(())
1888 }
1889 }
1890 unsafe impl fidl::encoding::TypeMarker for WlanTxResultCode {
1891 type Owned = Self;
1892
1893 #[inline(always)]
1894 fn inline_align(_context: fidl::encoding::Context) -> usize {
1895 std::mem::align_of::<u8>()
1896 }
1897
1898 #[inline(always)]
1899 fn inline_size(_context: fidl::encoding::Context) -> usize {
1900 std::mem::size_of::<u8>()
1901 }
1902
1903 #[inline(always)]
1904 fn encode_is_copy() -> bool {
1905 false
1906 }
1907
1908 #[inline(always)]
1909 fn decode_is_copy() -> bool {
1910 false
1911 }
1912 }
1913
1914 impl fidl::encoding::ValueTypeMarker for WlanTxResultCode {
1915 type Borrowed<'a> = Self;
1916 #[inline(always)]
1917 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1918 *value
1919 }
1920 }
1921
1922 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1923 for WlanTxResultCode
1924 {
1925 #[inline]
1926 unsafe fn encode(
1927 self,
1928 encoder: &mut fidl::encoding::Encoder<'_, D>,
1929 offset: usize,
1930 _depth: fidl::encoding::Depth,
1931 ) -> fidl::Result<()> {
1932 encoder.debug_check_bounds::<Self>(offset);
1933 encoder.write_num(self.into_primitive(), offset);
1934 Ok(())
1935 }
1936 }
1937
1938 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultCode {
1939 #[inline(always)]
1940 fn new_empty() -> Self {
1941 Self::unknown()
1942 }
1943
1944 #[inline]
1945 unsafe fn decode(
1946 &mut self,
1947 decoder: &mut fidl::encoding::Decoder<'_, D>,
1948 offset: usize,
1949 _depth: fidl::encoding::Depth,
1950 ) -> fidl::Result<()> {
1951 decoder.debug_check_bounds::<Self>(offset);
1952 let prim = decoder.read_num::<u8>(offset);
1953
1954 *self = Self::from_primitive_allow_unknown(prim);
1955 Ok(())
1956 }
1957 }
1958
1959 impl fidl::encoding::ValueTypeMarker for BssDescription {
1960 type Borrowed<'a> = &'a Self;
1961 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1962 value
1963 }
1964 }
1965
1966 unsafe impl fidl::encoding::TypeMarker for BssDescription {
1967 type Owned = Self;
1968
1969 #[inline(always)]
1970 fn inline_align(_context: fidl::encoding::Context) -> usize {
1971 8
1972 }
1973
1974 #[inline(always)]
1975 fn inline_size(_context: fidl::encoding::Context) -> usize {
1976 48
1977 }
1978 }
1979
1980 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BssDescription, D>
1981 for &BssDescription
1982 {
1983 #[inline]
1984 unsafe fn encode(
1985 self,
1986 encoder: &mut fidl::encoding::Encoder<'_, D>,
1987 offset: usize,
1988 _depth: fidl::encoding::Depth,
1989 ) -> fidl::Result<()> {
1990 encoder.debug_check_bounds::<BssDescription>(offset);
1991 fidl::encoding::Encode::<BssDescription, D>::encode(
1993 (
1994 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.bssid),
1995 <BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
1996 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
1997 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
1998 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.ies),
1999 <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
2000 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi_dbm),
2001 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.snr_db),
2002 ),
2003 encoder, offset, _depth
2004 )
2005 }
2006 }
2007 unsafe impl<
2008 D: fidl::encoding::ResourceDialect,
2009 T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2010 T1: fidl::encoding::Encode<BssType, D>,
2011 T2: fidl::encoding::Encode<u16, D>,
2012 T3: fidl::encoding::Encode<u16, D>,
2013 T4: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2014 T5: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>,
2015 T6: fidl::encoding::Encode<i8, D>,
2016 T7: fidl::encoding::Encode<i8, D>,
2017 > fidl::encoding::Encode<BssDescription, D> for (T0, T1, T2, T3, T4, T5, T6, T7)
2018 {
2019 #[inline]
2020 unsafe fn encode(
2021 self,
2022 encoder: &mut fidl::encoding::Encoder<'_, D>,
2023 offset: usize,
2024 depth: fidl::encoding::Depth,
2025 ) -> fidl::Result<()> {
2026 encoder.debug_check_bounds::<BssDescription>(offset);
2027 unsafe {
2030 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2031 (ptr as *mut u64).write_unaligned(0);
2032 }
2033 unsafe {
2034 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
2035 (ptr as *mut u64).write_unaligned(0);
2036 }
2037 self.0.encode(encoder, offset + 0, depth)?;
2039 self.1.encode(encoder, offset + 8, depth)?;
2040 self.2.encode(encoder, offset + 12, depth)?;
2041 self.3.encode(encoder, offset + 14, depth)?;
2042 self.4.encode(encoder, offset + 16, depth)?;
2043 self.5.encode(encoder, offset + 32, depth)?;
2044 self.6.encode(encoder, offset + 44, depth)?;
2045 self.7.encode(encoder, offset + 45, depth)?;
2046 Ok(())
2047 }
2048 }
2049
2050 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssDescription {
2051 #[inline(always)]
2052 fn new_empty() -> Self {
2053 Self {
2054 bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2055 bss_type: fidl::new_empty!(BssType, D),
2056 beacon_period: fidl::new_empty!(u16, D),
2057 capability_info: fidl::new_empty!(u16, D),
2058 ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2059 channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D),
2060 rssi_dbm: fidl::new_empty!(i8, D),
2061 snr_db: fidl::new_empty!(i8, D),
2062 }
2063 }
2064
2065 #[inline]
2066 unsafe fn decode(
2067 &mut self,
2068 decoder: &mut fidl::encoding::Decoder<'_, D>,
2069 offset: usize,
2070 _depth: fidl::encoding::Depth,
2071 ) -> fidl::Result<()> {
2072 decoder.debug_check_bounds::<Self>(offset);
2073 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2075 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2076 let mask = 0xffff000000000000u64;
2077 let maskedval = padval & mask;
2078 if maskedval != 0 {
2079 return Err(fidl::Error::NonZeroPadding {
2080 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2081 });
2082 }
2083 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
2084 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2085 let mask = 0xffff000000000000u64;
2086 let maskedval = padval & mask;
2087 if maskedval != 0 {
2088 return Err(fidl::Error::NonZeroPadding {
2089 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
2090 });
2091 }
2092 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.bssid, decoder, offset + 0, _depth)?;
2093 fidl::decode!(BssType, D, &mut self.bss_type, decoder, offset + 8, _depth)?;
2094 fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 12, _depth)?;
2095 fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2096 fidl::decode!(
2097 fidl::encoding::UnboundedVector<u8>,
2098 D,
2099 &mut self.ies,
2100 decoder,
2101 offset + 16,
2102 _depth
2103 )?;
2104 fidl::decode!(
2105 fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
2106 D,
2107 &mut self.channel,
2108 decoder,
2109 offset + 32,
2110 _depth
2111 )?;
2112 fidl::decode!(i8, D, &mut self.rssi_dbm, decoder, offset + 44, _depth)?;
2113 fidl::decode!(i8, D, &mut self.snr_db, decoder, offset + 45, _depth)?;
2114 Ok(())
2115 }
2116 }
2117
2118 impl fidl::encoding::ValueTypeMarker for WlanChannel {
2119 type Borrowed<'a> = &'a Self;
2120 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2121 value
2122 }
2123 }
2124
2125 unsafe impl fidl::encoding::TypeMarker for WlanChannel {
2126 type Owned = Self;
2127
2128 #[inline(always)]
2129 fn inline_align(_context: fidl::encoding::Context) -> usize {
2130 4
2131 }
2132
2133 #[inline(always)]
2134 fn inline_size(_context: fidl::encoding::Context) -> usize {
2135 12
2136 }
2137 }
2138
2139 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanChannel, D>
2140 for &WlanChannel
2141 {
2142 #[inline]
2143 unsafe fn encode(
2144 self,
2145 encoder: &mut fidl::encoding::Encoder<'_, D>,
2146 offset: usize,
2147 _depth: fidl::encoding::Depth,
2148 ) -> fidl::Result<()> {
2149 encoder.debug_check_bounds::<WlanChannel>(offset);
2150 fidl::encoding::Encode::<WlanChannel, D>::encode(
2152 (
2153 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
2154 <ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.cbw),
2155 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.secondary80),
2156 ),
2157 encoder,
2158 offset,
2159 _depth,
2160 )
2161 }
2162 }
2163 unsafe impl<
2164 D: fidl::encoding::ResourceDialect,
2165 T0: fidl::encoding::Encode<u8, D>,
2166 T1: fidl::encoding::Encode<ChannelBandwidth, D>,
2167 T2: fidl::encoding::Encode<u8, D>,
2168 > fidl::encoding::Encode<WlanChannel, D> for (T0, T1, T2)
2169 {
2170 #[inline]
2171 unsafe fn encode(
2172 self,
2173 encoder: &mut fidl::encoding::Encoder<'_, D>,
2174 offset: usize,
2175 depth: fidl::encoding::Depth,
2176 ) -> fidl::Result<()> {
2177 encoder.debug_check_bounds::<WlanChannel>(offset);
2178 unsafe {
2181 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2182 (ptr as *mut u32).write_unaligned(0);
2183 }
2184 unsafe {
2185 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2186 (ptr as *mut u32).write_unaligned(0);
2187 }
2188 self.0.encode(encoder, offset + 0, depth)?;
2190 self.1.encode(encoder, offset + 4, depth)?;
2191 self.2.encode(encoder, offset + 8, depth)?;
2192 Ok(())
2193 }
2194 }
2195
2196 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanChannel {
2197 #[inline(always)]
2198 fn new_empty() -> Self {
2199 Self {
2200 primary: fidl::new_empty!(u8, D),
2201 cbw: fidl::new_empty!(ChannelBandwidth, D),
2202 secondary80: fidl::new_empty!(u8, D),
2203 }
2204 }
2205
2206 #[inline]
2207 unsafe fn decode(
2208 &mut self,
2209 decoder: &mut fidl::encoding::Decoder<'_, D>,
2210 offset: usize,
2211 _depth: fidl::encoding::Depth,
2212 ) -> fidl::Result<()> {
2213 decoder.debug_check_bounds::<Self>(offset);
2214 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2216 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2217 let mask = 0xffffff00u32;
2218 let maskedval = padval & mask;
2219 if maskedval != 0 {
2220 return Err(fidl::Error::NonZeroPadding {
2221 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2222 });
2223 }
2224 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2225 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2226 let mask = 0xffffff00u32;
2227 let maskedval = padval & mask;
2228 if maskedval != 0 {
2229 return Err(fidl::Error::NonZeroPadding {
2230 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2231 });
2232 }
2233 fidl::decode!(u8, D, &mut self.primary, decoder, offset + 0, _depth)?;
2234 fidl::decode!(ChannelBandwidth, D, &mut self.cbw, decoder, offset + 4, _depth)?;
2235 fidl::decode!(u8, D, &mut self.secondary80, decoder, offset + 8, _depth)?;
2236 Ok(())
2237 }
2238 }
2239
2240 impl fidl::encoding::ValueTypeMarker for WlanTxResult {
2241 type Borrowed<'a> = &'a Self;
2242 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2243 value
2244 }
2245 }
2246
2247 unsafe impl fidl::encoding::TypeMarker for WlanTxResult {
2248 type Owned = Self;
2249
2250 #[inline(always)]
2251 fn inline_align(_context: fidl::encoding::Context) -> usize {
2252 2
2253 }
2254
2255 #[inline(always)]
2256 fn inline_size(_context: fidl::encoding::Context) -> usize {
2257 40
2258 }
2259 }
2260
2261 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResult, D>
2262 for &WlanTxResult
2263 {
2264 #[inline]
2265 unsafe fn encode(
2266 self,
2267 encoder: &mut fidl::encoding::Encoder<'_, D>,
2268 offset: usize,
2269 _depth: fidl::encoding::Depth,
2270 ) -> fidl::Result<()> {
2271 encoder.debug_check_bounds::<WlanTxResult>(offset);
2272 fidl::encoding::Encode::<WlanTxResult, D>::encode(
2274 (
2275 <fidl::encoding::Array<WlanTxResultEntry, 8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_result_entry),
2276 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_addr),
2277 <WlanTxResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2278 ),
2279 encoder, offset, _depth
2280 )
2281 }
2282 }
2283 unsafe impl<
2284 D: fidl::encoding::ResourceDialect,
2285 T0: fidl::encoding::Encode<fidl::encoding::Array<WlanTxResultEntry, 8>, D>,
2286 T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2287 T2: fidl::encoding::Encode<WlanTxResultCode, D>,
2288 > fidl::encoding::Encode<WlanTxResult, D> for (T0, T1, T2)
2289 {
2290 #[inline]
2291 unsafe fn encode(
2292 self,
2293 encoder: &mut fidl::encoding::Encoder<'_, D>,
2294 offset: usize,
2295 depth: fidl::encoding::Depth,
2296 ) -> fidl::Result<()> {
2297 encoder.debug_check_bounds::<WlanTxResult>(offset);
2298 unsafe {
2301 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(38);
2302 (ptr as *mut u16).write_unaligned(0);
2303 }
2304 self.0.encode(encoder, offset + 0, depth)?;
2306 self.1.encode(encoder, offset + 32, depth)?;
2307 self.2.encode(encoder, offset + 38, depth)?;
2308 Ok(())
2309 }
2310 }
2311
2312 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResult {
2313 #[inline(always)]
2314 fn new_empty() -> Self {
2315 Self {
2316 tx_result_entry: fidl::new_empty!(fidl::encoding::Array<WlanTxResultEntry, 8>, D),
2317 peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2318 result_code: fidl::new_empty!(WlanTxResultCode, D),
2319 }
2320 }
2321
2322 #[inline]
2323 unsafe fn decode(
2324 &mut self,
2325 decoder: &mut fidl::encoding::Decoder<'_, D>,
2326 offset: usize,
2327 _depth: fidl::encoding::Depth,
2328 ) -> fidl::Result<()> {
2329 decoder.debug_check_bounds::<Self>(offset);
2330 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(38) };
2332 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2333 let mask = 0xff00u16;
2334 let maskedval = padval & mask;
2335 if maskedval != 0 {
2336 return Err(fidl::Error::NonZeroPadding {
2337 padding_start: offset + 38 + ((mask as u64).trailing_zeros() / 8) as usize,
2338 });
2339 }
2340 fidl::decode!(fidl::encoding::Array<WlanTxResultEntry, 8>, D, &mut self.tx_result_entry, decoder, offset + 0, _depth)?;
2341 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_addr, decoder, offset + 32, _depth)?;
2342 fidl::decode!(
2343 WlanTxResultCode,
2344 D,
2345 &mut self.result_code,
2346 decoder,
2347 offset + 38,
2348 _depth
2349 )?;
2350 Ok(())
2351 }
2352 }
2353
2354 impl fidl::encoding::ValueTypeMarker for WlanTxResultEntry {
2355 type Borrowed<'a> = &'a Self;
2356 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2357 value
2358 }
2359 }
2360
2361 unsafe impl fidl::encoding::TypeMarker for WlanTxResultEntry {
2362 type Owned = Self;
2363
2364 #[inline(always)]
2365 fn inline_align(_context: fidl::encoding::Context) -> usize {
2366 2
2367 }
2368
2369 #[inline(always)]
2370 fn inline_size(_context: fidl::encoding::Context) -> usize {
2371 4
2372 }
2373 }
2374
2375 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResultEntry, D>
2376 for &WlanTxResultEntry
2377 {
2378 #[inline]
2379 unsafe fn encode(
2380 self,
2381 encoder: &mut fidl::encoding::Encoder<'_, D>,
2382 offset: usize,
2383 _depth: fidl::encoding::Depth,
2384 ) -> fidl::Result<()> {
2385 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2386 unsafe {
2387 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2389 (buf_ptr as *mut WlanTxResultEntry)
2390 .write_unaligned((self as *const WlanTxResultEntry).read());
2391 let padding_ptr = buf_ptr.offset(2) as *mut u16;
2394 let padding_mask = 0xff00u16;
2395 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2396 }
2397 Ok(())
2398 }
2399 }
2400 unsafe impl<
2401 D: fidl::encoding::ResourceDialect,
2402 T0: fidl::encoding::Encode<u16, D>,
2403 T1: fidl::encoding::Encode<u8, D>,
2404 > fidl::encoding::Encode<WlanTxResultEntry, D> for (T0, T1)
2405 {
2406 #[inline]
2407 unsafe fn encode(
2408 self,
2409 encoder: &mut fidl::encoding::Encoder<'_, D>,
2410 offset: usize,
2411 depth: fidl::encoding::Depth,
2412 ) -> fidl::Result<()> {
2413 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2414 unsafe {
2417 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2418 (ptr as *mut u16).write_unaligned(0);
2419 }
2420 self.0.encode(encoder, offset + 0, depth)?;
2422 self.1.encode(encoder, offset + 2, depth)?;
2423 Ok(())
2424 }
2425 }
2426
2427 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultEntry {
2428 #[inline(always)]
2429 fn new_empty() -> Self {
2430 Self { tx_vector_idx: fidl::new_empty!(u16, D), attempts: fidl::new_empty!(u8, D) }
2431 }
2432
2433 #[inline]
2434 unsafe fn decode(
2435 &mut self,
2436 decoder: &mut fidl::encoding::Decoder<'_, D>,
2437 offset: usize,
2438 _depth: fidl::encoding::Depth,
2439 ) -> fidl::Result<()> {
2440 decoder.debug_check_bounds::<Self>(offset);
2441 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2442 let ptr = unsafe { buf_ptr.offset(2) };
2444 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2445 let mask = 0xff00u16;
2446 let maskedval = padval & mask;
2447 if maskedval != 0 {
2448 return Err(fidl::Error::NonZeroPadding {
2449 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2450 });
2451 }
2452 unsafe {
2454 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2455 }
2456 Ok(())
2457 }
2458 }
2459
2460 impl fidl::encoding::ValueTypeMarker for WlanWmmAccessCategoryParameters {
2461 type Borrowed<'a> = &'a Self;
2462 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2463 value
2464 }
2465 }
2466
2467 unsafe impl fidl::encoding::TypeMarker for WlanWmmAccessCategoryParameters {
2468 type Owned = Self;
2469
2470 #[inline(always)]
2471 fn inline_align(_context: fidl::encoding::Context) -> usize {
2472 2
2473 }
2474
2475 #[inline(always)]
2476 fn inline_size(_context: fidl::encoding::Context) -> usize {
2477 8
2478 }
2479 }
2480
2481 unsafe impl<D: fidl::encoding::ResourceDialect>
2482 fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>
2483 for &WlanWmmAccessCategoryParameters
2484 {
2485 #[inline]
2486 unsafe fn encode(
2487 self,
2488 encoder: &mut fidl::encoding::Encoder<'_, D>,
2489 offset: usize,
2490 _depth: fidl::encoding::Depth,
2491 ) -> fidl::Result<()> {
2492 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2493 fidl::encoding::Encode::<WlanWmmAccessCategoryParameters, D>::encode(
2495 (
2496 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_min),
2497 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_max),
2498 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.aifsn),
2499 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.txop_limit),
2500 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.acm),
2501 ),
2502 encoder,
2503 offset,
2504 _depth,
2505 )
2506 }
2507 }
2508 unsafe impl<
2509 D: fidl::encoding::ResourceDialect,
2510 T0: fidl::encoding::Encode<u8, D>,
2511 T1: fidl::encoding::Encode<u8, D>,
2512 T2: fidl::encoding::Encode<u8, D>,
2513 T3: fidl::encoding::Encode<u16, D>,
2514 T4: fidl::encoding::Encode<bool, D>,
2515 > fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D> for (T0, T1, T2, T3, T4)
2516 {
2517 #[inline]
2518 unsafe fn encode(
2519 self,
2520 encoder: &mut fidl::encoding::Encoder<'_, D>,
2521 offset: usize,
2522 depth: fidl::encoding::Depth,
2523 ) -> fidl::Result<()> {
2524 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2525 unsafe {
2528 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2529 (ptr as *mut u16).write_unaligned(0);
2530 }
2531 unsafe {
2532 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(6);
2533 (ptr as *mut u16).write_unaligned(0);
2534 }
2535 self.0.encode(encoder, offset + 0, depth)?;
2537 self.1.encode(encoder, offset + 1, depth)?;
2538 self.2.encode(encoder, offset + 2, depth)?;
2539 self.3.encode(encoder, offset + 4, depth)?;
2540 self.4.encode(encoder, offset + 6, depth)?;
2541 Ok(())
2542 }
2543 }
2544
2545 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2546 for WlanWmmAccessCategoryParameters
2547 {
2548 #[inline(always)]
2549 fn new_empty() -> Self {
2550 Self {
2551 ecw_min: fidl::new_empty!(u8, D),
2552 ecw_max: fidl::new_empty!(u8, D),
2553 aifsn: fidl::new_empty!(u8, D),
2554 txop_limit: fidl::new_empty!(u16, D),
2555 acm: fidl::new_empty!(bool, D),
2556 }
2557 }
2558
2559 #[inline]
2560 unsafe fn decode(
2561 &mut self,
2562 decoder: &mut fidl::encoding::Decoder<'_, D>,
2563 offset: usize,
2564 _depth: fidl::encoding::Depth,
2565 ) -> fidl::Result<()> {
2566 decoder.debug_check_bounds::<Self>(offset);
2567 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(2) };
2569 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2570 let mask = 0xff00u16;
2571 let maskedval = padval & mask;
2572 if maskedval != 0 {
2573 return Err(fidl::Error::NonZeroPadding {
2574 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2575 });
2576 }
2577 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(6) };
2578 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2579 let mask = 0xff00u16;
2580 let maskedval = padval & mask;
2581 if maskedval != 0 {
2582 return Err(fidl::Error::NonZeroPadding {
2583 padding_start: offset + 6 + ((mask as u64).trailing_zeros() / 8) as usize,
2584 });
2585 }
2586 fidl::decode!(u8, D, &mut self.ecw_min, decoder, offset + 0, _depth)?;
2587 fidl::decode!(u8, D, &mut self.ecw_max, decoder, offset + 1, _depth)?;
2588 fidl::decode!(u8, D, &mut self.aifsn, decoder, offset + 2, _depth)?;
2589 fidl::decode!(u16, D, &mut self.txop_limit, decoder, offset + 4, _depth)?;
2590 fidl::decode!(bool, D, &mut self.acm, decoder, offset + 6, _depth)?;
2591 Ok(())
2592 }
2593 }
2594
2595 impl fidl::encoding::ValueTypeMarker for WlanWmmParameters {
2596 type Borrowed<'a> = &'a Self;
2597 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2598 value
2599 }
2600 }
2601
2602 unsafe impl fidl::encoding::TypeMarker for WlanWmmParameters {
2603 type Owned = Self;
2604
2605 #[inline(always)]
2606 fn inline_align(_context: fidl::encoding::Context) -> usize {
2607 2
2608 }
2609
2610 #[inline(always)]
2611 fn inline_size(_context: fidl::encoding::Context) -> usize {
2612 34
2613 }
2614 }
2615
2616 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanWmmParameters, D>
2617 for &WlanWmmParameters
2618 {
2619 #[inline]
2620 unsafe fn encode(
2621 self,
2622 encoder: &mut fidl::encoding::Encoder<'_, D>,
2623 offset: usize,
2624 _depth: fidl::encoding::Depth,
2625 ) -> fidl::Result<()> {
2626 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2627 fidl::encoding::Encode::<WlanWmmParameters, D>::encode(
2629 (
2630 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.apsd),
2631 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2632 &self.ac_be_params,
2633 ),
2634 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2635 &self.ac_bk_params,
2636 ),
2637 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2638 &self.ac_vi_params,
2639 ),
2640 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2641 &self.ac_vo_params,
2642 ),
2643 ),
2644 encoder,
2645 offset,
2646 _depth,
2647 )
2648 }
2649 }
2650 unsafe impl<
2651 D: fidl::encoding::ResourceDialect,
2652 T0: fidl::encoding::Encode<bool, D>,
2653 T1: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2654 T2: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2655 T3: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2656 T4: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2657 > fidl::encoding::Encode<WlanWmmParameters, D> for (T0, T1, T2, T3, T4)
2658 {
2659 #[inline]
2660 unsafe fn encode(
2661 self,
2662 encoder: &mut fidl::encoding::Encoder<'_, D>,
2663 offset: usize,
2664 depth: fidl::encoding::Depth,
2665 ) -> fidl::Result<()> {
2666 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2667 unsafe {
2670 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2671 (ptr as *mut u16).write_unaligned(0);
2672 }
2673 self.0.encode(encoder, offset + 0, depth)?;
2675 self.1.encode(encoder, offset + 2, depth)?;
2676 self.2.encode(encoder, offset + 10, depth)?;
2677 self.3.encode(encoder, offset + 18, depth)?;
2678 self.4.encode(encoder, offset + 26, depth)?;
2679 Ok(())
2680 }
2681 }
2682
2683 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanWmmParameters {
2684 #[inline(always)]
2685 fn new_empty() -> Self {
2686 Self {
2687 apsd: fidl::new_empty!(bool, D),
2688 ac_be_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2689 ac_bk_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2690 ac_vi_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2691 ac_vo_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2692 }
2693 }
2694
2695 #[inline]
2696 unsafe fn decode(
2697 &mut self,
2698 decoder: &mut fidl::encoding::Decoder<'_, D>,
2699 offset: usize,
2700 _depth: fidl::encoding::Depth,
2701 ) -> fidl::Result<()> {
2702 decoder.debug_check_bounds::<Self>(offset);
2703 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2705 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2706 let mask = 0xff00u16;
2707 let maskedval = padval & mask;
2708 if maskedval != 0 {
2709 return Err(fidl::Error::NonZeroPadding {
2710 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2711 });
2712 }
2713 fidl::decode!(bool, D, &mut self.apsd, decoder, offset + 0, _depth)?;
2714 fidl::decode!(
2715 WlanWmmAccessCategoryParameters,
2716 D,
2717 &mut self.ac_be_params,
2718 decoder,
2719 offset + 2,
2720 _depth
2721 )?;
2722 fidl::decode!(
2723 WlanWmmAccessCategoryParameters,
2724 D,
2725 &mut self.ac_bk_params,
2726 decoder,
2727 offset + 10,
2728 _depth
2729 )?;
2730 fidl::decode!(
2731 WlanWmmAccessCategoryParameters,
2732 D,
2733 &mut self.ac_vi_params,
2734 decoder,
2735 offset + 18,
2736 _depth
2737 )?;
2738 fidl::decode!(
2739 WlanWmmAccessCategoryParameters,
2740 D,
2741 &mut self.ac_vo_params,
2742 decoder,
2743 offset + 26,
2744 _depth
2745 )?;
2746 Ok(())
2747 }
2748 }
2749
2750 impl DataPlaneExtension {
2751 #[inline(always)]
2752 fn max_ordinal_present(&self) -> u64 {
2753 if let Some(_) = self.data_plane_type {
2754 return 1;
2755 }
2756 0
2757 }
2758 }
2759
2760 impl fidl::encoding::ValueTypeMarker for DataPlaneExtension {
2761 type Borrowed<'a> = &'a Self;
2762 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2763 value
2764 }
2765 }
2766
2767 unsafe impl fidl::encoding::TypeMarker for DataPlaneExtension {
2768 type Owned = Self;
2769
2770 #[inline(always)]
2771 fn inline_align(_context: fidl::encoding::Context) -> usize {
2772 8
2773 }
2774
2775 #[inline(always)]
2776 fn inline_size(_context: fidl::encoding::Context) -> usize {
2777 16
2778 }
2779 }
2780
2781 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DataPlaneExtension, D>
2782 for &DataPlaneExtension
2783 {
2784 unsafe fn encode(
2785 self,
2786 encoder: &mut fidl::encoding::Encoder<'_, D>,
2787 offset: usize,
2788 mut depth: fidl::encoding::Depth,
2789 ) -> fidl::Result<()> {
2790 encoder.debug_check_bounds::<DataPlaneExtension>(offset);
2791 let max_ordinal: u64 = self.max_ordinal_present();
2793 encoder.write_num(max_ordinal, offset);
2794 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2795 if max_ordinal == 0 {
2797 return Ok(());
2798 }
2799 depth.increment()?;
2800 let envelope_size = 8;
2801 let bytes_len = max_ordinal as usize * envelope_size;
2802 #[allow(unused_variables)]
2803 let offset = encoder.out_of_line_offset(bytes_len);
2804 let mut _prev_end_offset: usize = 0;
2805 if 1 > max_ordinal {
2806 return Ok(());
2807 }
2808
2809 let cur_offset: usize = (1 - 1) * envelope_size;
2812
2813 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2815
2816 fidl::encoding::encode_in_envelope_optional::<DataPlaneType, D>(
2821 self.data_plane_type
2822 .as_ref()
2823 .map(<DataPlaneType as fidl::encoding::ValueTypeMarker>::borrow),
2824 encoder,
2825 offset + cur_offset,
2826 depth,
2827 )?;
2828
2829 _prev_end_offset = cur_offset + envelope_size;
2830
2831 Ok(())
2832 }
2833 }
2834
2835 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneExtension {
2836 #[inline(always)]
2837 fn new_empty() -> Self {
2838 Self::default()
2839 }
2840
2841 unsafe fn decode(
2842 &mut self,
2843 decoder: &mut fidl::encoding::Decoder<'_, D>,
2844 offset: usize,
2845 mut depth: fidl::encoding::Depth,
2846 ) -> fidl::Result<()> {
2847 decoder.debug_check_bounds::<Self>(offset);
2848 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2849 None => return Err(fidl::Error::NotNullable),
2850 Some(len) => len,
2851 };
2852 if len == 0 {
2854 return Ok(());
2855 };
2856 depth.increment()?;
2857 let envelope_size = 8;
2858 let bytes_len = len * envelope_size;
2859 let offset = decoder.out_of_line_offset(bytes_len)?;
2860 let mut _next_ordinal_to_read = 0;
2862 let mut next_offset = offset;
2863 let end_offset = offset + bytes_len;
2864 _next_ordinal_to_read += 1;
2865 if next_offset >= end_offset {
2866 return Ok(());
2867 }
2868
2869 while _next_ordinal_to_read < 1 {
2871 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2872 _next_ordinal_to_read += 1;
2873 next_offset += envelope_size;
2874 }
2875
2876 let next_out_of_line = decoder.next_out_of_line();
2877 let handles_before = decoder.remaining_handles();
2878 if let Some((inlined, num_bytes, num_handles)) =
2879 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2880 {
2881 let member_inline_size =
2882 <DataPlaneType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2883 if inlined != (member_inline_size <= 4) {
2884 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2885 }
2886 let inner_offset;
2887 let mut inner_depth = depth.clone();
2888 if inlined {
2889 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2890 inner_offset = next_offset;
2891 } else {
2892 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2893 inner_depth.increment()?;
2894 }
2895 let val_ref =
2896 self.data_plane_type.get_or_insert_with(|| fidl::new_empty!(DataPlaneType, D));
2897 fidl::decode!(DataPlaneType, D, val_ref, decoder, inner_offset, inner_depth)?;
2898 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2899 {
2900 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2901 }
2902 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2903 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2904 }
2905 }
2906
2907 next_offset += envelope_size;
2908
2909 while next_offset < end_offset {
2911 _next_ordinal_to_read += 1;
2912 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2913 next_offset += envelope_size;
2914 }
2915
2916 Ok(())
2917 }
2918 }
2919
2920 impl DeviceExtension {
2921 #[inline(always)]
2922 fn max_ordinal_present(&self) -> u64 {
2923 if let Some(_) = self.tx_status_report_supported {
2924 return 3;
2925 }
2926 if let Some(_) = self.mac_implementation_type {
2927 return 2;
2928 }
2929 if let Some(_) = self.is_synthetic {
2930 return 1;
2931 }
2932 0
2933 }
2934 }
2935
2936 impl fidl::encoding::ValueTypeMarker for DeviceExtension {
2937 type Borrowed<'a> = &'a Self;
2938 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2939 value
2940 }
2941 }
2942
2943 unsafe impl fidl::encoding::TypeMarker for DeviceExtension {
2944 type Owned = Self;
2945
2946 #[inline(always)]
2947 fn inline_align(_context: fidl::encoding::Context) -> usize {
2948 8
2949 }
2950
2951 #[inline(always)]
2952 fn inline_size(_context: fidl::encoding::Context) -> usize {
2953 16
2954 }
2955 }
2956
2957 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceExtension, D>
2958 for &DeviceExtension
2959 {
2960 unsafe fn encode(
2961 self,
2962 encoder: &mut fidl::encoding::Encoder<'_, D>,
2963 offset: usize,
2964 mut depth: fidl::encoding::Depth,
2965 ) -> fidl::Result<()> {
2966 encoder.debug_check_bounds::<DeviceExtension>(offset);
2967 let max_ordinal: u64 = self.max_ordinal_present();
2969 encoder.write_num(max_ordinal, offset);
2970 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2971 if max_ordinal == 0 {
2973 return Ok(());
2974 }
2975 depth.increment()?;
2976 let envelope_size = 8;
2977 let bytes_len = max_ordinal as usize * envelope_size;
2978 #[allow(unused_variables)]
2979 let offset = encoder.out_of_line_offset(bytes_len);
2980 let mut _prev_end_offset: usize = 0;
2981 if 1 > max_ordinal {
2982 return Ok(());
2983 }
2984
2985 let cur_offset: usize = (1 - 1) * envelope_size;
2988
2989 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2991
2992 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2997 self.is_synthetic.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2998 encoder,
2999 offset + cur_offset,
3000 depth,
3001 )?;
3002
3003 _prev_end_offset = cur_offset + envelope_size;
3004 if 2 > max_ordinal {
3005 return Ok(());
3006 }
3007
3008 let cur_offset: usize = (2 - 1) * envelope_size;
3011
3012 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3014
3015 fidl::encoding::encode_in_envelope_optional::<MacImplementationType, D>(
3020 self.mac_implementation_type
3021 .as_ref()
3022 .map(<MacImplementationType as fidl::encoding::ValueTypeMarker>::borrow),
3023 encoder,
3024 offset + cur_offset,
3025 depth,
3026 )?;
3027
3028 _prev_end_offset = cur_offset + envelope_size;
3029 if 3 > max_ordinal {
3030 return Ok(());
3031 }
3032
3033 let cur_offset: usize = (3 - 1) * envelope_size;
3036
3037 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3039
3040 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3045 self.tx_status_report_supported
3046 .as_ref()
3047 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3048 encoder,
3049 offset + cur_offset,
3050 depth,
3051 )?;
3052
3053 _prev_end_offset = cur_offset + envelope_size;
3054
3055 Ok(())
3056 }
3057 }
3058
3059 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceExtension {
3060 #[inline(always)]
3061 fn new_empty() -> Self {
3062 Self::default()
3063 }
3064
3065 unsafe fn decode(
3066 &mut self,
3067 decoder: &mut fidl::encoding::Decoder<'_, D>,
3068 offset: usize,
3069 mut depth: fidl::encoding::Depth,
3070 ) -> fidl::Result<()> {
3071 decoder.debug_check_bounds::<Self>(offset);
3072 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3073 None => return Err(fidl::Error::NotNullable),
3074 Some(len) => len,
3075 };
3076 if len == 0 {
3078 return Ok(());
3079 };
3080 depth.increment()?;
3081 let envelope_size = 8;
3082 let bytes_len = len * envelope_size;
3083 let offset = decoder.out_of_line_offset(bytes_len)?;
3084 let mut _next_ordinal_to_read = 0;
3086 let mut next_offset = offset;
3087 let end_offset = offset + bytes_len;
3088 _next_ordinal_to_read += 1;
3089 if next_offset >= end_offset {
3090 return Ok(());
3091 }
3092
3093 while _next_ordinal_to_read < 1 {
3095 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3096 _next_ordinal_to_read += 1;
3097 next_offset += envelope_size;
3098 }
3099
3100 let next_out_of_line = decoder.next_out_of_line();
3101 let handles_before = decoder.remaining_handles();
3102 if let Some((inlined, num_bytes, num_handles)) =
3103 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3104 {
3105 let member_inline_size =
3106 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3107 if inlined != (member_inline_size <= 4) {
3108 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3109 }
3110 let inner_offset;
3111 let mut inner_depth = depth.clone();
3112 if inlined {
3113 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3114 inner_offset = next_offset;
3115 } else {
3116 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3117 inner_depth.increment()?;
3118 }
3119 let val_ref = self.is_synthetic.get_or_insert_with(|| fidl::new_empty!(bool, D));
3120 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3121 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3122 {
3123 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3124 }
3125 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3126 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3127 }
3128 }
3129
3130 next_offset += envelope_size;
3131 _next_ordinal_to_read += 1;
3132 if next_offset >= end_offset {
3133 return Ok(());
3134 }
3135
3136 while _next_ordinal_to_read < 2 {
3138 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3139 _next_ordinal_to_read += 1;
3140 next_offset += envelope_size;
3141 }
3142
3143 let next_out_of_line = decoder.next_out_of_line();
3144 let handles_before = decoder.remaining_handles();
3145 if let Some((inlined, num_bytes, num_handles)) =
3146 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3147 {
3148 let member_inline_size =
3149 <MacImplementationType as fidl::encoding::TypeMarker>::inline_size(
3150 decoder.context,
3151 );
3152 if inlined != (member_inline_size <= 4) {
3153 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3154 }
3155 let inner_offset;
3156 let mut inner_depth = depth.clone();
3157 if inlined {
3158 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3159 inner_offset = next_offset;
3160 } else {
3161 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3162 inner_depth.increment()?;
3163 }
3164 let val_ref = self
3165 .mac_implementation_type
3166 .get_or_insert_with(|| fidl::new_empty!(MacImplementationType, D));
3167 fidl::decode!(
3168 MacImplementationType,
3169 D,
3170 val_ref,
3171 decoder,
3172 inner_offset,
3173 inner_depth
3174 )?;
3175 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3176 {
3177 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3178 }
3179 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3180 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3181 }
3182 }
3183
3184 next_offset += envelope_size;
3185 _next_ordinal_to_read += 1;
3186 if next_offset >= end_offset {
3187 return Ok(());
3188 }
3189
3190 while _next_ordinal_to_read < 3 {
3192 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3193 _next_ordinal_to_read += 1;
3194 next_offset += envelope_size;
3195 }
3196
3197 let next_out_of_line = decoder.next_out_of_line();
3198 let handles_before = decoder.remaining_handles();
3199 if let Some((inlined, num_bytes, num_handles)) =
3200 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3201 {
3202 let member_inline_size =
3203 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3204 if inlined != (member_inline_size <= 4) {
3205 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3206 }
3207 let inner_offset;
3208 let mut inner_depth = depth.clone();
3209 if inlined {
3210 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3211 inner_offset = next_offset;
3212 } else {
3213 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3214 inner_depth.increment()?;
3215 }
3216 let val_ref = self
3217 .tx_status_report_supported
3218 .get_or_insert_with(|| fidl::new_empty!(bool, D));
3219 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3220 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3221 {
3222 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3223 }
3224 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3225 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3226 }
3227 }
3228
3229 next_offset += envelope_size;
3230
3231 while next_offset < end_offset {
3233 _next_ordinal_to_read += 1;
3234 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3235 next_offset += envelope_size;
3236 }
3237
3238 Ok(())
3239 }
3240 }
3241
3242 impl DfsFeature {
3243 #[inline(always)]
3244 fn max_ordinal_present(&self) -> u64 {
3245 if let Some(_) = self.supported {
3246 return 1;
3247 }
3248 0
3249 }
3250 }
3251
3252 impl fidl::encoding::ValueTypeMarker for DfsFeature {
3253 type Borrowed<'a> = &'a Self;
3254 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3255 value
3256 }
3257 }
3258
3259 unsafe impl fidl::encoding::TypeMarker for DfsFeature {
3260 type Owned = Self;
3261
3262 #[inline(always)]
3263 fn inline_align(_context: fidl::encoding::Context) -> usize {
3264 8
3265 }
3266
3267 #[inline(always)]
3268 fn inline_size(_context: fidl::encoding::Context) -> usize {
3269 16
3270 }
3271 }
3272
3273 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DfsFeature, D>
3274 for &DfsFeature
3275 {
3276 unsafe fn encode(
3277 self,
3278 encoder: &mut fidl::encoding::Encoder<'_, D>,
3279 offset: usize,
3280 mut depth: fidl::encoding::Depth,
3281 ) -> fidl::Result<()> {
3282 encoder.debug_check_bounds::<DfsFeature>(offset);
3283 let max_ordinal: u64 = self.max_ordinal_present();
3285 encoder.write_num(max_ordinal, offset);
3286 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3287 if max_ordinal == 0 {
3289 return Ok(());
3290 }
3291 depth.increment()?;
3292 let envelope_size = 8;
3293 let bytes_len = max_ordinal as usize * envelope_size;
3294 #[allow(unused_variables)]
3295 let offset = encoder.out_of_line_offset(bytes_len);
3296 let mut _prev_end_offset: usize = 0;
3297 if 1 > max_ordinal {
3298 return Ok(());
3299 }
3300
3301 let cur_offset: usize = (1 - 1) * envelope_size;
3304
3305 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3307
3308 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3313 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3314 encoder,
3315 offset + cur_offset,
3316 depth,
3317 )?;
3318
3319 _prev_end_offset = cur_offset + envelope_size;
3320
3321 Ok(())
3322 }
3323 }
3324
3325 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DfsFeature {
3326 #[inline(always)]
3327 fn new_empty() -> Self {
3328 Self::default()
3329 }
3330
3331 unsafe fn decode(
3332 &mut self,
3333 decoder: &mut fidl::encoding::Decoder<'_, D>,
3334 offset: usize,
3335 mut depth: fidl::encoding::Depth,
3336 ) -> fidl::Result<()> {
3337 decoder.debug_check_bounds::<Self>(offset);
3338 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3339 None => return Err(fidl::Error::NotNullable),
3340 Some(len) => len,
3341 };
3342 if len == 0 {
3344 return Ok(());
3345 };
3346 depth.increment()?;
3347 let envelope_size = 8;
3348 let bytes_len = len * envelope_size;
3349 let offset = decoder.out_of_line_offset(bytes_len)?;
3350 let mut _next_ordinal_to_read = 0;
3352 let mut next_offset = offset;
3353 let end_offset = offset + bytes_len;
3354 _next_ordinal_to_read += 1;
3355 if next_offset >= end_offset {
3356 return Ok(());
3357 }
3358
3359 while _next_ordinal_to_read < 1 {
3361 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3362 _next_ordinal_to_read += 1;
3363 next_offset += envelope_size;
3364 }
3365
3366 let next_out_of_line = decoder.next_out_of_line();
3367 let handles_before = decoder.remaining_handles();
3368 if let Some((inlined, num_bytes, num_handles)) =
3369 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3370 {
3371 let member_inline_size =
3372 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3373 if inlined != (member_inline_size <= 4) {
3374 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3375 }
3376 let inner_offset;
3377 let mut inner_depth = depth.clone();
3378 if inlined {
3379 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3380 inner_offset = next_offset;
3381 } else {
3382 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3383 inner_depth.increment()?;
3384 }
3385 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
3386 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3387 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3388 {
3389 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3390 }
3391 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3392 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3393 }
3394 }
3395
3396 next_offset += envelope_size;
3397
3398 while next_offset < end_offset {
3400 _next_ordinal_to_read += 1;
3401 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3402 next_offset += envelope_size;
3403 }
3404
3405 Ok(())
3406 }
3407 }
3408
3409 impl DiscoverySupport {
3410 #[inline(always)]
3411 fn max_ordinal_present(&self) -> u64 {
3412 if let Some(_) = self.probe_response_offload {
3413 return 2;
3414 }
3415 if let Some(_) = self.scan_offload {
3416 return 1;
3417 }
3418 0
3419 }
3420 }
3421
3422 impl fidl::encoding::ValueTypeMarker for DiscoverySupport {
3423 type Borrowed<'a> = &'a Self;
3424 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3425 value
3426 }
3427 }
3428
3429 unsafe impl fidl::encoding::TypeMarker for DiscoverySupport {
3430 type Owned = Self;
3431
3432 #[inline(always)]
3433 fn inline_align(_context: fidl::encoding::Context) -> usize {
3434 8
3435 }
3436
3437 #[inline(always)]
3438 fn inline_size(_context: fidl::encoding::Context) -> usize {
3439 16
3440 }
3441 }
3442
3443 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DiscoverySupport, D>
3444 for &DiscoverySupport
3445 {
3446 unsafe fn encode(
3447 self,
3448 encoder: &mut fidl::encoding::Encoder<'_, D>,
3449 offset: usize,
3450 mut depth: fidl::encoding::Depth,
3451 ) -> fidl::Result<()> {
3452 encoder.debug_check_bounds::<DiscoverySupport>(offset);
3453 let max_ordinal: u64 = self.max_ordinal_present();
3455 encoder.write_num(max_ordinal, offset);
3456 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3457 if max_ordinal == 0 {
3459 return Ok(());
3460 }
3461 depth.increment()?;
3462 let envelope_size = 8;
3463 let bytes_len = max_ordinal as usize * envelope_size;
3464 #[allow(unused_variables)]
3465 let offset = encoder.out_of_line_offset(bytes_len);
3466 let mut _prev_end_offset: usize = 0;
3467 if 1 > max_ordinal {
3468 return Ok(());
3469 }
3470
3471 let cur_offset: usize = (1 - 1) * envelope_size;
3474
3475 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3477
3478 fidl::encoding::encode_in_envelope_optional::<ScanOffloadExtension, D>(
3483 self.scan_offload
3484 .as_ref()
3485 .map(<ScanOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow),
3486 encoder,
3487 offset + cur_offset,
3488 depth,
3489 )?;
3490
3491 _prev_end_offset = cur_offset + envelope_size;
3492 if 2 > max_ordinal {
3493 return Ok(());
3494 }
3495
3496 let cur_offset: usize = (2 - 1) * envelope_size;
3499
3500 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3502
3503 fidl::encoding::encode_in_envelope_optional::<ProbeResponseOffloadExtension, D>(
3508 self.probe_response_offload.as_ref().map(
3509 <ProbeResponseOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
3510 ),
3511 encoder,
3512 offset + cur_offset,
3513 depth,
3514 )?;
3515
3516 _prev_end_offset = cur_offset + envelope_size;
3517
3518 Ok(())
3519 }
3520 }
3521
3522 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DiscoverySupport {
3523 #[inline(always)]
3524 fn new_empty() -> Self {
3525 Self::default()
3526 }
3527
3528 unsafe fn decode(
3529 &mut self,
3530 decoder: &mut fidl::encoding::Decoder<'_, D>,
3531 offset: usize,
3532 mut depth: fidl::encoding::Depth,
3533 ) -> fidl::Result<()> {
3534 decoder.debug_check_bounds::<Self>(offset);
3535 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3536 None => return Err(fidl::Error::NotNullable),
3537 Some(len) => len,
3538 };
3539 if len == 0 {
3541 return Ok(());
3542 };
3543 depth.increment()?;
3544 let envelope_size = 8;
3545 let bytes_len = len * envelope_size;
3546 let offset = decoder.out_of_line_offset(bytes_len)?;
3547 let mut _next_ordinal_to_read = 0;
3549 let mut next_offset = offset;
3550 let end_offset = offset + bytes_len;
3551 _next_ordinal_to_read += 1;
3552 if next_offset >= end_offset {
3553 return Ok(());
3554 }
3555
3556 while _next_ordinal_to_read < 1 {
3558 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3559 _next_ordinal_to_read += 1;
3560 next_offset += envelope_size;
3561 }
3562
3563 let next_out_of_line = decoder.next_out_of_line();
3564 let handles_before = decoder.remaining_handles();
3565 if let Some((inlined, num_bytes, num_handles)) =
3566 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3567 {
3568 let member_inline_size =
3569 <ScanOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3570 decoder.context,
3571 );
3572 if inlined != (member_inline_size <= 4) {
3573 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3574 }
3575 let inner_offset;
3576 let mut inner_depth = depth.clone();
3577 if inlined {
3578 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3579 inner_offset = next_offset;
3580 } else {
3581 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3582 inner_depth.increment()?;
3583 }
3584 let val_ref = self
3585 .scan_offload
3586 .get_or_insert_with(|| fidl::new_empty!(ScanOffloadExtension, D));
3587 fidl::decode!(
3588 ScanOffloadExtension,
3589 D,
3590 val_ref,
3591 decoder,
3592 inner_offset,
3593 inner_depth
3594 )?;
3595 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3596 {
3597 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3598 }
3599 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3600 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3601 }
3602 }
3603
3604 next_offset += envelope_size;
3605 _next_ordinal_to_read += 1;
3606 if next_offset >= end_offset {
3607 return Ok(());
3608 }
3609
3610 while _next_ordinal_to_read < 2 {
3612 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3613 _next_ordinal_to_read += 1;
3614 next_offset += envelope_size;
3615 }
3616
3617 let next_out_of_line = decoder.next_out_of_line();
3618 let handles_before = decoder.remaining_handles();
3619 if let Some((inlined, num_bytes, num_handles)) =
3620 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3621 {
3622 let member_inline_size =
3623 <ProbeResponseOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3624 decoder.context,
3625 );
3626 if inlined != (member_inline_size <= 4) {
3627 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3628 }
3629 let inner_offset;
3630 let mut inner_depth = depth.clone();
3631 if inlined {
3632 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3633 inner_offset = next_offset;
3634 } else {
3635 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3636 inner_depth.increment()?;
3637 }
3638 let val_ref = self
3639 .probe_response_offload
3640 .get_or_insert_with(|| fidl::new_empty!(ProbeResponseOffloadExtension, D));
3641 fidl::decode!(
3642 ProbeResponseOffloadExtension,
3643 D,
3644 val_ref,
3645 decoder,
3646 inner_offset,
3647 inner_depth
3648 )?;
3649 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3650 {
3651 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3652 }
3653 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3654 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3655 }
3656 }
3657
3658 next_offset += envelope_size;
3659
3660 while next_offset < end_offset {
3662 _next_ordinal_to_read += 1;
3663 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3664 next_offset += envelope_size;
3665 }
3666
3667 Ok(())
3668 }
3669 }
3670
3671 impl JoinBssRequest {
3672 #[inline(always)]
3673 fn max_ordinal_present(&self) -> u64 {
3674 if let Some(_) = self.beacon_period {
3675 return 4;
3676 }
3677 if let Some(_) = self.remote {
3678 return 3;
3679 }
3680 if let Some(_) = self.bss_type {
3681 return 2;
3682 }
3683 if let Some(_) = self.bssid {
3684 return 1;
3685 }
3686 0
3687 }
3688 }
3689
3690 impl fidl::encoding::ValueTypeMarker for JoinBssRequest {
3691 type Borrowed<'a> = &'a Self;
3692 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3693 value
3694 }
3695 }
3696
3697 unsafe impl fidl::encoding::TypeMarker for JoinBssRequest {
3698 type Owned = Self;
3699
3700 #[inline(always)]
3701 fn inline_align(_context: fidl::encoding::Context) -> usize {
3702 8
3703 }
3704
3705 #[inline(always)]
3706 fn inline_size(_context: fidl::encoding::Context) -> usize {
3707 16
3708 }
3709 }
3710
3711 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinBssRequest, D>
3712 for &JoinBssRequest
3713 {
3714 unsafe fn encode(
3715 self,
3716 encoder: &mut fidl::encoding::Encoder<'_, D>,
3717 offset: usize,
3718 mut depth: fidl::encoding::Depth,
3719 ) -> fidl::Result<()> {
3720 encoder.debug_check_bounds::<JoinBssRequest>(offset);
3721 let max_ordinal: u64 = self.max_ordinal_present();
3723 encoder.write_num(max_ordinal, offset);
3724 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3725 if max_ordinal == 0 {
3727 return Ok(());
3728 }
3729 depth.increment()?;
3730 let envelope_size = 8;
3731 let bytes_len = max_ordinal as usize * envelope_size;
3732 #[allow(unused_variables)]
3733 let offset = encoder.out_of_line_offset(bytes_len);
3734 let mut _prev_end_offset: usize = 0;
3735 if 1 > max_ordinal {
3736 return Ok(());
3737 }
3738
3739 let cur_offset: usize = (1 - 1) * envelope_size;
3742
3743 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3745
3746 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
3751 self.bssid
3752 .as_ref()
3753 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
3754 encoder,
3755 offset + cur_offset,
3756 depth,
3757 )?;
3758
3759 _prev_end_offset = cur_offset + envelope_size;
3760 if 2 > max_ordinal {
3761 return Ok(());
3762 }
3763
3764 let cur_offset: usize = (2 - 1) * envelope_size;
3767
3768 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3770
3771 fidl::encoding::encode_in_envelope_optional::<BssType, D>(
3776 self.bss_type.as_ref().map(<BssType as fidl::encoding::ValueTypeMarker>::borrow),
3777 encoder,
3778 offset + cur_offset,
3779 depth,
3780 )?;
3781
3782 _prev_end_offset = cur_offset + envelope_size;
3783 if 3 > max_ordinal {
3784 return Ok(());
3785 }
3786
3787 let cur_offset: usize = (3 - 1) * envelope_size;
3790
3791 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3793
3794 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3799 self.remote.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3800 encoder,
3801 offset + cur_offset,
3802 depth,
3803 )?;
3804
3805 _prev_end_offset = cur_offset + envelope_size;
3806 if 4 > max_ordinal {
3807 return Ok(());
3808 }
3809
3810 let cur_offset: usize = (4 - 1) * envelope_size;
3813
3814 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3816
3817 fidl::encoding::encode_in_envelope_optional::<u16, D>(
3822 self.beacon_period.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
3823 encoder,
3824 offset + cur_offset,
3825 depth,
3826 )?;
3827
3828 _prev_end_offset = cur_offset + envelope_size;
3829
3830 Ok(())
3831 }
3832 }
3833
3834 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinBssRequest {
3835 #[inline(always)]
3836 fn new_empty() -> Self {
3837 Self::default()
3838 }
3839
3840 unsafe fn decode(
3841 &mut self,
3842 decoder: &mut fidl::encoding::Decoder<'_, D>,
3843 offset: usize,
3844 mut depth: fidl::encoding::Depth,
3845 ) -> fidl::Result<()> {
3846 decoder.debug_check_bounds::<Self>(offset);
3847 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3848 None => return Err(fidl::Error::NotNullable),
3849 Some(len) => len,
3850 };
3851 if len == 0 {
3853 return Ok(());
3854 };
3855 depth.increment()?;
3856 let envelope_size = 8;
3857 let bytes_len = len * envelope_size;
3858 let offset = decoder.out_of_line_offset(bytes_len)?;
3859 let mut _next_ordinal_to_read = 0;
3861 let mut next_offset = offset;
3862 let end_offset = offset + bytes_len;
3863 _next_ordinal_to_read += 1;
3864 if next_offset >= end_offset {
3865 return Ok(());
3866 }
3867
3868 while _next_ordinal_to_read < 1 {
3870 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3871 _next_ordinal_to_read += 1;
3872 next_offset += envelope_size;
3873 }
3874
3875 let next_out_of_line = decoder.next_out_of_line();
3876 let handles_before = decoder.remaining_handles();
3877 if let Some((inlined, num_bytes, num_handles)) =
3878 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3879 {
3880 let member_inline_size =
3881 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
3882 decoder.context,
3883 );
3884 if inlined != (member_inline_size <= 4) {
3885 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3886 }
3887 let inner_offset;
3888 let mut inner_depth = depth.clone();
3889 if inlined {
3890 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3891 inner_offset = next_offset;
3892 } else {
3893 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3894 inner_depth.increment()?;
3895 }
3896 let val_ref = self
3897 .bssid
3898 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
3899 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
3900 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3901 {
3902 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3903 }
3904 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3905 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3906 }
3907 }
3908
3909 next_offset += envelope_size;
3910 _next_ordinal_to_read += 1;
3911 if next_offset >= end_offset {
3912 return Ok(());
3913 }
3914
3915 while _next_ordinal_to_read < 2 {
3917 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3918 _next_ordinal_to_read += 1;
3919 next_offset += envelope_size;
3920 }
3921
3922 let next_out_of_line = decoder.next_out_of_line();
3923 let handles_before = decoder.remaining_handles();
3924 if let Some((inlined, num_bytes, num_handles)) =
3925 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3926 {
3927 let member_inline_size =
3928 <BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3929 if inlined != (member_inline_size <= 4) {
3930 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3931 }
3932 let inner_offset;
3933 let mut inner_depth = depth.clone();
3934 if inlined {
3935 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3936 inner_offset = next_offset;
3937 } else {
3938 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3939 inner_depth.increment()?;
3940 }
3941 let val_ref = self.bss_type.get_or_insert_with(|| fidl::new_empty!(BssType, D));
3942 fidl::decode!(BssType, D, val_ref, decoder, inner_offset, inner_depth)?;
3943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3944 {
3945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3946 }
3947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3949 }
3950 }
3951
3952 next_offset += envelope_size;
3953 _next_ordinal_to_read += 1;
3954 if next_offset >= end_offset {
3955 return Ok(());
3956 }
3957
3958 while _next_ordinal_to_read < 3 {
3960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3961 _next_ordinal_to_read += 1;
3962 next_offset += envelope_size;
3963 }
3964
3965 let next_out_of_line = decoder.next_out_of_line();
3966 let handles_before = decoder.remaining_handles();
3967 if let Some((inlined, num_bytes, num_handles)) =
3968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3969 {
3970 let member_inline_size =
3971 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3972 if inlined != (member_inline_size <= 4) {
3973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3974 }
3975 let inner_offset;
3976 let mut inner_depth = depth.clone();
3977 if inlined {
3978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3979 inner_offset = next_offset;
3980 } else {
3981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3982 inner_depth.increment()?;
3983 }
3984 let val_ref = self.remote.get_or_insert_with(|| fidl::new_empty!(bool, D));
3985 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3986 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3987 {
3988 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3989 }
3990 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3991 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3992 }
3993 }
3994
3995 next_offset += envelope_size;
3996 _next_ordinal_to_read += 1;
3997 if next_offset >= end_offset {
3998 return Ok(());
3999 }
4000
4001 while _next_ordinal_to_read < 4 {
4003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4004 _next_ordinal_to_read += 1;
4005 next_offset += envelope_size;
4006 }
4007
4008 let next_out_of_line = decoder.next_out_of_line();
4009 let handles_before = decoder.remaining_handles();
4010 if let Some((inlined, num_bytes, num_handles)) =
4011 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4012 {
4013 let member_inline_size =
4014 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4015 if inlined != (member_inline_size <= 4) {
4016 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4017 }
4018 let inner_offset;
4019 let mut inner_depth = depth.clone();
4020 if inlined {
4021 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4022 inner_offset = next_offset;
4023 } else {
4024 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4025 inner_depth.increment()?;
4026 }
4027 let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u16, D));
4028 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4029 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4030 {
4031 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4032 }
4033 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4034 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4035 }
4036 }
4037
4038 next_offset += envelope_size;
4039
4040 while next_offset < end_offset {
4042 _next_ordinal_to_read += 1;
4043 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4044 next_offset += envelope_size;
4045 }
4046
4047 Ok(())
4048 }
4049 }
4050
4051 impl MacSublayerSupport {
4052 #[inline(always)]
4053 fn max_ordinal_present(&self) -> u64 {
4054 if let Some(_) = self.device {
4055 return 3;
4056 }
4057 if let Some(_) = self.data_plane {
4058 return 2;
4059 }
4060 if let Some(_) = self.rate_selection_offload {
4061 return 1;
4062 }
4063 0
4064 }
4065 }
4066
4067 impl fidl::encoding::ValueTypeMarker for MacSublayerSupport {
4068 type Borrowed<'a> = &'a Self;
4069 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4070 value
4071 }
4072 }
4073
4074 unsafe impl fidl::encoding::TypeMarker for MacSublayerSupport {
4075 type Owned = Self;
4076
4077 #[inline(always)]
4078 fn inline_align(_context: fidl::encoding::Context) -> usize {
4079 8
4080 }
4081
4082 #[inline(always)]
4083 fn inline_size(_context: fidl::encoding::Context) -> usize {
4084 16
4085 }
4086 }
4087
4088 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacSublayerSupport, D>
4089 for &MacSublayerSupport
4090 {
4091 unsafe fn encode(
4092 self,
4093 encoder: &mut fidl::encoding::Encoder<'_, D>,
4094 offset: usize,
4095 mut depth: fidl::encoding::Depth,
4096 ) -> fidl::Result<()> {
4097 encoder.debug_check_bounds::<MacSublayerSupport>(offset);
4098 let max_ordinal: u64 = self.max_ordinal_present();
4100 encoder.write_num(max_ordinal, offset);
4101 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4102 if max_ordinal == 0 {
4104 return Ok(());
4105 }
4106 depth.increment()?;
4107 let envelope_size = 8;
4108 let bytes_len = max_ordinal as usize * envelope_size;
4109 #[allow(unused_variables)]
4110 let offset = encoder.out_of_line_offset(bytes_len);
4111 let mut _prev_end_offset: usize = 0;
4112 if 1 > max_ordinal {
4113 return Ok(());
4114 }
4115
4116 let cur_offset: usize = (1 - 1) * envelope_size;
4119
4120 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4122
4123 fidl::encoding::encode_in_envelope_optional::<RateSelectionOffloadExtension, D>(
4128 self.rate_selection_offload.as_ref().map(
4129 <RateSelectionOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
4130 ),
4131 encoder,
4132 offset + cur_offset,
4133 depth,
4134 )?;
4135
4136 _prev_end_offset = cur_offset + envelope_size;
4137 if 2 > max_ordinal {
4138 return Ok(());
4139 }
4140
4141 let cur_offset: usize = (2 - 1) * envelope_size;
4144
4145 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4147
4148 fidl::encoding::encode_in_envelope_optional::<DataPlaneExtension, D>(
4153 self.data_plane
4154 .as_ref()
4155 .map(<DataPlaneExtension as fidl::encoding::ValueTypeMarker>::borrow),
4156 encoder,
4157 offset + cur_offset,
4158 depth,
4159 )?;
4160
4161 _prev_end_offset = cur_offset + envelope_size;
4162 if 3 > max_ordinal {
4163 return Ok(());
4164 }
4165
4166 let cur_offset: usize = (3 - 1) * envelope_size;
4169
4170 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4172
4173 fidl::encoding::encode_in_envelope_optional::<DeviceExtension, D>(
4178 self.device
4179 .as_ref()
4180 .map(<DeviceExtension as fidl::encoding::ValueTypeMarker>::borrow),
4181 encoder,
4182 offset + cur_offset,
4183 depth,
4184 )?;
4185
4186 _prev_end_offset = cur_offset + envelope_size;
4187
4188 Ok(())
4189 }
4190 }
4191
4192 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacSublayerSupport {
4193 #[inline(always)]
4194 fn new_empty() -> Self {
4195 Self::default()
4196 }
4197
4198 unsafe fn decode(
4199 &mut self,
4200 decoder: &mut fidl::encoding::Decoder<'_, D>,
4201 offset: usize,
4202 mut depth: fidl::encoding::Depth,
4203 ) -> fidl::Result<()> {
4204 decoder.debug_check_bounds::<Self>(offset);
4205 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4206 None => return Err(fidl::Error::NotNullable),
4207 Some(len) => len,
4208 };
4209 if len == 0 {
4211 return Ok(());
4212 };
4213 depth.increment()?;
4214 let envelope_size = 8;
4215 let bytes_len = len * envelope_size;
4216 let offset = decoder.out_of_line_offset(bytes_len)?;
4217 let mut _next_ordinal_to_read = 0;
4219 let mut next_offset = offset;
4220 let end_offset = offset + bytes_len;
4221 _next_ordinal_to_read += 1;
4222 if next_offset >= end_offset {
4223 return Ok(());
4224 }
4225
4226 while _next_ordinal_to_read < 1 {
4228 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4229 _next_ordinal_to_read += 1;
4230 next_offset += envelope_size;
4231 }
4232
4233 let next_out_of_line = decoder.next_out_of_line();
4234 let handles_before = decoder.remaining_handles();
4235 if let Some((inlined, num_bytes, num_handles)) =
4236 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4237 {
4238 let member_inline_size =
4239 <RateSelectionOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
4240 decoder.context,
4241 );
4242 if inlined != (member_inline_size <= 4) {
4243 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4244 }
4245 let inner_offset;
4246 let mut inner_depth = depth.clone();
4247 if inlined {
4248 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4249 inner_offset = next_offset;
4250 } else {
4251 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4252 inner_depth.increment()?;
4253 }
4254 let val_ref = self
4255 .rate_selection_offload
4256 .get_or_insert_with(|| fidl::new_empty!(RateSelectionOffloadExtension, D));
4257 fidl::decode!(
4258 RateSelectionOffloadExtension,
4259 D,
4260 val_ref,
4261 decoder,
4262 inner_offset,
4263 inner_depth
4264 )?;
4265 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4266 {
4267 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4268 }
4269 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4270 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4271 }
4272 }
4273
4274 next_offset += envelope_size;
4275 _next_ordinal_to_read += 1;
4276 if next_offset >= end_offset {
4277 return Ok(());
4278 }
4279
4280 while _next_ordinal_to_read < 2 {
4282 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4283 _next_ordinal_to_read += 1;
4284 next_offset += envelope_size;
4285 }
4286
4287 let next_out_of_line = decoder.next_out_of_line();
4288 let handles_before = decoder.remaining_handles();
4289 if let Some((inlined, num_bytes, num_handles)) =
4290 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4291 {
4292 let member_inline_size =
4293 <DataPlaneExtension as fidl::encoding::TypeMarker>::inline_size(
4294 decoder.context,
4295 );
4296 if inlined != (member_inline_size <= 4) {
4297 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4298 }
4299 let inner_offset;
4300 let mut inner_depth = depth.clone();
4301 if inlined {
4302 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4303 inner_offset = next_offset;
4304 } else {
4305 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4306 inner_depth.increment()?;
4307 }
4308 let val_ref =
4309 self.data_plane.get_or_insert_with(|| fidl::new_empty!(DataPlaneExtension, D));
4310 fidl::decode!(DataPlaneExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4311 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4312 {
4313 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4314 }
4315 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4316 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4317 }
4318 }
4319
4320 next_offset += envelope_size;
4321 _next_ordinal_to_read += 1;
4322 if next_offset >= end_offset {
4323 return Ok(());
4324 }
4325
4326 while _next_ordinal_to_read < 3 {
4328 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4329 _next_ordinal_to_read += 1;
4330 next_offset += envelope_size;
4331 }
4332
4333 let next_out_of_line = decoder.next_out_of_line();
4334 let handles_before = decoder.remaining_handles();
4335 if let Some((inlined, num_bytes, num_handles)) =
4336 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4337 {
4338 let member_inline_size =
4339 <DeviceExtension as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4340 if inlined != (member_inline_size <= 4) {
4341 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4342 }
4343 let inner_offset;
4344 let mut inner_depth = depth.clone();
4345 if inlined {
4346 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4347 inner_offset = next_offset;
4348 } else {
4349 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4350 inner_depth.increment()?;
4351 }
4352 let val_ref =
4353 self.device.get_or_insert_with(|| fidl::new_empty!(DeviceExtension, D));
4354 fidl::decode!(DeviceExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4355 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4356 {
4357 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4358 }
4359 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4360 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4361 }
4362 }
4363
4364 next_offset += envelope_size;
4365
4366 while next_offset < end_offset {
4368 _next_ordinal_to_read += 1;
4369 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4370 next_offset += envelope_size;
4371 }
4372
4373 Ok(())
4374 }
4375 }
4376
4377 impl MfpFeature {
4378 #[inline(always)]
4379 fn max_ordinal_present(&self) -> u64 {
4380 if let Some(_) = self.supported {
4381 return 1;
4382 }
4383 0
4384 }
4385 }
4386
4387 impl fidl::encoding::ValueTypeMarker for MfpFeature {
4388 type Borrowed<'a> = &'a Self;
4389 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4390 value
4391 }
4392 }
4393
4394 unsafe impl fidl::encoding::TypeMarker for MfpFeature {
4395 type Owned = Self;
4396
4397 #[inline(always)]
4398 fn inline_align(_context: fidl::encoding::Context) -> usize {
4399 8
4400 }
4401
4402 #[inline(always)]
4403 fn inline_size(_context: fidl::encoding::Context) -> usize {
4404 16
4405 }
4406 }
4407
4408 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MfpFeature, D>
4409 for &MfpFeature
4410 {
4411 unsafe fn encode(
4412 self,
4413 encoder: &mut fidl::encoding::Encoder<'_, D>,
4414 offset: usize,
4415 mut depth: fidl::encoding::Depth,
4416 ) -> fidl::Result<()> {
4417 encoder.debug_check_bounds::<MfpFeature>(offset);
4418 let max_ordinal: u64 = self.max_ordinal_present();
4420 encoder.write_num(max_ordinal, offset);
4421 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4422 if max_ordinal == 0 {
4424 return Ok(());
4425 }
4426 depth.increment()?;
4427 let envelope_size = 8;
4428 let bytes_len = max_ordinal as usize * envelope_size;
4429 #[allow(unused_variables)]
4430 let offset = encoder.out_of_line_offset(bytes_len);
4431 let mut _prev_end_offset: usize = 0;
4432 if 1 > max_ordinal {
4433 return Ok(());
4434 }
4435
4436 let cur_offset: usize = (1 - 1) * envelope_size;
4439
4440 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4442
4443 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4448 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4449 encoder,
4450 offset + cur_offset,
4451 depth,
4452 )?;
4453
4454 _prev_end_offset = cur_offset + envelope_size;
4455
4456 Ok(())
4457 }
4458 }
4459
4460 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MfpFeature {
4461 #[inline(always)]
4462 fn new_empty() -> Self {
4463 Self::default()
4464 }
4465
4466 unsafe fn decode(
4467 &mut self,
4468 decoder: &mut fidl::encoding::Decoder<'_, D>,
4469 offset: usize,
4470 mut depth: fidl::encoding::Depth,
4471 ) -> fidl::Result<()> {
4472 decoder.debug_check_bounds::<Self>(offset);
4473 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4474 None => return Err(fidl::Error::NotNullable),
4475 Some(len) => len,
4476 };
4477 if len == 0 {
4479 return Ok(());
4480 };
4481 depth.increment()?;
4482 let envelope_size = 8;
4483 let bytes_len = len * envelope_size;
4484 let offset = decoder.out_of_line_offset(bytes_len)?;
4485 let mut _next_ordinal_to_read = 0;
4487 let mut next_offset = offset;
4488 let end_offset = offset + bytes_len;
4489 _next_ordinal_to_read += 1;
4490 if next_offset >= end_offset {
4491 return Ok(());
4492 }
4493
4494 while _next_ordinal_to_read < 1 {
4496 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4497 _next_ordinal_to_read += 1;
4498 next_offset += envelope_size;
4499 }
4500
4501 let next_out_of_line = decoder.next_out_of_line();
4502 let handles_before = decoder.remaining_handles();
4503 if let Some((inlined, num_bytes, num_handles)) =
4504 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4505 {
4506 let member_inline_size =
4507 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4508 if inlined != (member_inline_size <= 4) {
4509 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4510 }
4511 let inner_offset;
4512 let mut inner_depth = depth.clone();
4513 if inlined {
4514 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4515 inner_offset = next_offset;
4516 } else {
4517 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4518 inner_depth.increment()?;
4519 }
4520 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4521 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4522 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4523 {
4524 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4525 }
4526 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4527 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4528 }
4529 }
4530
4531 next_offset += envelope_size;
4532
4533 while next_offset < end_offset {
4535 _next_ordinal_to_read += 1;
4536 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4537 next_offset += envelope_size;
4538 }
4539
4540 Ok(())
4541 }
4542 }
4543
4544 impl ProbeResponseOffloadExtension {
4545 #[inline(always)]
4546 fn max_ordinal_present(&self) -> u64 {
4547 if let Some(_) = self.supported {
4548 return 1;
4549 }
4550 0
4551 }
4552 }
4553
4554 impl fidl::encoding::ValueTypeMarker for ProbeResponseOffloadExtension {
4555 type Borrowed<'a> = &'a Self;
4556 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4557 value
4558 }
4559 }
4560
4561 unsafe impl fidl::encoding::TypeMarker for ProbeResponseOffloadExtension {
4562 type Owned = Self;
4563
4564 #[inline(always)]
4565 fn inline_align(_context: fidl::encoding::Context) -> usize {
4566 8
4567 }
4568
4569 #[inline(always)]
4570 fn inline_size(_context: fidl::encoding::Context) -> usize {
4571 16
4572 }
4573 }
4574
4575 unsafe impl<D: fidl::encoding::ResourceDialect>
4576 fidl::encoding::Encode<ProbeResponseOffloadExtension, D>
4577 for &ProbeResponseOffloadExtension
4578 {
4579 unsafe fn encode(
4580 self,
4581 encoder: &mut fidl::encoding::Encoder<'_, D>,
4582 offset: usize,
4583 mut depth: fidl::encoding::Depth,
4584 ) -> fidl::Result<()> {
4585 encoder.debug_check_bounds::<ProbeResponseOffloadExtension>(offset);
4586 let max_ordinal: u64 = self.max_ordinal_present();
4588 encoder.write_num(max_ordinal, offset);
4589 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4590 if max_ordinal == 0 {
4592 return Ok(());
4593 }
4594 depth.increment()?;
4595 let envelope_size = 8;
4596 let bytes_len = max_ordinal as usize * envelope_size;
4597 #[allow(unused_variables)]
4598 let offset = encoder.out_of_line_offset(bytes_len);
4599 let mut _prev_end_offset: usize = 0;
4600 if 1 > max_ordinal {
4601 return Ok(());
4602 }
4603
4604 let cur_offset: usize = (1 - 1) * envelope_size;
4607
4608 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4610
4611 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4616 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4617 encoder,
4618 offset + cur_offset,
4619 depth,
4620 )?;
4621
4622 _prev_end_offset = cur_offset + envelope_size;
4623
4624 Ok(())
4625 }
4626 }
4627
4628 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4629 for ProbeResponseOffloadExtension
4630 {
4631 #[inline(always)]
4632 fn new_empty() -> Self {
4633 Self::default()
4634 }
4635
4636 unsafe fn decode(
4637 &mut self,
4638 decoder: &mut fidl::encoding::Decoder<'_, D>,
4639 offset: usize,
4640 mut depth: fidl::encoding::Depth,
4641 ) -> fidl::Result<()> {
4642 decoder.debug_check_bounds::<Self>(offset);
4643 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4644 None => return Err(fidl::Error::NotNullable),
4645 Some(len) => len,
4646 };
4647 if len == 0 {
4649 return Ok(());
4650 };
4651 depth.increment()?;
4652 let envelope_size = 8;
4653 let bytes_len = len * envelope_size;
4654 let offset = decoder.out_of_line_offset(bytes_len)?;
4655 let mut _next_ordinal_to_read = 0;
4657 let mut next_offset = offset;
4658 let end_offset = offset + bytes_len;
4659 _next_ordinal_to_read += 1;
4660 if next_offset >= end_offset {
4661 return Ok(());
4662 }
4663
4664 while _next_ordinal_to_read < 1 {
4666 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4667 _next_ordinal_to_read += 1;
4668 next_offset += envelope_size;
4669 }
4670
4671 let next_out_of_line = decoder.next_out_of_line();
4672 let handles_before = decoder.remaining_handles();
4673 if let Some((inlined, num_bytes, num_handles)) =
4674 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4675 {
4676 let member_inline_size =
4677 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4678 if inlined != (member_inline_size <= 4) {
4679 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4680 }
4681 let inner_offset;
4682 let mut inner_depth = depth.clone();
4683 if inlined {
4684 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4685 inner_offset = next_offset;
4686 } else {
4687 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4688 inner_depth.increment()?;
4689 }
4690 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4691 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4692 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4693 {
4694 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4695 }
4696 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4697 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4698 }
4699 }
4700
4701 next_offset += envelope_size;
4702
4703 while next_offset < end_offset {
4705 _next_ordinal_to_read += 1;
4706 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4707 next_offset += envelope_size;
4708 }
4709
4710 Ok(())
4711 }
4712 }
4713
4714 impl RateSelectionOffloadExtension {
4715 #[inline(always)]
4716 fn max_ordinal_present(&self) -> u64 {
4717 if let Some(_) = self.supported {
4718 return 1;
4719 }
4720 0
4721 }
4722 }
4723
4724 impl fidl::encoding::ValueTypeMarker for RateSelectionOffloadExtension {
4725 type Borrowed<'a> = &'a Self;
4726 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4727 value
4728 }
4729 }
4730
4731 unsafe impl fidl::encoding::TypeMarker for RateSelectionOffloadExtension {
4732 type Owned = Self;
4733
4734 #[inline(always)]
4735 fn inline_align(_context: fidl::encoding::Context) -> usize {
4736 8
4737 }
4738
4739 #[inline(always)]
4740 fn inline_size(_context: fidl::encoding::Context) -> usize {
4741 16
4742 }
4743 }
4744
4745 unsafe impl<D: fidl::encoding::ResourceDialect>
4746 fidl::encoding::Encode<RateSelectionOffloadExtension, D>
4747 for &RateSelectionOffloadExtension
4748 {
4749 unsafe fn encode(
4750 self,
4751 encoder: &mut fidl::encoding::Encoder<'_, D>,
4752 offset: usize,
4753 mut depth: fidl::encoding::Depth,
4754 ) -> fidl::Result<()> {
4755 encoder.debug_check_bounds::<RateSelectionOffloadExtension>(offset);
4756 let max_ordinal: u64 = self.max_ordinal_present();
4758 encoder.write_num(max_ordinal, offset);
4759 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4760 if max_ordinal == 0 {
4762 return Ok(());
4763 }
4764 depth.increment()?;
4765 let envelope_size = 8;
4766 let bytes_len = max_ordinal as usize * envelope_size;
4767 #[allow(unused_variables)]
4768 let offset = encoder.out_of_line_offset(bytes_len);
4769 let mut _prev_end_offset: usize = 0;
4770 if 1 > max_ordinal {
4771 return Ok(());
4772 }
4773
4774 let cur_offset: usize = (1 - 1) * envelope_size;
4777
4778 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4780
4781 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4786 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4787 encoder,
4788 offset + cur_offset,
4789 depth,
4790 )?;
4791
4792 _prev_end_offset = cur_offset + envelope_size;
4793
4794 Ok(())
4795 }
4796 }
4797
4798 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
4799 for RateSelectionOffloadExtension
4800 {
4801 #[inline(always)]
4802 fn new_empty() -> Self {
4803 Self::default()
4804 }
4805
4806 unsafe fn decode(
4807 &mut self,
4808 decoder: &mut fidl::encoding::Decoder<'_, D>,
4809 offset: usize,
4810 mut depth: fidl::encoding::Depth,
4811 ) -> fidl::Result<()> {
4812 decoder.debug_check_bounds::<Self>(offset);
4813 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4814 None => return Err(fidl::Error::NotNullable),
4815 Some(len) => len,
4816 };
4817 if len == 0 {
4819 return Ok(());
4820 };
4821 depth.increment()?;
4822 let envelope_size = 8;
4823 let bytes_len = len * envelope_size;
4824 let offset = decoder.out_of_line_offset(bytes_len)?;
4825 let mut _next_ordinal_to_read = 0;
4827 let mut next_offset = offset;
4828 let end_offset = offset + bytes_len;
4829 _next_ordinal_to_read += 1;
4830 if next_offset >= end_offset {
4831 return Ok(());
4832 }
4833
4834 while _next_ordinal_to_read < 1 {
4836 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4837 _next_ordinal_to_read += 1;
4838 next_offset += envelope_size;
4839 }
4840
4841 let next_out_of_line = decoder.next_out_of_line();
4842 let handles_before = decoder.remaining_handles();
4843 if let Some((inlined, num_bytes, num_handles)) =
4844 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4845 {
4846 let member_inline_size =
4847 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4848 if inlined != (member_inline_size <= 4) {
4849 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4850 }
4851 let inner_offset;
4852 let mut inner_depth = depth.clone();
4853 if inlined {
4854 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4855 inner_offset = next_offset;
4856 } else {
4857 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4858 inner_depth.increment()?;
4859 }
4860 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4861 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4862 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4863 {
4864 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4865 }
4866 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4867 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4868 }
4869 }
4870
4871 next_offset += envelope_size;
4872
4873 while next_offset < end_offset {
4875 _next_ordinal_to_read += 1;
4876 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4877 next_offset += envelope_size;
4878 }
4879
4880 Ok(())
4881 }
4882 }
4883
4884 impl SaeFeature {
4885 #[inline(always)]
4886 fn max_ordinal_present(&self) -> u64 {
4887 if let Some(_) = self.sme_handler_supported {
4888 return 2;
4889 }
4890 if let Some(_) = self.driver_handler_supported {
4891 return 1;
4892 }
4893 0
4894 }
4895 }
4896
4897 impl fidl::encoding::ValueTypeMarker for SaeFeature {
4898 type Borrowed<'a> = &'a Self;
4899 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4900 value
4901 }
4902 }
4903
4904 unsafe impl fidl::encoding::TypeMarker for SaeFeature {
4905 type Owned = Self;
4906
4907 #[inline(always)]
4908 fn inline_align(_context: fidl::encoding::Context) -> usize {
4909 8
4910 }
4911
4912 #[inline(always)]
4913 fn inline_size(_context: fidl::encoding::Context) -> usize {
4914 16
4915 }
4916 }
4917
4918 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFeature, D>
4919 for &SaeFeature
4920 {
4921 unsafe fn encode(
4922 self,
4923 encoder: &mut fidl::encoding::Encoder<'_, D>,
4924 offset: usize,
4925 mut depth: fidl::encoding::Depth,
4926 ) -> fidl::Result<()> {
4927 encoder.debug_check_bounds::<SaeFeature>(offset);
4928 let max_ordinal: u64 = self.max_ordinal_present();
4930 encoder.write_num(max_ordinal, offset);
4931 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4932 if max_ordinal == 0 {
4934 return Ok(());
4935 }
4936 depth.increment()?;
4937 let envelope_size = 8;
4938 let bytes_len = max_ordinal as usize * envelope_size;
4939 #[allow(unused_variables)]
4940 let offset = encoder.out_of_line_offset(bytes_len);
4941 let mut _prev_end_offset: usize = 0;
4942 if 1 > max_ordinal {
4943 return Ok(());
4944 }
4945
4946 let cur_offset: usize = (1 - 1) * envelope_size;
4949
4950 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4952
4953 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4958 self.driver_handler_supported
4959 .as_ref()
4960 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4961 encoder,
4962 offset + cur_offset,
4963 depth,
4964 )?;
4965
4966 _prev_end_offset = cur_offset + envelope_size;
4967 if 2 > max_ordinal {
4968 return Ok(());
4969 }
4970
4971 let cur_offset: usize = (2 - 1) * envelope_size;
4974
4975 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4977
4978 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4983 self.sme_handler_supported
4984 .as_ref()
4985 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4986 encoder,
4987 offset + cur_offset,
4988 depth,
4989 )?;
4990
4991 _prev_end_offset = cur_offset + envelope_size;
4992
4993 Ok(())
4994 }
4995 }
4996
4997 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFeature {
4998 #[inline(always)]
4999 fn new_empty() -> Self {
5000 Self::default()
5001 }
5002
5003 unsafe fn decode(
5004 &mut self,
5005 decoder: &mut fidl::encoding::Decoder<'_, D>,
5006 offset: usize,
5007 mut depth: fidl::encoding::Depth,
5008 ) -> fidl::Result<()> {
5009 decoder.debug_check_bounds::<Self>(offset);
5010 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5011 None => return Err(fidl::Error::NotNullable),
5012 Some(len) => len,
5013 };
5014 if len == 0 {
5016 return Ok(());
5017 };
5018 depth.increment()?;
5019 let envelope_size = 8;
5020 let bytes_len = len * envelope_size;
5021 let offset = decoder.out_of_line_offset(bytes_len)?;
5022 let mut _next_ordinal_to_read = 0;
5024 let mut next_offset = offset;
5025 let end_offset = offset + bytes_len;
5026 _next_ordinal_to_read += 1;
5027 if next_offset >= end_offset {
5028 return Ok(());
5029 }
5030
5031 while _next_ordinal_to_read < 1 {
5033 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5034 _next_ordinal_to_read += 1;
5035 next_offset += envelope_size;
5036 }
5037
5038 let next_out_of_line = decoder.next_out_of_line();
5039 let handles_before = decoder.remaining_handles();
5040 if let Some((inlined, num_bytes, num_handles)) =
5041 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5042 {
5043 let member_inline_size =
5044 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5045 if inlined != (member_inline_size <= 4) {
5046 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5047 }
5048 let inner_offset;
5049 let mut inner_depth = depth.clone();
5050 if inlined {
5051 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5052 inner_offset = next_offset;
5053 } else {
5054 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5055 inner_depth.increment()?;
5056 }
5057 let val_ref =
5058 self.driver_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5059 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5060 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5061 {
5062 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5063 }
5064 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5065 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5066 }
5067 }
5068
5069 next_offset += envelope_size;
5070 _next_ordinal_to_read += 1;
5071 if next_offset >= end_offset {
5072 return Ok(());
5073 }
5074
5075 while _next_ordinal_to_read < 2 {
5077 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5078 _next_ordinal_to_read += 1;
5079 next_offset += envelope_size;
5080 }
5081
5082 let next_out_of_line = decoder.next_out_of_line();
5083 let handles_before = decoder.remaining_handles();
5084 if let Some((inlined, num_bytes, num_handles)) =
5085 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5086 {
5087 let member_inline_size =
5088 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5089 if inlined != (member_inline_size <= 4) {
5090 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5091 }
5092 let inner_offset;
5093 let mut inner_depth = depth.clone();
5094 if inlined {
5095 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5096 inner_offset = next_offset;
5097 } else {
5098 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5099 inner_depth.increment()?;
5100 }
5101 let val_ref =
5102 self.sme_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5103 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5104 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5105 {
5106 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5107 }
5108 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5109 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5110 }
5111 }
5112
5113 next_offset += envelope_size;
5114
5115 while next_offset < end_offset {
5117 _next_ordinal_to_read += 1;
5118 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5119 next_offset += envelope_size;
5120 }
5121
5122 Ok(())
5123 }
5124 }
5125
5126 impl ScanOffloadExtension {
5127 #[inline(always)]
5128 fn max_ordinal_present(&self) -> u64 {
5129 if let Some(_) = self.scan_cancel_supported {
5130 return 2;
5131 }
5132 if let Some(_) = self.supported {
5133 return 1;
5134 }
5135 0
5136 }
5137 }
5138
5139 impl fidl::encoding::ValueTypeMarker for ScanOffloadExtension {
5140 type Borrowed<'a> = &'a Self;
5141 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5142 value
5143 }
5144 }
5145
5146 unsafe impl fidl::encoding::TypeMarker for ScanOffloadExtension {
5147 type Owned = Self;
5148
5149 #[inline(always)]
5150 fn inline_align(_context: fidl::encoding::Context) -> usize {
5151 8
5152 }
5153
5154 #[inline(always)]
5155 fn inline_size(_context: fidl::encoding::Context) -> usize {
5156 16
5157 }
5158 }
5159
5160 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOffloadExtension, D>
5161 for &ScanOffloadExtension
5162 {
5163 unsafe fn encode(
5164 self,
5165 encoder: &mut fidl::encoding::Encoder<'_, D>,
5166 offset: usize,
5167 mut depth: fidl::encoding::Depth,
5168 ) -> fidl::Result<()> {
5169 encoder.debug_check_bounds::<ScanOffloadExtension>(offset);
5170 let max_ordinal: u64 = self.max_ordinal_present();
5172 encoder.write_num(max_ordinal, offset);
5173 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5174 if max_ordinal == 0 {
5176 return Ok(());
5177 }
5178 depth.increment()?;
5179 let envelope_size = 8;
5180 let bytes_len = max_ordinal as usize * envelope_size;
5181 #[allow(unused_variables)]
5182 let offset = encoder.out_of_line_offset(bytes_len);
5183 let mut _prev_end_offset: usize = 0;
5184 if 1 > max_ordinal {
5185 return Ok(());
5186 }
5187
5188 let cur_offset: usize = (1 - 1) * envelope_size;
5191
5192 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5194
5195 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5200 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5201 encoder,
5202 offset + cur_offset,
5203 depth,
5204 )?;
5205
5206 _prev_end_offset = cur_offset + envelope_size;
5207 if 2 > max_ordinal {
5208 return Ok(());
5209 }
5210
5211 let cur_offset: usize = (2 - 1) * envelope_size;
5214
5215 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5217
5218 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5223 self.scan_cancel_supported
5224 .as_ref()
5225 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5226 encoder,
5227 offset + cur_offset,
5228 depth,
5229 )?;
5230
5231 _prev_end_offset = cur_offset + envelope_size;
5232
5233 Ok(())
5234 }
5235 }
5236
5237 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOffloadExtension {
5238 #[inline(always)]
5239 fn new_empty() -> Self {
5240 Self::default()
5241 }
5242
5243 unsafe fn decode(
5244 &mut self,
5245 decoder: &mut fidl::encoding::Decoder<'_, D>,
5246 offset: usize,
5247 mut depth: fidl::encoding::Depth,
5248 ) -> fidl::Result<()> {
5249 decoder.debug_check_bounds::<Self>(offset);
5250 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5251 None => return Err(fidl::Error::NotNullable),
5252 Some(len) => len,
5253 };
5254 if len == 0 {
5256 return Ok(());
5257 };
5258 depth.increment()?;
5259 let envelope_size = 8;
5260 let bytes_len = len * envelope_size;
5261 let offset = decoder.out_of_line_offset(bytes_len)?;
5262 let mut _next_ordinal_to_read = 0;
5264 let mut next_offset = offset;
5265 let end_offset = offset + bytes_len;
5266 _next_ordinal_to_read += 1;
5267 if next_offset >= end_offset {
5268 return Ok(());
5269 }
5270
5271 while _next_ordinal_to_read < 1 {
5273 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5274 _next_ordinal_to_read += 1;
5275 next_offset += envelope_size;
5276 }
5277
5278 let next_out_of_line = decoder.next_out_of_line();
5279 let handles_before = decoder.remaining_handles();
5280 if let Some((inlined, num_bytes, num_handles)) =
5281 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5282 {
5283 let member_inline_size =
5284 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5285 if inlined != (member_inline_size <= 4) {
5286 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5287 }
5288 let inner_offset;
5289 let mut inner_depth = depth.clone();
5290 if inlined {
5291 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5292 inner_offset = next_offset;
5293 } else {
5294 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5295 inner_depth.increment()?;
5296 }
5297 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5298 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5299 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5300 {
5301 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5302 }
5303 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5304 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5305 }
5306 }
5307
5308 next_offset += envelope_size;
5309 _next_ordinal_to_read += 1;
5310 if next_offset >= end_offset {
5311 return Ok(());
5312 }
5313
5314 while _next_ordinal_to_read < 2 {
5316 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5317 _next_ordinal_to_read += 1;
5318 next_offset += envelope_size;
5319 }
5320
5321 let next_out_of_line = decoder.next_out_of_line();
5322 let handles_before = decoder.remaining_handles();
5323 if let Some((inlined, num_bytes, num_handles)) =
5324 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5325 {
5326 let member_inline_size =
5327 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5328 if inlined != (member_inline_size <= 4) {
5329 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5330 }
5331 let inner_offset;
5332 let mut inner_depth = depth.clone();
5333 if inlined {
5334 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5335 inner_offset = next_offset;
5336 } else {
5337 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5338 inner_depth.increment()?;
5339 }
5340 let val_ref =
5341 self.scan_cancel_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5342 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5343 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5344 {
5345 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5346 }
5347 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5348 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5349 }
5350 }
5351
5352 next_offset += envelope_size;
5353
5354 while next_offset < end_offset {
5356 _next_ordinal_to_read += 1;
5357 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5358 next_offset += envelope_size;
5359 }
5360
5361 Ok(())
5362 }
5363 }
5364
5365 impl SecuritySupport {
5366 #[inline(always)]
5367 fn max_ordinal_present(&self) -> u64 {
5368 if let Some(_) = self.mfp {
5369 return 2;
5370 }
5371 if let Some(_) = self.sae {
5372 return 1;
5373 }
5374 0
5375 }
5376 }
5377
5378 impl fidl::encoding::ValueTypeMarker for SecuritySupport {
5379 type Borrowed<'a> = &'a Self;
5380 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5381 value
5382 }
5383 }
5384
5385 unsafe impl fidl::encoding::TypeMarker for SecuritySupport {
5386 type Owned = Self;
5387
5388 #[inline(always)]
5389 fn inline_align(_context: fidl::encoding::Context) -> usize {
5390 8
5391 }
5392
5393 #[inline(always)]
5394 fn inline_size(_context: fidl::encoding::Context) -> usize {
5395 16
5396 }
5397 }
5398
5399 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecuritySupport, D>
5400 for &SecuritySupport
5401 {
5402 unsafe fn encode(
5403 self,
5404 encoder: &mut fidl::encoding::Encoder<'_, D>,
5405 offset: usize,
5406 mut depth: fidl::encoding::Depth,
5407 ) -> fidl::Result<()> {
5408 encoder.debug_check_bounds::<SecuritySupport>(offset);
5409 let max_ordinal: u64 = self.max_ordinal_present();
5411 encoder.write_num(max_ordinal, offset);
5412 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5413 if max_ordinal == 0 {
5415 return Ok(());
5416 }
5417 depth.increment()?;
5418 let envelope_size = 8;
5419 let bytes_len = max_ordinal as usize * envelope_size;
5420 #[allow(unused_variables)]
5421 let offset = encoder.out_of_line_offset(bytes_len);
5422 let mut _prev_end_offset: usize = 0;
5423 if 1 > max_ordinal {
5424 return Ok(());
5425 }
5426
5427 let cur_offset: usize = (1 - 1) * envelope_size;
5430
5431 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5433
5434 fidl::encoding::encode_in_envelope_optional::<SaeFeature, D>(
5439 self.sae.as_ref().map(<SaeFeature as fidl::encoding::ValueTypeMarker>::borrow),
5440 encoder,
5441 offset + cur_offset,
5442 depth,
5443 )?;
5444
5445 _prev_end_offset = cur_offset + envelope_size;
5446 if 2 > max_ordinal {
5447 return Ok(());
5448 }
5449
5450 let cur_offset: usize = (2 - 1) * envelope_size;
5453
5454 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5456
5457 fidl::encoding::encode_in_envelope_optional::<MfpFeature, D>(
5462 self.mfp.as_ref().map(<MfpFeature as fidl::encoding::ValueTypeMarker>::borrow),
5463 encoder,
5464 offset + cur_offset,
5465 depth,
5466 )?;
5467
5468 _prev_end_offset = cur_offset + envelope_size;
5469
5470 Ok(())
5471 }
5472 }
5473
5474 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecuritySupport {
5475 #[inline(always)]
5476 fn new_empty() -> Self {
5477 Self::default()
5478 }
5479
5480 unsafe fn decode(
5481 &mut self,
5482 decoder: &mut fidl::encoding::Decoder<'_, D>,
5483 offset: usize,
5484 mut depth: fidl::encoding::Depth,
5485 ) -> fidl::Result<()> {
5486 decoder.debug_check_bounds::<Self>(offset);
5487 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5488 None => return Err(fidl::Error::NotNullable),
5489 Some(len) => len,
5490 };
5491 if len == 0 {
5493 return Ok(());
5494 };
5495 depth.increment()?;
5496 let envelope_size = 8;
5497 let bytes_len = len * envelope_size;
5498 let offset = decoder.out_of_line_offset(bytes_len)?;
5499 let mut _next_ordinal_to_read = 0;
5501 let mut next_offset = offset;
5502 let end_offset = offset + bytes_len;
5503 _next_ordinal_to_read += 1;
5504 if next_offset >= end_offset {
5505 return Ok(());
5506 }
5507
5508 while _next_ordinal_to_read < 1 {
5510 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5511 _next_ordinal_to_read += 1;
5512 next_offset += envelope_size;
5513 }
5514
5515 let next_out_of_line = decoder.next_out_of_line();
5516 let handles_before = decoder.remaining_handles();
5517 if let Some((inlined, num_bytes, num_handles)) =
5518 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5519 {
5520 let member_inline_size =
5521 <SaeFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5522 if inlined != (member_inline_size <= 4) {
5523 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5524 }
5525 let inner_offset;
5526 let mut inner_depth = depth.clone();
5527 if inlined {
5528 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5529 inner_offset = next_offset;
5530 } else {
5531 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5532 inner_depth.increment()?;
5533 }
5534 let val_ref = self.sae.get_or_insert_with(|| fidl::new_empty!(SaeFeature, D));
5535 fidl::decode!(SaeFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
5536 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5537 {
5538 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5539 }
5540 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5541 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5542 }
5543 }
5544
5545 next_offset += envelope_size;
5546 _next_ordinal_to_read += 1;
5547 if next_offset >= end_offset {
5548 return Ok(());
5549 }
5550
5551 while _next_ordinal_to_read < 2 {
5553 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5554 _next_ordinal_to_read += 1;
5555 next_offset += envelope_size;
5556 }
5557
5558 let next_out_of_line = decoder.next_out_of_line();
5559 let handles_before = decoder.remaining_handles();
5560 if let Some((inlined, num_bytes, num_handles)) =
5561 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5562 {
5563 let member_inline_size =
5564 <MfpFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5565 if inlined != (member_inline_size <= 4) {
5566 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5567 }
5568 let inner_offset;
5569 let mut inner_depth = depth.clone();
5570 if inlined {
5571 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5572 inner_offset = next_offset;
5573 } else {
5574 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5575 inner_depth.increment()?;
5576 }
5577 let val_ref = self.mfp.get_or_insert_with(|| fidl::new_empty!(MfpFeature, D));
5578 fidl::decode!(MfpFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
5579 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5580 {
5581 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5582 }
5583 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5584 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5585 }
5586 }
5587
5588 next_offset += envelope_size;
5589
5590 while next_offset < end_offset {
5592 _next_ordinal_to_read += 1;
5593 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5594 next_offset += envelope_size;
5595 }
5596
5597 Ok(())
5598 }
5599 }
5600
5601 impl SpectrumManagementSupport {
5602 #[inline(always)]
5603 fn max_ordinal_present(&self) -> u64 {
5604 if let Some(_) = self.dfs {
5605 return 1;
5606 }
5607 0
5608 }
5609 }
5610
5611 impl fidl::encoding::ValueTypeMarker for SpectrumManagementSupport {
5612 type Borrowed<'a> = &'a Self;
5613 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5614 value
5615 }
5616 }
5617
5618 unsafe impl fidl::encoding::TypeMarker for SpectrumManagementSupport {
5619 type Owned = Self;
5620
5621 #[inline(always)]
5622 fn inline_align(_context: fidl::encoding::Context) -> usize {
5623 8
5624 }
5625
5626 #[inline(always)]
5627 fn inline_size(_context: fidl::encoding::Context) -> usize {
5628 16
5629 }
5630 }
5631
5632 unsafe impl<D: fidl::encoding::ResourceDialect>
5633 fidl::encoding::Encode<SpectrumManagementSupport, D> for &SpectrumManagementSupport
5634 {
5635 unsafe fn encode(
5636 self,
5637 encoder: &mut fidl::encoding::Encoder<'_, D>,
5638 offset: usize,
5639 mut depth: fidl::encoding::Depth,
5640 ) -> fidl::Result<()> {
5641 encoder.debug_check_bounds::<SpectrumManagementSupport>(offset);
5642 let max_ordinal: u64 = self.max_ordinal_present();
5644 encoder.write_num(max_ordinal, offset);
5645 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5646 if max_ordinal == 0 {
5648 return Ok(());
5649 }
5650 depth.increment()?;
5651 let envelope_size = 8;
5652 let bytes_len = max_ordinal as usize * envelope_size;
5653 #[allow(unused_variables)]
5654 let offset = encoder.out_of_line_offset(bytes_len);
5655 let mut _prev_end_offset: usize = 0;
5656 if 1 > max_ordinal {
5657 return Ok(());
5658 }
5659
5660 let cur_offset: usize = (1 - 1) * envelope_size;
5663
5664 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5666
5667 fidl::encoding::encode_in_envelope_optional::<DfsFeature, D>(
5672 self.dfs.as_ref().map(<DfsFeature as fidl::encoding::ValueTypeMarker>::borrow),
5673 encoder,
5674 offset + cur_offset,
5675 depth,
5676 )?;
5677
5678 _prev_end_offset = cur_offset + envelope_size;
5679
5680 Ok(())
5681 }
5682 }
5683
5684 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5685 for SpectrumManagementSupport
5686 {
5687 #[inline(always)]
5688 fn new_empty() -> Self {
5689 Self::default()
5690 }
5691
5692 unsafe fn decode(
5693 &mut self,
5694 decoder: &mut fidl::encoding::Decoder<'_, D>,
5695 offset: usize,
5696 mut depth: fidl::encoding::Depth,
5697 ) -> fidl::Result<()> {
5698 decoder.debug_check_bounds::<Self>(offset);
5699 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5700 None => return Err(fidl::Error::NotNullable),
5701 Some(len) => len,
5702 };
5703 if len == 0 {
5705 return Ok(());
5706 };
5707 depth.increment()?;
5708 let envelope_size = 8;
5709 let bytes_len = len * envelope_size;
5710 let offset = decoder.out_of_line_offset(bytes_len)?;
5711 let mut _next_ordinal_to_read = 0;
5713 let mut next_offset = offset;
5714 let end_offset = offset + bytes_len;
5715 _next_ordinal_to_read += 1;
5716 if next_offset >= end_offset {
5717 return Ok(());
5718 }
5719
5720 while _next_ordinal_to_read < 1 {
5722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5723 _next_ordinal_to_read += 1;
5724 next_offset += envelope_size;
5725 }
5726
5727 let next_out_of_line = decoder.next_out_of_line();
5728 let handles_before = decoder.remaining_handles();
5729 if let Some((inlined, num_bytes, num_handles)) =
5730 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5731 {
5732 let member_inline_size =
5733 <DfsFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5734 if inlined != (member_inline_size <= 4) {
5735 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5736 }
5737 let inner_offset;
5738 let mut inner_depth = depth.clone();
5739 if inlined {
5740 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5741 inner_offset = next_offset;
5742 } else {
5743 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5744 inner_depth.increment()?;
5745 }
5746 let val_ref = self.dfs.get_or_insert_with(|| fidl::new_empty!(DfsFeature, D));
5747 fidl::decode!(DfsFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
5748 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5749 {
5750 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5751 }
5752 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5753 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5754 }
5755 }
5756
5757 next_offset += envelope_size;
5758
5759 while next_offset < end_offset {
5761 _next_ordinal_to_read += 1;
5762 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5763 next_offset += envelope_size;
5764 }
5765
5766 Ok(())
5767 }
5768 }
5769
5770 impl WlanKeyConfig {
5771 #[inline(always)]
5772 fn max_ordinal_present(&self) -> u64 {
5773 if let Some(_) = self.rsc {
5774 return 8;
5775 }
5776 if let Some(_) = self.key {
5777 return 7;
5778 }
5779 if let Some(_) = self.key_idx {
5780 return 6;
5781 }
5782 if let Some(_) = self.peer_addr {
5783 return 5;
5784 }
5785 if let Some(_) = self.key_type {
5786 return 4;
5787 }
5788 if let Some(_) = self.cipher_type {
5789 return 3;
5790 }
5791 if let Some(_) = self.cipher_oui {
5792 return 2;
5793 }
5794 if let Some(_) = self.protection {
5795 return 1;
5796 }
5797 0
5798 }
5799 }
5800
5801 impl fidl::encoding::ValueTypeMarker for WlanKeyConfig {
5802 type Borrowed<'a> = &'a Self;
5803 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5804 value
5805 }
5806 }
5807
5808 unsafe impl fidl::encoding::TypeMarker for WlanKeyConfig {
5809 type Owned = Self;
5810
5811 #[inline(always)]
5812 fn inline_align(_context: fidl::encoding::Context) -> usize {
5813 8
5814 }
5815
5816 #[inline(always)]
5817 fn inline_size(_context: fidl::encoding::Context) -> usize {
5818 16
5819 }
5820 }
5821
5822 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanKeyConfig, D>
5823 for &WlanKeyConfig
5824 {
5825 unsafe fn encode(
5826 self,
5827 encoder: &mut fidl::encoding::Encoder<'_, D>,
5828 offset: usize,
5829 mut depth: fidl::encoding::Depth,
5830 ) -> fidl::Result<()> {
5831 encoder.debug_check_bounds::<WlanKeyConfig>(offset);
5832 let max_ordinal: u64 = self.max_ordinal_present();
5834 encoder.write_num(max_ordinal, offset);
5835 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5836 if max_ordinal == 0 {
5838 return Ok(());
5839 }
5840 depth.increment()?;
5841 let envelope_size = 8;
5842 let bytes_len = max_ordinal as usize * envelope_size;
5843 #[allow(unused_variables)]
5844 let offset = encoder.out_of_line_offset(bytes_len);
5845 let mut _prev_end_offset: usize = 0;
5846 if 1 > max_ordinal {
5847 return Ok(());
5848 }
5849
5850 let cur_offset: usize = (1 - 1) * envelope_size;
5853
5854 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5856
5857 fidl::encoding::encode_in_envelope_optional::<WlanProtection, D>(
5862 self.protection
5863 .as_ref()
5864 .map(<WlanProtection as fidl::encoding::ValueTypeMarker>::borrow),
5865 encoder,
5866 offset + cur_offset,
5867 depth,
5868 )?;
5869
5870 _prev_end_offset = cur_offset + envelope_size;
5871 if 2 > max_ordinal {
5872 return Ok(());
5873 }
5874
5875 let cur_offset: usize = (2 - 1) * envelope_size;
5878
5879 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5881
5882 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 3>, D>(
5887 self.cipher_oui
5888 .as_ref()
5889 .map(<fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow),
5890 encoder,
5891 offset + cur_offset,
5892 depth,
5893 )?;
5894
5895 _prev_end_offset = cur_offset + envelope_size;
5896 if 3 > max_ordinal {
5897 return Ok(());
5898 }
5899
5900 let cur_offset: usize = (3 - 1) * envelope_size;
5903
5904 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5906
5907 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>(
5912 self.cipher_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow),
5913 encoder, offset + cur_offset, depth
5914 )?;
5915
5916 _prev_end_offset = cur_offset + envelope_size;
5917 if 4 > max_ordinal {
5918 return Ok(());
5919 }
5920
5921 let cur_offset: usize = (4 - 1) * envelope_size;
5924
5925 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5927
5928 fidl::encoding::encode_in_envelope_optional::<WlanKeyType, D>(
5933 self.key_type
5934 .as_ref()
5935 .map(<WlanKeyType as fidl::encoding::ValueTypeMarker>::borrow),
5936 encoder,
5937 offset + cur_offset,
5938 depth,
5939 )?;
5940
5941 _prev_end_offset = cur_offset + envelope_size;
5942 if 5 > max_ordinal {
5943 return Ok(());
5944 }
5945
5946 let cur_offset: usize = (5 - 1) * envelope_size;
5949
5950 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5952
5953 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
5958 self.peer_addr
5959 .as_ref()
5960 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
5961 encoder,
5962 offset + cur_offset,
5963 depth,
5964 )?;
5965
5966 _prev_end_offset = cur_offset + envelope_size;
5967 if 6 > max_ordinal {
5968 return Ok(());
5969 }
5970
5971 let cur_offset: usize = (6 - 1) * envelope_size;
5974
5975 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5977
5978 fidl::encoding::encode_in_envelope_optional::<u8, D>(
5983 self.key_idx.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
5984 encoder,
5985 offset + cur_offset,
5986 depth,
5987 )?;
5988
5989 _prev_end_offset = cur_offset + envelope_size;
5990 if 7 > max_ordinal {
5991 return Ok(());
5992 }
5993
5994 let cur_offset: usize = (7 - 1) * envelope_size;
5997
5998 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6000
6001 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6006 self.key.as_ref().map(
6007 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6008 ),
6009 encoder,
6010 offset + cur_offset,
6011 depth,
6012 )?;
6013
6014 _prev_end_offset = cur_offset + envelope_size;
6015 if 8 > max_ordinal {
6016 return Ok(());
6017 }
6018
6019 let cur_offset: usize = (8 - 1) * envelope_size;
6022
6023 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6025
6026 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6031 self.rsc.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6032 encoder,
6033 offset + cur_offset,
6034 depth,
6035 )?;
6036
6037 _prev_end_offset = cur_offset + envelope_size;
6038
6039 Ok(())
6040 }
6041 }
6042
6043 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyConfig {
6044 #[inline(always)]
6045 fn new_empty() -> Self {
6046 Self::default()
6047 }
6048
6049 unsafe fn decode(
6050 &mut self,
6051 decoder: &mut fidl::encoding::Decoder<'_, D>,
6052 offset: usize,
6053 mut depth: fidl::encoding::Depth,
6054 ) -> fidl::Result<()> {
6055 decoder.debug_check_bounds::<Self>(offset);
6056 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6057 None => return Err(fidl::Error::NotNullable),
6058 Some(len) => len,
6059 };
6060 if len == 0 {
6062 return Ok(());
6063 };
6064 depth.increment()?;
6065 let envelope_size = 8;
6066 let bytes_len = len * envelope_size;
6067 let offset = decoder.out_of_line_offset(bytes_len)?;
6068 let mut _next_ordinal_to_read = 0;
6070 let mut next_offset = offset;
6071 let end_offset = offset + bytes_len;
6072 _next_ordinal_to_read += 1;
6073 if next_offset >= end_offset {
6074 return Ok(());
6075 }
6076
6077 while _next_ordinal_to_read < 1 {
6079 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6080 _next_ordinal_to_read += 1;
6081 next_offset += envelope_size;
6082 }
6083
6084 let next_out_of_line = decoder.next_out_of_line();
6085 let handles_before = decoder.remaining_handles();
6086 if let Some((inlined, num_bytes, num_handles)) =
6087 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6088 {
6089 let member_inline_size =
6090 <WlanProtection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6091 if inlined != (member_inline_size <= 4) {
6092 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6093 }
6094 let inner_offset;
6095 let mut inner_depth = depth.clone();
6096 if inlined {
6097 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6098 inner_offset = next_offset;
6099 } else {
6100 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6101 inner_depth.increment()?;
6102 }
6103 let val_ref =
6104 self.protection.get_or_insert_with(|| fidl::new_empty!(WlanProtection, D));
6105 fidl::decode!(WlanProtection, D, val_ref, decoder, inner_offset, inner_depth)?;
6106 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6107 {
6108 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6109 }
6110 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6111 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6112 }
6113 }
6114
6115 next_offset += envelope_size;
6116 _next_ordinal_to_read += 1;
6117 if next_offset >= end_offset {
6118 return Ok(());
6119 }
6120
6121 while _next_ordinal_to_read < 2 {
6123 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6124 _next_ordinal_to_read += 1;
6125 next_offset += envelope_size;
6126 }
6127
6128 let next_out_of_line = decoder.next_out_of_line();
6129 let handles_before = decoder.remaining_handles();
6130 if let Some((inlined, num_bytes, num_handles)) =
6131 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6132 {
6133 let member_inline_size =
6134 <fidl::encoding::Array<u8, 3> as fidl::encoding::TypeMarker>::inline_size(
6135 decoder.context,
6136 );
6137 if inlined != (member_inline_size <= 4) {
6138 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6139 }
6140 let inner_offset;
6141 let mut inner_depth = depth.clone();
6142 if inlined {
6143 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6144 inner_offset = next_offset;
6145 } else {
6146 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6147 inner_depth.increment()?;
6148 }
6149 let val_ref = self
6150 .cipher_oui
6151 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 3>, D));
6152 fidl::decode!(fidl::encoding::Array<u8, 3>, D, val_ref, decoder, inner_offset, inner_depth)?;
6153 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6154 {
6155 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6156 }
6157 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6158 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6159 }
6160 }
6161
6162 next_offset += envelope_size;
6163 _next_ordinal_to_read += 1;
6164 if next_offset >= end_offset {
6165 return Ok(());
6166 }
6167
6168 while _next_ordinal_to_read < 3 {
6170 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6171 _next_ordinal_to_read += 1;
6172 next_offset += envelope_size;
6173 }
6174
6175 let next_out_of_line = decoder.next_out_of_line();
6176 let handles_before = decoder.remaining_handles();
6177 if let Some((inlined, num_bytes, num_handles)) =
6178 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6179 {
6180 let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6181 if inlined != (member_inline_size <= 4) {
6182 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6183 }
6184 let inner_offset;
6185 let mut inner_depth = depth.clone();
6186 if inlined {
6187 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6188 inner_offset = next_offset;
6189 } else {
6190 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6191 inner_depth.increment()?;
6192 }
6193 let val_ref = self.cipher_type.get_or_insert_with(|| {
6194 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D)
6195 });
6196 fidl::decode!(
6197 fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
6198 D,
6199 val_ref,
6200 decoder,
6201 inner_offset,
6202 inner_depth
6203 )?;
6204 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6205 {
6206 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6207 }
6208 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6209 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6210 }
6211 }
6212
6213 next_offset += envelope_size;
6214 _next_ordinal_to_read += 1;
6215 if next_offset >= end_offset {
6216 return Ok(());
6217 }
6218
6219 while _next_ordinal_to_read < 4 {
6221 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6222 _next_ordinal_to_read += 1;
6223 next_offset += envelope_size;
6224 }
6225
6226 let next_out_of_line = decoder.next_out_of_line();
6227 let handles_before = decoder.remaining_handles();
6228 if let Some((inlined, num_bytes, num_handles)) =
6229 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6230 {
6231 let member_inline_size =
6232 <WlanKeyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6233 if inlined != (member_inline_size <= 4) {
6234 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6235 }
6236 let inner_offset;
6237 let mut inner_depth = depth.clone();
6238 if inlined {
6239 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6240 inner_offset = next_offset;
6241 } else {
6242 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6243 inner_depth.increment()?;
6244 }
6245 let val_ref = self.key_type.get_or_insert_with(|| fidl::new_empty!(WlanKeyType, D));
6246 fidl::decode!(WlanKeyType, D, val_ref, decoder, inner_offset, inner_depth)?;
6247 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6248 {
6249 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6250 }
6251 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6252 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6253 }
6254 }
6255
6256 next_offset += envelope_size;
6257 _next_ordinal_to_read += 1;
6258 if next_offset >= end_offset {
6259 return Ok(());
6260 }
6261
6262 while _next_ordinal_to_read < 5 {
6264 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6265 _next_ordinal_to_read += 1;
6266 next_offset += envelope_size;
6267 }
6268
6269 let next_out_of_line = decoder.next_out_of_line();
6270 let handles_before = decoder.remaining_handles();
6271 if let Some((inlined, num_bytes, num_handles)) =
6272 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6273 {
6274 let member_inline_size =
6275 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6276 decoder.context,
6277 );
6278 if inlined != (member_inline_size <= 4) {
6279 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6280 }
6281 let inner_offset;
6282 let mut inner_depth = depth.clone();
6283 if inlined {
6284 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6285 inner_offset = next_offset;
6286 } else {
6287 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6288 inner_depth.increment()?;
6289 }
6290 let val_ref = self
6291 .peer_addr
6292 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6293 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6294 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6295 {
6296 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6297 }
6298 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6299 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6300 }
6301 }
6302
6303 next_offset += envelope_size;
6304 _next_ordinal_to_read += 1;
6305 if next_offset >= end_offset {
6306 return Ok(());
6307 }
6308
6309 while _next_ordinal_to_read < 6 {
6311 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6312 _next_ordinal_to_read += 1;
6313 next_offset += envelope_size;
6314 }
6315
6316 let next_out_of_line = decoder.next_out_of_line();
6317 let handles_before = decoder.remaining_handles();
6318 if let Some((inlined, num_bytes, num_handles)) =
6319 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6320 {
6321 let member_inline_size =
6322 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6323 if inlined != (member_inline_size <= 4) {
6324 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6325 }
6326 let inner_offset;
6327 let mut inner_depth = depth.clone();
6328 if inlined {
6329 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6330 inner_offset = next_offset;
6331 } else {
6332 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6333 inner_depth.increment()?;
6334 }
6335 let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(u8, D));
6336 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6337 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6338 {
6339 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6340 }
6341 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6342 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6343 }
6344 }
6345
6346 next_offset += envelope_size;
6347 _next_ordinal_to_read += 1;
6348 if next_offset >= end_offset {
6349 return Ok(());
6350 }
6351
6352 while _next_ordinal_to_read < 7 {
6354 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6355 _next_ordinal_to_read += 1;
6356 next_offset += envelope_size;
6357 }
6358
6359 let next_out_of_line = decoder.next_out_of_line();
6360 let handles_before = decoder.remaining_handles();
6361 if let Some((inlined, num_bytes, num_handles)) =
6362 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6363 {
6364 let member_inline_size =
6365 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
6366 decoder.context,
6367 );
6368 if inlined != (member_inline_size <= 4) {
6369 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6370 }
6371 let inner_offset;
6372 let mut inner_depth = depth.clone();
6373 if inlined {
6374 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6375 inner_offset = next_offset;
6376 } else {
6377 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6378 inner_depth.increment()?;
6379 }
6380 let val_ref = self
6381 .key
6382 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
6383 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
6384 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6385 {
6386 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6387 }
6388 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6389 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6390 }
6391 }
6392
6393 next_offset += envelope_size;
6394 _next_ordinal_to_read += 1;
6395 if next_offset >= end_offset {
6396 return Ok(());
6397 }
6398
6399 while _next_ordinal_to_read < 8 {
6401 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6402 _next_ordinal_to_read += 1;
6403 next_offset += envelope_size;
6404 }
6405
6406 let next_out_of_line = decoder.next_out_of_line();
6407 let handles_before = decoder.remaining_handles();
6408 if let Some((inlined, num_bytes, num_handles)) =
6409 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6410 {
6411 let member_inline_size =
6412 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6413 if inlined != (member_inline_size <= 4) {
6414 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6415 }
6416 let inner_offset;
6417 let mut inner_depth = depth.clone();
6418 if inlined {
6419 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6420 inner_offset = next_offset;
6421 } else {
6422 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6423 inner_depth.increment()?;
6424 }
6425 let val_ref = self.rsc.get_or_insert_with(|| fidl::new_empty!(u64, D));
6426 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
6427 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6428 {
6429 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6430 }
6431 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6432 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6433 }
6434 }
6435
6436 next_offset += envelope_size;
6437
6438 while next_offset < end_offset {
6440 _next_ordinal_to_read += 1;
6441 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6442 next_offset += envelope_size;
6443 }
6444
6445 Ok(())
6446 }
6447 }
6448}