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