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)]
877pub struct ApfPacketFilterSupport {
878 pub supported: Option<bool>,
879 pub version: Option<i32>,
881 pub max_filter_length: Option<i32>,
883 #[doc(hidden)]
884 pub __source_breaking: fidl::marker::SourceBreaking,
885}
886
887impl fidl::Persistable for ApfPacketFilterSupport {}
888
889#[derive(Clone, Debug, Default, PartialEq)]
893pub struct DataPlaneExtension {
894 pub data_plane_type: Option<DataPlaneType>,
895 #[doc(hidden)]
896 pub __source_breaking: fidl::marker::SourceBreaking,
897}
898
899impl fidl::Persistable for DataPlaneExtension {}
900
901#[derive(Clone, Debug, Default, PartialEq)]
905pub struct DeviceExtension {
906 pub is_synthetic: Option<bool>,
910 pub mac_implementation_type: Option<MacImplementationType>,
912 pub tx_status_report_supported: Option<bool>,
914 #[doc(hidden)]
915 pub __source_breaking: fidl::marker::SourceBreaking,
916}
917
918impl fidl::Persistable for DeviceExtension {}
919
920#[derive(Clone, Debug, Default, PartialEq)]
924pub struct DfsFeature {
925 pub supported: Option<bool>,
930 #[doc(hidden)]
931 pub __source_breaking: fidl::marker::SourceBreaking,
932}
933
934impl fidl::Persistable for DfsFeature {}
935
936#[derive(Clone, Debug, Default, PartialEq)]
939pub struct DiscoverySupport {
940 pub scan_offload: Option<ScanOffloadExtension>,
941 pub probe_response_offload: Option<ProbeResponseOffloadExtension>,
942 #[doc(hidden)]
943 pub __source_breaking: fidl::marker::SourceBreaking,
944}
945
946impl fidl::Persistable for DiscoverySupport {}
947
948#[derive(Clone, Debug, Default, PartialEq)]
949pub struct JoinBssRequest {
950 pub bssid: Option<[u8; 6]>,
951 pub bss_type: Option<BssType>,
952 pub remote: Option<bool>,
953 pub beacon_period: Option<u16>,
954 #[doc(hidden)]
955 pub __source_breaking: fidl::marker::SourceBreaking,
956}
957
958impl fidl::Persistable for JoinBssRequest {}
959
960#[derive(Clone, Debug, Default, PartialEq)]
963pub struct MacSublayerSupport {
964 pub rate_selection_offload: Option<RateSelectionOffloadExtension>,
965 pub data_plane: Option<DataPlaneExtension>,
966 pub device: Option<DeviceExtension>,
967 #[doc(hidden)]
968 pub __source_breaking: fidl::marker::SourceBreaking,
969}
970
971impl fidl::Persistable for MacSublayerSupport {}
972
973#[derive(Clone, Debug, Default, PartialEq)]
977pub struct MfpFeature {
978 pub supported: Option<bool>,
979 #[doc(hidden)]
980 pub __source_breaking: fidl::marker::SourceBreaking,
981}
982
983impl fidl::Persistable for MfpFeature {}
984
985#[derive(Clone, Debug, Default, PartialEq)]
989pub struct OweFeature {
990 pub supported: Option<bool>,
991 #[doc(hidden)]
992 pub __source_breaking: fidl::marker::SourceBreaking,
993}
994
995impl fidl::Persistable for OweFeature {}
996
997#[derive(Clone, Debug, Default, PartialEq)]
1001pub struct ProbeResponseOffloadExtension {
1002 pub supported: Option<bool>,
1004 #[doc(hidden)]
1005 pub __source_breaking: fidl::marker::SourceBreaking,
1006}
1007
1008impl fidl::Persistable for ProbeResponseOffloadExtension {}
1009
1010#[derive(Clone, Debug, Default, PartialEq)]
1014pub struct RateSelectionOffloadExtension {
1015 pub supported: Option<bool>,
1017 #[doc(hidden)]
1018 pub __source_breaking: fidl::marker::SourceBreaking,
1019}
1020
1021impl fidl::Persistable for RateSelectionOffloadExtension {}
1022
1023#[derive(Clone, Debug, Default, PartialEq)]
1027pub struct SaeFeature {
1028 pub driver_handler_supported: Option<bool>,
1030 pub sme_handler_supported: Option<bool>,
1032 pub hash_to_element_supported: Option<bool>,
1036 #[doc(hidden)]
1037 pub __source_breaking: fidl::marker::SourceBreaking,
1038}
1039
1040impl fidl::Persistable for SaeFeature {}
1041
1042#[derive(Clone, Debug, Default, PartialEq)]
1046pub struct ScanOffloadExtension {
1047 pub supported: Option<bool>,
1049 pub scan_cancel_supported: Option<bool>,
1050 #[doc(hidden)]
1051 pub __source_breaking: fidl::marker::SourceBreaking,
1052}
1053
1054impl fidl::Persistable for ScanOffloadExtension {}
1055
1056#[derive(Clone, Debug, Default, PartialEq)]
1059pub struct SecuritySupport {
1060 pub sae: Option<SaeFeature>,
1061 pub mfp: Option<MfpFeature>,
1062 pub owe: Option<OweFeature>,
1063 #[doc(hidden)]
1064 pub __source_breaking: fidl::marker::SourceBreaking,
1065}
1066
1067impl fidl::Persistable for SecuritySupport {}
1068
1069#[derive(Clone, Debug, Default, PartialEq)]
1072pub struct SpectrumManagementSupport {
1073 pub dfs: Option<DfsFeature>,
1074 #[doc(hidden)]
1075 pub __source_breaking: fidl::marker::SourceBreaking,
1076}
1077
1078impl fidl::Persistable for SpectrumManagementSupport {}
1079
1080#[derive(Clone, Debug, Default, PartialEq)]
1081pub struct WlanKeyConfig {
1082 pub protection: Option<WlanProtection>,
1084 pub cipher_oui: Option<[u8; 3]>,
1088 pub cipher_type: Option<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType>,
1091 pub key_type: Option<WlanKeyType>,
1094 pub peer_addr: Option<[u8; 6]>,
1098 pub key_idx: Option<u8>,
1106 pub key: Option<Vec<u8>>,
1109 pub rsc: Option<u64>,
1113 #[doc(hidden)]
1114 pub __source_breaking: fidl::marker::SourceBreaking,
1115}
1116
1117impl fidl::Persistable for WlanKeyConfig {}
1118
1119mod internal {
1120 use super::*;
1121 unsafe impl fidl::encoding::TypeMarker for BssType {
1122 type Owned = Self;
1123
1124 #[inline(always)]
1125 fn inline_align(_context: fidl::encoding::Context) -> usize {
1126 std::mem::align_of::<u32>()
1127 }
1128
1129 #[inline(always)]
1130 fn inline_size(_context: fidl::encoding::Context) -> usize {
1131 std::mem::size_of::<u32>()
1132 }
1133
1134 #[inline(always)]
1135 fn encode_is_copy() -> bool {
1136 false
1137 }
1138
1139 #[inline(always)]
1140 fn decode_is_copy() -> bool {
1141 false
1142 }
1143 }
1144
1145 impl fidl::encoding::ValueTypeMarker for BssType {
1146 type Borrowed<'a> = Self;
1147 #[inline(always)]
1148 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1149 *value
1150 }
1151 }
1152
1153 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for BssType {
1154 #[inline]
1155 unsafe fn encode(
1156 self,
1157 encoder: &mut fidl::encoding::Encoder<'_, D>,
1158 offset: usize,
1159 _depth: fidl::encoding::Depth,
1160 ) -> fidl::Result<()> {
1161 encoder.debug_check_bounds::<Self>(offset);
1162 encoder.write_num(self.into_primitive(), offset);
1163 Ok(())
1164 }
1165 }
1166
1167 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssType {
1168 #[inline(always)]
1169 fn new_empty() -> Self {
1170 Self::unknown()
1171 }
1172
1173 #[inline]
1174 unsafe fn decode(
1175 &mut self,
1176 decoder: &mut fidl::encoding::Decoder<'_, D>,
1177 offset: usize,
1178 _depth: fidl::encoding::Depth,
1179 ) -> fidl::Result<()> {
1180 decoder.debug_check_bounds::<Self>(offset);
1181 let prim = decoder.read_num::<u32>(offset);
1182
1183 *self = Self::from_primitive_allow_unknown(prim);
1184 Ok(())
1185 }
1186 }
1187 unsafe impl fidl::encoding::TypeMarker for ChannelBandwidth {
1188 type Owned = Self;
1189
1190 #[inline(always)]
1191 fn inline_align(_context: fidl::encoding::Context) -> usize {
1192 std::mem::align_of::<u32>()
1193 }
1194
1195 #[inline(always)]
1196 fn inline_size(_context: fidl::encoding::Context) -> usize {
1197 std::mem::size_of::<u32>()
1198 }
1199
1200 #[inline(always)]
1201 fn encode_is_copy() -> bool {
1202 false
1203 }
1204
1205 #[inline(always)]
1206 fn decode_is_copy() -> bool {
1207 false
1208 }
1209 }
1210
1211 impl fidl::encoding::ValueTypeMarker for ChannelBandwidth {
1212 type Borrowed<'a> = Self;
1213 #[inline(always)]
1214 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1215 *value
1216 }
1217 }
1218
1219 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1220 for ChannelBandwidth
1221 {
1222 #[inline]
1223 unsafe fn encode(
1224 self,
1225 encoder: &mut fidl::encoding::Encoder<'_, D>,
1226 offset: usize,
1227 _depth: fidl::encoding::Depth,
1228 ) -> fidl::Result<()> {
1229 encoder.debug_check_bounds::<Self>(offset);
1230 encoder.write_num(self.into_primitive(), offset);
1231 Ok(())
1232 }
1233 }
1234
1235 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ChannelBandwidth {
1236 #[inline(always)]
1237 fn new_empty() -> Self {
1238 Self::unknown()
1239 }
1240
1241 #[inline]
1242 unsafe fn decode(
1243 &mut self,
1244 decoder: &mut fidl::encoding::Decoder<'_, D>,
1245 offset: usize,
1246 _depth: fidl::encoding::Depth,
1247 ) -> fidl::Result<()> {
1248 decoder.debug_check_bounds::<Self>(offset);
1249 let prim = decoder.read_num::<u32>(offset);
1250
1251 *self = Self::from_primitive_allow_unknown(prim);
1252 Ok(())
1253 }
1254 }
1255 unsafe impl fidl::encoding::TypeMarker for DataPlaneType {
1256 type Owned = Self;
1257
1258 #[inline(always)]
1259 fn inline_align(_context: fidl::encoding::Context) -> usize {
1260 std::mem::align_of::<u8>()
1261 }
1262
1263 #[inline(always)]
1264 fn inline_size(_context: fidl::encoding::Context) -> usize {
1265 std::mem::size_of::<u8>()
1266 }
1267
1268 #[inline(always)]
1269 fn encode_is_copy() -> bool {
1270 false
1271 }
1272
1273 #[inline(always)]
1274 fn decode_is_copy() -> bool {
1275 false
1276 }
1277 }
1278
1279 impl fidl::encoding::ValueTypeMarker for DataPlaneType {
1280 type Borrowed<'a> = Self;
1281 #[inline(always)]
1282 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1283 *value
1284 }
1285 }
1286
1287 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for DataPlaneType {
1288 #[inline]
1289 unsafe fn encode(
1290 self,
1291 encoder: &mut fidl::encoding::Encoder<'_, D>,
1292 offset: usize,
1293 _depth: fidl::encoding::Depth,
1294 ) -> fidl::Result<()> {
1295 encoder.debug_check_bounds::<Self>(offset);
1296 encoder.write_num(self.into_primitive(), offset);
1297 Ok(())
1298 }
1299 }
1300
1301 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneType {
1302 #[inline(always)]
1303 fn new_empty() -> Self {
1304 Self::unknown()
1305 }
1306
1307 #[inline]
1308 unsafe fn decode(
1309 &mut self,
1310 decoder: &mut fidl::encoding::Decoder<'_, D>,
1311 offset: usize,
1312 _depth: fidl::encoding::Depth,
1313 ) -> fidl::Result<()> {
1314 decoder.debug_check_bounds::<Self>(offset);
1315 let prim = decoder.read_num::<u8>(offset);
1316
1317 *self = Self::from_primitive_allow_unknown(prim);
1318 Ok(())
1319 }
1320 }
1321 unsafe impl fidl::encoding::TypeMarker for GuardInterval {
1322 type Owned = Self;
1323
1324 #[inline(always)]
1325 fn inline_align(_context: fidl::encoding::Context) -> usize {
1326 std::mem::align_of::<u8>()
1327 }
1328
1329 #[inline(always)]
1330 fn inline_size(_context: fidl::encoding::Context) -> usize {
1331 std::mem::size_of::<u8>()
1332 }
1333
1334 #[inline(always)]
1335 fn encode_is_copy() -> bool {
1336 true
1337 }
1338
1339 #[inline(always)]
1340 fn decode_is_copy() -> bool {
1341 false
1342 }
1343 }
1344
1345 impl fidl::encoding::ValueTypeMarker for GuardInterval {
1346 type Borrowed<'a> = Self;
1347 #[inline(always)]
1348 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1349 *value
1350 }
1351 }
1352
1353 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for GuardInterval {
1354 #[inline]
1355 unsafe fn encode(
1356 self,
1357 encoder: &mut fidl::encoding::Encoder<'_, D>,
1358 offset: usize,
1359 _depth: fidl::encoding::Depth,
1360 ) -> fidl::Result<()> {
1361 encoder.debug_check_bounds::<Self>(offset);
1362 encoder.write_num(self.into_primitive(), offset);
1363 Ok(())
1364 }
1365 }
1366
1367 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for GuardInterval {
1368 #[inline(always)]
1369 fn new_empty() -> Self {
1370 Self::LongGi
1371 }
1372
1373 #[inline]
1374 unsafe fn decode(
1375 &mut self,
1376 decoder: &mut fidl::encoding::Decoder<'_, D>,
1377 offset: usize,
1378 _depth: fidl::encoding::Depth,
1379 ) -> fidl::Result<()> {
1380 decoder.debug_check_bounds::<Self>(offset);
1381 let prim = decoder.read_num::<u8>(offset);
1382
1383 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1384 Ok(())
1385 }
1386 }
1387 unsafe impl fidl::encoding::TypeMarker for MacImplementationType {
1388 type Owned = Self;
1389
1390 #[inline(always)]
1391 fn inline_align(_context: fidl::encoding::Context) -> usize {
1392 std::mem::align_of::<u8>()
1393 }
1394
1395 #[inline(always)]
1396 fn inline_size(_context: fidl::encoding::Context) -> usize {
1397 std::mem::size_of::<u8>()
1398 }
1399
1400 #[inline(always)]
1401 fn encode_is_copy() -> bool {
1402 false
1403 }
1404
1405 #[inline(always)]
1406 fn decode_is_copy() -> bool {
1407 false
1408 }
1409 }
1410
1411 impl fidl::encoding::ValueTypeMarker for MacImplementationType {
1412 type Borrowed<'a> = Self;
1413 #[inline(always)]
1414 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1415 *value
1416 }
1417 }
1418
1419 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1420 for MacImplementationType
1421 {
1422 #[inline]
1423 unsafe fn encode(
1424 self,
1425 encoder: &mut fidl::encoding::Encoder<'_, D>,
1426 offset: usize,
1427 _depth: fidl::encoding::Depth,
1428 ) -> fidl::Result<()> {
1429 encoder.debug_check_bounds::<Self>(offset);
1430 encoder.write_num(self.into_primitive(), offset);
1431 Ok(())
1432 }
1433 }
1434
1435 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacImplementationType {
1436 #[inline(always)]
1437 fn new_empty() -> Self {
1438 Self::unknown()
1439 }
1440
1441 #[inline]
1442 unsafe fn decode(
1443 &mut self,
1444 decoder: &mut fidl::encoding::Decoder<'_, D>,
1445 offset: usize,
1446 _depth: fidl::encoding::Depth,
1447 ) -> fidl::Result<()> {
1448 decoder.debug_check_bounds::<Self>(offset);
1449 let prim = decoder.read_num::<u8>(offset);
1450
1451 *self = Self::from_primitive_allow_unknown(prim);
1452 Ok(())
1453 }
1454 }
1455 unsafe impl fidl::encoding::TypeMarker for PowerSaveType {
1456 type Owned = Self;
1457
1458 #[inline(always)]
1459 fn inline_align(_context: fidl::encoding::Context) -> usize {
1460 std::mem::align_of::<u32>()
1461 }
1462
1463 #[inline(always)]
1464 fn inline_size(_context: fidl::encoding::Context) -> usize {
1465 std::mem::size_of::<u32>()
1466 }
1467
1468 #[inline(always)]
1469 fn encode_is_copy() -> bool {
1470 true
1471 }
1472
1473 #[inline(always)]
1474 fn decode_is_copy() -> bool {
1475 false
1476 }
1477 }
1478
1479 impl fidl::encoding::ValueTypeMarker for PowerSaveType {
1480 type Borrowed<'a> = Self;
1481 #[inline(always)]
1482 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1483 *value
1484 }
1485 }
1486
1487 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for PowerSaveType {
1488 #[inline]
1489 unsafe fn encode(
1490 self,
1491 encoder: &mut fidl::encoding::Encoder<'_, D>,
1492 offset: usize,
1493 _depth: fidl::encoding::Depth,
1494 ) -> fidl::Result<()> {
1495 encoder.debug_check_bounds::<Self>(offset);
1496 encoder.write_num(self.into_primitive(), offset);
1497 Ok(())
1498 }
1499 }
1500
1501 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for PowerSaveType {
1502 #[inline(always)]
1503 fn new_empty() -> Self {
1504 Self::PsModeUltraLowPower
1505 }
1506
1507 #[inline]
1508 unsafe fn decode(
1509 &mut self,
1510 decoder: &mut fidl::encoding::Decoder<'_, D>,
1511 offset: usize,
1512 _depth: fidl::encoding::Depth,
1513 ) -> fidl::Result<()> {
1514 decoder.debug_check_bounds::<Self>(offset);
1515 let prim = decoder.read_num::<u32>(offset);
1516
1517 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1518 Ok(())
1519 }
1520 }
1521 unsafe impl fidl::encoding::TypeMarker for ScanType {
1522 type Owned = Self;
1523
1524 #[inline(always)]
1525 fn inline_align(_context: fidl::encoding::Context) -> usize {
1526 std::mem::align_of::<u32>()
1527 }
1528
1529 #[inline(always)]
1530 fn inline_size(_context: fidl::encoding::Context) -> usize {
1531 std::mem::size_of::<u32>()
1532 }
1533
1534 #[inline(always)]
1535 fn encode_is_copy() -> bool {
1536 true
1537 }
1538
1539 #[inline(always)]
1540 fn decode_is_copy() -> bool {
1541 false
1542 }
1543 }
1544
1545 impl fidl::encoding::ValueTypeMarker for ScanType {
1546 type Borrowed<'a> = Self;
1547 #[inline(always)]
1548 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1549 *value
1550 }
1551 }
1552
1553 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for ScanType {
1554 #[inline]
1555 unsafe fn encode(
1556 self,
1557 encoder: &mut fidl::encoding::Encoder<'_, D>,
1558 offset: usize,
1559 _depth: fidl::encoding::Depth,
1560 ) -> fidl::Result<()> {
1561 encoder.debug_check_bounds::<Self>(offset);
1562 encoder.write_num(self.into_primitive(), offset);
1563 Ok(())
1564 }
1565 }
1566
1567 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanType {
1568 #[inline(always)]
1569 fn new_empty() -> Self {
1570 Self::Active
1571 }
1572
1573 #[inline]
1574 unsafe fn decode(
1575 &mut self,
1576 decoder: &mut fidl::encoding::Decoder<'_, D>,
1577 offset: usize,
1578 _depth: fidl::encoding::Depth,
1579 ) -> fidl::Result<()> {
1580 decoder.debug_check_bounds::<Self>(offset);
1581 let prim = decoder.read_num::<u32>(offset);
1582
1583 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1584 Ok(())
1585 }
1586 }
1587 unsafe impl fidl::encoding::TypeMarker for WlanKeyType {
1588 type Owned = Self;
1589
1590 #[inline(always)]
1591 fn inline_align(_context: fidl::encoding::Context) -> usize {
1592 std::mem::align_of::<u8>()
1593 }
1594
1595 #[inline(always)]
1596 fn inline_size(_context: fidl::encoding::Context) -> usize {
1597 std::mem::size_of::<u8>()
1598 }
1599
1600 #[inline(always)]
1601 fn encode_is_copy() -> bool {
1602 false
1603 }
1604
1605 #[inline(always)]
1606 fn decode_is_copy() -> bool {
1607 false
1608 }
1609 }
1610
1611 impl fidl::encoding::ValueTypeMarker for WlanKeyType {
1612 type Borrowed<'a> = Self;
1613 #[inline(always)]
1614 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1615 *value
1616 }
1617 }
1618
1619 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanKeyType {
1620 #[inline]
1621 unsafe fn encode(
1622 self,
1623 encoder: &mut fidl::encoding::Encoder<'_, D>,
1624 offset: usize,
1625 _depth: fidl::encoding::Depth,
1626 ) -> fidl::Result<()> {
1627 encoder.debug_check_bounds::<Self>(offset);
1628 encoder.write_num(self.into_primitive(), offset);
1629 Ok(())
1630 }
1631 }
1632
1633 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyType {
1634 #[inline(always)]
1635 fn new_empty() -> Self {
1636 Self::unknown()
1637 }
1638
1639 #[inline]
1640 unsafe fn decode(
1641 &mut self,
1642 decoder: &mut fidl::encoding::Decoder<'_, D>,
1643 offset: usize,
1644 _depth: fidl::encoding::Depth,
1645 ) -> fidl::Result<()> {
1646 decoder.debug_check_bounds::<Self>(offset);
1647 let prim = decoder.read_num::<u8>(offset);
1648
1649 *self = Self::from_primitive_allow_unknown(prim);
1650 Ok(())
1651 }
1652 }
1653 unsafe impl fidl::encoding::TypeMarker for WlanMacRole {
1654 type Owned = Self;
1655
1656 #[inline(always)]
1657 fn inline_align(_context: fidl::encoding::Context) -> usize {
1658 std::mem::align_of::<u32>()
1659 }
1660
1661 #[inline(always)]
1662 fn inline_size(_context: fidl::encoding::Context) -> usize {
1663 std::mem::size_of::<u32>()
1664 }
1665
1666 #[inline(always)]
1667 fn encode_is_copy() -> bool {
1668 false
1669 }
1670
1671 #[inline(always)]
1672 fn decode_is_copy() -> bool {
1673 false
1674 }
1675 }
1676
1677 impl fidl::encoding::ValueTypeMarker for WlanMacRole {
1678 type Borrowed<'a> = Self;
1679 #[inline(always)]
1680 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1681 *value
1682 }
1683 }
1684
1685 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanMacRole {
1686 #[inline]
1687 unsafe fn encode(
1688 self,
1689 encoder: &mut fidl::encoding::Encoder<'_, D>,
1690 offset: usize,
1691 _depth: fidl::encoding::Depth,
1692 ) -> fidl::Result<()> {
1693 encoder.debug_check_bounds::<Self>(offset);
1694 encoder.write_num(self.into_primitive(), offset);
1695 Ok(())
1696 }
1697 }
1698
1699 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanMacRole {
1700 #[inline(always)]
1701 fn new_empty() -> Self {
1702 Self::unknown()
1703 }
1704
1705 #[inline]
1706 unsafe fn decode(
1707 &mut self,
1708 decoder: &mut fidl::encoding::Decoder<'_, D>,
1709 offset: usize,
1710 _depth: fidl::encoding::Depth,
1711 ) -> fidl::Result<()> {
1712 decoder.debug_check_bounds::<Self>(offset);
1713 let prim = decoder.read_num::<u32>(offset);
1714
1715 *self = Self::from_primitive_allow_unknown(prim);
1716 Ok(())
1717 }
1718 }
1719 unsafe impl fidl::encoding::TypeMarker for WlanPhyType {
1720 type Owned = Self;
1721
1722 #[inline(always)]
1723 fn inline_align(_context: fidl::encoding::Context) -> usize {
1724 std::mem::align_of::<u32>()
1725 }
1726
1727 #[inline(always)]
1728 fn inline_size(_context: fidl::encoding::Context) -> usize {
1729 std::mem::size_of::<u32>()
1730 }
1731
1732 #[inline(always)]
1733 fn encode_is_copy() -> bool {
1734 false
1735 }
1736
1737 #[inline(always)]
1738 fn decode_is_copy() -> bool {
1739 false
1740 }
1741 }
1742
1743 impl fidl::encoding::ValueTypeMarker for WlanPhyType {
1744 type Borrowed<'a> = Self;
1745 #[inline(always)]
1746 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1747 *value
1748 }
1749 }
1750
1751 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanPhyType {
1752 #[inline]
1753 unsafe fn encode(
1754 self,
1755 encoder: &mut fidl::encoding::Encoder<'_, D>,
1756 offset: usize,
1757 _depth: fidl::encoding::Depth,
1758 ) -> fidl::Result<()> {
1759 encoder.debug_check_bounds::<Self>(offset);
1760 encoder.write_num(self.into_primitive(), offset);
1761 Ok(())
1762 }
1763 }
1764
1765 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanPhyType {
1766 #[inline(always)]
1767 fn new_empty() -> Self {
1768 Self::unknown()
1769 }
1770
1771 #[inline]
1772 unsafe fn decode(
1773 &mut self,
1774 decoder: &mut fidl::encoding::Decoder<'_, D>,
1775 offset: usize,
1776 _depth: fidl::encoding::Depth,
1777 ) -> fidl::Result<()> {
1778 decoder.debug_check_bounds::<Self>(offset);
1779 let prim = decoder.read_num::<u32>(offset);
1780
1781 *self = Self::from_primitive_allow_unknown(prim);
1782 Ok(())
1783 }
1784 }
1785 unsafe impl fidl::encoding::TypeMarker for WlanProtection {
1786 type Owned = Self;
1787
1788 #[inline(always)]
1789 fn inline_align(_context: fidl::encoding::Context) -> usize {
1790 std::mem::align_of::<u8>()
1791 }
1792
1793 #[inline(always)]
1794 fn inline_size(_context: fidl::encoding::Context) -> usize {
1795 std::mem::size_of::<u8>()
1796 }
1797
1798 #[inline(always)]
1799 fn encode_is_copy() -> bool {
1800 true
1801 }
1802
1803 #[inline(always)]
1804 fn decode_is_copy() -> bool {
1805 false
1806 }
1807 }
1808
1809 impl fidl::encoding::ValueTypeMarker for WlanProtection {
1810 type Borrowed<'a> = Self;
1811 #[inline(always)]
1812 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1813 *value
1814 }
1815 }
1816
1817 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D> for WlanProtection {
1818 #[inline]
1819 unsafe fn encode(
1820 self,
1821 encoder: &mut fidl::encoding::Encoder<'_, D>,
1822 offset: usize,
1823 _depth: fidl::encoding::Depth,
1824 ) -> fidl::Result<()> {
1825 encoder.debug_check_bounds::<Self>(offset);
1826 encoder.write_num(self.into_primitive(), offset);
1827 Ok(())
1828 }
1829 }
1830
1831 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanProtection {
1832 #[inline(always)]
1833 fn new_empty() -> Self {
1834 Self::None
1835 }
1836
1837 #[inline]
1838 unsafe fn decode(
1839 &mut self,
1840 decoder: &mut fidl::encoding::Decoder<'_, D>,
1841 offset: usize,
1842 _depth: fidl::encoding::Depth,
1843 ) -> fidl::Result<()> {
1844 decoder.debug_check_bounds::<Self>(offset);
1845 let prim = decoder.read_num::<u8>(offset);
1846
1847 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1848 Ok(())
1849 }
1850 }
1851 unsafe impl fidl::encoding::TypeMarker for WlanSoftmacHardwareCapabilityBit {
1852 type Owned = Self;
1853
1854 #[inline(always)]
1855 fn inline_align(_context: fidl::encoding::Context) -> usize {
1856 std::mem::align_of::<u32>()
1857 }
1858
1859 #[inline(always)]
1860 fn inline_size(_context: fidl::encoding::Context) -> usize {
1861 std::mem::size_of::<u32>()
1862 }
1863
1864 #[inline(always)]
1865 fn encode_is_copy() -> bool {
1866 true
1867 }
1868
1869 #[inline(always)]
1870 fn decode_is_copy() -> bool {
1871 false
1872 }
1873 }
1874
1875 impl fidl::encoding::ValueTypeMarker for WlanSoftmacHardwareCapabilityBit {
1876 type Borrowed<'a> = Self;
1877 #[inline(always)]
1878 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1879 *value
1880 }
1881 }
1882
1883 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1884 for WlanSoftmacHardwareCapabilityBit
1885 {
1886 #[inline]
1887 unsafe fn encode(
1888 self,
1889 encoder: &mut fidl::encoding::Encoder<'_, D>,
1890 offset: usize,
1891 _depth: fidl::encoding::Depth,
1892 ) -> fidl::Result<()> {
1893 encoder.debug_check_bounds::<Self>(offset);
1894 encoder.write_num(self.into_primitive(), offset);
1895 Ok(())
1896 }
1897 }
1898
1899 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
1900 for WlanSoftmacHardwareCapabilityBit
1901 {
1902 #[inline(always)]
1903 fn new_empty() -> Self {
1904 Self::ShortPreamble
1905 }
1906
1907 #[inline]
1908 unsafe fn decode(
1909 &mut self,
1910 decoder: &mut fidl::encoding::Decoder<'_, D>,
1911 offset: usize,
1912 _depth: fidl::encoding::Depth,
1913 ) -> fidl::Result<()> {
1914 decoder.debug_check_bounds::<Self>(offset);
1915 let prim = decoder.read_num::<u32>(offset);
1916
1917 *self = Self::from_primitive(prim).ok_or(fidl::Error::InvalidEnumValue)?;
1918 Ok(())
1919 }
1920 }
1921 unsafe impl fidl::encoding::TypeMarker for WlanTxResultCode {
1922 type Owned = Self;
1923
1924 #[inline(always)]
1925 fn inline_align(_context: fidl::encoding::Context) -> usize {
1926 std::mem::align_of::<u8>()
1927 }
1928
1929 #[inline(always)]
1930 fn inline_size(_context: fidl::encoding::Context) -> usize {
1931 std::mem::size_of::<u8>()
1932 }
1933
1934 #[inline(always)]
1935 fn encode_is_copy() -> bool {
1936 false
1937 }
1938
1939 #[inline(always)]
1940 fn decode_is_copy() -> bool {
1941 false
1942 }
1943 }
1944
1945 impl fidl::encoding::ValueTypeMarker for WlanTxResultCode {
1946 type Borrowed<'a> = Self;
1947 #[inline(always)]
1948 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1949 *value
1950 }
1951 }
1952
1953 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<Self, D>
1954 for WlanTxResultCode
1955 {
1956 #[inline]
1957 unsafe fn encode(
1958 self,
1959 encoder: &mut fidl::encoding::Encoder<'_, D>,
1960 offset: usize,
1961 _depth: fidl::encoding::Depth,
1962 ) -> fidl::Result<()> {
1963 encoder.debug_check_bounds::<Self>(offset);
1964 encoder.write_num(self.into_primitive(), offset);
1965 Ok(())
1966 }
1967 }
1968
1969 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultCode {
1970 #[inline(always)]
1971 fn new_empty() -> Self {
1972 Self::unknown()
1973 }
1974
1975 #[inline]
1976 unsafe fn decode(
1977 &mut self,
1978 decoder: &mut fidl::encoding::Decoder<'_, D>,
1979 offset: usize,
1980 _depth: fidl::encoding::Depth,
1981 ) -> fidl::Result<()> {
1982 decoder.debug_check_bounds::<Self>(offset);
1983 let prim = decoder.read_num::<u8>(offset);
1984
1985 *self = Self::from_primitive_allow_unknown(prim);
1986 Ok(())
1987 }
1988 }
1989
1990 impl fidl::encoding::ValueTypeMarker for BssDescription {
1991 type Borrowed<'a> = &'a Self;
1992 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
1993 value
1994 }
1995 }
1996
1997 unsafe impl fidl::encoding::TypeMarker for BssDescription {
1998 type Owned = Self;
1999
2000 #[inline(always)]
2001 fn inline_align(_context: fidl::encoding::Context) -> usize {
2002 8
2003 }
2004
2005 #[inline(always)]
2006 fn inline_size(_context: fidl::encoding::Context) -> usize {
2007 48
2008 }
2009 }
2010
2011 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<BssDescription, D>
2012 for &BssDescription
2013 {
2014 #[inline]
2015 unsafe fn encode(
2016 self,
2017 encoder: &mut fidl::encoding::Encoder<'_, D>,
2018 offset: usize,
2019 _depth: fidl::encoding::Depth,
2020 ) -> fidl::Result<()> {
2021 encoder.debug_check_bounds::<BssDescription>(offset);
2022 fidl::encoding::Encode::<BssDescription, D>::encode(
2024 (
2025 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.bssid),
2026 <BssType as fidl::encoding::ValueTypeMarker>::borrow(&self.bss_type),
2027 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.beacon_period),
2028 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.capability_info),
2029 <fidl::encoding::UnboundedVector<u8> as fidl::encoding::ValueTypeMarker>::borrow(&self.ies),
2030 <fidl_fuchsia_wlan_ieee80211__common::WlanChannel as fidl::encoding::ValueTypeMarker>::borrow(&self.channel),
2031 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.rssi_dbm),
2032 <i8 as fidl::encoding::ValueTypeMarker>::borrow(&self.snr_db),
2033 ),
2034 encoder, offset, _depth
2035 )
2036 }
2037 }
2038 unsafe impl<
2039 D: fidl::encoding::ResourceDialect,
2040 T0: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2041 T1: fidl::encoding::Encode<BssType, D>,
2042 T2: fidl::encoding::Encode<u16, D>,
2043 T3: fidl::encoding::Encode<u16, D>,
2044 T4: fidl::encoding::Encode<fidl::encoding::UnboundedVector<u8>, D>,
2045 T5: fidl::encoding::Encode<fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D>,
2046 T6: fidl::encoding::Encode<i8, D>,
2047 T7: fidl::encoding::Encode<i8, D>,
2048 > fidl::encoding::Encode<BssDescription, D> for (T0, T1, T2, T3, T4, T5, T6, T7)
2049 {
2050 #[inline]
2051 unsafe fn encode(
2052 self,
2053 encoder: &mut fidl::encoding::Encoder<'_, D>,
2054 offset: usize,
2055 depth: fidl::encoding::Depth,
2056 ) -> fidl::Result<()> {
2057 encoder.debug_check_bounds::<BssDescription>(offset);
2058 unsafe {
2061 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2062 (ptr as *mut u64).write_unaligned(0);
2063 }
2064 unsafe {
2065 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(40);
2066 (ptr as *mut u64).write_unaligned(0);
2067 }
2068 self.0.encode(encoder, offset + 0, depth)?;
2070 self.1.encode(encoder, offset + 8, depth)?;
2071 self.2.encode(encoder, offset + 12, depth)?;
2072 self.3.encode(encoder, offset + 14, depth)?;
2073 self.4.encode(encoder, offset + 16, depth)?;
2074 self.5.encode(encoder, offset + 32, depth)?;
2075 self.6.encode(encoder, offset + 44, depth)?;
2076 self.7.encode(encoder, offset + 45, depth)?;
2077 Ok(())
2078 }
2079 }
2080
2081 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for BssDescription {
2082 #[inline(always)]
2083 fn new_empty() -> Self {
2084 Self {
2085 bssid: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2086 bss_type: fidl::new_empty!(BssType, D),
2087 beacon_period: fidl::new_empty!(u16, D),
2088 capability_info: fidl::new_empty!(u16, D),
2089 ies: fidl::new_empty!(fidl::encoding::UnboundedVector<u8>, D),
2090 channel: fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::WlanChannel, D),
2091 rssi_dbm: fidl::new_empty!(i8, D),
2092 snr_db: fidl::new_empty!(i8, D),
2093 }
2094 }
2095
2096 #[inline]
2097 unsafe fn decode(
2098 &mut self,
2099 decoder: &mut fidl::encoding::Decoder<'_, D>,
2100 offset: usize,
2101 _depth: fidl::encoding::Depth,
2102 ) -> fidl::Result<()> {
2103 decoder.debug_check_bounds::<Self>(offset);
2104 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2106 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2107 let mask = 0xffff000000000000u64;
2108 let maskedval = padval & mask;
2109 if maskedval != 0 {
2110 return Err(fidl::Error::NonZeroPadding {
2111 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2112 });
2113 }
2114 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(40) };
2115 let padval = unsafe { (ptr as *const u64).read_unaligned() };
2116 let mask = 0xffff000000000000u64;
2117 let maskedval = padval & mask;
2118 if maskedval != 0 {
2119 return Err(fidl::Error::NonZeroPadding {
2120 padding_start: offset + 40 + ((mask as u64).trailing_zeros() / 8) as usize,
2121 });
2122 }
2123 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.bssid, decoder, offset + 0, _depth)?;
2124 fidl::decode!(BssType, D, &mut self.bss_type, decoder, offset + 8, _depth)?;
2125 fidl::decode!(u16, D, &mut self.beacon_period, decoder, offset + 12, _depth)?;
2126 fidl::decode!(u16, D, &mut self.capability_info, decoder, offset + 14, _depth)?;
2127 fidl::decode!(
2128 fidl::encoding::UnboundedVector<u8>,
2129 D,
2130 &mut self.ies,
2131 decoder,
2132 offset + 16,
2133 _depth
2134 )?;
2135 fidl::decode!(
2136 fidl_fuchsia_wlan_ieee80211__common::WlanChannel,
2137 D,
2138 &mut self.channel,
2139 decoder,
2140 offset + 32,
2141 _depth
2142 )?;
2143 fidl::decode!(i8, D, &mut self.rssi_dbm, decoder, offset + 44, _depth)?;
2144 fidl::decode!(i8, D, &mut self.snr_db, decoder, offset + 45, _depth)?;
2145 Ok(())
2146 }
2147 }
2148
2149 impl fidl::encoding::ValueTypeMarker for WlanChannel {
2150 type Borrowed<'a> = &'a Self;
2151 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2152 value
2153 }
2154 }
2155
2156 unsafe impl fidl::encoding::TypeMarker for WlanChannel {
2157 type Owned = Self;
2158
2159 #[inline(always)]
2160 fn inline_align(_context: fidl::encoding::Context) -> usize {
2161 4
2162 }
2163
2164 #[inline(always)]
2165 fn inline_size(_context: fidl::encoding::Context) -> usize {
2166 12
2167 }
2168 }
2169
2170 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanChannel, D>
2171 for &WlanChannel
2172 {
2173 #[inline]
2174 unsafe fn encode(
2175 self,
2176 encoder: &mut fidl::encoding::Encoder<'_, D>,
2177 offset: usize,
2178 _depth: fidl::encoding::Depth,
2179 ) -> fidl::Result<()> {
2180 encoder.debug_check_bounds::<WlanChannel>(offset);
2181 fidl::encoding::Encode::<WlanChannel, D>::encode(
2183 (
2184 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.primary),
2185 <ChannelBandwidth as fidl::encoding::ValueTypeMarker>::borrow(&self.cbw),
2186 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.secondary80),
2187 ),
2188 encoder,
2189 offset,
2190 _depth,
2191 )
2192 }
2193 }
2194 unsafe impl<
2195 D: fidl::encoding::ResourceDialect,
2196 T0: fidl::encoding::Encode<u8, D>,
2197 T1: fidl::encoding::Encode<ChannelBandwidth, D>,
2198 T2: fidl::encoding::Encode<u8, D>,
2199 > fidl::encoding::Encode<WlanChannel, D> for (T0, T1, T2)
2200 {
2201 #[inline]
2202 unsafe fn encode(
2203 self,
2204 encoder: &mut fidl::encoding::Encoder<'_, D>,
2205 offset: usize,
2206 depth: fidl::encoding::Depth,
2207 ) -> fidl::Result<()> {
2208 encoder.debug_check_bounds::<WlanChannel>(offset);
2209 unsafe {
2212 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2213 (ptr as *mut u32).write_unaligned(0);
2214 }
2215 unsafe {
2216 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(8);
2217 (ptr as *mut u32).write_unaligned(0);
2218 }
2219 self.0.encode(encoder, offset + 0, depth)?;
2221 self.1.encode(encoder, offset + 4, depth)?;
2222 self.2.encode(encoder, offset + 8, depth)?;
2223 Ok(())
2224 }
2225 }
2226
2227 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanChannel {
2228 #[inline(always)]
2229 fn new_empty() -> Self {
2230 Self {
2231 primary: fidl::new_empty!(u8, D),
2232 cbw: fidl::new_empty!(ChannelBandwidth, D),
2233 secondary80: fidl::new_empty!(u8, D),
2234 }
2235 }
2236
2237 #[inline]
2238 unsafe fn decode(
2239 &mut self,
2240 decoder: &mut fidl::encoding::Decoder<'_, D>,
2241 offset: usize,
2242 _depth: fidl::encoding::Depth,
2243 ) -> fidl::Result<()> {
2244 decoder.debug_check_bounds::<Self>(offset);
2245 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2247 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2248 let mask = 0xffffff00u32;
2249 let maskedval = padval & mask;
2250 if maskedval != 0 {
2251 return Err(fidl::Error::NonZeroPadding {
2252 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2253 });
2254 }
2255 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(8) };
2256 let padval = unsafe { (ptr as *const u32).read_unaligned() };
2257 let mask = 0xffffff00u32;
2258 let maskedval = padval & mask;
2259 if maskedval != 0 {
2260 return Err(fidl::Error::NonZeroPadding {
2261 padding_start: offset + 8 + ((mask as u64).trailing_zeros() / 8) as usize,
2262 });
2263 }
2264 fidl::decode!(u8, D, &mut self.primary, decoder, offset + 0, _depth)?;
2265 fidl::decode!(ChannelBandwidth, D, &mut self.cbw, decoder, offset + 4, _depth)?;
2266 fidl::decode!(u8, D, &mut self.secondary80, decoder, offset + 8, _depth)?;
2267 Ok(())
2268 }
2269 }
2270
2271 impl fidl::encoding::ValueTypeMarker for WlanTxResult {
2272 type Borrowed<'a> = &'a Self;
2273 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2274 value
2275 }
2276 }
2277
2278 unsafe impl fidl::encoding::TypeMarker for WlanTxResult {
2279 type Owned = Self;
2280
2281 #[inline(always)]
2282 fn inline_align(_context: fidl::encoding::Context) -> usize {
2283 2
2284 }
2285
2286 #[inline(always)]
2287 fn inline_size(_context: fidl::encoding::Context) -> usize {
2288 40
2289 }
2290 }
2291
2292 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResult, D>
2293 for &WlanTxResult
2294 {
2295 #[inline]
2296 unsafe fn encode(
2297 self,
2298 encoder: &mut fidl::encoding::Encoder<'_, D>,
2299 offset: usize,
2300 _depth: fidl::encoding::Depth,
2301 ) -> fidl::Result<()> {
2302 encoder.debug_check_bounds::<WlanTxResult>(offset);
2303 fidl::encoding::Encode::<WlanTxResult, D>::encode(
2305 (
2306 <fidl::encoding::Array<WlanTxResultEntry, 8> as fidl::encoding::ValueTypeMarker>::borrow(&self.tx_result_entry),
2307 <fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow(&self.peer_addr),
2308 <WlanTxResultCode as fidl::encoding::ValueTypeMarker>::borrow(&self.result_code),
2309 ),
2310 encoder, offset, _depth
2311 )
2312 }
2313 }
2314 unsafe impl<
2315 D: fidl::encoding::ResourceDialect,
2316 T0: fidl::encoding::Encode<fidl::encoding::Array<WlanTxResultEntry, 8>, D>,
2317 T1: fidl::encoding::Encode<fidl::encoding::Array<u8, 6>, D>,
2318 T2: fidl::encoding::Encode<WlanTxResultCode, D>,
2319 > fidl::encoding::Encode<WlanTxResult, D> for (T0, T1, T2)
2320 {
2321 #[inline]
2322 unsafe fn encode(
2323 self,
2324 encoder: &mut fidl::encoding::Encoder<'_, D>,
2325 offset: usize,
2326 depth: fidl::encoding::Depth,
2327 ) -> fidl::Result<()> {
2328 encoder.debug_check_bounds::<WlanTxResult>(offset);
2329 unsafe {
2332 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(38);
2333 (ptr as *mut u16).write_unaligned(0);
2334 }
2335 self.0.encode(encoder, offset + 0, depth)?;
2337 self.1.encode(encoder, offset + 32, depth)?;
2338 self.2.encode(encoder, offset + 38, depth)?;
2339 Ok(())
2340 }
2341 }
2342
2343 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResult {
2344 #[inline(always)]
2345 fn new_empty() -> Self {
2346 Self {
2347 tx_result_entry: fidl::new_empty!(fidl::encoding::Array<WlanTxResultEntry, 8>, D),
2348 peer_addr: fidl::new_empty!(fidl::encoding::Array<u8, 6>, D),
2349 result_code: fidl::new_empty!(WlanTxResultCode, D),
2350 }
2351 }
2352
2353 #[inline]
2354 unsafe fn decode(
2355 &mut self,
2356 decoder: &mut fidl::encoding::Decoder<'_, D>,
2357 offset: usize,
2358 _depth: fidl::encoding::Depth,
2359 ) -> fidl::Result<()> {
2360 decoder.debug_check_bounds::<Self>(offset);
2361 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(38) };
2363 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2364 let mask = 0xff00u16;
2365 let maskedval = padval & mask;
2366 if maskedval != 0 {
2367 return Err(fidl::Error::NonZeroPadding {
2368 padding_start: offset + 38 + ((mask as u64).trailing_zeros() / 8) as usize,
2369 });
2370 }
2371 fidl::decode!(fidl::encoding::Array<WlanTxResultEntry, 8>, D, &mut self.tx_result_entry, decoder, offset + 0, _depth)?;
2372 fidl::decode!(fidl::encoding::Array<u8, 6>, D, &mut self.peer_addr, decoder, offset + 32, _depth)?;
2373 fidl::decode!(
2374 WlanTxResultCode,
2375 D,
2376 &mut self.result_code,
2377 decoder,
2378 offset + 38,
2379 _depth
2380 )?;
2381 Ok(())
2382 }
2383 }
2384
2385 impl fidl::encoding::ValueTypeMarker for WlanTxResultEntry {
2386 type Borrowed<'a> = &'a Self;
2387 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2388 value
2389 }
2390 }
2391
2392 unsafe impl fidl::encoding::TypeMarker for WlanTxResultEntry {
2393 type Owned = Self;
2394
2395 #[inline(always)]
2396 fn inline_align(_context: fidl::encoding::Context) -> usize {
2397 2
2398 }
2399
2400 #[inline(always)]
2401 fn inline_size(_context: fidl::encoding::Context) -> usize {
2402 4
2403 }
2404 }
2405
2406 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanTxResultEntry, D>
2407 for &WlanTxResultEntry
2408 {
2409 #[inline]
2410 unsafe fn encode(
2411 self,
2412 encoder: &mut fidl::encoding::Encoder<'_, D>,
2413 offset: usize,
2414 _depth: fidl::encoding::Depth,
2415 ) -> fidl::Result<()> {
2416 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2417 unsafe {
2418 let buf_ptr = encoder.buf.as_mut_ptr().add(offset);
2420 (buf_ptr as *mut WlanTxResultEntry)
2421 .write_unaligned((self as *const WlanTxResultEntry).read());
2422 let padding_ptr = buf_ptr.offset(2) as *mut u16;
2425 let padding_mask = 0xff00u16;
2426 padding_ptr.write_unaligned(padding_ptr.read_unaligned() & !padding_mask);
2427 }
2428 Ok(())
2429 }
2430 }
2431 unsafe impl<
2432 D: fidl::encoding::ResourceDialect,
2433 T0: fidl::encoding::Encode<u16, D>,
2434 T1: fidl::encoding::Encode<u8, D>,
2435 > fidl::encoding::Encode<WlanTxResultEntry, D> for (T0, T1)
2436 {
2437 #[inline]
2438 unsafe fn encode(
2439 self,
2440 encoder: &mut fidl::encoding::Encoder<'_, D>,
2441 offset: usize,
2442 depth: fidl::encoding::Depth,
2443 ) -> fidl::Result<()> {
2444 encoder.debug_check_bounds::<WlanTxResultEntry>(offset);
2445 unsafe {
2448 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2449 (ptr as *mut u16).write_unaligned(0);
2450 }
2451 self.0.encode(encoder, offset + 0, depth)?;
2453 self.1.encode(encoder, offset + 2, depth)?;
2454 Ok(())
2455 }
2456 }
2457
2458 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanTxResultEntry {
2459 #[inline(always)]
2460 fn new_empty() -> Self {
2461 Self { tx_vector_idx: fidl::new_empty!(u16, D), attempts: fidl::new_empty!(u8, D) }
2462 }
2463
2464 #[inline]
2465 unsafe fn decode(
2466 &mut self,
2467 decoder: &mut fidl::encoding::Decoder<'_, D>,
2468 offset: usize,
2469 _depth: fidl::encoding::Depth,
2470 ) -> fidl::Result<()> {
2471 decoder.debug_check_bounds::<Self>(offset);
2472 let buf_ptr = unsafe { decoder.buf.as_ptr().add(offset) };
2473 let ptr = unsafe { buf_ptr.offset(2) };
2475 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2476 let mask = 0xff00u16;
2477 let maskedval = padval & mask;
2478 if maskedval != 0 {
2479 return Err(fidl::Error::NonZeroPadding {
2480 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2481 });
2482 }
2483 unsafe {
2485 std::ptr::copy_nonoverlapping(buf_ptr, self as *mut Self as *mut u8, 4);
2486 }
2487 Ok(())
2488 }
2489 }
2490
2491 impl fidl::encoding::ValueTypeMarker for WlanWmmAccessCategoryParameters {
2492 type Borrowed<'a> = &'a Self;
2493 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2494 value
2495 }
2496 }
2497
2498 unsafe impl fidl::encoding::TypeMarker for WlanWmmAccessCategoryParameters {
2499 type Owned = Self;
2500
2501 #[inline(always)]
2502 fn inline_align(_context: fidl::encoding::Context) -> usize {
2503 2
2504 }
2505
2506 #[inline(always)]
2507 fn inline_size(_context: fidl::encoding::Context) -> usize {
2508 8
2509 }
2510 }
2511
2512 unsafe impl<D: fidl::encoding::ResourceDialect>
2513 fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>
2514 for &WlanWmmAccessCategoryParameters
2515 {
2516 #[inline]
2517 unsafe fn encode(
2518 self,
2519 encoder: &mut fidl::encoding::Encoder<'_, D>,
2520 offset: usize,
2521 _depth: fidl::encoding::Depth,
2522 ) -> fidl::Result<()> {
2523 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2524 fidl::encoding::Encode::<WlanWmmAccessCategoryParameters, D>::encode(
2526 (
2527 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_min),
2528 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.ecw_max),
2529 <u8 as fidl::encoding::ValueTypeMarker>::borrow(&self.aifsn),
2530 <u16 as fidl::encoding::ValueTypeMarker>::borrow(&self.txop_limit),
2531 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.acm),
2532 ),
2533 encoder,
2534 offset,
2535 _depth,
2536 )
2537 }
2538 }
2539 unsafe impl<
2540 D: fidl::encoding::ResourceDialect,
2541 T0: fidl::encoding::Encode<u8, D>,
2542 T1: fidl::encoding::Encode<u8, D>,
2543 T2: fidl::encoding::Encode<u8, D>,
2544 T3: fidl::encoding::Encode<u16, D>,
2545 T4: fidl::encoding::Encode<bool, D>,
2546 > fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D> for (T0, T1, T2, T3, T4)
2547 {
2548 #[inline]
2549 unsafe fn encode(
2550 self,
2551 encoder: &mut fidl::encoding::Encoder<'_, D>,
2552 offset: usize,
2553 depth: fidl::encoding::Depth,
2554 ) -> fidl::Result<()> {
2555 encoder.debug_check_bounds::<WlanWmmAccessCategoryParameters>(offset);
2556 unsafe {
2559 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(2);
2560 (ptr as *mut u16).write_unaligned(0);
2561 }
2562 unsafe {
2563 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(6);
2564 (ptr as *mut u16).write_unaligned(0);
2565 }
2566 self.0.encode(encoder, offset + 0, depth)?;
2568 self.1.encode(encoder, offset + 1, depth)?;
2569 self.2.encode(encoder, offset + 2, depth)?;
2570 self.3.encode(encoder, offset + 4, depth)?;
2571 self.4.encode(encoder, offset + 6, depth)?;
2572 Ok(())
2573 }
2574 }
2575
2576 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2577 for WlanWmmAccessCategoryParameters
2578 {
2579 #[inline(always)]
2580 fn new_empty() -> Self {
2581 Self {
2582 ecw_min: fidl::new_empty!(u8, D),
2583 ecw_max: fidl::new_empty!(u8, D),
2584 aifsn: fidl::new_empty!(u8, D),
2585 txop_limit: fidl::new_empty!(u16, D),
2586 acm: fidl::new_empty!(bool, D),
2587 }
2588 }
2589
2590 #[inline]
2591 unsafe fn decode(
2592 &mut self,
2593 decoder: &mut fidl::encoding::Decoder<'_, D>,
2594 offset: usize,
2595 _depth: fidl::encoding::Depth,
2596 ) -> fidl::Result<()> {
2597 decoder.debug_check_bounds::<Self>(offset);
2598 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(2) };
2600 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2601 let mask = 0xff00u16;
2602 let maskedval = padval & mask;
2603 if maskedval != 0 {
2604 return Err(fidl::Error::NonZeroPadding {
2605 padding_start: offset + 2 + ((mask as u64).trailing_zeros() / 8) as usize,
2606 });
2607 }
2608 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(6) };
2609 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2610 let mask = 0xff00u16;
2611 let maskedval = padval & mask;
2612 if maskedval != 0 {
2613 return Err(fidl::Error::NonZeroPadding {
2614 padding_start: offset + 6 + ((mask as u64).trailing_zeros() / 8) as usize,
2615 });
2616 }
2617 fidl::decode!(u8, D, &mut self.ecw_min, decoder, offset + 0, _depth)?;
2618 fidl::decode!(u8, D, &mut self.ecw_max, decoder, offset + 1, _depth)?;
2619 fidl::decode!(u8, D, &mut self.aifsn, decoder, offset + 2, _depth)?;
2620 fidl::decode!(u16, D, &mut self.txop_limit, decoder, offset + 4, _depth)?;
2621 fidl::decode!(bool, D, &mut self.acm, decoder, offset + 6, _depth)?;
2622 Ok(())
2623 }
2624 }
2625
2626 impl fidl::encoding::ValueTypeMarker for WlanWmmParameters {
2627 type Borrowed<'a> = &'a Self;
2628 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2629 value
2630 }
2631 }
2632
2633 unsafe impl fidl::encoding::TypeMarker for WlanWmmParameters {
2634 type Owned = Self;
2635
2636 #[inline(always)]
2637 fn inline_align(_context: fidl::encoding::Context) -> usize {
2638 2
2639 }
2640
2641 #[inline(always)]
2642 fn inline_size(_context: fidl::encoding::Context) -> usize {
2643 34
2644 }
2645 }
2646
2647 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanWmmParameters, D>
2648 for &WlanWmmParameters
2649 {
2650 #[inline]
2651 unsafe fn encode(
2652 self,
2653 encoder: &mut fidl::encoding::Encoder<'_, D>,
2654 offset: usize,
2655 _depth: fidl::encoding::Depth,
2656 ) -> fidl::Result<()> {
2657 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2658 fidl::encoding::Encode::<WlanWmmParameters, D>::encode(
2660 (
2661 <bool as fidl::encoding::ValueTypeMarker>::borrow(&self.apsd),
2662 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2663 &self.ac_be_params,
2664 ),
2665 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2666 &self.ac_bk_params,
2667 ),
2668 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2669 &self.ac_vi_params,
2670 ),
2671 <WlanWmmAccessCategoryParameters as fidl::encoding::ValueTypeMarker>::borrow(
2672 &self.ac_vo_params,
2673 ),
2674 ),
2675 encoder,
2676 offset,
2677 _depth,
2678 )
2679 }
2680 }
2681 unsafe impl<
2682 D: fidl::encoding::ResourceDialect,
2683 T0: fidl::encoding::Encode<bool, D>,
2684 T1: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2685 T2: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2686 T3: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2687 T4: fidl::encoding::Encode<WlanWmmAccessCategoryParameters, D>,
2688 > fidl::encoding::Encode<WlanWmmParameters, D> for (T0, T1, T2, T3, T4)
2689 {
2690 #[inline]
2691 unsafe fn encode(
2692 self,
2693 encoder: &mut fidl::encoding::Encoder<'_, D>,
2694 offset: usize,
2695 depth: fidl::encoding::Depth,
2696 ) -> fidl::Result<()> {
2697 encoder.debug_check_bounds::<WlanWmmParameters>(offset);
2698 unsafe {
2701 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(0);
2702 (ptr as *mut u16).write_unaligned(0);
2703 }
2704 self.0.encode(encoder, offset + 0, depth)?;
2706 self.1.encode(encoder, offset + 2, depth)?;
2707 self.2.encode(encoder, offset + 10, depth)?;
2708 self.3.encode(encoder, offset + 18, depth)?;
2709 self.4.encode(encoder, offset + 26, depth)?;
2710 Ok(())
2711 }
2712 }
2713
2714 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanWmmParameters {
2715 #[inline(always)]
2716 fn new_empty() -> Self {
2717 Self {
2718 apsd: fidl::new_empty!(bool, D),
2719 ac_be_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2720 ac_bk_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2721 ac_vi_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2722 ac_vo_params: fidl::new_empty!(WlanWmmAccessCategoryParameters, D),
2723 }
2724 }
2725
2726 #[inline]
2727 unsafe fn decode(
2728 &mut self,
2729 decoder: &mut fidl::encoding::Decoder<'_, D>,
2730 offset: usize,
2731 _depth: fidl::encoding::Depth,
2732 ) -> fidl::Result<()> {
2733 decoder.debug_check_bounds::<Self>(offset);
2734 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(0) };
2736 let padval = unsafe { (ptr as *const u16).read_unaligned() };
2737 let mask = 0xff00u16;
2738 let maskedval = padval & mask;
2739 if maskedval != 0 {
2740 return Err(fidl::Error::NonZeroPadding {
2741 padding_start: offset + 0 + ((mask as u64).trailing_zeros() / 8) as usize,
2742 });
2743 }
2744 fidl::decode!(bool, D, &mut self.apsd, decoder, offset + 0, _depth)?;
2745 fidl::decode!(
2746 WlanWmmAccessCategoryParameters,
2747 D,
2748 &mut self.ac_be_params,
2749 decoder,
2750 offset + 2,
2751 _depth
2752 )?;
2753 fidl::decode!(
2754 WlanWmmAccessCategoryParameters,
2755 D,
2756 &mut self.ac_bk_params,
2757 decoder,
2758 offset + 10,
2759 _depth
2760 )?;
2761 fidl::decode!(
2762 WlanWmmAccessCategoryParameters,
2763 D,
2764 &mut self.ac_vi_params,
2765 decoder,
2766 offset + 18,
2767 _depth
2768 )?;
2769 fidl::decode!(
2770 WlanWmmAccessCategoryParameters,
2771 D,
2772 &mut self.ac_vo_params,
2773 decoder,
2774 offset + 26,
2775 _depth
2776 )?;
2777 Ok(())
2778 }
2779 }
2780
2781 impl ApfPacketFilterSupport {
2782 #[inline(always)]
2783 fn max_ordinal_present(&self) -> u64 {
2784 if let Some(_) = self.max_filter_length {
2785 return 3;
2786 }
2787 if let Some(_) = self.version {
2788 return 2;
2789 }
2790 if let Some(_) = self.supported {
2791 return 1;
2792 }
2793 0
2794 }
2795 }
2796
2797 impl fidl::encoding::ValueTypeMarker for ApfPacketFilterSupport {
2798 type Borrowed<'a> = &'a Self;
2799 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
2800 value
2801 }
2802 }
2803
2804 unsafe impl fidl::encoding::TypeMarker for ApfPacketFilterSupport {
2805 type Owned = Self;
2806
2807 #[inline(always)]
2808 fn inline_align(_context: fidl::encoding::Context) -> usize {
2809 8
2810 }
2811
2812 #[inline(always)]
2813 fn inline_size(_context: fidl::encoding::Context) -> usize {
2814 16
2815 }
2816 }
2817
2818 unsafe impl<D: fidl::encoding::ResourceDialect>
2819 fidl::encoding::Encode<ApfPacketFilterSupport, D> for &ApfPacketFilterSupport
2820 {
2821 unsafe fn encode(
2822 self,
2823 encoder: &mut fidl::encoding::Encoder<'_, D>,
2824 offset: usize,
2825 mut depth: fidl::encoding::Depth,
2826 ) -> fidl::Result<()> {
2827 encoder.debug_check_bounds::<ApfPacketFilterSupport>(offset);
2828 let max_ordinal: u64 = self.max_ordinal_present();
2830 encoder.write_num(max_ordinal, offset);
2831 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
2832 if max_ordinal == 0 {
2834 return Ok(());
2835 }
2836 depth.increment()?;
2837 let envelope_size = 8;
2838 let bytes_len = max_ordinal as usize * envelope_size;
2839 #[allow(unused_variables)]
2840 let offset = encoder.out_of_line_offset(bytes_len);
2841 let mut _prev_end_offset: usize = 0;
2842 if 1 > max_ordinal {
2843 return Ok(());
2844 }
2845
2846 let cur_offset: usize = (1 - 1) * envelope_size;
2849
2850 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2852
2853 fidl::encoding::encode_in_envelope_optional::<bool, D>(
2858 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
2859 encoder,
2860 offset + cur_offset,
2861 depth,
2862 )?;
2863
2864 _prev_end_offset = cur_offset + envelope_size;
2865 if 2 > max_ordinal {
2866 return Ok(());
2867 }
2868
2869 let cur_offset: usize = (2 - 1) * envelope_size;
2872
2873 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2875
2876 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2881 self.version.as_ref().map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2882 encoder,
2883 offset + cur_offset,
2884 depth,
2885 )?;
2886
2887 _prev_end_offset = cur_offset + envelope_size;
2888 if 3 > max_ordinal {
2889 return Ok(());
2890 }
2891
2892 let cur_offset: usize = (3 - 1) * envelope_size;
2895
2896 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
2898
2899 fidl::encoding::encode_in_envelope_optional::<i32, D>(
2904 self.max_filter_length
2905 .as_ref()
2906 .map(<i32 as fidl::encoding::ValueTypeMarker>::borrow),
2907 encoder,
2908 offset + cur_offset,
2909 depth,
2910 )?;
2911
2912 _prev_end_offset = cur_offset + envelope_size;
2913
2914 Ok(())
2915 }
2916 }
2917
2918 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
2919 for ApfPacketFilterSupport
2920 {
2921 #[inline(always)]
2922 fn new_empty() -> Self {
2923 Self::default()
2924 }
2925
2926 unsafe fn decode(
2927 &mut self,
2928 decoder: &mut fidl::encoding::Decoder<'_, D>,
2929 offset: usize,
2930 mut depth: fidl::encoding::Depth,
2931 ) -> fidl::Result<()> {
2932 decoder.debug_check_bounds::<Self>(offset);
2933 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
2934 None => return Err(fidl::Error::NotNullable),
2935 Some(len) => len,
2936 };
2937 if len == 0 {
2939 return Ok(());
2940 };
2941 depth.increment()?;
2942 let envelope_size = 8;
2943 let bytes_len = len * envelope_size;
2944 let offset = decoder.out_of_line_offset(bytes_len)?;
2945 let mut _next_ordinal_to_read = 0;
2947 let mut next_offset = offset;
2948 let end_offset = offset + bytes_len;
2949 _next_ordinal_to_read += 1;
2950 if next_offset >= end_offset {
2951 return Ok(());
2952 }
2953
2954 while _next_ordinal_to_read < 1 {
2956 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2957 _next_ordinal_to_read += 1;
2958 next_offset += envelope_size;
2959 }
2960
2961 let next_out_of_line = decoder.next_out_of_line();
2962 let handles_before = decoder.remaining_handles();
2963 if let Some((inlined, num_bytes, num_handles)) =
2964 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2965 {
2966 let member_inline_size =
2967 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
2968 if inlined != (member_inline_size <= 4) {
2969 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2970 }
2971 let inner_offset;
2972 let mut inner_depth = depth.clone();
2973 if inlined {
2974 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2975 inner_offset = next_offset;
2976 } else {
2977 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2978 inner_depth.increment()?;
2979 }
2980 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
2981 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
2982 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2983 {
2984 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2985 }
2986 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2987 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2988 }
2989 }
2990
2991 next_offset += envelope_size;
2992 _next_ordinal_to_read += 1;
2993 if next_offset >= end_offset {
2994 return Ok(());
2995 }
2996
2997 while _next_ordinal_to_read < 2 {
2999 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3000 _next_ordinal_to_read += 1;
3001 next_offset += envelope_size;
3002 }
3003
3004 let next_out_of_line = decoder.next_out_of_line();
3005 let handles_before = decoder.remaining_handles();
3006 if let Some((inlined, num_bytes, num_handles)) =
3007 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3008 {
3009 let member_inline_size =
3010 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3011 if inlined != (member_inline_size <= 4) {
3012 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3013 }
3014 let inner_offset;
3015 let mut inner_depth = depth.clone();
3016 if inlined {
3017 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3018 inner_offset = next_offset;
3019 } else {
3020 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3021 inner_depth.increment()?;
3022 }
3023 let val_ref = self.version.get_or_insert_with(|| fidl::new_empty!(i32, D));
3024 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
3025 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3026 {
3027 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3028 }
3029 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3030 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3031 }
3032 }
3033
3034 next_offset += envelope_size;
3035 _next_ordinal_to_read += 1;
3036 if next_offset >= end_offset {
3037 return Ok(());
3038 }
3039
3040 while _next_ordinal_to_read < 3 {
3042 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3043 _next_ordinal_to_read += 1;
3044 next_offset += envelope_size;
3045 }
3046
3047 let next_out_of_line = decoder.next_out_of_line();
3048 let handles_before = decoder.remaining_handles();
3049 if let Some((inlined, num_bytes, num_handles)) =
3050 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3051 {
3052 let member_inline_size =
3053 <i32 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3054 if inlined != (member_inline_size <= 4) {
3055 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3056 }
3057 let inner_offset;
3058 let mut inner_depth = depth.clone();
3059 if inlined {
3060 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3061 inner_offset = next_offset;
3062 } else {
3063 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3064 inner_depth.increment()?;
3065 }
3066 let val_ref =
3067 self.max_filter_length.get_or_insert_with(|| fidl::new_empty!(i32, D));
3068 fidl::decode!(i32, D, val_ref, decoder, inner_offset, inner_depth)?;
3069 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3070 {
3071 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3072 }
3073 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3074 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3075 }
3076 }
3077
3078 next_offset += envelope_size;
3079
3080 while next_offset < end_offset {
3082 _next_ordinal_to_read += 1;
3083 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3084 next_offset += envelope_size;
3085 }
3086
3087 Ok(())
3088 }
3089 }
3090
3091 impl DataPlaneExtension {
3092 #[inline(always)]
3093 fn max_ordinal_present(&self) -> u64 {
3094 if let Some(_) = self.data_plane_type {
3095 return 1;
3096 }
3097 0
3098 }
3099 }
3100
3101 impl fidl::encoding::ValueTypeMarker for DataPlaneExtension {
3102 type Borrowed<'a> = &'a Self;
3103 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3104 value
3105 }
3106 }
3107
3108 unsafe impl fidl::encoding::TypeMarker for DataPlaneExtension {
3109 type Owned = Self;
3110
3111 #[inline(always)]
3112 fn inline_align(_context: fidl::encoding::Context) -> usize {
3113 8
3114 }
3115
3116 #[inline(always)]
3117 fn inline_size(_context: fidl::encoding::Context) -> usize {
3118 16
3119 }
3120 }
3121
3122 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DataPlaneExtension, D>
3123 for &DataPlaneExtension
3124 {
3125 unsafe fn encode(
3126 self,
3127 encoder: &mut fidl::encoding::Encoder<'_, D>,
3128 offset: usize,
3129 mut depth: fidl::encoding::Depth,
3130 ) -> fidl::Result<()> {
3131 encoder.debug_check_bounds::<DataPlaneExtension>(offset);
3132 let max_ordinal: u64 = self.max_ordinal_present();
3134 encoder.write_num(max_ordinal, offset);
3135 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3136 if max_ordinal == 0 {
3138 return Ok(());
3139 }
3140 depth.increment()?;
3141 let envelope_size = 8;
3142 let bytes_len = max_ordinal as usize * envelope_size;
3143 #[allow(unused_variables)]
3144 let offset = encoder.out_of_line_offset(bytes_len);
3145 let mut _prev_end_offset: usize = 0;
3146 if 1 > max_ordinal {
3147 return Ok(());
3148 }
3149
3150 let cur_offset: usize = (1 - 1) * envelope_size;
3153
3154 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3156
3157 fidl::encoding::encode_in_envelope_optional::<DataPlaneType, D>(
3162 self.data_plane_type
3163 .as_ref()
3164 .map(<DataPlaneType as fidl::encoding::ValueTypeMarker>::borrow),
3165 encoder,
3166 offset + cur_offset,
3167 depth,
3168 )?;
3169
3170 _prev_end_offset = cur_offset + envelope_size;
3171
3172 Ok(())
3173 }
3174 }
3175
3176 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DataPlaneExtension {
3177 #[inline(always)]
3178 fn new_empty() -> Self {
3179 Self::default()
3180 }
3181
3182 unsafe fn decode(
3183 &mut self,
3184 decoder: &mut fidl::encoding::Decoder<'_, D>,
3185 offset: usize,
3186 mut depth: fidl::encoding::Depth,
3187 ) -> fidl::Result<()> {
3188 decoder.debug_check_bounds::<Self>(offset);
3189 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3190 None => return Err(fidl::Error::NotNullable),
3191 Some(len) => len,
3192 };
3193 if len == 0 {
3195 return Ok(());
3196 };
3197 depth.increment()?;
3198 let envelope_size = 8;
3199 let bytes_len = len * envelope_size;
3200 let offset = decoder.out_of_line_offset(bytes_len)?;
3201 let mut _next_ordinal_to_read = 0;
3203 let mut next_offset = offset;
3204 let end_offset = offset + bytes_len;
3205 _next_ordinal_to_read += 1;
3206 if next_offset >= end_offset {
3207 return Ok(());
3208 }
3209
3210 while _next_ordinal_to_read < 1 {
3212 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3213 _next_ordinal_to_read += 1;
3214 next_offset += envelope_size;
3215 }
3216
3217 let next_out_of_line = decoder.next_out_of_line();
3218 let handles_before = decoder.remaining_handles();
3219 if let Some((inlined, num_bytes, num_handles)) =
3220 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3221 {
3222 let member_inline_size =
3223 <DataPlaneType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3224 if inlined != (member_inline_size <= 4) {
3225 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3226 }
3227 let inner_offset;
3228 let mut inner_depth = depth.clone();
3229 if inlined {
3230 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3231 inner_offset = next_offset;
3232 } else {
3233 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3234 inner_depth.increment()?;
3235 }
3236 let val_ref =
3237 self.data_plane_type.get_or_insert_with(|| fidl::new_empty!(DataPlaneType, D));
3238 fidl::decode!(DataPlaneType, D, val_ref, decoder, inner_offset, inner_depth)?;
3239 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3240 {
3241 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3242 }
3243 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3244 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3245 }
3246 }
3247
3248 next_offset += envelope_size;
3249
3250 while next_offset < end_offset {
3252 _next_ordinal_to_read += 1;
3253 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3254 next_offset += envelope_size;
3255 }
3256
3257 Ok(())
3258 }
3259 }
3260
3261 impl DeviceExtension {
3262 #[inline(always)]
3263 fn max_ordinal_present(&self) -> u64 {
3264 if let Some(_) = self.tx_status_report_supported {
3265 return 3;
3266 }
3267 if let Some(_) = self.mac_implementation_type {
3268 return 2;
3269 }
3270 if let Some(_) = self.is_synthetic {
3271 return 1;
3272 }
3273 0
3274 }
3275 }
3276
3277 impl fidl::encoding::ValueTypeMarker for DeviceExtension {
3278 type Borrowed<'a> = &'a Self;
3279 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3280 value
3281 }
3282 }
3283
3284 unsafe impl fidl::encoding::TypeMarker for DeviceExtension {
3285 type Owned = Self;
3286
3287 #[inline(always)]
3288 fn inline_align(_context: fidl::encoding::Context) -> usize {
3289 8
3290 }
3291
3292 #[inline(always)]
3293 fn inline_size(_context: fidl::encoding::Context) -> usize {
3294 16
3295 }
3296 }
3297
3298 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DeviceExtension, D>
3299 for &DeviceExtension
3300 {
3301 unsafe fn encode(
3302 self,
3303 encoder: &mut fidl::encoding::Encoder<'_, D>,
3304 offset: usize,
3305 mut depth: fidl::encoding::Depth,
3306 ) -> fidl::Result<()> {
3307 encoder.debug_check_bounds::<DeviceExtension>(offset);
3308 let max_ordinal: u64 = self.max_ordinal_present();
3310 encoder.write_num(max_ordinal, offset);
3311 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3312 if max_ordinal == 0 {
3314 return Ok(());
3315 }
3316 depth.increment()?;
3317 let envelope_size = 8;
3318 let bytes_len = max_ordinal as usize * envelope_size;
3319 #[allow(unused_variables)]
3320 let offset = encoder.out_of_line_offset(bytes_len);
3321 let mut _prev_end_offset: usize = 0;
3322 if 1 > max_ordinal {
3323 return Ok(());
3324 }
3325
3326 let cur_offset: usize = (1 - 1) * envelope_size;
3329
3330 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3332
3333 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3338 self.is_synthetic.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3339 encoder,
3340 offset + cur_offset,
3341 depth,
3342 )?;
3343
3344 _prev_end_offset = cur_offset + envelope_size;
3345 if 2 > max_ordinal {
3346 return Ok(());
3347 }
3348
3349 let cur_offset: usize = (2 - 1) * envelope_size;
3352
3353 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3355
3356 fidl::encoding::encode_in_envelope_optional::<MacImplementationType, D>(
3361 self.mac_implementation_type
3362 .as_ref()
3363 .map(<MacImplementationType as fidl::encoding::ValueTypeMarker>::borrow),
3364 encoder,
3365 offset + cur_offset,
3366 depth,
3367 )?;
3368
3369 _prev_end_offset = cur_offset + envelope_size;
3370 if 3 > max_ordinal {
3371 return Ok(());
3372 }
3373
3374 let cur_offset: usize = (3 - 1) * envelope_size;
3377
3378 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3380
3381 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3386 self.tx_status_report_supported
3387 .as_ref()
3388 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3389 encoder,
3390 offset + cur_offset,
3391 depth,
3392 )?;
3393
3394 _prev_end_offset = cur_offset + envelope_size;
3395
3396 Ok(())
3397 }
3398 }
3399
3400 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DeviceExtension {
3401 #[inline(always)]
3402 fn new_empty() -> Self {
3403 Self::default()
3404 }
3405
3406 unsafe fn decode(
3407 &mut self,
3408 decoder: &mut fidl::encoding::Decoder<'_, D>,
3409 offset: usize,
3410 mut depth: fidl::encoding::Depth,
3411 ) -> fidl::Result<()> {
3412 decoder.debug_check_bounds::<Self>(offset);
3413 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3414 None => return Err(fidl::Error::NotNullable),
3415 Some(len) => len,
3416 };
3417 if len == 0 {
3419 return Ok(());
3420 };
3421 depth.increment()?;
3422 let envelope_size = 8;
3423 let bytes_len = len * envelope_size;
3424 let offset = decoder.out_of_line_offset(bytes_len)?;
3425 let mut _next_ordinal_to_read = 0;
3427 let mut next_offset = offset;
3428 let end_offset = offset + bytes_len;
3429 _next_ordinal_to_read += 1;
3430 if next_offset >= end_offset {
3431 return Ok(());
3432 }
3433
3434 while _next_ordinal_to_read < 1 {
3436 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3437 _next_ordinal_to_read += 1;
3438 next_offset += envelope_size;
3439 }
3440
3441 let next_out_of_line = decoder.next_out_of_line();
3442 let handles_before = decoder.remaining_handles();
3443 if let Some((inlined, num_bytes, num_handles)) =
3444 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3445 {
3446 let member_inline_size =
3447 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3448 if inlined != (member_inline_size <= 4) {
3449 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3450 }
3451 let inner_offset;
3452 let mut inner_depth = depth.clone();
3453 if inlined {
3454 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3455 inner_offset = next_offset;
3456 } else {
3457 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3458 inner_depth.increment()?;
3459 }
3460 let val_ref = self.is_synthetic.get_or_insert_with(|| fidl::new_empty!(bool, D));
3461 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3462 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3463 {
3464 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3465 }
3466 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3467 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3468 }
3469 }
3470
3471 next_offset += envelope_size;
3472 _next_ordinal_to_read += 1;
3473 if next_offset >= end_offset {
3474 return Ok(());
3475 }
3476
3477 while _next_ordinal_to_read < 2 {
3479 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3480 _next_ordinal_to_read += 1;
3481 next_offset += envelope_size;
3482 }
3483
3484 let next_out_of_line = decoder.next_out_of_line();
3485 let handles_before = decoder.remaining_handles();
3486 if let Some((inlined, num_bytes, num_handles)) =
3487 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3488 {
3489 let member_inline_size =
3490 <MacImplementationType as fidl::encoding::TypeMarker>::inline_size(
3491 decoder.context,
3492 );
3493 if inlined != (member_inline_size <= 4) {
3494 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3495 }
3496 let inner_offset;
3497 let mut inner_depth = depth.clone();
3498 if inlined {
3499 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3500 inner_offset = next_offset;
3501 } else {
3502 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3503 inner_depth.increment()?;
3504 }
3505 let val_ref = self
3506 .mac_implementation_type
3507 .get_or_insert_with(|| fidl::new_empty!(MacImplementationType, D));
3508 fidl::decode!(
3509 MacImplementationType,
3510 D,
3511 val_ref,
3512 decoder,
3513 inner_offset,
3514 inner_depth
3515 )?;
3516 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3517 {
3518 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3519 }
3520 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3521 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3522 }
3523 }
3524
3525 next_offset += envelope_size;
3526 _next_ordinal_to_read += 1;
3527 if next_offset >= end_offset {
3528 return Ok(());
3529 }
3530
3531 while _next_ordinal_to_read < 3 {
3533 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3534 _next_ordinal_to_read += 1;
3535 next_offset += envelope_size;
3536 }
3537
3538 let next_out_of_line = decoder.next_out_of_line();
3539 let handles_before = decoder.remaining_handles();
3540 if let Some((inlined, num_bytes, num_handles)) =
3541 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3542 {
3543 let member_inline_size =
3544 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3545 if inlined != (member_inline_size <= 4) {
3546 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3547 }
3548 let inner_offset;
3549 let mut inner_depth = depth.clone();
3550 if inlined {
3551 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3552 inner_offset = next_offset;
3553 } else {
3554 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3555 inner_depth.increment()?;
3556 }
3557 let val_ref = self
3558 .tx_status_report_supported
3559 .get_or_insert_with(|| fidl::new_empty!(bool, D));
3560 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3561 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3562 {
3563 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3564 }
3565 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3566 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3567 }
3568 }
3569
3570 next_offset += envelope_size;
3571
3572 while next_offset < end_offset {
3574 _next_ordinal_to_read += 1;
3575 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3576 next_offset += envelope_size;
3577 }
3578
3579 Ok(())
3580 }
3581 }
3582
3583 impl DfsFeature {
3584 #[inline(always)]
3585 fn max_ordinal_present(&self) -> u64 {
3586 if let Some(_) = self.supported {
3587 return 1;
3588 }
3589 0
3590 }
3591 }
3592
3593 impl fidl::encoding::ValueTypeMarker for DfsFeature {
3594 type Borrowed<'a> = &'a Self;
3595 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3596 value
3597 }
3598 }
3599
3600 unsafe impl fidl::encoding::TypeMarker for DfsFeature {
3601 type Owned = Self;
3602
3603 #[inline(always)]
3604 fn inline_align(_context: fidl::encoding::Context) -> usize {
3605 8
3606 }
3607
3608 #[inline(always)]
3609 fn inline_size(_context: fidl::encoding::Context) -> usize {
3610 16
3611 }
3612 }
3613
3614 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DfsFeature, D>
3615 for &DfsFeature
3616 {
3617 unsafe fn encode(
3618 self,
3619 encoder: &mut fidl::encoding::Encoder<'_, D>,
3620 offset: usize,
3621 mut depth: fidl::encoding::Depth,
3622 ) -> fidl::Result<()> {
3623 encoder.debug_check_bounds::<DfsFeature>(offset);
3624 let max_ordinal: u64 = self.max_ordinal_present();
3626 encoder.write_num(max_ordinal, offset);
3627 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3628 if max_ordinal == 0 {
3630 return Ok(());
3631 }
3632 depth.increment()?;
3633 let envelope_size = 8;
3634 let bytes_len = max_ordinal as usize * envelope_size;
3635 #[allow(unused_variables)]
3636 let offset = encoder.out_of_line_offset(bytes_len);
3637 let mut _prev_end_offset: usize = 0;
3638 if 1 > max_ordinal {
3639 return Ok(());
3640 }
3641
3642 let cur_offset: usize = (1 - 1) * envelope_size;
3645
3646 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3648
3649 fidl::encoding::encode_in_envelope_optional::<bool, D>(
3654 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
3655 encoder,
3656 offset + cur_offset,
3657 depth,
3658 )?;
3659
3660 _prev_end_offset = cur_offset + envelope_size;
3661
3662 Ok(())
3663 }
3664 }
3665
3666 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DfsFeature {
3667 #[inline(always)]
3668 fn new_empty() -> Self {
3669 Self::default()
3670 }
3671
3672 unsafe fn decode(
3673 &mut self,
3674 decoder: &mut fidl::encoding::Decoder<'_, D>,
3675 offset: usize,
3676 mut depth: fidl::encoding::Depth,
3677 ) -> fidl::Result<()> {
3678 decoder.debug_check_bounds::<Self>(offset);
3679 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3680 None => return Err(fidl::Error::NotNullable),
3681 Some(len) => len,
3682 };
3683 if len == 0 {
3685 return Ok(());
3686 };
3687 depth.increment()?;
3688 let envelope_size = 8;
3689 let bytes_len = len * envelope_size;
3690 let offset = decoder.out_of_line_offset(bytes_len)?;
3691 let mut _next_ordinal_to_read = 0;
3693 let mut next_offset = offset;
3694 let end_offset = offset + bytes_len;
3695 _next_ordinal_to_read += 1;
3696 if next_offset >= end_offset {
3697 return Ok(());
3698 }
3699
3700 while _next_ordinal_to_read < 1 {
3702 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3703 _next_ordinal_to_read += 1;
3704 next_offset += envelope_size;
3705 }
3706
3707 let next_out_of_line = decoder.next_out_of_line();
3708 let handles_before = decoder.remaining_handles();
3709 if let Some((inlined, num_bytes, num_handles)) =
3710 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3711 {
3712 let member_inline_size =
3713 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
3714 if inlined != (member_inline_size <= 4) {
3715 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3716 }
3717 let inner_offset;
3718 let mut inner_depth = depth.clone();
3719 if inlined {
3720 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3721 inner_offset = next_offset;
3722 } else {
3723 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3724 inner_depth.increment()?;
3725 }
3726 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
3727 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
3728 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3729 {
3730 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3731 }
3732 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3733 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3734 }
3735 }
3736
3737 next_offset += envelope_size;
3738
3739 while next_offset < end_offset {
3741 _next_ordinal_to_read += 1;
3742 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3743 next_offset += envelope_size;
3744 }
3745
3746 Ok(())
3747 }
3748 }
3749
3750 impl DiscoverySupport {
3751 #[inline(always)]
3752 fn max_ordinal_present(&self) -> u64 {
3753 if let Some(_) = self.probe_response_offload {
3754 return 2;
3755 }
3756 if let Some(_) = self.scan_offload {
3757 return 1;
3758 }
3759 0
3760 }
3761 }
3762
3763 impl fidl::encoding::ValueTypeMarker for DiscoverySupport {
3764 type Borrowed<'a> = &'a Self;
3765 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
3766 value
3767 }
3768 }
3769
3770 unsafe impl fidl::encoding::TypeMarker for DiscoverySupport {
3771 type Owned = Self;
3772
3773 #[inline(always)]
3774 fn inline_align(_context: fidl::encoding::Context) -> usize {
3775 8
3776 }
3777
3778 #[inline(always)]
3779 fn inline_size(_context: fidl::encoding::Context) -> usize {
3780 16
3781 }
3782 }
3783
3784 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<DiscoverySupport, D>
3785 for &DiscoverySupport
3786 {
3787 unsafe fn encode(
3788 self,
3789 encoder: &mut fidl::encoding::Encoder<'_, D>,
3790 offset: usize,
3791 mut depth: fidl::encoding::Depth,
3792 ) -> fidl::Result<()> {
3793 encoder.debug_check_bounds::<DiscoverySupport>(offset);
3794 let max_ordinal: u64 = self.max_ordinal_present();
3796 encoder.write_num(max_ordinal, offset);
3797 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
3798 if max_ordinal == 0 {
3800 return Ok(());
3801 }
3802 depth.increment()?;
3803 let envelope_size = 8;
3804 let bytes_len = max_ordinal as usize * envelope_size;
3805 #[allow(unused_variables)]
3806 let offset = encoder.out_of_line_offset(bytes_len);
3807 let mut _prev_end_offset: usize = 0;
3808 if 1 > max_ordinal {
3809 return Ok(());
3810 }
3811
3812 let cur_offset: usize = (1 - 1) * envelope_size;
3815
3816 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3818
3819 fidl::encoding::encode_in_envelope_optional::<ScanOffloadExtension, D>(
3824 self.scan_offload
3825 .as_ref()
3826 .map(<ScanOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow),
3827 encoder,
3828 offset + cur_offset,
3829 depth,
3830 )?;
3831
3832 _prev_end_offset = cur_offset + envelope_size;
3833 if 2 > max_ordinal {
3834 return Ok(());
3835 }
3836
3837 let cur_offset: usize = (2 - 1) * envelope_size;
3840
3841 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
3843
3844 fidl::encoding::encode_in_envelope_optional::<ProbeResponseOffloadExtension, D>(
3849 self.probe_response_offload.as_ref().map(
3850 <ProbeResponseOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
3851 ),
3852 encoder,
3853 offset + cur_offset,
3854 depth,
3855 )?;
3856
3857 _prev_end_offset = cur_offset + envelope_size;
3858
3859 Ok(())
3860 }
3861 }
3862
3863 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for DiscoverySupport {
3864 #[inline(always)]
3865 fn new_empty() -> Self {
3866 Self::default()
3867 }
3868
3869 unsafe fn decode(
3870 &mut self,
3871 decoder: &mut fidl::encoding::Decoder<'_, D>,
3872 offset: usize,
3873 mut depth: fidl::encoding::Depth,
3874 ) -> fidl::Result<()> {
3875 decoder.debug_check_bounds::<Self>(offset);
3876 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
3877 None => return Err(fidl::Error::NotNullable),
3878 Some(len) => len,
3879 };
3880 if len == 0 {
3882 return Ok(());
3883 };
3884 depth.increment()?;
3885 let envelope_size = 8;
3886 let bytes_len = len * envelope_size;
3887 let offset = decoder.out_of_line_offset(bytes_len)?;
3888 let mut _next_ordinal_to_read = 0;
3890 let mut next_offset = offset;
3891 let end_offset = offset + bytes_len;
3892 _next_ordinal_to_read += 1;
3893 if next_offset >= end_offset {
3894 return Ok(());
3895 }
3896
3897 while _next_ordinal_to_read < 1 {
3899 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3900 _next_ordinal_to_read += 1;
3901 next_offset += envelope_size;
3902 }
3903
3904 let next_out_of_line = decoder.next_out_of_line();
3905 let handles_before = decoder.remaining_handles();
3906 if let Some((inlined, num_bytes, num_handles)) =
3907 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3908 {
3909 let member_inline_size =
3910 <ScanOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3911 decoder.context,
3912 );
3913 if inlined != (member_inline_size <= 4) {
3914 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3915 }
3916 let inner_offset;
3917 let mut inner_depth = depth.clone();
3918 if inlined {
3919 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3920 inner_offset = next_offset;
3921 } else {
3922 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3923 inner_depth.increment()?;
3924 }
3925 let val_ref = self
3926 .scan_offload
3927 .get_or_insert_with(|| fidl::new_empty!(ScanOffloadExtension, D));
3928 fidl::decode!(
3929 ScanOffloadExtension,
3930 D,
3931 val_ref,
3932 decoder,
3933 inner_offset,
3934 inner_depth
3935 )?;
3936 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3937 {
3938 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3939 }
3940 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3941 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3942 }
3943 }
3944
3945 next_offset += envelope_size;
3946 _next_ordinal_to_read += 1;
3947 if next_offset >= end_offset {
3948 return Ok(());
3949 }
3950
3951 while _next_ordinal_to_read < 2 {
3953 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
3954 _next_ordinal_to_read += 1;
3955 next_offset += envelope_size;
3956 }
3957
3958 let next_out_of_line = decoder.next_out_of_line();
3959 let handles_before = decoder.remaining_handles();
3960 if let Some((inlined, num_bytes, num_handles)) =
3961 fidl::encoding::decode_envelope_header(decoder, next_offset)?
3962 {
3963 let member_inline_size =
3964 <ProbeResponseOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
3965 decoder.context,
3966 );
3967 if inlined != (member_inline_size <= 4) {
3968 return Err(fidl::Error::InvalidInlineBitInEnvelope);
3969 }
3970 let inner_offset;
3971 let mut inner_depth = depth.clone();
3972 if inlined {
3973 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
3974 inner_offset = next_offset;
3975 } else {
3976 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
3977 inner_depth.increment()?;
3978 }
3979 let val_ref = self
3980 .probe_response_offload
3981 .get_or_insert_with(|| fidl::new_empty!(ProbeResponseOffloadExtension, D));
3982 fidl::decode!(
3983 ProbeResponseOffloadExtension,
3984 D,
3985 val_ref,
3986 decoder,
3987 inner_offset,
3988 inner_depth
3989 )?;
3990 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
3991 {
3992 return Err(fidl::Error::InvalidNumBytesInEnvelope);
3993 }
3994 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
3995 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
3996 }
3997 }
3998
3999 next_offset += envelope_size;
4000
4001 while next_offset < end_offset {
4003 _next_ordinal_to_read += 1;
4004 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4005 next_offset += envelope_size;
4006 }
4007
4008 Ok(())
4009 }
4010 }
4011
4012 impl JoinBssRequest {
4013 #[inline(always)]
4014 fn max_ordinal_present(&self) -> u64 {
4015 if let Some(_) = self.beacon_period {
4016 return 4;
4017 }
4018 if let Some(_) = self.remote {
4019 return 3;
4020 }
4021 if let Some(_) = self.bss_type {
4022 return 2;
4023 }
4024 if let Some(_) = self.bssid {
4025 return 1;
4026 }
4027 0
4028 }
4029 }
4030
4031 impl fidl::encoding::ValueTypeMarker for JoinBssRequest {
4032 type Borrowed<'a> = &'a Self;
4033 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4034 value
4035 }
4036 }
4037
4038 unsafe impl fidl::encoding::TypeMarker for JoinBssRequest {
4039 type Owned = Self;
4040
4041 #[inline(always)]
4042 fn inline_align(_context: fidl::encoding::Context) -> usize {
4043 8
4044 }
4045
4046 #[inline(always)]
4047 fn inline_size(_context: fidl::encoding::Context) -> usize {
4048 16
4049 }
4050 }
4051
4052 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<JoinBssRequest, D>
4053 for &JoinBssRequest
4054 {
4055 unsafe fn encode(
4056 self,
4057 encoder: &mut fidl::encoding::Encoder<'_, D>,
4058 offset: usize,
4059 mut depth: fidl::encoding::Depth,
4060 ) -> fidl::Result<()> {
4061 encoder.debug_check_bounds::<JoinBssRequest>(offset);
4062 let max_ordinal: u64 = self.max_ordinal_present();
4064 encoder.write_num(max_ordinal, offset);
4065 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4066 if max_ordinal == 0 {
4068 return Ok(());
4069 }
4070 depth.increment()?;
4071 let envelope_size = 8;
4072 let bytes_len = max_ordinal as usize * envelope_size;
4073 #[allow(unused_variables)]
4074 let offset = encoder.out_of_line_offset(bytes_len);
4075 let mut _prev_end_offset: usize = 0;
4076 if 1 > max_ordinal {
4077 return Ok(());
4078 }
4079
4080 let cur_offset: usize = (1 - 1) * envelope_size;
4083
4084 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4086
4087 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
4092 self.bssid
4093 .as_ref()
4094 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
4095 encoder,
4096 offset + cur_offset,
4097 depth,
4098 )?;
4099
4100 _prev_end_offset = cur_offset + envelope_size;
4101 if 2 > max_ordinal {
4102 return Ok(());
4103 }
4104
4105 let cur_offset: usize = (2 - 1) * envelope_size;
4108
4109 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4111
4112 fidl::encoding::encode_in_envelope_optional::<BssType, D>(
4117 self.bss_type.as_ref().map(<BssType as fidl::encoding::ValueTypeMarker>::borrow),
4118 encoder,
4119 offset + cur_offset,
4120 depth,
4121 )?;
4122
4123 _prev_end_offset = cur_offset + envelope_size;
4124 if 3 > max_ordinal {
4125 return Ok(());
4126 }
4127
4128 let cur_offset: usize = (3 - 1) * envelope_size;
4131
4132 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4134
4135 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4140 self.remote.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4141 encoder,
4142 offset + cur_offset,
4143 depth,
4144 )?;
4145
4146 _prev_end_offset = cur_offset + envelope_size;
4147 if 4 > max_ordinal {
4148 return Ok(());
4149 }
4150
4151 let cur_offset: usize = (4 - 1) * envelope_size;
4154
4155 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4157
4158 fidl::encoding::encode_in_envelope_optional::<u16, D>(
4163 self.beacon_period.as_ref().map(<u16 as fidl::encoding::ValueTypeMarker>::borrow),
4164 encoder,
4165 offset + cur_offset,
4166 depth,
4167 )?;
4168
4169 _prev_end_offset = cur_offset + envelope_size;
4170
4171 Ok(())
4172 }
4173 }
4174
4175 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for JoinBssRequest {
4176 #[inline(always)]
4177 fn new_empty() -> Self {
4178 Self::default()
4179 }
4180
4181 unsafe fn decode(
4182 &mut self,
4183 decoder: &mut fidl::encoding::Decoder<'_, D>,
4184 offset: usize,
4185 mut depth: fidl::encoding::Depth,
4186 ) -> fidl::Result<()> {
4187 decoder.debug_check_bounds::<Self>(offset);
4188 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4189 None => return Err(fidl::Error::NotNullable),
4190 Some(len) => len,
4191 };
4192 if len == 0 {
4194 return Ok(());
4195 };
4196 depth.increment()?;
4197 let envelope_size = 8;
4198 let bytes_len = len * envelope_size;
4199 let offset = decoder.out_of_line_offset(bytes_len)?;
4200 let mut _next_ordinal_to_read = 0;
4202 let mut next_offset = offset;
4203 let end_offset = offset + bytes_len;
4204 _next_ordinal_to_read += 1;
4205 if next_offset >= end_offset {
4206 return Ok(());
4207 }
4208
4209 while _next_ordinal_to_read < 1 {
4211 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4212 _next_ordinal_to_read += 1;
4213 next_offset += envelope_size;
4214 }
4215
4216 let next_out_of_line = decoder.next_out_of_line();
4217 let handles_before = decoder.remaining_handles();
4218 if let Some((inlined, num_bytes, num_handles)) =
4219 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4220 {
4221 let member_inline_size =
4222 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
4223 decoder.context,
4224 );
4225 if inlined != (member_inline_size <= 4) {
4226 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4227 }
4228 let inner_offset;
4229 let mut inner_depth = depth.clone();
4230 if inlined {
4231 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4232 inner_offset = next_offset;
4233 } else {
4234 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4235 inner_depth.increment()?;
4236 }
4237 let val_ref = self
4238 .bssid
4239 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
4240 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
4241 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4242 {
4243 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4244 }
4245 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4246 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4247 }
4248 }
4249
4250 next_offset += envelope_size;
4251 _next_ordinal_to_read += 1;
4252 if next_offset >= end_offset {
4253 return Ok(());
4254 }
4255
4256 while _next_ordinal_to_read < 2 {
4258 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4259 _next_ordinal_to_read += 1;
4260 next_offset += envelope_size;
4261 }
4262
4263 let next_out_of_line = decoder.next_out_of_line();
4264 let handles_before = decoder.remaining_handles();
4265 if let Some((inlined, num_bytes, num_handles)) =
4266 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4267 {
4268 let member_inline_size =
4269 <BssType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4270 if inlined != (member_inline_size <= 4) {
4271 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4272 }
4273 let inner_offset;
4274 let mut inner_depth = depth.clone();
4275 if inlined {
4276 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4277 inner_offset = next_offset;
4278 } else {
4279 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4280 inner_depth.increment()?;
4281 }
4282 let val_ref = self.bss_type.get_or_insert_with(|| fidl::new_empty!(BssType, D));
4283 fidl::decode!(BssType, D, val_ref, decoder, inner_offset, inner_depth)?;
4284 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4285 {
4286 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4287 }
4288 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4289 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4290 }
4291 }
4292
4293 next_offset += envelope_size;
4294 _next_ordinal_to_read += 1;
4295 if next_offset >= end_offset {
4296 return Ok(());
4297 }
4298
4299 while _next_ordinal_to_read < 3 {
4301 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4302 _next_ordinal_to_read += 1;
4303 next_offset += envelope_size;
4304 }
4305
4306 let next_out_of_line = decoder.next_out_of_line();
4307 let handles_before = decoder.remaining_handles();
4308 if let Some((inlined, num_bytes, num_handles)) =
4309 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4310 {
4311 let member_inline_size =
4312 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4313 if inlined != (member_inline_size <= 4) {
4314 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4315 }
4316 let inner_offset;
4317 let mut inner_depth = depth.clone();
4318 if inlined {
4319 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4320 inner_offset = next_offset;
4321 } else {
4322 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4323 inner_depth.increment()?;
4324 }
4325 let val_ref = self.remote.get_or_insert_with(|| fidl::new_empty!(bool, D));
4326 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4327 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4328 {
4329 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4330 }
4331 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4332 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4333 }
4334 }
4335
4336 next_offset += envelope_size;
4337 _next_ordinal_to_read += 1;
4338 if next_offset >= end_offset {
4339 return Ok(());
4340 }
4341
4342 while _next_ordinal_to_read < 4 {
4344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4345 _next_ordinal_to_read += 1;
4346 next_offset += envelope_size;
4347 }
4348
4349 let next_out_of_line = decoder.next_out_of_line();
4350 let handles_before = decoder.remaining_handles();
4351 if let Some((inlined, num_bytes, num_handles)) =
4352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4353 {
4354 let member_inline_size =
4355 <u16 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4356 if inlined != (member_inline_size <= 4) {
4357 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4358 }
4359 let inner_offset;
4360 let mut inner_depth = depth.clone();
4361 if inlined {
4362 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4363 inner_offset = next_offset;
4364 } else {
4365 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4366 inner_depth.increment()?;
4367 }
4368 let val_ref = self.beacon_period.get_or_insert_with(|| fidl::new_empty!(u16, D));
4369 fidl::decode!(u16, D, val_ref, decoder, inner_offset, inner_depth)?;
4370 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4371 {
4372 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4373 }
4374 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4375 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4376 }
4377 }
4378
4379 next_offset += envelope_size;
4380
4381 while next_offset < end_offset {
4383 _next_ordinal_to_read += 1;
4384 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4385 next_offset += envelope_size;
4386 }
4387
4388 Ok(())
4389 }
4390 }
4391
4392 impl MacSublayerSupport {
4393 #[inline(always)]
4394 fn max_ordinal_present(&self) -> u64 {
4395 if let Some(_) = self.device {
4396 return 3;
4397 }
4398 if let Some(_) = self.data_plane {
4399 return 2;
4400 }
4401 if let Some(_) = self.rate_selection_offload {
4402 return 1;
4403 }
4404 0
4405 }
4406 }
4407
4408 impl fidl::encoding::ValueTypeMarker for MacSublayerSupport {
4409 type Borrowed<'a> = &'a Self;
4410 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4411 value
4412 }
4413 }
4414
4415 unsafe impl fidl::encoding::TypeMarker for MacSublayerSupport {
4416 type Owned = Self;
4417
4418 #[inline(always)]
4419 fn inline_align(_context: fidl::encoding::Context) -> usize {
4420 8
4421 }
4422
4423 #[inline(always)]
4424 fn inline_size(_context: fidl::encoding::Context) -> usize {
4425 16
4426 }
4427 }
4428
4429 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MacSublayerSupport, D>
4430 for &MacSublayerSupport
4431 {
4432 unsafe fn encode(
4433 self,
4434 encoder: &mut fidl::encoding::Encoder<'_, D>,
4435 offset: usize,
4436 mut depth: fidl::encoding::Depth,
4437 ) -> fidl::Result<()> {
4438 encoder.debug_check_bounds::<MacSublayerSupport>(offset);
4439 let max_ordinal: u64 = self.max_ordinal_present();
4441 encoder.write_num(max_ordinal, offset);
4442 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4443 if max_ordinal == 0 {
4445 return Ok(());
4446 }
4447 depth.increment()?;
4448 let envelope_size = 8;
4449 let bytes_len = max_ordinal as usize * envelope_size;
4450 #[allow(unused_variables)]
4451 let offset = encoder.out_of_line_offset(bytes_len);
4452 let mut _prev_end_offset: usize = 0;
4453 if 1 > max_ordinal {
4454 return Ok(());
4455 }
4456
4457 let cur_offset: usize = (1 - 1) * envelope_size;
4460
4461 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4463
4464 fidl::encoding::encode_in_envelope_optional::<RateSelectionOffloadExtension, D>(
4469 self.rate_selection_offload.as_ref().map(
4470 <RateSelectionOffloadExtension as fidl::encoding::ValueTypeMarker>::borrow,
4471 ),
4472 encoder,
4473 offset + cur_offset,
4474 depth,
4475 )?;
4476
4477 _prev_end_offset = cur_offset + envelope_size;
4478 if 2 > max_ordinal {
4479 return Ok(());
4480 }
4481
4482 let cur_offset: usize = (2 - 1) * envelope_size;
4485
4486 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4488
4489 fidl::encoding::encode_in_envelope_optional::<DataPlaneExtension, D>(
4494 self.data_plane
4495 .as_ref()
4496 .map(<DataPlaneExtension as fidl::encoding::ValueTypeMarker>::borrow),
4497 encoder,
4498 offset + cur_offset,
4499 depth,
4500 )?;
4501
4502 _prev_end_offset = cur_offset + envelope_size;
4503 if 3 > max_ordinal {
4504 return Ok(());
4505 }
4506
4507 let cur_offset: usize = (3 - 1) * envelope_size;
4510
4511 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4513
4514 fidl::encoding::encode_in_envelope_optional::<DeviceExtension, D>(
4519 self.device
4520 .as_ref()
4521 .map(<DeviceExtension as fidl::encoding::ValueTypeMarker>::borrow),
4522 encoder,
4523 offset + cur_offset,
4524 depth,
4525 )?;
4526
4527 _prev_end_offset = cur_offset + envelope_size;
4528
4529 Ok(())
4530 }
4531 }
4532
4533 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MacSublayerSupport {
4534 #[inline(always)]
4535 fn new_empty() -> Self {
4536 Self::default()
4537 }
4538
4539 unsafe fn decode(
4540 &mut self,
4541 decoder: &mut fidl::encoding::Decoder<'_, D>,
4542 offset: usize,
4543 mut depth: fidl::encoding::Depth,
4544 ) -> fidl::Result<()> {
4545 decoder.debug_check_bounds::<Self>(offset);
4546 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4547 None => return Err(fidl::Error::NotNullable),
4548 Some(len) => len,
4549 };
4550 if len == 0 {
4552 return Ok(());
4553 };
4554 depth.increment()?;
4555 let envelope_size = 8;
4556 let bytes_len = len * envelope_size;
4557 let offset = decoder.out_of_line_offset(bytes_len)?;
4558 let mut _next_ordinal_to_read = 0;
4560 let mut next_offset = offset;
4561 let end_offset = offset + bytes_len;
4562 _next_ordinal_to_read += 1;
4563 if next_offset >= end_offset {
4564 return Ok(());
4565 }
4566
4567 while _next_ordinal_to_read < 1 {
4569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4570 _next_ordinal_to_read += 1;
4571 next_offset += envelope_size;
4572 }
4573
4574 let next_out_of_line = decoder.next_out_of_line();
4575 let handles_before = decoder.remaining_handles();
4576 if let Some((inlined, num_bytes, num_handles)) =
4577 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4578 {
4579 let member_inline_size =
4580 <RateSelectionOffloadExtension as fidl::encoding::TypeMarker>::inline_size(
4581 decoder.context,
4582 );
4583 if inlined != (member_inline_size <= 4) {
4584 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4585 }
4586 let inner_offset;
4587 let mut inner_depth = depth.clone();
4588 if inlined {
4589 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4590 inner_offset = next_offset;
4591 } else {
4592 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4593 inner_depth.increment()?;
4594 }
4595 let val_ref = self
4596 .rate_selection_offload
4597 .get_or_insert_with(|| fidl::new_empty!(RateSelectionOffloadExtension, D));
4598 fidl::decode!(
4599 RateSelectionOffloadExtension,
4600 D,
4601 val_ref,
4602 decoder,
4603 inner_offset,
4604 inner_depth
4605 )?;
4606 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4607 {
4608 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4609 }
4610 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4611 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4612 }
4613 }
4614
4615 next_offset += envelope_size;
4616 _next_ordinal_to_read += 1;
4617 if next_offset >= end_offset {
4618 return Ok(());
4619 }
4620
4621 while _next_ordinal_to_read < 2 {
4623 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4624 _next_ordinal_to_read += 1;
4625 next_offset += envelope_size;
4626 }
4627
4628 let next_out_of_line = decoder.next_out_of_line();
4629 let handles_before = decoder.remaining_handles();
4630 if let Some((inlined, num_bytes, num_handles)) =
4631 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4632 {
4633 let member_inline_size =
4634 <DataPlaneExtension as fidl::encoding::TypeMarker>::inline_size(
4635 decoder.context,
4636 );
4637 if inlined != (member_inline_size <= 4) {
4638 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4639 }
4640 let inner_offset;
4641 let mut inner_depth = depth.clone();
4642 if inlined {
4643 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4644 inner_offset = next_offset;
4645 } else {
4646 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4647 inner_depth.increment()?;
4648 }
4649 let val_ref =
4650 self.data_plane.get_or_insert_with(|| fidl::new_empty!(DataPlaneExtension, D));
4651 fidl::decode!(DataPlaneExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4652 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4653 {
4654 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4655 }
4656 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4657 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4658 }
4659 }
4660
4661 next_offset += envelope_size;
4662 _next_ordinal_to_read += 1;
4663 if next_offset >= end_offset {
4664 return Ok(());
4665 }
4666
4667 while _next_ordinal_to_read < 3 {
4669 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4670 _next_ordinal_to_read += 1;
4671 next_offset += envelope_size;
4672 }
4673
4674 let next_out_of_line = decoder.next_out_of_line();
4675 let handles_before = decoder.remaining_handles();
4676 if let Some((inlined, num_bytes, num_handles)) =
4677 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4678 {
4679 let member_inline_size =
4680 <DeviceExtension as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4681 if inlined != (member_inline_size <= 4) {
4682 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4683 }
4684 let inner_offset;
4685 let mut inner_depth = depth.clone();
4686 if inlined {
4687 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4688 inner_offset = next_offset;
4689 } else {
4690 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4691 inner_depth.increment()?;
4692 }
4693 let val_ref =
4694 self.device.get_or_insert_with(|| fidl::new_empty!(DeviceExtension, D));
4695 fidl::decode!(DeviceExtension, D, val_ref, decoder, inner_offset, inner_depth)?;
4696 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4697 {
4698 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4699 }
4700 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4701 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4702 }
4703 }
4704
4705 next_offset += envelope_size;
4706
4707 while next_offset < end_offset {
4709 _next_ordinal_to_read += 1;
4710 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4711 next_offset += envelope_size;
4712 }
4713
4714 Ok(())
4715 }
4716 }
4717
4718 impl MfpFeature {
4719 #[inline(always)]
4720 fn max_ordinal_present(&self) -> u64 {
4721 if let Some(_) = self.supported {
4722 return 1;
4723 }
4724 0
4725 }
4726 }
4727
4728 impl fidl::encoding::ValueTypeMarker for MfpFeature {
4729 type Borrowed<'a> = &'a Self;
4730 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4731 value
4732 }
4733 }
4734
4735 unsafe impl fidl::encoding::TypeMarker for MfpFeature {
4736 type Owned = Self;
4737
4738 #[inline(always)]
4739 fn inline_align(_context: fidl::encoding::Context) -> usize {
4740 8
4741 }
4742
4743 #[inline(always)]
4744 fn inline_size(_context: fidl::encoding::Context) -> usize {
4745 16
4746 }
4747 }
4748
4749 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<MfpFeature, D>
4750 for &MfpFeature
4751 {
4752 unsafe fn encode(
4753 self,
4754 encoder: &mut fidl::encoding::Encoder<'_, D>,
4755 offset: usize,
4756 mut depth: fidl::encoding::Depth,
4757 ) -> fidl::Result<()> {
4758 encoder.debug_check_bounds::<MfpFeature>(offset);
4759 let max_ordinal: u64 = self.max_ordinal_present();
4761 encoder.write_num(max_ordinal, offset);
4762 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4763 if max_ordinal == 0 {
4765 return Ok(());
4766 }
4767 depth.increment()?;
4768 let envelope_size = 8;
4769 let bytes_len = max_ordinal as usize * envelope_size;
4770 #[allow(unused_variables)]
4771 let offset = encoder.out_of_line_offset(bytes_len);
4772 let mut _prev_end_offset: usize = 0;
4773 if 1 > max_ordinal {
4774 return Ok(());
4775 }
4776
4777 let cur_offset: usize = (1 - 1) * envelope_size;
4780
4781 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4783
4784 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4789 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4790 encoder,
4791 offset + cur_offset,
4792 depth,
4793 )?;
4794
4795 _prev_end_offset = cur_offset + envelope_size;
4796
4797 Ok(())
4798 }
4799 }
4800
4801 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for MfpFeature {
4802 #[inline(always)]
4803 fn new_empty() -> Self {
4804 Self::default()
4805 }
4806
4807 unsafe fn decode(
4808 &mut self,
4809 decoder: &mut fidl::encoding::Decoder<'_, D>,
4810 offset: usize,
4811 mut depth: fidl::encoding::Depth,
4812 ) -> fidl::Result<()> {
4813 decoder.debug_check_bounds::<Self>(offset);
4814 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4815 None => return Err(fidl::Error::NotNullable),
4816 Some(len) => len,
4817 };
4818 if len == 0 {
4820 return Ok(());
4821 };
4822 depth.increment()?;
4823 let envelope_size = 8;
4824 let bytes_len = len * envelope_size;
4825 let offset = decoder.out_of_line_offset(bytes_len)?;
4826 let mut _next_ordinal_to_read = 0;
4828 let mut next_offset = offset;
4829 let end_offset = offset + bytes_len;
4830 _next_ordinal_to_read += 1;
4831 if next_offset >= end_offset {
4832 return Ok(());
4833 }
4834
4835 while _next_ordinal_to_read < 1 {
4837 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4838 _next_ordinal_to_read += 1;
4839 next_offset += envelope_size;
4840 }
4841
4842 let next_out_of_line = decoder.next_out_of_line();
4843 let handles_before = decoder.remaining_handles();
4844 if let Some((inlined, num_bytes, num_handles)) =
4845 fidl::encoding::decode_envelope_header(decoder, next_offset)?
4846 {
4847 let member_inline_size =
4848 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
4849 if inlined != (member_inline_size <= 4) {
4850 return Err(fidl::Error::InvalidInlineBitInEnvelope);
4851 }
4852 let inner_offset;
4853 let mut inner_depth = depth.clone();
4854 if inlined {
4855 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
4856 inner_offset = next_offset;
4857 } else {
4858 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
4859 inner_depth.increment()?;
4860 }
4861 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
4862 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
4863 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
4864 {
4865 return Err(fidl::Error::InvalidNumBytesInEnvelope);
4866 }
4867 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
4868 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
4869 }
4870 }
4871
4872 next_offset += envelope_size;
4873
4874 while next_offset < end_offset {
4876 _next_ordinal_to_read += 1;
4877 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
4878 next_offset += envelope_size;
4879 }
4880
4881 Ok(())
4882 }
4883 }
4884
4885 impl OweFeature {
4886 #[inline(always)]
4887 fn max_ordinal_present(&self) -> u64 {
4888 if let Some(_) = self.supported {
4889 return 1;
4890 }
4891 0
4892 }
4893 }
4894
4895 impl fidl::encoding::ValueTypeMarker for OweFeature {
4896 type Borrowed<'a> = &'a Self;
4897 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
4898 value
4899 }
4900 }
4901
4902 unsafe impl fidl::encoding::TypeMarker for OweFeature {
4903 type Owned = Self;
4904
4905 #[inline(always)]
4906 fn inline_align(_context: fidl::encoding::Context) -> usize {
4907 8
4908 }
4909
4910 #[inline(always)]
4911 fn inline_size(_context: fidl::encoding::Context) -> usize {
4912 16
4913 }
4914 }
4915
4916 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<OweFeature, D>
4917 for &OweFeature
4918 {
4919 unsafe fn encode(
4920 self,
4921 encoder: &mut fidl::encoding::Encoder<'_, D>,
4922 offset: usize,
4923 mut depth: fidl::encoding::Depth,
4924 ) -> fidl::Result<()> {
4925 encoder.debug_check_bounds::<OweFeature>(offset);
4926 let max_ordinal: u64 = self.max_ordinal_present();
4928 encoder.write_num(max_ordinal, offset);
4929 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
4930 if max_ordinal == 0 {
4932 return Ok(());
4933 }
4934 depth.increment()?;
4935 let envelope_size = 8;
4936 let bytes_len = max_ordinal as usize * envelope_size;
4937 #[allow(unused_variables)]
4938 let offset = encoder.out_of_line_offset(bytes_len);
4939 let mut _prev_end_offset: usize = 0;
4940 if 1 > max_ordinal {
4941 return Ok(());
4942 }
4943
4944 let cur_offset: usize = (1 - 1) * envelope_size;
4947
4948 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
4950
4951 fidl::encoding::encode_in_envelope_optional::<bool, D>(
4956 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
4957 encoder,
4958 offset + cur_offset,
4959 depth,
4960 )?;
4961
4962 _prev_end_offset = cur_offset + envelope_size;
4963
4964 Ok(())
4965 }
4966 }
4967
4968 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for OweFeature {
4969 #[inline(always)]
4970 fn new_empty() -> Self {
4971 Self::default()
4972 }
4973
4974 unsafe fn decode(
4975 &mut self,
4976 decoder: &mut fidl::encoding::Decoder<'_, D>,
4977 offset: usize,
4978 mut depth: fidl::encoding::Depth,
4979 ) -> fidl::Result<()> {
4980 decoder.debug_check_bounds::<Self>(offset);
4981 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
4982 None => return Err(fidl::Error::NotNullable),
4983 Some(len) => len,
4984 };
4985 if len == 0 {
4987 return Ok(());
4988 };
4989 depth.increment()?;
4990 let envelope_size = 8;
4991 let bytes_len = len * envelope_size;
4992 let offset = decoder.out_of_line_offset(bytes_len)?;
4993 let mut _next_ordinal_to_read = 0;
4995 let mut next_offset = offset;
4996 let end_offset = offset + bytes_len;
4997 _next_ordinal_to_read += 1;
4998 if next_offset >= end_offset {
4999 return Ok(());
5000 }
5001
5002 while _next_ordinal_to_read < 1 {
5004 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5005 _next_ordinal_to_read += 1;
5006 next_offset += envelope_size;
5007 }
5008
5009 let next_out_of_line = decoder.next_out_of_line();
5010 let handles_before = decoder.remaining_handles();
5011 if let Some((inlined, num_bytes, num_handles)) =
5012 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5013 {
5014 let member_inline_size =
5015 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5016 if inlined != (member_inline_size <= 4) {
5017 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5018 }
5019 let inner_offset;
5020 let mut inner_depth = depth.clone();
5021 if inlined {
5022 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5023 inner_offset = next_offset;
5024 } else {
5025 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5026 inner_depth.increment()?;
5027 }
5028 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5029 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5030 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5031 {
5032 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5033 }
5034 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5035 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5036 }
5037 }
5038
5039 next_offset += envelope_size;
5040
5041 while next_offset < end_offset {
5043 _next_ordinal_to_read += 1;
5044 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5045 next_offset += envelope_size;
5046 }
5047
5048 Ok(())
5049 }
5050 }
5051
5052 impl ProbeResponseOffloadExtension {
5053 #[inline(always)]
5054 fn max_ordinal_present(&self) -> u64 {
5055 if let Some(_) = self.supported {
5056 return 1;
5057 }
5058 0
5059 }
5060 }
5061
5062 impl fidl::encoding::ValueTypeMarker for ProbeResponseOffloadExtension {
5063 type Borrowed<'a> = &'a Self;
5064 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5065 value
5066 }
5067 }
5068
5069 unsafe impl fidl::encoding::TypeMarker for ProbeResponseOffloadExtension {
5070 type Owned = Self;
5071
5072 #[inline(always)]
5073 fn inline_align(_context: fidl::encoding::Context) -> usize {
5074 8
5075 }
5076
5077 #[inline(always)]
5078 fn inline_size(_context: fidl::encoding::Context) -> usize {
5079 16
5080 }
5081 }
5082
5083 unsafe impl<D: fidl::encoding::ResourceDialect>
5084 fidl::encoding::Encode<ProbeResponseOffloadExtension, D>
5085 for &ProbeResponseOffloadExtension
5086 {
5087 unsafe fn encode(
5088 self,
5089 encoder: &mut fidl::encoding::Encoder<'_, D>,
5090 offset: usize,
5091 mut depth: fidl::encoding::Depth,
5092 ) -> fidl::Result<()> {
5093 encoder.debug_check_bounds::<ProbeResponseOffloadExtension>(offset);
5094 let max_ordinal: u64 = self.max_ordinal_present();
5096 encoder.write_num(max_ordinal, offset);
5097 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5098 if max_ordinal == 0 {
5100 return Ok(());
5101 }
5102 depth.increment()?;
5103 let envelope_size = 8;
5104 let bytes_len = max_ordinal as usize * envelope_size;
5105 #[allow(unused_variables)]
5106 let offset = encoder.out_of_line_offset(bytes_len);
5107 let mut _prev_end_offset: usize = 0;
5108 if 1 > max_ordinal {
5109 return Ok(());
5110 }
5111
5112 let cur_offset: usize = (1 - 1) * envelope_size;
5115
5116 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5118
5119 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5124 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5125 encoder,
5126 offset + cur_offset,
5127 depth,
5128 )?;
5129
5130 _prev_end_offset = cur_offset + envelope_size;
5131
5132 Ok(())
5133 }
5134 }
5135
5136 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5137 for ProbeResponseOffloadExtension
5138 {
5139 #[inline(always)]
5140 fn new_empty() -> Self {
5141 Self::default()
5142 }
5143
5144 unsafe fn decode(
5145 &mut self,
5146 decoder: &mut fidl::encoding::Decoder<'_, D>,
5147 offset: usize,
5148 mut depth: fidl::encoding::Depth,
5149 ) -> fidl::Result<()> {
5150 decoder.debug_check_bounds::<Self>(offset);
5151 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5152 None => return Err(fidl::Error::NotNullable),
5153 Some(len) => len,
5154 };
5155 if len == 0 {
5157 return Ok(());
5158 };
5159 depth.increment()?;
5160 let envelope_size = 8;
5161 let bytes_len = len * envelope_size;
5162 let offset = decoder.out_of_line_offset(bytes_len)?;
5163 let mut _next_ordinal_to_read = 0;
5165 let mut next_offset = offset;
5166 let end_offset = offset + bytes_len;
5167 _next_ordinal_to_read += 1;
5168 if next_offset >= end_offset {
5169 return Ok(());
5170 }
5171
5172 while _next_ordinal_to_read < 1 {
5174 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5175 _next_ordinal_to_read += 1;
5176 next_offset += envelope_size;
5177 }
5178
5179 let next_out_of_line = decoder.next_out_of_line();
5180 let handles_before = decoder.remaining_handles();
5181 if let Some((inlined, num_bytes, num_handles)) =
5182 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5183 {
5184 let member_inline_size =
5185 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5186 if inlined != (member_inline_size <= 4) {
5187 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5188 }
5189 let inner_offset;
5190 let mut inner_depth = depth.clone();
5191 if inlined {
5192 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5193 inner_offset = next_offset;
5194 } else {
5195 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5196 inner_depth.increment()?;
5197 }
5198 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5199 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5200 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5201 {
5202 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5203 }
5204 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5205 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5206 }
5207 }
5208
5209 next_offset += envelope_size;
5210
5211 while next_offset < end_offset {
5213 _next_ordinal_to_read += 1;
5214 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5215 next_offset += envelope_size;
5216 }
5217
5218 Ok(())
5219 }
5220 }
5221
5222 impl RateSelectionOffloadExtension {
5223 #[inline(always)]
5224 fn max_ordinal_present(&self) -> u64 {
5225 if let Some(_) = self.supported {
5226 return 1;
5227 }
5228 0
5229 }
5230 }
5231
5232 impl fidl::encoding::ValueTypeMarker for RateSelectionOffloadExtension {
5233 type Borrowed<'a> = &'a Self;
5234 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5235 value
5236 }
5237 }
5238
5239 unsafe impl fidl::encoding::TypeMarker for RateSelectionOffloadExtension {
5240 type Owned = Self;
5241
5242 #[inline(always)]
5243 fn inline_align(_context: fidl::encoding::Context) -> usize {
5244 8
5245 }
5246
5247 #[inline(always)]
5248 fn inline_size(_context: fidl::encoding::Context) -> usize {
5249 16
5250 }
5251 }
5252
5253 unsafe impl<D: fidl::encoding::ResourceDialect>
5254 fidl::encoding::Encode<RateSelectionOffloadExtension, D>
5255 for &RateSelectionOffloadExtension
5256 {
5257 unsafe fn encode(
5258 self,
5259 encoder: &mut fidl::encoding::Encoder<'_, D>,
5260 offset: usize,
5261 mut depth: fidl::encoding::Depth,
5262 ) -> fidl::Result<()> {
5263 encoder.debug_check_bounds::<RateSelectionOffloadExtension>(offset);
5264 let max_ordinal: u64 = self.max_ordinal_present();
5266 encoder.write_num(max_ordinal, offset);
5267 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5268 if max_ordinal == 0 {
5270 return Ok(());
5271 }
5272 depth.increment()?;
5273 let envelope_size = 8;
5274 let bytes_len = max_ordinal as usize * envelope_size;
5275 #[allow(unused_variables)]
5276 let offset = encoder.out_of_line_offset(bytes_len);
5277 let mut _prev_end_offset: usize = 0;
5278 if 1 > max_ordinal {
5279 return Ok(());
5280 }
5281
5282 let cur_offset: usize = (1 - 1) * envelope_size;
5285
5286 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5288
5289 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5294 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5295 encoder,
5296 offset + cur_offset,
5297 depth,
5298 )?;
5299
5300 _prev_end_offset = cur_offset + envelope_size;
5301
5302 Ok(())
5303 }
5304 }
5305
5306 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
5307 for RateSelectionOffloadExtension
5308 {
5309 #[inline(always)]
5310 fn new_empty() -> Self {
5311 Self::default()
5312 }
5313
5314 unsafe fn decode(
5315 &mut self,
5316 decoder: &mut fidl::encoding::Decoder<'_, D>,
5317 offset: usize,
5318 mut depth: fidl::encoding::Depth,
5319 ) -> fidl::Result<()> {
5320 decoder.debug_check_bounds::<Self>(offset);
5321 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5322 None => return Err(fidl::Error::NotNullable),
5323 Some(len) => len,
5324 };
5325 if len == 0 {
5327 return Ok(());
5328 };
5329 depth.increment()?;
5330 let envelope_size = 8;
5331 let bytes_len = len * envelope_size;
5332 let offset = decoder.out_of_line_offset(bytes_len)?;
5333 let mut _next_ordinal_to_read = 0;
5335 let mut next_offset = offset;
5336 let end_offset = offset + bytes_len;
5337 _next_ordinal_to_read += 1;
5338 if next_offset >= end_offset {
5339 return Ok(());
5340 }
5341
5342 while _next_ordinal_to_read < 1 {
5344 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5345 _next_ordinal_to_read += 1;
5346 next_offset += envelope_size;
5347 }
5348
5349 let next_out_of_line = decoder.next_out_of_line();
5350 let handles_before = decoder.remaining_handles();
5351 if let Some((inlined, num_bytes, num_handles)) =
5352 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5353 {
5354 let member_inline_size =
5355 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5356 if inlined != (member_inline_size <= 4) {
5357 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5358 }
5359 let inner_offset;
5360 let mut inner_depth = depth.clone();
5361 if inlined {
5362 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5363 inner_offset = next_offset;
5364 } else {
5365 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5366 inner_depth.increment()?;
5367 }
5368 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5369 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5370 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5371 {
5372 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5373 }
5374 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5375 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5376 }
5377 }
5378
5379 next_offset += envelope_size;
5380
5381 while next_offset < end_offset {
5383 _next_ordinal_to_read += 1;
5384 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5385 next_offset += envelope_size;
5386 }
5387
5388 Ok(())
5389 }
5390 }
5391
5392 impl SaeFeature {
5393 #[inline(always)]
5394 fn max_ordinal_present(&self) -> u64 {
5395 if let Some(_) = self.hash_to_element_supported {
5396 return 3;
5397 }
5398 if let Some(_) = self.sme_handler_supported {
5399 return 2;
5400 }
5401 if let Some(_) = self.driver_handler_supported {
5402 return 1;
5403 }
5404 0
5405 }
5406 }
5407
5408 impl fidl::encoding::ValueTypeMarker for SaeFeature {
5409 type Borrowed<'a> = &'a Self;
5410 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5411 value
5412 }
5413 }
5414
5415 unsafe impl fidl::encoding::TypeMarker for SaeFeature {
5416 type Owned = Self;
5417
5418 #[inline(always)]
5419 fn inline_align(_context: fidl::encoding::Context) -> usize {
5420 8
5421 }
5422
5423 #[inline(always)]
5424 fn inline_size(_context: fidl::encoding::Context) -> usize {
5425 16
5426 }
5427 }
5428
5429 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SaeFeature, D>
5430 for &SaeFeature
5431 {
5432 unsafe fn encode(
5433 self,
5434 encoder: &mut fidl::encoding::Encoder<'_, D>,
5435 offset: usize,
5436 mut depth: fidl::encoding::Depth,
5437 ) -> fidl::Result<()> {
5438 encoder.debug_check_bounds::<SaeFeature>(offset);
5439 let max_ordinal: u64 = self.max_ordinal_present();
5441 encoder.write_num(max_ordinal, offset);
5442 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5443 if max_ordinal == 0 {
5445 return Ok(());
5446 }
5447 depth.increment()?;
5448 let envelope_size = 8;
5449 let bytes_len = max_ordinal as usize * envelope_size;
5450 #[allow(unused_variables)]
5451 let offset = encoder.out_of_line_offset(bytes_len);
5452 let mut _prev_end_offset: usize = 0;
5453 if 1 > max_ordinal {
5454 return Ok(());
5455 }
5456
5457 let cur_offset: usize = (1 - 1) * envelope_size;
5460
5461 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5463
5464 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5469 self.driver_handler_supported
5470 .as_ref()
5471 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5472 encoder,
5473 offset + cur_offset,
5474 depth,
5475 )?;
5476
5477 _prev_end_offset = cur_offset + envelope_size;
5478 if 2 > max_ordinal {
5479 return Ok(());
5480 }
5481
5482 let cur_offset: usize = (2 - 1) * envelope_size;
5485
5486 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5488
5489 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5494 self.sme_handler_supported
5495 .as_ref()
5496 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5497 encoder,
5498 offset + cur_offset,
5499 depth,
5500 )?;
5501
5502 _prev_end_offset = cur_offset + envelope_size;
5503 if 3 > max_ordinal {
5504 return Ok(());
5505 }
5506
5507 let cur_offset: usize = (3 - 1) * envelope_size;
5510
5511 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5513
5514 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5519 self.hash_to_element_supported
5520 .as_ref()
5521 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5522 encoder,
5523 offset + cur_offset,
5524 depth,
5525 )?;
5526
5527 _prev_end_offset = cur_offset + envelope_size;
5528
5529 Ok(())
5530 }
5531 }
5532
5533 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SaeFeature {
5534 #[inline(always)]
5535 fn new_empty() -> Self {
5536 Self::default()
5537 }
5538
5539 unsafe fn decode(
5540 &mut self,
5541 decoder: &mut fidl::encoding::Decoder<'_, D>,
5542 offset: usize,
5543 mut depth: fidl::encoding::Depth,
5544 ) -> fidl::Result<()> {
5545 decoder.debug_check_bounds::<Self>(offset);
5546 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5547 None => return Err(fidl::Error::NotNullable),
5548 Some(len) => len,
5549 };
5550 if len == 0 {
5552 return Ok(());
5553 };
5554 depth.increment()?;
5555 let envelope_size = 8;
5556 let bytes_len = len * envelope_size;
5557 let offset = decoder.out_of_line_offset(bytes_len)?;
5558 let mut _next_ordinal_to_read = 0;
5560 let mut next_offset = offset;
5561 let end_offset = offset + bytes_len;
5562 _next_ordinal_to_read += 1;
5563 if next_offset >= end_offset {
5564 return Ok(());
5565 }
5566
5567 while _next_ordinal_to_read < 1 {
5569 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5570 _next_ordinal_to_read += 1;
5571 next_offset += envelope_size;
5572 }
5573
5574 let next_out_of_line = decoder.next_out_of_line();
5575 let handles_before = decoder.remaining_handles();
5576 if let Some((inlined, num_bytes, num_handles)) =
5577 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5578 {
5579 let member_inline_size =
5580 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5581 if inlined != (member_inline_size <= 4) {
5582 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5583 }
5584 let inner_offset;
5585 let mut inner_depth = depth.clone();
5586 if inlined {
5587 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5588 inner_offset = next_offset;
5589 } else {
5590 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5591 inner_depth.increment()?;
5592 }
5593 let val_ref =
5594 self.driver_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5595 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5596 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5597 {
5598 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5599 }
5600 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5601 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5602 }
5603 }
5604
5605 next_offset += envelope_size;
5606 _next_ordinal_to_read += 1;
5607 if next_offset >= end_offset {
5608 return Ok(());
5609 }
5610
5611 while _next_ordinal_to_read < 2 {
5613 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5614 _next_ordinal_to_read += 1;
5615 next_offset += envelope_size;
5616 }
5617
5618 let next_out_of_line = decoder.next_out_of_line();
5619 let handles_before = decoder.remaining_handles();
5620 if let Some((inlined, num_bytes, num_handles)) =
5621 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5622 {
5623 let member_inline_size =
5624 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5625 if inlined != (member_inline_size <= 4) {
5626 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5627 }
5628 let inner_offset;
5629 let mut inner_depth = depth.clone();
5630 if inlined {
5631 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5632 inner_offset = next_offset;
5633 } else {
5634 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5635 inner_depth.increment()?;
5636 }
5637 let val_ref =
5638 self.sme_handler_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5639 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5640 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5641 {
5642 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5643 }
5644 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5645 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5646 }
5647 }
5648
5649 next_offset += envelope_size;
5650 _next_ordinal_to_read += 1;
5651 if next_offset >= end_offset {
5652 return Ok(());
5653 }
5654
5655 while _next_ordinal_to_read < 3 {
5657 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5658 _next_ordinal_to_read += 1;
5659 next_offset += envelope_size;
5660 }
5661
5662 let next_out_of_line = decoder.next_out_of_line();
5663 let handles_before = decoder.remaining_handles();
5664 if let Some((inlined, num_bytes, num_handles)) =
5665 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5666 {
5667 let member_inline_size =
5668 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5669 if inlined != (member_inline_size <= 4) {
5670 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5671 }
5672 let inner_offset;
5673 let mut inner_depth = depth.clone();
5674 if inlined {
5675 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5676 inner_offset = next_offset;
5677 } else {
5678 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5679 inner_depth.increment()?;
5680 }
5681 let val_ref =
5682 self.hash_to_element_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5683 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5684 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5685 {
5686 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5687 }
5688 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5689 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5690 }
5691 }
5692
5693 next_offset += envelope_size;
5694
5695 while next_offset < end_offset {
5697 _next_ordinal_to_read += 1;
5698 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5699 next_offset += envelope_size;
5700 }
5701
5702 Ok(())
5703 }
5704 }
5705
5706 impl ScanOffloadExtension {
5707 #[inline(always)]
5708 fn max_ordinal_present(&self) -> u64 {
5709 if let Some(_) = self.scan_cancel_supported {
5710 return 2;
5711 }
5712 if let Some(_) = self.supported {
5713 return 1;
5714 }
5715 0
5716 }
5717 }
5718
5719 impl fidl::encoding::ValueTypeMarker for ScanOffloadExtension {
5720 type Borrowed<'a> = &'a Self;
5721 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5722 value
5723 }
5724 }
5725
5726 unsafe impl fidl::encoding::TypeMarker for ScanOffloadExtension {
5727 type Owned = Self;
5728
5729 #[inline(always)]
5730 fn inline_align(_context: fidl::encoding::Context) -> usize {
5731 8
5732 }
5733
5734 #[inline(always)]
5735 fn inline_size(_context: fidl::encoding::Context) -> usize {
5736 16
5737 }
5738 }
5739
5740 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<ScanOffloadExtension, D>
5741 for &ScanOffloadExtension
5742 {
5743 unsafe fn encode(
5744 self,
5745 encoder: &mut fidl::encoding::Encoder<'_, D>,
5746 offset: usize,
5747 mut depth: fidl::encoding::Depth,
5748 ) -> fidl::Result<()> {
5749 encoder.debug_check_bounds::<ScanOffloadExtension>(offset);
5750 let max_ordinal: u64 = self.max_ordinal_present();
5752 encoder.write_num(max_ordinal, offset);
5753 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5754 if max_ordinal == 0 {
5756 return Ok(());
5757 }
5758 depth.increment()?;
5759 let envelope_size = 8;
5760 let bytes_len = max_ordinal as usize * envelope_size;
5761 #[allow(unused_variables)]
5762 let offset = encoder.out_of_line_offset(bytes_len);
5763 let mut _prev_end_offset: usize = 0;
5764 if 1 > max_ordinal {
5765 return Ok(());
5766 }
5767
5768 let cur_offset: usize = (1 - 1) * envelope_size;
5771
5772 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5774
5775 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5780 self.supported.as_ref().map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5781 encoder,
5782 offset + cur_offset,
5783 depth,
5784 )?;
5785
5786 _prev_end_offset = cur_offset + envelope_size;
5787 if 2 > max_ordinal {
5788 return Ok(());
5789 }
5790
5791 let cur_offset: usize = (2 - 1) * envelope_size;
5794
5795 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
5797
5798 fidl::encoding::encode_in_envelope_optional::<bool, D>(
5803 self.scan_cancel_supported
5804 .as_ref()
5805 .map(<bool as fidl::encoding::ValueTypeMarker>::borrow),
5806 encoder,
5807 offset + cur_offset,
5808 depth,
5809 )?;
5810
5811 _prev_end_offset = cur_offset + envelope_size;
5812
5813 Ok(())
5814 }
5815 }
5816
5817 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for ScanOffloadExtension {
5818 #[inline(always)]
5819 fn new_empty() -> Self {
5820 Self::default()
5821 }
5822
5823 unsafe fn decode(
5824 &mut self,
5825 decoder: &mut fidl::encoding::Decoder<'_, D>,
5826 offset: usize,
5827 mut depth: fidl::encoding::Depth,
5828 ) -> fidl::Result<()> {
5829 decoder.debug_check_bounds::<Self>(offset);
5830 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
5831 None => return Err(fidl::Error::NotNullable),
5832 Some(len) => len,
5833 };
5834 if len == 0 {
5836 return Ok(());
5837 };
5838 depth.increment()?;
5839 let envelope_size = 8;
5840 let bytes_len = len * envelope_size;
5841 let offset = decoder.out_of_line_offset(bytes_len)?;
5842 let mut _next_ordinal_to_read = 0;
5844 let mut next_offset = offset;
5845 let end_offset = offset + bytes_len;
5846 _next_ordinal_to_read += 1;
5847 if next_offset >= end_offset {
5848 return Ok(());
5849 }
5850
5851 while _next_ordinal_to_read < 1 {
5853 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5854 _next_ordinal_to_read += 1;
5855 next_offset += envelope_size;
5856 }
5857
5858 let next_out_of_line = decoder.next_out_of_line();
5859 let handles_before = decoder.remaining_handles();
5860 if let Some((inlined, num_bytes, num_handles)) =
5861 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5862 {
5863 let member_inline_size =
5864 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5865 if inlined != (member_inline_size <= 4) {
5866 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5867 }
5868 let inner_offset;
5869 let mut inner_depth = depth.clone();
5870 if inlined {
5871 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5872 inner_offset = next_offset;
5873 } else {
5874 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5875 inner_depth.increment()?;
5876 }
5877 let val_ref = self.supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5878 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5879 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5880 {
5881 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5882 }
5883 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5884 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5885 }
5886 }
5887
5888 next_offset += envelope_size;
5889 _next_ordinal_to_read += 1;
5890 if next_offset >= end_offset {
5891 return Ok(());
5892 }
5893
5894 while _next_ordinal_to_read < 2 {
5896 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5897 _next_ordinal_to_read += 1;
5898 next_offset += envelope_size;
5899 }
5900
5901 let next_out_of_line = decoder.next_out_of_line();
5902 let handles_before = decoder.remaining_handles();
5903 if let Some((inlined, num_bytes, num_handles)) =
5904 fidl::encoding::decode_envelope_header(decoder, next_offset)?
5905 {
5906 let member_inline_size =
5907 <bool as fidl::encoding::TypeMarker>::inline_size(decoder.context);
5908 if inlined != (member_inline_size <= 4) {
5909 return Err(fidl::Error::InvalidInlineBitInEnvelope);
5910 }
5911 let inner_offset;
5912 let mut inner_depth = depth.clone();
5913 if inlined {
5914 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
5915 inner_offset = next_offset;
5916 } else {
5917 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
5918 inner_depth.increment()?;
5919 }
5920 let val_ref =
5921 self.scan_cancel_supported.get_or_insert_with(|| fidl::new_empty!(bool, D));
5922 fidl::decode!(bool, D, val_ref, decoder, inner_offset, inner_depth)?;
5923 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
5924 {
5925 return Err(fidl::Error::InvalidNumBytesInEnvelope);
5926 }
5927 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
5928 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
5929 }
5930 }
5931
5932 next_offset += envelope_size;
5933
5934 while next_offset < end_offset {
5936 _next_ordinal_to_read += 1;
5937 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
5938 next_offset += envelope_size;
5939 }
5940
5941 Ok(())
5942 }
5943 }
5944
5945 impl SecuritySupport {
5946 #[inline(always)]
5947 fn max_ordinal_present(&self) -> u64 {
5948 if let Some(_) = self.owe {
5949 return 3;
5950 }
5951 if let Some(_) = self.mfp {
5952 return 2;
5953 }
5954 if let Some(_) = self.sae {
5955 return 1;
5956 }
5957 0
5958 }
5959 }
5960
5961 impl fidl::encoding::ValueTypeMarker for SecuritySupport {
5962 type Borrowed<'a> = &'a Self;
5963 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
5964 value
5965 }
5966 }
5967
5968 unsafe impl fidl::encoding::TypeMarker for SecuritySupport {
5969 type Owned = Self;
5970
5971 #[inline(always)]
5972 fn inline_align(_context: fidl::encoding::Context) -> usize {
5973 8
5974 }
5975
5976 #[inline(always)]
5977 fn inline_size(_context: fidl::encoding::Context) -> usize {
5978 16
5979 }
5980 }
5981
5982 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<SecuritySupport, D>
5983 for &SecuritySupport
5984 {
5985 unsafe fn encode(
5986 self,
5987 encoder: &mut fidl::encoding::Encoder<'_, D>,
5988 offset: usize,
5989 mut depth: fidl::encoding::Depth,
5990 ) -> fidl::Result<()> {
5991 encoder.debug_check_bounds::<SecuritySupport>(offset);
5992 let max_ordinal: u64 = self.max_ordinal_present();
5994 encoder.write_num(max_ordinal, offset);
5995 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
5996 if max_ordinal == 0 {
5998 return Ok(());
5999 }
6000 depth.increment()?;
6001 let envelope_size = 8;
6002 let bytes_len = max_ordinal as usize * envelope_size;
6003 #[allow(unused_variables)]
6004 let offset = encoder.out_of_line_offset(bytes_len);
6005 let mut _prev_end_offset: usize = 0;
6006 if 1 > max_ordinal {
6007 return Ok(());
6008 }
6009
6010 let cur_offset: usize = (1 - 1) * envelope_size;
6013
6014 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6016
6017 fidl::encoding::encode_in_envelope_optional::<SaeFeature, D>(
6022 self.sae.as_ref().map(<SaeFeature as fidl::encoding::ValueTypeMarker>::borrow),
6023 encoder,
6024 offset + cur_offset,
6025 depth,
6026 )?;
6027
6028 _prev_end_offset = cur_offset + envelope_size;
6029 if 2 > max_ordinal {
6030 return Ok(());
6031 }
6032
6033 let cur_offset: usize = (2 - 1) * envelope_size;
6036
6037 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6039
6040 fidl::encoding::encode_in_envelope_optional::<MfpFeature, D>(
6045 self.mfp.as_ref().map(<MfpFeature as fidl::encoding::ValueTypeMarker>::borrow),
6046 encoder,
6047 offset + cur_offset,
6048 depth,
6049 )?;
6050
6051 _prev_end_offset = cur_offset + envelope_size;
6052 if 3 > max_ordinal {
6053 return Ok(());
6054 }
6055
6056 let cur_offset: usize = (3 - 1) * envelope_size;
6059
6060 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6062
6063 fidl::encoding::encode_in_envelope_optional::<OweFeature, D>(
6068 self.owe.as_ref().map(<OweFeature as fidl::encoding::ValueTypeMarker>::borrow),
6069 encoder,
6070 offset + cur_offset,
6071 depth,
6072 )?;
6073
6074 _prev_end_offset = cur_offset + envelope_size;
6075
6076 Ok(())
6077 }
6078 }
6079
6080 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for SecuritySupport {
6081 #[inline(always)]
6082 fn new_empty() -> Self {
6083 Self::default()
6084 }
6085
6086 unsafe fn decode(
6087 &mut self,
6088 decoder: &mut fidl::encoding::Decoder<'_, D>,
6089 offset: usize,
6090 mut depth: fidl::encoding::Depth,
6091 ) -> fidl::Result<()> {
6092 decoder.debug_check_bounds::<Self>(offset);
6093 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6094 None => return Err(fidl::Error::NotNullable),
6095 Some(len) => len,
6096 };
6097 if len == 0 {
6099 return Ok(());
6100 };
6101 depth.increment()?;
6102 let envelope_size = 8;
6103 let bytes_len = len * envelope_size;
6104 let offset = decoder.out_of_line_offset(bytes_len)?;
6105 let mut _next_ordinal_to_read = 0;
6107 let mut next_offset = offset;
6108 let end_offset = offset + bytes_len;
6109 _next_ordinal_to_read += 1;
6110 if next_offset >= end_offset {
6111 return Ok(());
6112 }
6113
6114 while _next_ordinal_to_read < 1 {
6116 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6117 _next_ordinal_to_read += 1;
6118 next_offset += envelope_size;
6119 }
6120
6121 let next_out_of_line = decoder.next_out_of_line();
6122 let handles_before = decoder.remaining_handles();
6123 if let Some((inlined, num_bytes, num_handles)) =
6124 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6125 {
6126 let member_inline_size =
6127 <SaeFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6128 if inlined != (member_inline_size <= 4) {
6129 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6130 }
6131 let inner_offset;
6132 let mut inner_depth = depth.clone();
6133 if inlined {
6134 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6135 inner_offset = next_offset;
6136 } else {
6137 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6138 inner_depth.increment()?;
6139 }
6140 let val_ref = self.sae.get_or_insert_with(|| fidl::new_empty!(SaeFeature, D));
6141 fidl::decode!(SaeFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
6142 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6143 {
6144 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6145 }
6146 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6147 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6148 }
6149 }
6150
6151 next_offset += envelope_size;
6152 _next_ordinal_to_read += 1;
6153 if next_offset >= end_offset {
6154 return Ok(());
6155 }
6156
6157 while _next_ordinal_to_read < 2 {
6159 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6160 _next_ordinal_to_read += 1;
6161 next_offset += envelope_size;
6162 }
6163
6164 let next_out_of_line = decoder.next_out_of_line();
6165 let handles_before = decoder.remaining_handles();
6166 if let Some((inlined, num_bytes, num_handles)) =
6167 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6168 {
6169 let member_inline_size =
6170 <MfpFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6171 if inlined != (member_inline_size <= 4) {
6172 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6173 }
6174 let inner_offset;
6175 let mut inner_depth = depth.clone();
6176 if inlined {
6177 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6178 inner_offset = next_offset;
6179 } else {
6180 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6181 inner_depth.increment()?;
6182 }
6183 let val_ref = self.mfp.get_or_insert_with(|| fidl::new_empty!(MfpFeature, D));
6184 fidl::decode!(MfpFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
6185 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6186 {
6187 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6188 }
6189 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6190 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6191 }
6192 }
6193
6194 next_offset += envelope_size;
6195 _next_ordinal_to_read += 1;
6196 if next_offset >= end_offset {
6197 return Ok(());
6198 }
6199
6200 while _next_ordinal_to_read < 3 {
6202 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6203 _next_ordinal_to_read += 1;
6204 next_offset += envelope_size;
6205 }
6206
6207 let next_out_of_line = decoder.next_out_of_line();
6208 let handles_before = decoder.remaining_handles();
6209 if let Some((inlined, num_bytes, num_handles)) =
6210 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6211 {
6212 let member_inline_size =
6213 <OweFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6214 if inlined != (member_inline_size <= 4) {
6215 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6216 }
6217 let inner_offset;
6218 let mut inner_depth = depth.clone();
6219 if inlined {
6220 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6221 inner_offset = next_offset;
6222 } else {
6223 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6224 inner_depth.increment()?;
6225 }
6226 let val_ref = self.owe.get_or_insert_with(|| fidl::new_empty!(OweFeature, D));
6227 fidl::decode!(OweFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
6228 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6229 {
6230 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6231 }
6232 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6233 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6234 }
6235 }
6236
6237 next_offset += envelope_size;
6238
6239 while next_offset < end_offset {
6241 _next_ordinal_to_read += 1;
6242 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6243 next_offset += envelope_size;
6244 }
6245
6246 Ok(())
6247 }
6248 }
6249
6250 impl SpectrumManagementSupport {
6251 #[inline(always)]
6252 fn max_ordinal_present(&self) -> u64 {
6253 if let Some(_) = self.dfs {
6254 return 1;
6255 }
6256 0
6257 }
6258 }
6259
6260 impl fidl::encoding::ValueTypeMarker for SpectrumManagementSupport {
6261 type Borrowed<'a> = &'a Self;
6262 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6263 value
6264 }
6265 }
6266
6267 unsafe impl fidl::encoding::TypeMarker for SpectrumManagementSupport {
6268 type Owned = Self;
6269
6270 #[inline(always)]
6271 fn inline_align(_context: fidl::encoding::Context) -> usize {
6272 8
6273 }
6274
6275 #[inline(always)]
6276 fn inline_size(_context: fidl::encoding::Context) -> usize {
6277 16
6278 }
6279 }
6280
6281 unsafe impl<D: fidl::encoding::ResourceDialect>
6282 fidl::encoding::Encode<SpectrumManagementSupport, D> for &SpectrumManagementSupport
6283 {
6284 unsafe fn encode(
6285 self,
6286 encoder: &mut fidl::encoding::Encoder<'_, D>,
6287 offset: usize,
6288 mut depth: fidl::encoding::Depth,
6289 ) -> fidl::Result<()> {
6290 encoder.debug_check_bounds::<SpectrumManagementSupport>(offset);
6291 let max_ordinal: u64 = self.max_ordinal_present();
6293 encoder.write_num(max_ordinal, offset);
6294 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6295 if max_ordinal == 0 {
6297 return Ok(());
6298 }
6299 depth.increment()?;
6300 let envelope_size = 8;
6301 let bytes_len = max_ordinal as usize * envelope_size;
6302 #[allow(unused_variables)]
6303 let offset = encoder.out_of_line_offset(bytes_len);
6304 let mut _prev_end_offset: usize = 0;
6305 if 1 > max_ordinal {
6306 return Ok(());
6307 }
6308
6309 let cur_offset: usize = (1 - 1) * envelope_size;
6312
6313 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6315
6316 fidl::encoding::encode_in_envelope_optional::<DfsFeature, D>(
6321 self.dfs.as_ref().map(<DfsFeature as fidl::encoding::ValueTypeMarker>::borrow),
6322 encoder,
6323 offset + cur_offset,
6324 depth,
6325 )?;
6326
6327 _prev_end_offset = cur_offset + envelope_size;
6328
6329 Ok(())
6330 }
6331 }
6332
6333 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D>
6334 for SpectrumManagementSupport
6335 {
6336 #[inline(always)]
6337 fn new_empty() -> Self {
6338 Self::default()
6339 }
6340
6341 unsafe fn decode(
6342 &mut self,
6343 decoder: &mut fidl::encoding::Decoder<'_, D>,
6344 offset: usize,
6345 mut depth: fidl::encoding::Depth,
6346 ) -> fidl::Result<()> {
6347 decoder.debug_check_bounds::<Self>(offset);
6348 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6349 None => return Err(fidl::Error::NotNullable),
6350 Some(len) => len,
6351 };
6352 if len == 0 {
6354 return Ok(());
6355 };
6356 depth.increment()?;
6357 let envelope_size = 8;
6358 let bytes_len = len * envelope_size;
6359 let offset = decoder.out_of_line_offset(bytes_len)?;
6360 let mut _next_ordinal_to_read = 0;
6362 let mut next_offset = offset;
6363 let end_offset = offset + bytes_len;
6364 _next_ordinal_to_read += 1;
6365 if next_offset >= end_offset {
6366 return Ok(());
6367 }
6368
6369 while _next_ordinal_to_read < 1 {
6371 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6372 _next_ordinal_to_read += 1;
6373 next_offset += envelope_size;
6374 }
6375
6376 let next_out_of_line = decoder.next_out_of_line();
6377 let handles_before = decoder.remaining_handles();
6378 if let Some((inlined, num_bytes, num_handles)) =
6379 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6380 {
6381 let member_inline_size =
6382 <DfsFeature as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6383 if inlined != (member_inline_size <= 4) {
6384 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6385 }
6386 let inner_offset;
6387 let mut inner_depth = depth.clone();
6388 if inlined {
6389 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6390 inner_offset = next_offset;
6391 } else {
6392 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6393 inner_depth.increment()?;
6394 }
6395 let val_ref = self.dfs.get_or_insert_with(|| fidl::new_empty!(DfsFeature, D));
6396 fidl::decode!(DfsFeature, D, val_ref, decoder, inner_offset, inner_depth)?;
6397 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6398 {
6399 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6400 }
6401 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6402 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6403 }
6404 }
6405
6406 next_offset += envelope_size;
6407
6408 while next_offset < end_offset {
6410 _next_ordinal_to_read += 1;
6411 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6412 next_offset += envelope_size;
6413 }
6414
6415 Ok(())
6416 }
6417 }
6418
6419 impl WlanKeyConfig {
6420 #[inline(always)]
6421 fn max_ordinal_present(&self) -> u64 {
6422 if let Some(_) = self.rsc {
6423 return 8;
6424 }
6425 if let Some(_) = self.key {
6426 return 7;
6427 }
6428 if let Some(_) = self.key_idx {
6429 return 6;
6430 }
6431 if let Some(_) = self.peer_addr {
6432 return 5;
6433 }
6434 if let Some(_) = self.key_type {
6435 return 4;
6436 }
6437 if let Some(_) = self.cipher_type {
6438 return 3;
6439 }
6440 if let Some(_) = self.cipher_oui {
6441 return 2;
6442 }
6443 if let Some(_) = self.protection {
6444 return 1;
6445 }
6446 0
6447 }
6448 }
6449
6450 impl fidl::encoding::ValueTypeMarker for WlanKeyConfig {
6451 type Borrowed<'a> = &'a Self;
6452 fn borrow(value: &<Self as fidl::encoding::TypeMarker>::Owned) -> Self::Borrowed<'_> {
6453 value
6454 }
6455 }
6456
6457 unsafe impl fidl::encoding::TypeMarker for WlanKeyConfig {
6458 type Owned = Self;
6459
6460 #[inline(always)]
6461 fn inline_align(_context: fidl::encoding::Context) -> usize {
6462 8
6463 }
6464
6465 #[inline(always)]
6466 fn inline_size(_context: fidl::encoding::Context) -> usize {
6467 16
6468 }
6469 }
6470
6471 unsafe impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Encode<WlanKeyConfig, D>
6472 for &WlanKeyConfig
6473 {
6474 unsafe fn encode(
6475 self,
6476 encoder: &mut fidl::encoding::Encoder<'_, D>,
6477 offset: usize,
6478 mut depth: fidl::encoding::Depth,
6479 ) -> fidl::Result<()> {
6480 encoder.debug_check_bounds::<WlanKeyConfig>(offset);
6481 let max_ordinal: u64 = self.max_ordinal_present();
6483 encoder.write_num(max_ordinal, offset);
6484 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
6485 if max_ordinal == 0 {
6487 return Ok(());
6488 }
6489 depth.increment()?;
6490 let envelope_size = 8;
6491 let bytes_len = max_ordinal as usize * envelope_size;
6492 #[allow(unused_variables)]
6493 let offset = encoder.out_of_line_offset(bytes_len);
6494 let mut _prev_end_offset: usize = 0;
6495 if 1 > max_ordinal {
6496 return Ok(());
6497 }
6498
6499 let cur_offset: usize = (1 - 1) * envelope_size;
6502
6503 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6505
6506 fidl::encoding::encode_in_envelope_optional::<WlanProtection, D>(
6511 self.protection
6512 .as_ref()
6513 .map(<WlanProtection as fidl::encoding::ValueTypeMarker>::borrow),
6514 encoder,
6515 offset + cur_offset,
6516 depth,
6517 )?;
6518
6519 _prev_end_offset = cur_offset + envelope_size;
6520 if 2 > max_ordinal {
6521 return Ok(());
6522 }
6523
6524 let cur_offset: usize = (2 - 1) * envelope_size;
6527
6528 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6530
6531 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 3>, D>(
6536 self.cipher_oui
6537 .as_ref()
6538 .map(<fidl::encoding::Array<u8, 3> as fidl::encoding::ValueTypeMarker>::borrow),
6539 encoder,
6540 offset + cur_offset,
6541 depth,
6542 )?;
6543
6544 _prev_end_offset = cur_offset + envelope_size;
6545 if 3 > max_ordinal {
6546 return Ok(());
6547 }
6548
6549 let cur_offset: usize = (3 - 1) * envelope_size;
6552
6553 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6555
6556 fidl::encoding::encode_in_envelope_optional::<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D>(
6561 self.cipher_type.as_ref().map(<fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::ValueTypeMarker>::borrow),
6562 encoder, offset + cur_offset, depth
6563 )?;
6564
6565 _prev_end_offset = cur_offset + envelope_size;
6566 if 4 > max_ordinal {
6567 return Ok(());
6568 }
6569
6570 let cur_offset: usize = (4 - 1) * envelope_size;
6573
6574 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6576
6577 fidl::encoding::encode_in_envelope_optional::<WlanKeyType, D>(
6582 self.key_type
6583 .as_ref()
6584 .map(<WlanKeyType as fidl::encoding::ValueTypeMarker>::borrow),
6585 encoder,
6586 offset + cur_offset,
6587 depth,
6588 )?;
6589
6590 _prev_end_offset = cur_offset + envelope_size;
6591 if 5 > max_ordinal {
6592 return Ok(());
6593 }
6594
6595 let cur_offset: usize = (5 - 1) * envelope_size;
6598
6599 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6601
6602 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Array<u8, 6>, D>(
6607 self.peer_addr
6608 .as_ref()
6609 .map(<fidl::encoding::Array<u8, 6> as fidl::encoding::ValueTypeMarker>::borrow),
6610 encoder,
6611 offset + cur_offset,
6612 depth,
6613 )?;
6614
6615 _prev_end_offset = cur_offset + envelope_size;
6616 if 6 > max_ordinal {
6617 return Ok(());
6618 }
6619
6620 let cur_offset: usize = (6 - 1) * envelope_size;
6623
6624 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6626
6627 fidl::encoding::encode_in_envelope_optional::<u8, D>(
6632 self.key_idx.as_ref().map(<u8 as fidl::encoding::ValueTypeMarker>::borrow),
6633 encoder,
6634 offset + cur_offset,
6635 depth,
6636 )?;
6637
6638 _prev_end_offset = cur_offset + envelope_size;
6639 if 7 > max_ordinal {
6640 return Ok(());
6641 }
6642
6643 let cur_offset: usize = (7 - 1) * envelope_size;
6646
6647 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6649
6650 fidl::encoding::encode_in_envelope_optional::<fidl::encoding::Vector<u8, 32>, D>(
6655 self.key.as_ref().map(
6656 <fidl::encoding::Vector<u8, 32> as fidl::encoding::ValueTypeMarker>::borrow,
6657 ),
6658 encoder,
6659 offset + cur_offset,
6660 depth,
6661 )?;
6662
6663 _prev_end_offset = cur_offset + envelope_size;
6664 if 8 > max_ordinal {
6665 return Ok(());
6666 }
6667
6668 let cur_offset: usize = (8 - 1) * envelope_size;
6671
6672 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
6674
6675 fidl::encoding::encode_in_envelope_optional::<u64, D>(
6680 self.rsc.as_ref().map(<u64 as fidl::encoding::ValueTypeMarker>::borrow),
6681 encoder,
6682 offset + cur_offset,
6683 depth,
6684 )?;
6685
6686 _prev_end_offset = cur_offset + envelope_size;
6687
6688 Ok(())
6689 }
6690 }
6691
6692 impl<D: fidl::encoding::ResourceDialect> fidl::encoding::Decode<Self, D> for WlanKeyConfig {
6693 #[inline(always)]
6694 fn new_empty() -> Self {
6695 Self::default()
6696 }
6697
6698 unsafe fn decode(
6699 &mut self,
6700 decoder: &mut fidl::encoding::Decoder<'_, D>,
6701 offset: usize,
6702 mut depth: fidl::encoding::Depth,
6703 ) -> fidl::Result<()> {
6704 decoder.debug_check_bounds::<Self>(offset);
6705 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
6706 None => return Err(fidl::Error::NotNullable),
6707 Some(len) => len,
6708 };
6709 if len == 0 {
6711 return Ok(());
6712 };
6713 depth.increment()?;
6714 let envelope_size = 8;
6715 let bytes_len = len * envelope_size;
6716 let offset = decoder.out_of_line_offset(bytes_len)?;
6717 let mut _next_ordinal_to_read = 0;
6719 let mut next_offset = offset;
6720 let end_offset = offset + bytes_len;
6721 _next_ordinal_to_read += 1;
6722 if next_offset >= end_offset {
6723 return Ok(());
6724 }
6725
6726 while _next_ordinal_to_read < 1 {
6728 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6729 _next_ordinal_to_read += 1;
6730 next_offset += envelope_size;
6731 }
6732
6733 let next_out_of_line = decoder.next_out_of_line();
6734 let handles_before = decoder.remaining_handles();
6735 if let Some((inlined, num_bytes, num_handles)) =
6736 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6737 {
6738 let member_inline_size =
6739 <WlanProtection as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6740 if inlined != (member_inline_size <= 4) {
6741 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6742 }
6743 let inner_offset;
6744 let mut inner_depth = depth.clone();
6745 if inlined {
6746 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6747 inner_offset = next_offset;
6748 } else {
6749 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6750 inner_depth.increment()?;
6751 }
6752 let val_ref =
6753 self.protection.get_or_insert_with(|| fidl::new_empty!(WlanProtection, D));
6754 fidl::decode!(WlanProtection, D, val_ref, decoder, inner_offset, inner_depth)?;
6755 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6756 {
6757 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6758 }
6759 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6760 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6761 }
6762 }
6763
6764 next_offset += envelope_size;
6765 _next_ordinal_to_read += 1;
6766 if next_offset >= end_offset {
6767 return Ok(());
6768 }
6769
6770 while _next_ordinal_to_read < 2 {
6772 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6773 _next_ordinal_to_read += 1;
6774 next_offset += envelope_size;
6775 }
6776
6777 let next_out_of_line = decoder.next_out_of_line();
6778 let handles_before = decoder.remaining_handles();
6779 if let Some((inlined, num_bytes, num_handles)) =
6780 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6781 {
6782 let member_inline_size =
6783 <fidl::encoding::Array<u8, 3> as fidl::encoding::TypeMarker>::inline_size(
6784 decoder.context,
6785 );
6786 if inlined != (member_inline_size <= 4) {
6787 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6788 }
6789 let inner_offset;
6790 let mut inner_depth = depth.clone();
6791 if inlined {
6792 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6793 inner_offset = next_offset;
6794 } else {
6795 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6796 inner_depth.increment()?;
6797 }
6798 let val_ref = self
6799 .cipher_oui
6800 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 3>, D));
6801 fidl::decode!(fidl::encoding::Array<u8, 3>, D, val_ref, decoder, inner_offset, inner_depth)?;
6802 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6803 {
6804 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6805 }
6806 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6807 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6808 }
6809 }
6810
6811 next_offset += envelope_size;
6812 _next_ordinal_to_read += 1;
6813 if next_offset >= end_offset {
6814 return Ok(());
6815 }
6816
6817 while _next_ordinal_to_read < 3 {
6819 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6820 _next_ordinal_to_read += 1;
6821 next_offset += envelope_size;
6822 }
6823
6824 let next_out_of_line = decoder.next_out_of_line();
6825 let handles_before = decoder.remaining_handles();
6826 if let Some((inlined, num_bytes, num_handles)) =
6827 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6828 {
6829 let member_inline_size = <fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6830 if inlined != (member_inline_size <= 4) {
6831 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6832 }
6833 let inner_offset;
6834 let mut inner_depth = depth.clone();
6835 if inlined {
6836 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6837 inner_offset = next_offset;
6838 } else {
6839 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6840 inner_depth.increment()?;
6841 }
6842 let val_ref = self.cipher_type.get_or_insert_with(|| {
6843 fidl::new_empty!(fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType, D)
6844 });
6845 fidl::decode!(
6846 fidl_fuchsia_wlan_ieee80211__common::CipherSuiteType,
6847 D,
6848 val_ref,
6849 decoder,
6850 inner_offset,
6851 inner_depth
6852 )?;
6853 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6854 {
6855 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6856 }
6857 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6858 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6859 }
6860 }
6861
6862 next_offset += envelope_size;
6863 _next_ordinal_to_read += 1;
6864 if next_offset >= end_offset {
6865 return Ok(());
6866 }
6867
6868 while _next_ordinal_to_read < 4 {
6870 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6871 _next_ordinal_to_read += 1;
6872 next_offset += envelope_size;
6873 }
6874
6875 let next_out_of_line = decoder.next_out_of_line();
6876 let handles_before = decoder.remaining_handles();
6877 if let Some((inlined, num_bytes, num_handles)) =
6878 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6879 {
6880 let member_inline_size =
6881 <WlanKeyType as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6882 if inlined != (member_inline_size <= 4) {
6883 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6884 }
6885 let inner_offset;
6886 let mut inner_depth = depth.clone();
6887 if inlined {
6888 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6889 inner_offset = next_offset;
6890 } else {
6891 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6892 inner_depth.increment()?;
6893 }
6894 let val_ref = self.key_type.get_or_insert_with(|| fidl::new_empty!(WlanKeyType, D));
6895 fidl::decode!(WlanKeyType, D, val_ref, decoder, inner_offset, inner_depth)?;
6896 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6897 {
6898 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6899 }
6900 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6901 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6902 }
6903 }
6904
6905 next_offset += envelope_size;
6906 _next_ordinal_to_read += 1;
6907 if next_offset >= end_offset {
6908 return Ok(());
6909 }
6910
6911 while _next_ordinal_to_read < 5 {
6913 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6914 _next_ordinal_to_read += 1;
6915 next_offset += envelope_size;
6916 }
6917
6918 let next_out_of_line = decoder.next_out_of_line();
6919 let handles_before = decoder.remaining_handles();
6920 if let Some((inlined, num_bytes, num_handles)) =
6921 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6922 {
6923 let member_inline_size =
6924 <fidl::encoding::Array<u8, 6> as fidl::encoding::TypeMarker>::inline_size(
6925 decoder.context,
6926 );
6927 if inlined != (member_inline_size <= 4) {
6928 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6929 }
6930 let inner_offset;
6931 let mut inner_depth = depth.clone();
6932 if inlined {
6933 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6934 inner_offset = next_offset;
6935 } else {
6936 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6937 inner_depth.increment()?;
6938 }
6939 let val_ref = self
6940 .peer_addr
6941 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Array<u8, 6>, D));
6942 fidl::decode!(fidl::encoding::Array<u8, 6>, D, val_ref, decoder, inner_offset, inner_depth)?;
6943 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6944 {
6945 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6946 }
6947 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6948 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6949 }
6950 }
6951
6952 next_offset += envelope_size;
6953 _next_ordinal_to_read += 1;
6954 if next_offset >= end_offset {
6955 return Ok(());
6956 }
6957
6958 while _next_ordinal_to_read < 6 {
6960 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
6961 _next_ordinal_to_read += 1;
6962 next_offset += envelope_size;
6963 }
6964
6965 let next_out_of_line = decoder.next_out_of_line();
6966 let handles_before = decoder.remaining_handles();
6967 if let Some((inlined, num_bytes, num_handles)) =
6968 fidl::encoding::decode_envelope_header(decoder, next_offset)?
6969 {
6970 let member_inline_size =
6971 <u8 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
6972 if inlined != (member_inline_size <= 4) {
6973 return Err(fidl::Error::InvalidInlineBitInEnvelope);
6974 }
6975 let inner_offset;
6976 let mut inner_depth = depth.clone();
6977 if inlined {
6978 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
6979 inner_offset = next_offset;
6980 } else {
6981 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
6982 inner_depth.increment()?;
6983 }
6984 let val_ref = self.key_idx.get_or_insert_with(|| fidl::new_empty!(u8, D));
6985 fidl::decode!(u8, D, val_ref, decoder, inner_offset, inner_depth)?;
6986 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
6987 {
6988 return Err(fidl::Error::InvalidNumBytesInEnvelope);
6989 }
6990 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
6991 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
6992 }
6993 }
6994
6995 next_offset += envelope_size;
6996 _next_ordinal_to_read += 1;
6997 if next_offset >= end_offset {
6998 return Ok(());
6999 }
7000
7001 while _next_ordinal_to_read < 7 {
7003 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7004 _next_ordinal_to_read += 1;
7005 next_offset += envelope_size;
7006 }
7007
7008 let next_out_of_line = decoder.next_out_of_line();
7009 let handles_before = decoder.remaining_handles();
7010 if let Some((inlined, num_bytes, num_handles)) =
7011 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7012 {
7013 let member_inline_size =
7014 <fidl::encoding::Vector<u8, 32> as fidl::encoding::TypeMarker>::inline_size(
7015 decoder.context,
7016 );
7017 if inlined != (member_inline_size <= 4) {
7018 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7019 }
7020 let inner_offset;
7021 let mut inner_depth = depth.clone();
7022 if inlined {
7023 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7024 inner_offset = next_offset;
7025 } else {
7026 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7027 inner_depth.increment()?;
7028 }
7029 let val_ref = self
7030 .key
7031 .get_or_insert_with(|| fidl::new_empty!(fidl::encoding::Vector<u8, 32>, D));
7032 fidl::decode!(fidl::encoding::Vector<u8, 32>, D, val_ref, decoder, inner_offset, inner_depth)?;
7033 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7034 {
7035 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7036 }
7037 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7038 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7039 }
7040 }
7041
7042 next_offset += envelope_size;
7043 _next_ordinal_to_read += 1;
7044 if next_offset >= end_offset {
7045 return Ok(());
7046 }
7047
7048 while _next_ordinal_to_read < 8 {
7050 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7051 _next_ordinal_to_read += 1;
7052 next_offset += envelope_size;
7053 }
7054
7055 let next_out_of_line = decoder.next_out_of_line();
7056 let handles_before = decoder.remaining_handles();
7057 if let Some((inlined, num_bytes, num_handles)) =
7058 fidl::encoding::decode_envelope_header(decoder, next_offset)?
7059 {
7060 let member_inline_size =
7061 <u64 as fidl::encoding::TypeMarker>::inline_size(decoder.context);
7062 if inlined != (member_inline_size <= 4) {
7063 return Err(fidl::Error::InvalidInlineBitInEnvelope);
7064 }
7065 let inner_offset;
7066 let mut inner_depth = depth.clone();
7067 if inlined {
7068 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
7069 inner_offset = next_offset;
7070 } else {
7071 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
7072 inner_depth.increment()?;
7073 }
7074 let val_ref = self.rsc.get_or_insert_with(|| fidl::new_empty!(u64, D));
7075 fidl::decode!(u64, D, val_ref, decoder, inner_offset, inner_depth)?;
7076 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
7077 {
7078 return Err(fidl::Error::InvalidNumBytesInEnvelope);
7079 }
7080 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
7081 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
7082 }
7083 }
7084
7085 next_offset += envelope_size;
7086
7087 while next_offset < end_offset {
7089 _next_ordinal_to_read += 1;
7090 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
7091 next_offset += envelope_size;
7092 }
7093
7094 Ok(())
7095 }
7096 }
7097}