1#![warn(clippy::all)]
4#![allow(unused_parens, unused_mut, unused_imports, nonstandard_style)]
5
6use bitflags::bitflags;
7use fidl::client::QueryResponseFut;
8use fidl::encoding::{MessageBufFor, ProxyChannelBox, ResourceDialect};
9use fidl::endpoints::{ControlHandle as _, Responder as _};
10pub use fidl_fuchsia_lowpan_driver__common::*;
11use futures::future::{self, MaybeDone, TryFutureExt};
12use zx_status;
13
14#[derive(Debug, PartialEq)]
15pub struct DriverGetProtocolsRequest {
16 pub protocols: Protocols,
17}
18
19impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for DriverGetProtocolsRequest {}
20
21#[derive(Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
22pub struct RegisterRegisterDeviceRequest {
23 pub name: String,
24 pub driver: fidl::endpoints::ClientEnd<DriverMarker>,
25}
26
27impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect>
28 for RegisterRegisterDeviceRequest
29{
30}
31
32#[derive(Debug, Default, PartialEq)]
34pub struct Protocols {
35 pub device: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>>,
36 pub device_extra:
37 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>>,
38 pub device_test: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>>,
39 pub device_route:
40 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>>,
41 pub device_route_extra: Option<
42 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker>,
43 >,
44 pub counters: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>>,
45 pub thread_legacy_joining:
46 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker>>,
47 pub thread_dataset:
48 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>>,
49 pub energy_scan:
50 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>>,
51 pub experimental_device:
52 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>>,
53 pub experimental_device_extra:
54 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>>,
55 pub meshcop: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>>,
56 pub telemetry_provider: Option<
57 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker>,
58 >,
59 pub thread_feature:
60 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>>,
61 pub capabilities:
62 Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker>>,
63 pub epskc: Option<fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>>,
64 #[doc(hidden)]
65 pub __source_breaking: fidl::marker::SourceBreaking,
66}
67
68impl fidl::Standalone<fidl::encoding::DefaultFuchsiaResourceDialect> for Protocols {}
69
70#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
71pub struct DriverMarker;
72
73impl fidl::endpoints::ProtocolMarker for DriverMarker {
74 type Proxy = DriverProxy;
75 type RequestStream = DriverRequestStream;
76 #[cfg(target_os = "fuchsia")]
77 type SynchronousProxy = DriverSynchronousProxy;
78
79 const DEBUG_NAME: &'static str = "(anonymous) Driver";
80}
81
82pub trait DriverProxyInterface: Send + Sync {
83 fn r#get_protocols(&self, protocols: Protocols) -> Result<(), fidl::Error>;
84}
85#[derive(Debug)]
86#[cfg(target_os = "fuchsia")]
87pub struct DriverSynchronousProxy {
88 client: fidl::client::sync::Client,
89}
90
91#[cfg(target_os = "fuchsia")]
92impl fidl::endpoints::SynchronousProxy for DriverSynchronousProxy {
93 type Proxy = DriverProxy;
94 type Protocol = DriverMarker;
95
96 fn from_channel(inner: fidl::Channel) -> Self {
97 Self::new(inner)
98 }
99
100 fn into_channel(self) -> fidl::Channel {
101 self.client.into_channel()
102 }
103
104 fn as_channel(&self) -> &fidl::Channel {
105 self.client.as_channel()
106 }
107}
108
109#[cfg(target_os = "fuchsia")]
110impl DriverSynchronousProxy {
111 pub fn new(channel: fidl::Channel) -> Self {
112 let protocol_name = <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
113 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
114 }
115
116 pub fn into_channel(self) -> fidl::Channel {
117 self.client.into_channel()
118 }
119
120 pub fn wait_for_event(
123 &self,
124 deadline: zx::MonotonicInstant,
125 ) -> Result<DriverEvent, fidl::Error> {
126 DriverEvent::decode(self.client.wait_for_event(deadline)?)
127 }
128
129 pub fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
132 self.client.send::<DriverGetProtocolsRequest>(
133 (&mut protocols,),
134 0x165f5b09fcc7bc85,
135 fidl::encoding::DynamicFlags::empty(),
136 )
137 }
138}
139
140#[cfg(target_os = "fuchsia")]
141impl From<DriverSynchronousProxy> for zx::NullableHandle {
142 fn from(value: DriverSynchronousProxy) -> Self {
143 value.into_channel().into()
144 }
145}
146
147#[cfg(target_os = "fuchsia")]
148impl From<fidl::Channel> for DriverSynchronousProxy {
149 fn from(value: fidl::Channel) -> Self {
150 Self::new(value)
151 }
152}
153
154#[cfg(target_os = "fuchsia")]
155impl fidl::endpoints::FromClient for DriverSynchronousProxy {
156 type Protocol = DriverMarker;
157
158 fn from_client(value: fidl::endpoints::ClientEnd<DriverMarker>) -> Self {
159 Self::new(value.into_channel())
160 }
161}
162
163#[derive(Debug, Clone)]
164pub struct DriverProxy {
165 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
166}
167
168impl fidl::endpoints::Proxy for DriverProxy {
169 type Protocol = DriverMarker;
170
171 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
172 Self::new(inner)
173 }
174
175 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
176 self.client.into_channel().map_err(|client| Self { client })
177 }
178
179 fn as_channel(&self) -> &::fidl::AsyncChannel {
180 self.client.as_channel()
181 }
182}
183
184impl DriverProxy {
185 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
187 let protocol_name = <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
188 Self { client: fidl::client::Client::new(channel, protocol_name) }
189 }
190
191 pub fn take_event_stream(&self) -> DriverEventStream {
197 DriverEventStream { event_receiver: self.client.take_event_receiver() }
198 }
199
200 pub fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
203 DriverProxyInterface::r#get_protocols(self, protocols)
204 }
205}
206
207impl DriverProxyInterface for DriverProxy {
208 fn r#get_protocols(&self, mut protocols: Protocols) -> Result<(), fidl::Error> {
209 self.client.send::<DriverGetProtocolsRequest>(
210 (&mut protocols,),
211 0x165f5b09fcc7bc85,
212 fidl::encoding::DynamicFlags::empty(),
213 )
214 }
215}
216
217pub struct DriverEventStream {
218 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
219}
220
221impl std::marker::Unpin for DriverEventStream {}
222
223impl futures::stream::FusedStream for DriverEventStream {
224 fn is_terminated(&self) -> bool {
225 self.event_receiver.is_terminated()
226 }
227}
228
229impl futures::Stream for DriverEventStream {
230 type Item = Result<DriverEvent, fidl::Error>;
231
232 fn poll_next(
233 mut self: std::pin::Pin<&mut Self>,
234 cx: &mut std::task::Context<'_>,
235 ) -> std::task::Poll<Option<Self::Item>> {
236 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
237 &mut self.event_receiver,
238 cx
239 )?) {
240 Some(buf) => std::task::Poll::Ready(Some(DriverEvent::decode(buf))),
241 None => std::task::Poll::Ready(None),
242 }
243 }
244}
245
246#[derive(Debug)]
247pub enum DriverEvent {}
248
249impl DriverEvent {
250 fn decode(
252 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
253 ) -> Result<DriverEvent, fidl::Error> {
254 let (bytes, _handles) = buf.split_mut();
255 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
256 debug_assert_eq!(tx_header.tx_id, 0);
257 match tx_header.ordinal {
258 _ => Err(fidl::Error::UnknownOrdinal {
259 ordinal: tx_header.ordinal,
260 protocol_name: <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
261 }),
262 }
263 }
264}
265
266pub struct DriverRequestStream {
268 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
269 is_terminated: bool,
270}
271
272impl std::marker::Unpin for DriverRequestStream {}
273
274impl futures::stream::FusedStream for DriverRequestStream {
275 fn is_terminated(&self) -> bool {
276 self.is_terminated
277 }
278}
279
280impl fidl::endpoints::RequestStream for DriverRequestStream {
281 type Protocol = DriverMarker;
282 type ControlHandle = DriverControlHandle;
283
284 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
285 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
286 }
287
288 fn control_handle(&self) -> Self::ControlHandle {
289 DriverControlHandle { inner: self.inner.clone() }
290 }
291
292 fn into_inner(
293 self,
294 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
295 {
296 (self.inner, self.is_terminated)
297 }
298
299 fn from_inner(
300 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
301 is_terminated: bool,
302 ) -> Self {
303 Self { inner, is_terminated }
304 }
305}
306
307impl futures::Stream for DriverRequestStream {
308 type Item = Result<DriverRequest, fidl::Error>;
309
310 fn poll_next(
311 mut self: std::pin::Pin<&mut Self>,
312 cx: &mut std::task::Context<'_>,
313 ) -> std::task::Poll<Option<Self::Item>> {
314 let this = &mut *self;
315 if this.inner.check_shutdown(cx) {
316 this.is_terminated = true;
317 return std::task::Poll::Ready(None);
318 }
319 if this.is_terminated {
320 panic!("polled DriverRequestStream after completion");
321 }
322 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
323 |bytes, handles| {
324 match this.inner.channel().read_etc(cx, bytes, handles) {
325 std::task::Poll::Ready(Ok(())) => {}
326 std::task::Poll::Pending => return std::task::Poll::Pending,
327 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
328 this.is_terminated = true;
329 return std::task::Poll::Ready(None);
330 }
331 std::task::Poll::Ready(Err(e)) => {
332 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
333 e.into(),
334 ))));
335 }
336 }
337
338 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
340
341 std::task::Poll::Ready(Some(match header.ordinal {
342 0x165f5b09fcc7bc85 => {
343 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
344 let mut req = fidl::new_empty!(
345 DriverGetProtocolsRequest,
346 fidl::encoding::DefaultFuchsiaResourceDialect
347 );
348 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<DriverGetProtocolsRequest>(&header, _body_bytes, handles, &mut req)?;
349 let control_handle = DriverControlHandle { inner: this.inner.clone() };
350 Ok(DriverRequest::GetProtocols { protocols: req.protocols, control_handle })
351 }
352 _ => Err(fidl::Error::UnknownOrdinal {
353 ordinal: header.ordinal,
354 protocol_name:
355 <DriverMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
356 }),
357 }))
358 },
359 )
360 }
361}
362
363#[derive(Debug)]
365pub enum DriverRequest {
366 GetProtocols { protocols: Protocols, control_handle: DriverControlHandle },
369}
370
371impl DriverRequest {
372 #[allow(irrefutable_let_patterns)]
373 pub fn into_get_protocols(self) -> Option<(Protocols, DriverControlHandle)> {
374 if let DriverRequest::GetProtocols { protocols, control_handle } = self {
375 Some((protocols, control_handle))
376 } else {
377 None
378 }
379 }
380
381 pub fn method_name(&self) -> &'static str {
383 match *self {
384 DriverRequest::GetProtocols { .. } => "get_protocols",
385 }
386 }
387}
388
389#[derive(Debug, Clone)]
390pub struct DriverControlHandle {
391 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
392}
393
394impl fidl::endpoints::ControlHandle for DriverControlHandle {
395 fn shutdown(&self) {
396 self.inner.shutdown()
397 }
398
399 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
400 self.inner.shutdown_with_epitaph(status)
401 }
402
403 fn is_closed(&self) -> bool {
404 self.inner.channel().is_closed()
405 }
406 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
407 self.inner.channel().on_closed()
408 }
409
410 #[cfg(target_os = "fuchsia")]
411 fn signal_peer(
412 &self,
413 clear_mask: zx::Signals,
414 set_mask: zx::Signals,
415 ) -> Result<(), zx_status::Status> {
416 use fidl::Peered;
417 self.inner.channel().signal_peer(clear_mask, set_mask)
418 }
419}
420
421impl DriverControlHandle {}
422
423#[derive(Debug, Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
424pub struct RegisterMarker;
425
426impl fidl::endpoints::ProtocolMarker for RegisterMarker {
427 type Proxy = RegisterProxy;
428 type RequestStream = RegisterRequestStream;
429 #[cfg(target_os = "fuchsia")]
430 type SynchronousProxy = RegisterSynchronousProxy;
431
432 const DEBUG_NAME: &'static str = "fuchsia.lowpan.driver.Register";
433}
434impl fidl::endpoints::DiscoverableProtocolMarker for RegisterMarker {}
435
436pub trait RegisterProxyInterface: Send + Sync {
437 fn r#register_device(
438 &self,
439 name: &str,
440 driver: fidl::endpoints::ClientEnd<DriverMarker>,
441 ) -> Result<(), fidl::Error>;
442}
443#[derive(Debug)]
444#[cfg(target_os = "fuchsia")]
445pub struct RegisterSynchronousProxy {
446 client: fidl::client::sync::Client,
447}
448
449#[cfg(target_os = "fuchsia")]
450impl fidl::endpoints::SynchronousProxy for RegisterSynchronousProxy {
451 type Proxy = RegisterProxy;
452 type Protocol = RegisterMarker;
453
454 fn from_channel(inner: fidl::Channel) -> Self {
455 Self::new(inner)
456 }
457
458 fn into_channel(self) -> fidl::Channel {
459 self.client.into_channel()
460 }
461
462 fn as_channel(&self) -> &fidl::Channel {
463 self.client.as_channel()
464 }
465}
466
467#[cfg(target_os = "fuchsia")]
468impl RegisterSynchronousProxy {
469 pub fn new(channel: fidl::Channel) -> Self {
470 let protocol_name = <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
471 Self { client: fidl::client::sync::Client::new(channel, protocol_name) }
472 }
473
474 pub fn into_channel(self) -> fidl::Channel {
475 self.client.into_channel()
476 }
477
478 pub fn wait_for_event(
481 &self,
482 deadline: zx::MonotonicInstant,
483 ) -> Result<RegisterEvent, fidl::Error> {
484 RegisterEvent::decode(self.client.wait_for_event(deadline)?)
485 }
486
487 pub fn r#register_device(
490 &self,
491 mut name: &str,
492 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
493 ) -> Result<(), fidl::Error> {
494 self.client.send::<RegisterRegisterDeviceRequest>(
495 (name, driver),
496 0x19280d20cfdd62e6,
497 fidl::encoding::DynamicFlags::empty(),
498 )
499 }
500}
501
502#[cfg(target_os = "fuchsia")]
503impl From<RegisterSynchronousProxy> for zx::NullableHandle {
504 fn from(value: RegisterSynchronousProxy) -> Self {
505 value.into_channel().into()
506 }
507}
508
509#[cfg(target_os = "fuchsia")]
510impl From<fidl::Channel> for RegisterSynchronousProxy {
511 fn from(value: fidl::Channel) -> Self {
512 Self::new(value)
513 }
514}
515
516#[cfg(target_os = "fuchsia")]
517impl fidl::endpoints::FromClient for RegisterSynchronousProxy {
518 type Protocol = RegisterMarker;
519
520 fn from_client(value: fidl::endpoints::ClientEnd<RegisterMarker>) -> Self {
521 Self::new(value.into_channel())
522 }
523}
524
525#[derive(Debug, Clone)]
526pub struct RegisterProxy {
527 client: fidl::client::Client<fidl::encoding::DefaultFuchsiaResourceDialect>,
528}
529
530impl fidl::endpoints::Proxy for RegisterProxy {
531 type Protocol = RegisterMarker;
532
533 fn from_channel(inner: ::fidl::AsyncChannel) -> Self {
534 Self::new(inner)
535 }
536
537 fn into_channel(self) -> Result<::fidl::AsyncChannel, Self> {
538 self.client.into_channel().map_err(|client| Self { client })
539 }
540
541 fn as_channel(&self) -> &::fidl::AsyncChannel {
542 self.client.as_channel()
543 }
544}
545
546impl RegisterProxy {
547 pub fn new(channel: ::fidl::AsyncChannel) -> Self {
549 let protocol_name = <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME;
550 Self { client: fidl::client::Client::new(channel, protocol_name) }
551 }
552
553 pub fn take_event_stream(&self) -> RegisterEventStream {
559 RegisterEventStream { event_receiver: self.client.take_event_receiver() }
560 }
561
562 pub fn r#register_device(
565 &self,
566 mut name: &str,
567 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
568 ) -> Result<(), fidl::Error> {
569 RegisterProxyInterface::r#register_device(self, name, driver)
570 }
571}
572
573impl RegisterProxyInterface for RegisterProxy {
574 fn r#register_device(
575 &self,
576 mut name: &str,
577 mut driver: fidl::endpoints::ClientEnd<DriverMarker>,
578 ) -> Result<(), fidl::Error> {
579 self.client.send::<RegisterRegisterDeviceRequest>(
580 (name, driver),
581 0x19280d20cfdd62e6,
582 fidl::encoding::DynamicFlags::empty(),
583 )
584 }
585}
586
587pub struct RegisterEventStream {
588 event_receiver: fidl::client::EventReceiver<fidl::encoding::DefaultFuchsiaResourceDialect>,
589}
590
591impl std::marker::Unpin for RegisterEventStream {}
592
593impl futures::stream::FusedStream for RegisterEventStream {
594 fn is_terminated(&self) -> bool {
595 self.event_receiver.is_terminated()
596 }
597}
598
599impl futures::Stream for RegisterEventStream {
600 type Item = Result<RegisterEvent, fidl::Error>;
601
602 fn poll_next(
603 mut self: std::pin::Pin<&mut Self>,
604 cx: &mut std::task::Context<'_>,
605 ) -> std::task::Poll<Option<Self::Item>> {
606 match futures::ready!(futures::stream::StreamExt::poll_next_unpin(
607 &mut self.event_receiver,
608 cx
609 )?) {
610 Some(buf) => std::task::Poll::Ready(Some(RegisterEvent::decode(buf))),
611 None => std::task::Poll::Ready(None),
612 }
613 }
614}
615
616#[derive(Debug)]
617pub enum RegisterEvent {}
618
619impl RegisterEvent {
620 fn decode(
622 mut buf: <fidl::encoding::DefaultFuchsiaResourceDialect as fidl::encoding::ResourceDialect>::MessageBufEtc,
623 ) -> Result<RegisterEvent, fidl::Error> {
624 let (bytes, _handles) = buf.split_mut();
625 let (tx_header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
626 debug_assert_eq!(tx_header.tx_id, 0);
627 match tx_header.ordinal {
628 _ => Err(fidl::Error::UnknownOrdinal {
629 ordinal: tx_header.ordinal,
630 protocol_name: <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
631 }),
632 }
633 }
634}
635
636pub struct RegisterRequestStream {
638 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
639 is_terminated: bool,
640}
641
642impl std::marker::Unpin for RegisterRequestStream {}
643
644impl futures::stream::FusedStream for RegisterRequestStream {
645 fn is_terminated(&self) -> bool {
646 self.is_terminated
647 }
648}
649
650impl fidl::endpoints::RequestStream for RegisterRequestStream {
651 type Protocol = RegisterMarker;
652 type ControlHandle = RegisterControlHandle;
653
654 fn from_channel(channel: ::fidl::AsyncChannel) -> Self {
655 Self { inner: std::sync::Arc::new(fidl::ServeInner::new(channel)), is_terminated: false }
656 }
657
658 fn control_handle(&self) -> Self::ControlHandle {
659 RegisterControlHandle { inner: self.inner.clone() }
660 }
661
662 fn into_inner(
663 self,
664 ) -> (::std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>, bool)
665 {
666 (self.inner, self.is_terminated)
667 }
668
669 fn from_inner(
670 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
671 is_terminated: bool,
672 ) -> Self {
673 Self { inner, is_terminated }
674 }
675}
676
677impl futures::Stream for RegisterRequestStream {
678 type Item = Result<RegisterRequest, fidl::Error>;
679
680 fn poll_next(
681 mut self: std::pin::Pin<&mut Self>,
682 cx: &mut std::task::Context<'_>,
683 ) -> std::task::Poll<Option<Self::Item>> {
684 let this = &mut *self;
685 if this.inner.check_shutdown(cx) {
686 this.is_terminated = true;
687 return std::task::Poll::Ready(None);
688 }
689 if this.is_terminated {
690 panic!("polled RegisterRequestStream after completion");
691 }
692 fidl::encoding::with_tls_decode_buf::<_, fidl::encoding::DefaultFuchsiaResourceDialect>(
693 |bytes, handles| {
694 match this.inner.channel().read_etc(cx, bytes, handles) {
695 std::task::Poll::Ready(Ok(())) => {}
696 std::task::Poll::Pending => return std::task::Poll::Pending,
697 std::task::Poll::Ready(Err(zx_status::Status::PEER_CLOSED)) => {
698 this.is_terminated = true;
699 return std::task::Poll::Ready(None);
700 }
701 std::task::Poll::Ready(Err(e)) => {
702 return std::task::Poll::Ready(Some(Err(fidl::Error::ServerRequestRead(
703 e.into(),
704 ))));
705 }
706 }
707
708 let (header, _body_bytes) = fidl::encoding::decode_transaction_header(bytes)?;
710
711 std::task::Poll::Ready(Some(match header.ordinal {
712 0x19280d20cfdd62e6 => {
713 header.validate_request_tx_id(fidl::MethodType::OneWay)?;
714 let mut req = fidl::new_empty!(
715 RegisterRegisterDeviceRequest,
716 fidl::encoding::DefaultFuchsiaResourceDialect
717 );
718 fidl::encoding::Decoder::<fidl::encoding::DefaultFuchsiaResourceDialect>::decode_into::<RegisterRegisterDeviceRequest>(&header, _body_bytes, handles, &mut req)?;
719 let control_handle = RegisterControlHandle { inner: this.inner.clone() };
720 Ok(RegisterRequest::RegisterDevice {
721 name: req.name,
722 driver: req.driver,
723
724 control_handle,
725 })
726 }
727 _ => Err(fidl::Error::UnknownOrdinal {
728 ordinal: header.ordinal,
729 protocol_name:
730 <RegisterMarker as fidl::endpoints::ProtocolMarker>::DEBUG_NAME,
731 }),
732 }))
733 },
734 )
735 }
736}
737
738#[derive(Debug)]
741pub enum RegisterRequest {
742 RegisterDevice {
745 name: String,
746 driver: fidl::endpoints::ClientEnd<DriverMarker>,
747 control_handle: RegisterControlHandle,
748 },
749}
750
751impl RegisterRequest {
752 #[allow(irrefutable_let_patterns)]
753 pub fn into_register_device(
754 self,
755 ) -> Option<(String, fidl::endpoints::ClientEnd<DriverMarker>, RegisterControlHandle)> {
756 if let RegisterRequest::RegisterDevice { name, driver, control_handle } = self {
757 Some((name, driver, control_handle))
758 } else {
759 None
760 }
761 }
762
763 pub fn method_name(&self) -> &'static str {
765 match *self {
766 RegisterRequest::RegisterDevice { .. } => "register_device",
767 }
768 }
769}
770
771#[derive(Debug, Clone)]
772pub struct RegisterControlHandle {
773 inner: std::sync::Arc<fidl::ServeInner<fidl::encoding::DefaultFuchsiaResourceDialect>>,
774}
775
776impl fidl::endpoints::ControlHandle for RegisterControlHandle {
777 fn shutdown(&self) {
778 self.inner.shutdown()
779 }
780
781 fn shutdown_with_epitaph(&self, status: zx_status::Status) {
782 self.inner.shutdown_with_epitaph(status)
783 }
784
785 fn is_closed(&self) -> bool {
786 self.inner.channel().is_closed()
787 }
788 fn on_closed(&self) -> fidl::OnSignalsRef<'_> {
789 self.inner.channel().on_closed()
790 }
791
792 #[cfg(target_os = "fuchsia")]
793 fn signal_peer(
794 &self,
795 clear_mask: zx::Signals,
796 set_mask: zx::Signals,
797 ) -> Result<(), zx_status::Status> {
798 use fidl::Peered;
799 self.inner.channel().signal_peer(clear_mask, set_mask)
800 }
801}
802
803impl RegisterControlHandle {}
804
805mod internal {
806 use super::*;
807
808 impl fidl::encoding::ResourceTypeMarker for DriverGetProtocolsRequest {
809 type Borrowed<'a> = &'a mut Self;
810 fn take_or_borrow<'a>(
811 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
812 ) -> Self::Borrowed<'a> {
813 value
814 }
815 }
816
817 unsafe impl fidl::encoding::TypeMarker for DriverGetProtocolsRequest {
818 type Owned = Self;
819
820 #[inline(always)]
821 fn inline_align(_context: fidl::encoding::Context) -> usize {
822 8
823 }
824
825 #[inline(always)]
826 fn inline_size(_context: fidl::encoding::Context) -> usize {
827 16
828 }
829 }
830
831 unsafe impl
832 fidl::encoding::Encode<
833 DriverGetProtocolsRequest,
834 fidl::encoding::DefaultFuchsiaResourceDialect,
835 > for &mut DriverGetProtocolsRequest
836 {
837 #[inline]
838 unsafe fn encode(
839 self,
840 encoder: &mut fidl::encoding::Encoder<
841 '_,
842 fidl::encoding::DefaultFuchsiaResourceDialect,
843 >,
844 offset: usize,
845 _depth: fidl::encoding::Depth,
846 ) -> fidl::Result<()> {
847 encoder.debug_check_bounds::<DriverGetProtocolsRequest>(offset);
848 fidl::encoding::Encode::<
850 DriverGetProtocolsRequest,
851 fidl::encoding::DefaultFuchsiaResourceDialect,
852 >::encode(
853 (<Protocols as fidl::encoding::ResourceTypeMarker>::take_or_borrow(
854 &mut self.protocols,
855 ),),
856 encoder,
857 offset,
858 _depth,
859 )
860 }
861 }
862 unsafe impl<
863 T0: fidl::encoding::Encode<Protocols, fidl::encoding::DefaultFuchsiaResourceDialect>,
864 >
865 fidl::encoding::Encode<
866 DriverGetProtocolsRequest,
867 fidl::encoding::DefaultFuchsiaResourceDialect,
868 > for (T0,)
869 {
870 #[inline]
871 unsafe fn encode(
872 self,
873 encoder: &mut fidl::encoding::Encoder<
874 '_,
875 fidl::encoding::DefaultFuchsiaResourceDialect,
876 >,
877 offset: usize,
878 depth: fidl::encoding::Depth,
879 ) -> fidl::Result<()> {
880 encoder.debug_check_bounds::<DriverGetProtocolsRequest>(offset);
881 self.0.encode(encoder, offset + 0, depth)?;
885 Ok(())
886 }
887 }
888
889 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
890 for DriverGetProtocolsRequest
891 {
892 #[inline(always)]
893 fn new_empty() -> Self {
894 Self {
895 protocols: fidl::new_empty!(
896 Protocols,
897 fidl::encoding::DefaultFuchsiaResourceDialect
898 ),
899 }
900 }
901
902 #[inline]
903 unsafe fn decode(
904 &mut self,
905 decoder: &mut fidl::encoding::Decoder<
906 '_,
907 fidl::encoding::DefaultFuchsiaResourceDialect,
908 >,
909 offset: usize,
910 _depth: fidl::encoding::Depth,
911 ) -> fidl::Result<()> {
912 decoder.debug_check_bounds::<Self>(offset);
913 fidl::decode!(
915 Protocols,
916 fidl::encoding::DefaultFuchsiaResourceDialect,
917 &mut self.protocols,
918 decoder,
919 offset + 0,
920 _depth
921 )?;
922 Ok(())
923 }
924 }
925
926 impl fidl::encoding::ResourceTypeMarker for RegisterRegisterDeviceRequest {
927 type Borrowed<'a> = &'a mut Self;
928 fn take_or_borrow<'a>(
929 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
930 ) -> Self::Borrowed<'a> {
931 value
932 }
933 }
934
935 unsafe impl fidl::encoding::TypeMarker for RegisterRegisterDeviceRequest {
936 type Owned = Self;
937
938 #[inline(always)]
939 fn inline_align(_context: fidl::encoding::Context) -> usize {
940 8
941 }
942
943 #[inline(always)]
944 fn inline_size(_context: fidl::encoding::Context) -> usize {
945 24
946 }
947 }
948
949 unsafe impl
950 fidl::encoding::Encode<
951 RegisterRegisterDeviceRequest,
952 fidl::encoding::DefaultFuchsiaResourceDialect,
953 > for &mut RegisterRegisterDeviceRequest
954 {
955 #[inline]
956 unsafe fn encode(
957 self,
958 encoder: &mut fidl::encoding::Encoder<
959 '_,
960 fidl::encoding::DefaultFuchsiaResourceDialect,
961 >,
962 offset: usize,
963 _depth: fidl::encoding::Depth,
964 ) -> fidl::Result<()> {
965 encoder.debug_check_bounds::<RegisterRegisterDeviceRequest>(offset);
966 fidl::encoding::Encode::<RegisterRegisterDeviceRequest, fidl::encoding::DefaultFuchsiaResourceDialect>::encode(
968 (
969 <fidl::encoding::BoundedString<32> as fidl::encoding::ValueTypeMarker>::borrow(&self.name),
970 <fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>> as fidl::encoding::ResourceTypeMarker>::take_or_borrow(&mut self.driver),
971 ),
972 encoder, offset, _depth
973 )
974 }
975 }
976 unsafe impl<
977 T0: fidl::encoding::Encode<
978 fidl::encoding::BoundedString<32>,
979 fidl::encoding::DefaultFuchsiaResourceDialect,
980 >,
981 T1: fidl::encoding::Encode<
982 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
983 fidl::encoding::DefaultFuchsiaResourceDialect,
984 >,
985 >
986 fidl::encoding::Encode<
987 RegisterRegisterDeviceRequest,
988 fidl::encoding::DefaultFuchsiaResourceDialect,
989 > for (T0, T1)
990 {
991 #[inline]
992 unsafe fn encode(
993 self,
994 encoder: &mut fidl::encoding::Encoder<
995 '_,
996 fidl::encoding::DefaultFuchsiaResourceDialect,
997 >,
998 offset: usize,
999 depth: fidl::encoding::Depth,
1000 ) -> fidl::Result<()> {
1001 encoder.debug_check_bounds::<RegisterRegisterDeviceRequest>(offset);
1002 unsafe {
1005 let ptr = encoder.buf.as_mut_ptr().add(offset).offset(16);
1006 (ptr as *mut u64).write_unaligned(0);
1007 }
1008 self.0.encode(encoder, offset + 0, depth)?;
1010 self.1.encode(encoder, offset + 16, depth)?;
1011 Ok(())
1012 }
1013 }
1014
1015 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect>
1016 for RegisterRegisterDeviceRequest
1017 {
1018 #[inline(always)]
1019 fn new_empty() -> Self {
1020 Self {
1021 name: fidl::new_empty!(
1022 fidl::encoding::BoundedString<32>,
1023 fidl::encoding::DefaultFuchsiaResourceDialect
1024 ),
1025 driver: fidl::new_empty!(
1026 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
1027 fidl::encoding::DefaultFuchsiaResourceDialect
1028 ),
1029 }
1030 }
1031
1032 #[inline]
1033 unsafe fn decode(
1034 &mut self,
1035 decoder: &mut fidl::encoding::Decoder<
1036 '_,
1037 fidl::encoding::DefaultFuchsiaResourceDialect,
1038 >,
1039 offset: usize,
1040 _depth: fidl::encoding::Depth,
1041 ) -> fidl::Result<()> {
1042 decoder.debug_check_bounds::<Self>(offset);
1043 let ptr = unsafe { decoder.buf.as_ptr().add(offset).offset(16) };
1045 let padval = unsafe { (ptr as *const u64).read_unaligned() };
1046 let mask = 0xffffffff00000000u64;
1047 let maskedval = padval & mask;
1048 if maskedval != 0 {
1049 return Err(fidl::Error::NonZeroPadding {
1050 padding_start: offset + 16 + ((mask as u64).trailing_zeros() / 8) as usize,
1051 });
1052 }
1053 fidl::decode!(
1054 fidl::encoding::BoundedString<32>,
1055 fidl::encoding::DefaultFuchsiaResourceDialect,
1056 &mut self.name,
1057 decoder,
1058 offset + 0,
1059 _depth
1060 )?;
1061 fidl::decode!(
1062 fidl::encoding::Endpoint<fidl::endpoints::ClientEnd<DriverMarker>>,
1063 fidl::encoding::DefaultFuchsiaResourceDialect,
1064 &mut self.driver,
1065 decoder,
1066 offset + 16,
1067 _depth
1068 )?;
1069 Ok(())
1070 }
1071 }
1072
1073 impl Protocols {
1074 #[inline(always)]
1075 fn max_ordinal_present(&self) -> u64 {
1076 if let Some(_) = self.epskc {
1077 return 16;
1078 }
1079 if let Some(_) = self.capabilities {
1080 return 15;
1081 }
1082 if let Some(_) = self.thread_feature {
1083 return 14;
1084 }
1085 if let Some(_) = self.telemetry_provider {
1086 return 13;
1087 }
1088 if let Some(_) = self.meshcop {
1089 return 12;
1090 }
1091 if let Some(_) = self.experimental_device_extra {
1092 return 11;
1093 }
1094 if let Some(_) = self.experimental_device {
1095 return 10;
1096 }
1097 if let Some(_) = self.energy_scan {
1098 return 9;
1099 }
1100 if let Some(_) = self.thread_dataset {
1101 return 8;
1102 }
1103 if let Some(_) = self.thread_legacy_joining {
1104 return 7;
1105 }
1106 if let Some(_) = self.counters {
1107 return 6;
1108 }
1109 if let Some(_) = self.device_route_extra {
1110 return 5;
1111 }
1112 if let Some(_) = self.device_route {
1113 return 4;
1114 }
1115 if let Some(_) = self.device_test {
1116 return 3;
1117 }
1118 if let Some(_) = self.device_extra {
1119 return 2;
1120 }
1121 if let Some(_) = self.device {
1122 return 1;
1123 }
1124 0
1125 }
1126 }
1127
1128 impl fidl::encoding::ResourceTypeMarker for Protocols {
1129 type Borrowed<'a> = &'a mut Self;
1130 fn take_or_borrow<'a>(
1131 value: &'a mut <Self as fidl::encoding::TypeMarker>::Owned,
1132 ) -> Self::Borrowed<'a> {
1133 value
1134 }
1135 }
1136
1137 unsafe impl fidl::encoding::TypeMarker for Protocols {
1138 type Owned = Self;
1139
1140 #[inline(always)]
1141 fn inline_align(_context: fidl::encoding::Context) -> usize {
1142 8
1143 }
1144
1145 #[inline(always)]
1146 fn inline_size(_context: fidl::encoding::Context) -> usize {
1147 16
1148 }
1149 }
1150
1151 unsafe impl fidl::encoding::Encode<Protocols, fidl::encoding::DefaultFuchsiaResourceDialect>
1152 for &mut Protocols
1153 {
1154 unsafe fn encode(
1155 self,
1156 encoder: &mut fidl::encoding::Encoder<
1157 '_,
1158 fidl::encoding::DefaultFuchsiaResourceDialect,
1159 >,
1160 offset: usize,
1161 mut depth: fidl::encoding::Depth,
1162 ) -> fidl::Result<()> {
1163 encoder.debug_check_bounds::<Protocols>(offset);
1164 let max_ordinal: u64 = self.max_ordinal_present();
1166 encoder.write_num(max_ordinal, offset);
1167 encoder.write_num(fidl::encoding::ALLOC_PRESENT_U64, offset + 8);
1168 if max_ordinal == 0 {
1170 return Ok(());
1171 }
1172 depth.increment()?;
1173 let envelope_size = 8;
1174 let bytes_len = max_ordinal as usize * envelope_size;
1175 #[allow(unused_variables)]
1176 let offset = encoder.out_of_line_offset(bytes_len);
1177 let mut _prev_end_offset: usize = 0;
1178 if 1 > max_ordinal {
1179 return Ok(());
1180 }
1181
1182 let cur_offset: usize = (1 - 1) * envelope_size;
1185
1186 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1188
1189 fidl::encoding::encode_in_envelope_optional::<
1194 fidl::encoding::Endpoint<
1195 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1196 >,
1197 fidl::encoding::DefaultFuchsiaResourceDialect,
1198 >(
1199 self.device.as_mut().map(
1200 <fidl::encoding::Endpoint<
1201 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1202 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1203 ),
1204 encoder,
1205 offset + cur_offset,
1206 depth,
1207 )?;
1208
1209 _prev_end_offset = cur_offset + envelope_size;
1210 if 2 > max_ordinal {
1211 return Ok(());
1212 }
1213
1214 let cur_offset: usize = (2 - 1) * envelope_size;
1217
1218 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1220
1221 fidl::encoding::encode_in_envelope_optional::<
1226 fidl::encoding::Endpoint<
1227 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1228 >,
1229 fidl::encoding::DefaultFuchsiaResourceDialect,
1230 >(
1231 self.device_extra.as_mut().map(
1232 <fidl::encoding::Endpoint<
1233 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1234 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1235 ),
1236 encoder,
1237 offset + cur_offset,
1238 depth,
1239 )?;
1240
1241 _prev_end_offset = cur_offset + envelope_size;
1242 if 3 > max_ordinal {
1243 return Ok(());
1244 }
1245
1246 let cur_offset: usize = (3 - 1) * envelope_size;
1249
1250 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1252
1253 fidl::encoding::encode_in_envelope_optional::<
1258 fidl::encoding::Endpoint<
1259 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1260 >,
1261 fidl::encoding::DefaultFuchsiaResourceDialect,
1262 >(
1263 self.device_test.as_mut().map(
1264 <fidl::encoding::Endpoint<
1265 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1266 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1267 ),
1268 encoder,
1269 offset + cur_offset,
1270 depth,
1271 )?;
1272
1273 _prev_end_offset = cur_offset + envelope_size;
1274 if 4 > max_ordinal {
1275 return Ok(());
1276 }
1277
1278 let cur_offset: usize = (4 - 1) * envelope_size;
1281
1282 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1284
1285 fidl::encoding::encode_in_envelope_optional::<
1290 fidl::encoding::Endpoint<
1291 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>,
1292 >,
1293 fidl::encoding::DefaultFuchsiaResourceDialect,
1294 >(
1295 self.device_route.as_mut().map(
1296 <fidl::encoding::Endpoint<
1297 fidl::endpoints::ServerEnd<
1298 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1299 >,
1300 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1301 ),
1302 encoder,
1303 offset + cur_offset,
1304 depth,
1305 )?;
1306
1307 _prev_end_offset = cur_offset + envelope_size;
1308 if 5 > max_ordinal {
1309 return Ok(());
1310 }
1311
1312 let cur_offset: usize = (5 - 1) * envelope_size;
1315
1316 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1318
1319 fidl::encoding::encode_in_envelope_optional::<
1324 fidl::encoding::Endpoint<
1325 fidl::endpoints::ServerEnd<
1326 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
1327 >,
1328 >,
1329 fidl::encoding::DefaultFuchsiaResourceDialect,
1330 >(
1331 self.device_route_extra.as_mut().map(
1332 <fidl::encoding::Endpoint<
1333 fidl::endpoints::ServerEnd<
1334 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
1335 >,
1336 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1337 ),
1338 encoder,
1339 offset + cur_offset,
1340 depth,
1341 )?;
1342
1343 _prev_end_offset = cur_offset + envelope_size;
1344 if 6 > max_ordinal {
1345 return Ok(());
1346 }
1347
1348 let cur_offset: usize = (6 - 1) * envelope_size;
1351
1352 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1354
1355 fidl::encoding::encode_in_envelope_optional::<
1360 fidl::encoding::Endpoint<
1361 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
1362 >,
1363 fidl::encoding::DefaultFuchsiaResourceDialect,
1364 >(
1365 self.counters.as_mut().map(
1366 <fidl::encoding::Endpoint<
1367 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
1368 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1369 ),
1370 encoder,
1371 offset + cur_offset,
1372 depth,
1373 )?;
1374
1375 _prev_end_offset = cur_offset + envelope_size;
1376 if 7 > max_ordinal {
1377 return Ok(());
1378 }
1379
1380 let cur_offset: usize = (7 - 1) * envelope_size;
1383
1384 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1386
1387 fidl::encoding::encode_in_envelope_optional::<
1392 fidl::encoding::Endpoint<
1393 fidl::endpoints::ServerEnd<
1394 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
1395 >,
1396 >,
1397 fidl::encoding::DefaultFuchsiaResourceDialect,
1398 >(
1399 self.thread_legacy_joining.as_mut().map(
1400 <fidl::encoding::Endpoint<
1401 fidl::endpoints::ServerEnd<
1402 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
1403 >,
1404 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1405 ),
1406 encoder,
1407 offset + cur_offset,
1408 depth,
1409 )?;
1410
1411 _prev_end_offset = cur_offset + envelope_size;
1412 if 8 > max_ordinal {
1413 return Ok(());
1414 }
1415
1416 let cur_offset: usize = (8 - 1) * envelope_size;
1419
1420 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1422
1423 fidl::encoding::encode_in_envelope_optional::<
1428 fidl::encoding::Endpoint<
1429 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
1430 >,
1431 fidl::encoding::DefaultFuchsiaResourceDialect,
1432 >(
1433 self.thread_dataset.as_mut().map(
1434 <fidl::encoding::Endpoint<
1435 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
1436 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1437 ),
1438 encoder,
1439 offset + cur_offset,
1440 depth,
1441 )?;
1442
1443 _prev_end_offset = cur_offset + envelope_size;
1444 if 9 > max_ordinal {
1445 return Ok(());
1446 }
1447
1448 let cur_offset: usize = (9 - 1) * envelope_size;
1451
1452 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1454
1455 fidl::encoding::encode_in_envelope_optional::<
1460 fidl::encoding::Endpoint<
1461 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
1462 >,
1463 fidl::encoding::DefaultFuchsiaResourceDialect,
1464 >(
1465 self.energy_scan.as_mut().map(
1466 <fidl::encoding::Endpoint<
1467 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
1468 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1469 ),
1470 encoder,
1471 offset + cur_offset,
1472 depth,
1473 )?;
1474
1475 _prev_end_offset = cur_offset + envelope_size;
1476 if 10 > max_ordinal {
1477 return Ok(());
1478 }
1479
1480 let cur_offset: usize = (10 - 1) * envelope_size;
1483
1484 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1486
1487 fidl::encoding::encode_in_envelope_optional::<
1492 fidl::encoding::Endpoint<
1493 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
1494 >,
1495 fidl::encoding::DefaultFuchsiaResourceDialect,
1496 >(
1497 self.experimental_device.as_mut().map(
1498 <fidl::encoding::Endpoint<
1499 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
1500 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1501 ),
1502 encoder,
1503 offset + cur_offset,
1504 depth,
1505 )?;
1506
1507 _prev_end_offset = cur_offset + envelope_size;
1508 if 11 > max_ordinal {
1509 return Ok(());
1510 }
1511
1512 let cur_offset: usize = (11 - 1) * envelope_size;
1515
1516 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1518
1519 fidl::encoding::encode_in_envelope_optional::<
1524 fidl::encoding::Endpoint<
1525 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>,
1526 >,
1527 fidl::encoding::DefaultFuchsiaResourceDialect,
1528 >(
1529 self.experimental_device_extra.as_mut().map(
1530 <fidl::encoding::Endpoint<
1531 fidl::endpoints::ServerEnd<
1532 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
1533 >,
1534 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1535 ),
1536 encoder,
1537 offset + cur_offset,
1538 depth,
1539 )?;
1540
1541 _prev_end_offset = cur_offset + envelope_size;
1542 if 12 > max_ordinal {
1543 return Ok(());
1544 }
1545
1546 let cur_offset: usize = (12 - 1) * envelope_size;
1549
1550 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1552
1553 fidl::encoding::encode_in_envelope_optional::<
1558 fidl::encoding::Endpoint<
1559 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
1560 >,
1561 fidl::encoding::DefaultFuchsiaResourceDialect,
1562 >(
1563 self.meshcop.as_mut().map(
1564 <fidl::encoding::Endpoint<
1565 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
1566 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1567 ),
1568 encoder,
1569 offset + cur_offset,
1570 depth,
1571 )?;
1572
1573 _prev_end_offset = cur_offset + envelope_size;
1574 if 13 > max_ordinal {
1575 return Ok(());
1576 }
1577
1578 let cur_offset: usize = (13 - 1) * envelope_size;
1581
1582 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1584
1585 fidl::encoding::encode_in_envelope_optional::<
1590 fidl::encoding::Endpoint<
1591 fidl::endpoints::ServerEnd<
1592 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
1593 >,
1594 >,
1595 fidl::encoding::DefaultFuchsiaResourceDialect,
1596 >(
1597 self.telemetry_provider.as_mut().map(
1598 <fidl::encoding::Endpoint<
1599 fidl::endpoints::ServerEnd<
1600 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
1601 >,
1602 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1603 ),
1604 encoder,
1605 offset + cur_offset,
1606 depth,
1607 )?;
1608
1609 _prev_end_offset = cur_offset + envelope_size;
1610 if 14 > max_ordinal {
1611 return Ok(());
1612 }
1613
1614 let cur_offset: usize = (14 - 1) * envelope_size;
1617
1618 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1620
1621 fidl::encoding::encode_in_envelope_optional::<
1626 fidl::encoding::Endpoint<
1627 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
1628 >,
1629 fidl::encoding::DefaultFuchsiaResourceDialect,
1630 >(
1631 self.thread_feature.as_mut().map(
1632 <fidl::encoding::Endpoint<
1633 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
1634 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1635 ),
1636 encoder,
1637 offset + cur_offset,
1638 depth,
1639 )?;
1640
1641 _prev_end_offset = cur_offset + envelope_size;
1642 if 15 > max_ordinal {
1643 return Ok(());
1644 }
1645
1646 let cur_offset: usize = (15 - 1) * envelope_size;
1649
1650 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1652
1653 fidl::encoding::encode_in_envelope_optional::<
1658 fidl::encoding::Endpoint<
1659 fidl::endpoints::ServerEnd<
1660 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
1661 >,
1662 >,
1663 fidl::encoding::DefaultFuchsiaResourceDialect,
1664 >(
1665 self.capabilities.as_mut().map(
1666 <fidl::encoding::Endpoint<
1667 fidl::endpoints::ServerEnd<
1668 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
1669 >,
1670 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1671 ),
1672 encoder,
1673 offset + cur_offset,
1674 depth,
1675 )?;
1676
1677 _prev_end_offset = cur_offset + envelope_size;
1678 if 16 > max_ordinal {
1679 return Ok(());
1680 }
1681
1682 let cur_offset: usize = (16 - 1) * envelope_size;
1685
1686 encoder.padding(offset + _prev_end_offset, cur_offset - _prev_end_offset);
1688
1689 fidl::encoding::encode_in_envelope_optional::<
1694 fidl::encoding::Endpoint<
1695 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
1696 >,
1697 fidl::encoding::DefaultFuchsiaResourceDialect,
1698 >(
1699 self.epskc.as_mut().map(
1700 <fidl::encoding::Endpoint<
1701 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
1702 > as fidl::encoding::ResourceTypeMarker>::take_or_borrow,
1703 ),
1704 encoder,
1705 offset + cur_offset,
1706 depth,
1707 )?;
1708
1709 _prev_end_offset = cur_offset + envelope_size;
1710
1711 Ok(())
1712 }
1713 }
1714
1715 impl fidl::encoding::Decode<Self, fidl::encoding::DefaultFuchsiaResourceDialect> for Protocols {
1716 #[inline(always)]
1717 fn new_empty() -> Self {
1718 Self::default()
1719 }
1720
1721 unsafe fn decode(
1722 &mut self,
1723 decoder: &mut fidl::encoding::Decoder<
1724 '_,
1725 fidl::encoding::DefaultFuchsiaResourceDialect,
1726 >,
1727 offset: usize,
1728 mut depth: fidl::encoding::Depth,
1729 ) -> fidl::Result<()> {
1730 decoder.debug_check_bounds::<Self>(offset);
1731 let len = match fidl::encoding::decode_vector_header(decoder, offset)? {
1732 None => return Err(fidl::Error::NotNullable),
1733 Some(len) => len,
1734 };
1735 if len == 0 {
1737 return Ok(());
1738 };
1739 depth.increment()?;
1740 let envelope_size = 8;
1741 let bytes_len = len * envelope_size;
1742 let offset = decoder.out_of_line_offset(bytes_len)?;
1743 let mut _next_ordinal_to_read = 0;
1745 let mut next_offset = offset;
1746 let end_offset = offset + bytes_len;
1747 _next_ordinal_to_read += 1;
1748 if next_offset >= end_offset {
1749 return Ok(());
1750 }
1751
1752 while _next_ordinal_to_read < 1 {
1754 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1755 _next_ordinal_to_read += 1;
1756 next_offset += envelope_size;
1757 }
1758
1759 let next_out_of_line = decoder.next_out_of_line();
1760 let handles_before = decoder.remaining_handles();
1761 if let Some((inlined, num_bytes, num_handles)) =
1762 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1763 {
1764 let member_inline_size = <fidl::encoding::Endpoint<
1765 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1766 > as fidl::encoding::TypeMarker>::inline_size(
1767 decoder.context
1768 );
1769 if inlined != (member_inline_size <= 4) {
1770 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1771 }
1772 let inner_offset;
1773 let mut inner_depth = depth.clone();
1774 if inlined {
1775 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1776 inner_offset = next_offset;
1777 } else {
1778 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1779 inner_depth.increment()?;
1780 }
1781 let val_ref = self.device.get_or_insert_with(|| {
1782 fidl::new_empty!(
1783 fidl::encoding::Endpoint<
1784 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1785 >,
1786 fidl::encoding::DefaultFuchsiaResourceDialect
1787 )
1788 });
1789 fidl::decode!(
1790 fidl::encoding::Endpoint<
1791 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceMarker>,
1792 >,
1793 fidl::encoding::DefaultFuchsiaResourceDialect,
1794 val_ref,
1795 decoder,
1796 inner_offset,
1797 inner_depth
1798 )?;
1799 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1800 {
1801 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1802 }
1803 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1804 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1805 }
1806 }
1807
1808 next_offset += envelope_size;
1809 _next_ordinal_to_read += 1;
1810 if next_offset >= end_offset {
1811 return Ok(());
1812 }
1813
1814 while _next_ordinal_to_read < 2 {
1816 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1817 _next_ordinal_to_read += 1;
1818 next_offset += envelope_size;
1819 }
1820
1821 let next_out_of_line = decoder.next_out_of_line();
1822 let handles_before = decoder.remaining_handles();
1823 if let Some((inlined, num_bytes, num_handles)) =
1824 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1825 {
1826 let member_inline_size = <fidl::encoding::Endpoint<
1827 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1828 > as fidl::encoding::TypeMarker>::inline_size(
1829 decoder.context
1830 );
1831 if inlined != (member_inline_size <= 4) {
1832 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1833 }
1834 let inner_offset;
1835 let mut inner_depth = depth.clone();
1836 if inlined {
1837 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1838 inner_offset = next_offset;
1839 } else {
1840 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1841 inner_depth.increment()?;
1842 }
1843 let val_ref = self.device_extra.get_or_insert_with(|| {
1844 fidl::new_empty!(
1845 fidl::encoding::Endpoint<
1846 fidl::endpoints::ServerEnd<
1847 fidl_fuchsia_lowpan_device::DeviceExtraMarker,
1848 >,
1849 >,
1850 fidl::encoding::DefaultFuchsiaResourceDialect
1851 )
1852 });
1853 fidl::decode!(
1854 fidl::encoding::Endpoint<
1855 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::DeviceExtraMarker>,
1856 >,
1857 fidl::encoding::DefaultFuchsiaResourceDialect,
1858 val_ref,
1859 decoder,
1860 inner_offset,
1861 inner_depth
1862 )?;
1863 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1864 {
1865 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1866 }
1867 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1868 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1869 }
1870 }
1871
1872 next_offset += envelope_size;
1873 _next_ordinal_to_read += 1;
1874 if next_offset >= end_offset {
1875 return Ok(());
1876 }
1877
1878 while _next_ordinal_to_read < 3 {
1880 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1881 _next_ordinal_to_read += 1;
1882 next_offset += envelope_size;
1883 }
1884
1885 let next_out_of_line = decoder.next_out_of_line();
1886 let handles_before = decoder.remaining_handles();
1887 if let Some((inlined, num_bytes, num_handles)) =
1888 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1889 {
1890 let member_inline_size = <fidl::encoding::Endpoint<
1891 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1892 > as fidl::encoding::TypeMarker>::inline_size(
1893 decoder.context
1894 );
1895 if inlined != (member_inline_size <= 4) {
1896 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1897 }
1898 let inner_offset;
1899 let mut inner_depth = depth.clone();
1900 if inlined {
1901 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1902 inner_offset = next_offset;
1903 } else {
1904 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1905 inner_depth.increment()?;
1906 }
1907 let val_ref = self.device_test.get_or_insert_with(|| {
1908 fidl::new_empty!(
1909 fidl::encoding::Endpoint<
1910 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1911 >,
1912 fidl::encoding::DefaultFuchsiaResourceDialect
1913 )
1914 });
1915 fidl::decode!(
1916 fidl::encoding::Endpoint<
1917 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_test::DeviceTestMarker>,
1918 >,
1919 fidl::encoding::DefaultFuchsiaResourceDialect,
1920 val_ref,
1921 decoder,
1922 inner_offset,
1923 inner_depth
1924 )?;
1925 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1926 {
1927 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1928 }
1929 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1930 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1931 }
1932 }
1933
1934 next_offset += envelope_size;
1935 _next_ordinal_to_read += 1;
1936 if next_offset >= end_offset {
1937 return Ok(());
1938 }
1939
1940 while _next_ordinal_to_read < 4 {
1942 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
1943 _next_ordinal_to_read += 1;
1944 next_offset += envelope_size;
1945 }
1946
1947 let next_out_of_line = decoder.next_out_of_line();
1948 let handles_before = decoder.remaining_handles();
1949 if let Some((inlined, num_bytes, num_handles)) =
1950 fidl::encoding::decode_envelope_header(decoder, next_offset)?
1951 {
1952 let member_inline_size = <fidl::encoding::Endpoint<
1953 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceRouteMarker>,
1954 > as fidl::encoding::TypeMarker>::inline_size(
1955 decoder.context
1956 );
1957 if inlined != (member_inline_size <= 4) {
1958 return Err(fidl::Error::InvalidInlineBitInEnvelope);
1959 }
1960 let inner_offset;
1961 let mut inner_depth = depth.clone();
1962 if inlined {
1963 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
1964 inner_offset = next_offset;
1965 } else {
1966 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
1967 inner_depth.increment()?;
1968 }
1969 let val_ref = self.device_route.get_or_insert_with(|| {
1970 fidl::new_empty!(
1971 fidl::encoding::Endpoint<
1972 fidl::endpoints::ServerEnd<
1973 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1974 >,
1975 >,
1976 fidl::encoding::DefaultFuchsiaResourceDialect
1977 )
1978 });
1979 fidl::decode!(
1980 fidl::encoding::Endpoint<
1981 fidl::endpoints::ServerEnd<
1982 fidl_fuchsia_lowpan_experimental::DeviceRouteMarker,
1983 >,
1984 >,
1985 fidl::encoding::DefaultFuchsiaResourceDialect,
1986 val_ref,
1987 decoder,
1988 inner_offset,
1989 inner_depth
1990 )?;
1991 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
1992 {
1993 return Err(fidl::Error::InvalidNumBytesInEnvelope);
1994 }
1995 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
1996 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
1997 }
1998 }
1999
2000 next_offset += envelope_size;
2001 _next_ordinal_to_read += 1;
2002 if next_offset >= end_offset {
2003 return Ok(());
2004 }
2005
2006 while _next_ordinal_to_read < 5 {
2008 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2009 _next_ordinal_to_read += 1;
2010 next_offset += envelope_size;
2011 }
2012
2013 let next_out_of_line = decoder.next_out_of_line();
2014 let handles_before = decoder.remaining_handles();
2015 if let Some((inlined, num_bytes, num_handles)) =
2016 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2017 {
2018 let member_inline_size = <fidl::encoding::Endpoint<
2019 fidl::endpoints::ServerEnd<
2020 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2021 >,
2022 > as fidl::encoding::TypeMarker>::inline_size(
2023 decoder.context
2024 );
2025 if inlined != (member_inline_size <= 4) {
2026 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2027 }
2028 let inner_offset;
2029 let mut inner_depth = depth.clone();
2030 if inlined {
2031 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2032 inner_offset = next_offset;
2033 } else {
2034 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2035 inner_depth.increment()?;
2036 }
2037 let val_ref = self.device_route_extra.get_or_insert_with(|| {
2038 fidl::new_empty!(
2039 fidl::encoding::Endpoint<
2040 fidl::endpoints::ServerEnd<
2041 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2042 >,
2043 >,
2044 fidl::encoding::DefaultFuchsiaResourceDialect
2045 )
2046 });
2047 fidl::decode!(
2048 fidl::encoding::Endpoint<
2049 fidl::endpoints::ServerEnd<
2050 fidl_fuchsia_lowpan_experimental::DeviceRouteExtraMarker,
2051 >,
2052 >,
2053 fidl::encoding::DefaultFuchsiaResourceDialect,
2054 val_ref,
2055 decoder,
2056 inner_offset,
2057 inner_depth
2058 )?;
2059 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2060 {
2061 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2062 }
2063 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2064 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2065 }
2066 }
2067
2068 next_offset += envelope_size;
2069 _next_ordinal_to_read += 1;
2070 if next_offset >= end_offset {
2071 return Ok(());
2072 }
2073
2074 while _next_ordinal_to_read < 6 {
2076 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2077 _next_ordinal_to_read += 1;
2078 next_offset += envelope_size;
2079 }
2080
2081 let next_out_of_line = decoder.next_out_of_line();
2082 let handles_before = decoder.remaining_handles();
2083 if let Some((inlined, num_bytes, num_handles)) =
2084 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2085 {
2086 let member_inline_size = <fidl::encoding::Endpoint<
2087 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2088 > as fidl::encoding::TypeMarker>::inline_size(
2089 decoder.context
2090 );
2091 if inlined != (member_inline_size <= 4) {
2092 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2093 }
2094 let inner_offset;
2095 let mut inner_depth = depth.clone();
2096 if inlined {
2097 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2098 inner_offset = next_offset;
2099 } else {
2100 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2101 inner_depth.increment()?;
2102 }
2103 let val_ref = self.counters.get_or_insert_with(|| {
2104 fidl::new_empty!(
2105 fidl::encoding::Endpoint<
2106 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2107 >,
2108 fidl::encoding::DefaultFuchsiaResourceDialect
2109 )
2110 });
2111 fidl::decode!(
2112 fidl::encoding::Endpoint<
2113 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::CountersMarker>,
2114 >,
2115 fidl::encoding::DefaultFuchsiaResourceDialect,
2116 val_ref,
2117 decoder,
2118 inner_offset,
2119 inner_depth
2120 )?;
2121 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2122 {
2123 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2124 }
2125 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2126 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2127 }
2128 }
2129
2130 next_offset += envelope_size;
2131 _next_ordinal_to_read += 1;
2132 if next_offset >= end_offset {
2133 return Ok(());
2134 }
2135
2136 while _next_ordinal_to_read < 7 {
2138 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2139 _next_ordinal_to_read += 1;
2140 next_offset += envelope_size;
2141 }
2142
2143 let next_out_of_line = decoder.next_out_of_line();
2144 let handles_before = decoder.remaining_handles();
2145 if let Some((inlined, num_bytes, num_handles)) =
2146 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2147 {
2148 let member_inline_size = <fidl::encoding::Endpoint<
2149 fidl::endpoints::ServerEnd<
2150 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2151 >,
2152 > as fidl::encoding::TypeMarker>::inline_size(
2153 decoder.context
2154 );
2155 if inlined != (member_inline_size <= 4) {
2156 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2157 }
2158 let inner_offset;
2159 let mut inner_depth = depth.clone();
2160 if inlined {
2161 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2162 inner_offset = next_offset;
2163 } else {
2164 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2165 inner_depth.increment()?;
2166 }
2167 let val_ref = self.thread_legacy_joining.get_or_insert_with(|| {
2168 fidl::new_empty!(
2169 fidl::encoding::Endpoint<
2170 fidl::endpoints::ServerEnd<
2171 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2172 >,
2173 >,
2174 fidl::encoding::DefaultFuchsiaResourceDialect
2175 )
2176 });
2177 fidl::decode!(
2178 fidl::encoding::Endpoint<
2179 fidl::endpoints::ServerEnd<
2180 fidl_fuchsia_lowpan_experimental::LegacyJoiningMarker,
2181 >,
2182 >,
2183 fidl::encoding::DefaultFuchsiaResourceDialect,
2184 val_ref,
2185 decoder,
2186 inner_offset,
2187 inner_depth
2188 )?;
2189 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2190 {
2191 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2192 }
2193 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2194 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2195 }
2196 }
2197
2198 next_offset += envelope_size;
2199 _next_ordinal_to_read += 1;
2200 if next_offset >= end_offset {
2201 return Ok(());
2202 }
2203
2204 while _next_ordinal_to_read < 8 {
2206 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2207 _next_ordinal_to_read += 1;
2208 next_offset += envelope_size;
2209 }
2210
2211 let next_out_of_line = decoder.next_out_of_line();
2212 let handles_before = decoder.remaining_handles();
2213 if let Some((inlined, num_bytes, num_handles)) =
2214 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2215 {
2216 let member_inline_size = <fidl::encoding::Endpoint<
2217 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2218 > as fidl::encoding::TypeMarker>::inline_size(
2219 decoder.context
2220 );
2221 if inlined != (member_inline_size <= 4) {
2222 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2223 }
2224 let inner_offset;
2225 let mut inner_depth = depth.clone();
2226 if inlined {
2227 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2228 inner_offset = next_offset;
2229 } else {
2230 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2231 inner_depth.increment()?;
2232 }
2233 let val_ref = self.thread_dataset.get_or_insert_with(|| {
2234 fidl::new_empty!(
2235 fidl::encoding::Endpoint<
2236 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2237 >,
2238 fidl::encoding::DefaultFuchsiaResourceDialect
2239 )
2240 });
2241 fidl::decode!(
2242 fidl::encoding::Endpoint<
2243 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::DatasetMarker>,
2244 >,
2245 fidl::encoding::DefaultFuchsiaResourceDialect,
2246 val_ref,
2247 decoder,
2248 inner_offset,
2249 inner_depth
2250 )?;
2251 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2252 {
2253 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2254 }
2255 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2256 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2257 }
2258 }
2259
2260 next_offset += envelope_size;
2261 _next_ordinal_to_read += 1;
2262 if next_offset >= end_offset {
2263 return Ok(());
2264 }
2265
2266 while _next_ordinal_to_read < 9 {
2268 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2269 _next_ordinal_to_read += 1;
2270 next_offset += envelope_size;
2271 }
2272
2273 let next_out_of_line = decoder.next_out_of_line();
2274 let handles_before = decoder.remaining_handles();
2275 if let Some((inlined, num_bytes, num_handles)) =
2276 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2277 {
2278 let member_inline_size = <fidl::encoding::Endpoint<
2279 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
2280 > as fidl::encoding::TypeMarker>::inline_size(
2281 decoder.context
2282 );
2283 if inlined != (member_inline_size <= 4) {
2284 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2285 }
2286 let inner_offset;
2287 let mut inner_depth = depth.clone();
2288 if inlined {
2289 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2290 inner_offset = next_offset;
2291 } else {
2292 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2293 inner_depth.increment()?;
2294 }
2295 let val_ref = self.energy_scan.get_or_insert_with(|| {
2296 fidl::new_empty!(
2297 fidl::encoding::Endpoint<
2298 fidl::endpoints::ServerEnd<
2299 fidl_fuchsia_lowpan_device::EnergyScanMarker,
2300 >,
2301 >,
2302 fidl::encoding::DefaultFuchsiaResourceDialect
2303 )
2304 });
2305 fidl::decode!(
2306 fidl::encoding::Endpoint<
2307 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_device::EnergyScanMarker>,
2308 >,
2309 fidl::encoding::DefaultFuchsiaResourceDialect,
2310 val_ref,
2311 decoder,
2312 inner_offset,
2313 inner_depth
2314 )?;
2315 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2316 {
2317 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2318 }
2319 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2320 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2321 }
2322 }
2323
2324 next_offset += envelope_size;
2325 _next_ordinal_to_read += 1;
2326 if next_offset >= end_offset {
2327 return Ok(());
2328 }
2329
2330 while _next_ordinal_to_read < 10 {
2332 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2333 _next_ordinal_to_read += 1;
2334 next_offset += envelope_size;
2335 }
2336
2337 let next_out_of_line = decoder.next_out_of_line();
2338 let handles_before = decoder.remaining_handles();
2339 if let Some((inlined, num_bytes, num_handles)) =
2340 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2341 {
2342 let member_inline_size = <fidl::encoding::Endpoint<
2343 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
2344 > as fidl::encoding::TypeMarker>::inline_size(
2345 decoder.context
2346 );
2347 if inlined != (member_inline_size <= 4) {
2348 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2349 }
2350 let inner_offset;
2351 let mut inner_depth = depth.clone();
2352 if inlined {
2353 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2354 inner_offset = next_offset;
2355 } else {
2356 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2357 inner_depth.increment()?;
2358 }
2359 let val_ref = self.experimental_device.get_or_insert_with(|| {
2360 fidl::new_empty!(
2361 fidl::encoding::Endpoint<
2362 fidl::endpoints::ServerEnd<
2363 fidl_fuchsia_lowpan_experimental::DeviceMarker,
2364 >,
2365 >,
2366 fidl::encoding::DefaultFuchsiaResourceDialect
2367 )
2368 });
2369 fidl::decode!(
2370 fidl::encoding::Endpoint<
2371 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceMarker>,
2372 >,
2373 fidl::encoding::DefaultFuchsiaResourceDialect,
2374 val_ref,
2375 decoder,
2376 inner_offset,
2377 inner_depth
2378 )?;
2379 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2380 {
2381 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2382 }
2383 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2384 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2385 }
2386 }
2387
2388 next_offset += envelope_size;
2389 _next_ordinal_to_read += 1;
2390 if next_offset >= end_offset {
2391 return Ok(());
2392 }
2393
2394 while _next_ordinal_to_read < 11 {
2396 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2397 _next_ordinal_to_read += 1;
2398 next_offset += envelope_size;
2399 }
2400
2401 let next_out_of_line = decoder.next_out_of_line();
2402 let handles_before = decoder.remaining_handles();
2403 if let Some((inlined, num_bytes, num_handles)) =
2404 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2405 {
2406 let member_inline_size = <fidl::encoding::Endpoint<
2407 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_experimental::DeviceExtraMarker>,
2408 > as fidl::encoding::TypeMarker>::inline_size(
2409 decoder.context
2410 );
2411 if inlined != (member_inline_size <= 4) {
2412 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2413 }
2414 let inner_offset;
2415 let mut inner_depth = depth.clone();
2416 if inlined {
2417 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2418 inner_offset = next_offset;
2419 } else {
2420 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2421 inner_depth.increment()?;
2422 }
2423 let val_ref = self.experimental_device_extra.get_or_insert_with(|| {
2424 fidl::new_empty!(
2425 fidl::encoding::Endpoint<
2426 fidl::endpoints::ServerEnd<
2427 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
2428 >,
2429 >,
2430 fidl::encoding::DefaultFuchsiaResourceDialect
2431 )
2432 });
2433 fidl::decode!(
2434 fidl::encoding::Endpoint<
2435 fidl::endpoints::ServerEnd<
2436 fidl_fuchsia_lowpan_experimental::DeviceExtraMarker,
2437 >,
2438 >,
2439 fidl::encoding::DefaultFuchsiaResourceDialect,
2440 val_ref,
2441 decoder,
2442 inner_offset,
2443 inner_depth
2444 )?;
2445 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2446 {
2447 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2448 }
2449 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2450 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2451 }
2452 }
2453
2454 next_offset += envelope_size;
2455 _next_ordinal_to_read += 1;
2456 if next_offset >= end_offset {
2457 return Ok(());
2458 }
2459
2460 while _next_ordinal_to_read < 12 {
2462 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2463 _next_ordinal_to_read += 1;
2464 next_offset += envelope_size;
2465 }
2466
2467 let next_out_of_line = decoder.next_out_of_line();
2468 let handles_before = decoder.remaining_handles();
2469 if let Some((inlined, num_bytes, num_handles)) =
2470 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2471 {
2472 let member_inline_size = <fidl::encoding::Endpoint<
2473 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2474 > as fidl::encoding::TypeMarker>::inline_size(
2475 decoder.context
2476 );
2477 if inlined != (member_inline_size <= 4) {
2478 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2479 }
2480 let inner_offset;
2481 let mut inner_depth = depth.clone();
2482 if inlined {
2483 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2484 inner_offset = next_offset;
2485 } else {
2486 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2487 inner_depth.increment()?;
2488 }
2489 let val_ref = self.meshcop.get_or_insert_with(|| {
2490 fidl::new_empty!(
2491 fidl::encoding::Endpoint<
2492 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2493 >,
2494 fidl::encoding::DefaultFuchsiaResourceDialect
2495 )
2496 });
2497 fidl::decode!(
2498 fidl::encoding::Endpoint<
2499 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::MeshcopMarker>,
2500 >,
2501 fidl::encoding::DefaultFuchsiaResourceDialect,
2502 val_ref,
2503 decoder,
2504 inner_offset,
2505 inner_depth
2506 )?;
2507 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2508 {
2509 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2510 }
2511 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2512 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2513 }
2514 }
2515
2516 next_offset += envelope_size;
2517 _next_ordinal_to_read += 1;
2518 if next_offset >= end_offset {
2519 return Ok(());
2520 }
2521
2522 while _next_ordinal_to_read < 13 {
2524 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2525 _next_ordinal_to_read += 1;
2526 next_offset += envelope_size;
2527 }
2528
2529 let next_out_of_line = decoder.next_out_of_line();
2530 let handles_before = decoder.remaining_handles();
2531 if let Some((inlined, num_bytes, num_handles)) =
2532 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2533 {
2534 let member_inline_size = <fidl::encoding::Endpoint<
2535 fidl::endpoints::ServerEnd<
2536 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2537 >,
2538 > as fidl::encoding::TypeMarker>::inline_size(
2539 decoder.context
2540 );
2541 if inlined != (member_inline_size <= 4) {
2542 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2543 }
2544 let inner_offset;
2545 let mut inner_depth = depth.clone();
2546 if inlined {
2547 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2548 inner_offset = next_offset;
2549 } else {
2550 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2551 inner_depth.increment()?;
2552 }
2553 let val_ref = self.telemetry_provider.get_or_insert_with(|| {
2554 fidl::new_empty!(
2555 fidl::encoding::Endpoint<
2556 fidl::endpoints::ServerEnd<
2557 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2558 >,
2559 >,
2560 fidl::encoding::DefaultFuchsiaResourceDialect
2561 )
2562 });
2563 fidl::decode!(
2564 fidl::encoding::Endpoint<
2565 fidl::endpoints::ServerEnd<
2566 fidl_fuchsia_lowpan_experimental::TelemetryProviderMarker,
2567 >,
2568 >,
2569 fidl::encoding::DefaultFuchsiaResourceDialect,
2570 val_ref,
2571 decoder,
2572 inner_offset,
2573 inner_depth
2574 )?;
2575 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2576 {
2577 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2578 }
2579 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2580 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2581 }
2582 }
2583
2584 next_offset += envelope_size;
2585 _next_ordinal_to_read += 1;
2586 if next_offset >= end_offset {
2587 return Ok(());
2588 }
2589
2590 while _next_ordinal_to_read < 14 {
2592 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2593 _next_ordinal_to_read += 1;
2594 next_offset += envelope_size;
2595 }
2596
2597 let next_out_of_line = decoder.next_out_of_line();
2598 let handles_before = decoder.remaining_handles();
2599 if let Some((inlined, num_bytes, num_handles)) =
2600 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2601 {
2602 let member_inline_size = <fidl::encoding::Endpoint<
2603 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2604 > as fidl::encoding::TypeMarker>::inline_size(
2605 decoder.context
2606 );
2607 if inlined != (member_inline_size <= 4) {
2608 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2609 }
2610 let inner_offset;
2611 let mut inner_depth = depth.clone();
2612 if inlined {
2613 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2614 inner_offset = next_offset;
2615 } else {
2616 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2617 inner_depth.increment()?;
2618 }
2619 let val_ref = self.thread_feature.get_or_insert_with(|| {
2620 fidl::new_empty!(
2621 fidl::encoding::Endpoint<
2622 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2623 >,
2624 fidl::encoding::DefaultFuchsiaResourceDialect
2625 )
2626 });
2627 fidl::decode!(
2628 fidl::encoding::Endpoint<
2629 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::FeatureMarker>,
2630 >,
2631 fidl::encoding::DefaultFuchsiaResourceDialect,
2632 val_ref,
2633 decoder,
2634 inner_offset,
2635 inner_depth
2636 )?;
2637 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2638 {
2639 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2640 }
2641 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2642 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2643 }
2644 }
2645
2646 next_offset += envelope_size;
2647 _next_ordinal_to_read += 1;
2648 if next_offset >= end_offset {
2649 return Ok(());
2650 }
2651
2652 while _next_ordinal_to_read < 15 {
2654 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2655 _next_ordinal_to_read += 1;
2656 next_offset += envelope_size;
2657 }
2658
2659 let next_out_of_line = decoder.next_out_of_line();
2660 let handles_before = decoder.remaining_handles();
2661 if let Some((inlined, num_bytes, num_handles)) =
2662 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2663 {
2664 let member_inline_size = <fidl::encoding::Endpoint<
2665 fidl::endpoints::ServerEnd<
2666 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2667 >,
2668 > as fidl::encoding::TypeMarker>::inline_size(
2669 decoder.context
2670 );
2671 if inlined != (member_inline_size <= 4) {
2672 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2673 }
2674 let inner_offset;
2675 let mut inner_depth = depth.clone();
2676 if inlined {
2677 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2678 inner_offset = next_offset;
2679 } else {
2680 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2681 inner_depth.increment()?;
2682 }
2683 let val_ref = self.capabilities.get_or_insert_with(|| {
2684 fidl::new_empty!(
2685 fidl::encoding::Endpoint<
2686 fidl::endpoints::ServerEnd<
2687 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2688 >,
2689 >,
2690 fidl::encoding::DefaultFuchsiaResourceDialect
2691 )
2692 });
2693 fidl::decode!(
2694 fidl::encoding::Endpoint<
2695 fidl::endpoints::ServerEnd<
2696 fidl_fuchsia_lowpan_thread::ThreadCapabilitiesMarker,
2697 >,
2698 >,
2699 fidl::encoding::DefaultFuchsiaResourceDialect,
2700 val_ref,
2701 decoder,
2702 inner_offset,
2703 inner_depth
2704 )?;
2705 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2706 {
2707 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2708 }
2709 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2710 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2711 }
2712 }
2713
2714 next_offset += envelope_size;
2715 _next_ordinal_to_read += 1;
2716 if next_offset >= end_offset {
2717 return Ok(());
2718 }
2719
2720 while _next_ordinal_to_read < 16 {
2722 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2723 _next_ordinal_to_read += 1;
2724 next_offset += envelope_size;
2725 }
2726
2727 let next_out_of_line = decoder.next_out_of_line();
2728 let handles_before = decoder.remaining_handles();
2729 if let Some((inlined, num_bytes, num_handles)) =
2730 fidl::encoding::decode_envelope_header(decoder, next_offset)?
2731 {
2732 let member_inline_size = <fidl::encoding::Endpoint<
2733 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2734 > as fidl::encoding::TypeMarker>::inline_size(
2735 decoder.context
2736 );
2737 if inlined != (member_inline_size <= 4) {
2738 return Err(fidl::Error::InvalidInlineBitInEnvelope);
2739 }
2740 let inner_offset;
2741 let mut inner_depth = depth.clone();
2742 if inlined {
2743 decoder.check_inline_envelope_padding(next_offset, member_inline_size)?;
2744 inner_offset = next_offset;
2745 } else {
2746 inner_offset = decoder.out_of_line_offset(member_inline_size)?;
2747 inner_depth.increment()?;
2748 }
2749 let val_ref = self.epskc.get_or_insert_with(|| {
2750 fidl::new_empty!(
2751 fidl::encoding::Endpoint<
2752 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2753 >,
2754 fidl::encoding::DefaultFuchsiaResourceDialect
2755 )
2756 });
2757 fidl::decode!(
2758 fidl::encoding::Endpoint<
2759 fidl::endpoints::ServerEnd<fidl_fuchsia_lowpan_thread::EpskcMarker>,
2760 >,
2761 fidl::encoding::DefaultFuchsiaResourceDialect,
2762 val_ref,
2763 decoder,
2764 inner_offset,
2765 inner_depth
2766 )?;
2767 if !inlined && decoder.next_out_of_line() != next_out_of_line + (num_bytes as usize)
2768 {
2769 return Err(fidl::Error::InvalidNumBytesInEnvelope);
2770 }
2771 if handles_before != decoder.remaining_handles() + (num_handles as usize) {
2772 return Err(fidl::Error::InvalidNumHandlesInEnvelope);
2773 }
2774 }
2775
2776 next_offset += envelope_size;
2777
2778 while next_offset < end_offset {
2780 _next_ordinal_to_read += 1;
2781 fidl::encoding::decode_unknown_envelope(decoder, next_offset, depth)?;
2782 next_offset += envelope_size;
2783 }
2784
2785 Ok(())
2786 }
2787 }
2788}