aboutsummaryrefslogtreecommitdiff
path: root/embassy-stm32-wpan/src/mac/control.rs
diff options
context:
space:
mode:
authorxoviat <[email protected]>2023-07-21 16:10:34 -0500
committerxoviat <[email protected]>2023-07-21 16:10:34 -0500
commitc675208b8a90bee39e99c8cd3bb620b99c439482 (patch)
tree208957b34aec9876a8d7af1c1b28e3a0dfa1e023 /embassy-stm32-wpan/src/mac/control.rs
parent899a68325c322a813155c7ba9c6e43c79be99bd8 (diff)
wpan: complete prelim. command impl.
Diffstat (limited to 'embassy-stm32-wpan/src/mac/control.rs')
-rw-r--r--embassy-stm32-wpan/src/mac/control.rs16
1 files changed, 10 insertions, 6 deletions
diff --git a/embassy-stm32-wpan/src/mac/control.rs b/embassy-stm32-wpan/src/mac/control.rs
index fd8c22b26..ded419203 100644
--- a/embassy-stm32-wpan/src/mac/control.rs
+++ b/embassy-stm32-wpan/src/mac/control.rs
@@ -1,5 +1,6 @@
1use core::future::Future; 1use core::future::Future;
2use core::task; 2use core::task;
3use core::task::Poll;
3 4
4use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; 5use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
5use embassy_sync::mutex::MutexGuard; 6use embassy_sync::mutex::MutexGuard;
@@ -7,6 +8,7 @@ use embassy_sync::signal::Signal;
7use futures::FutureExt; 8use futures::FutureExt;
8 9
9use super::commands::MacCommand; 10use super::commands::MacCommand;
11use super::event::MacEvent;
10use super::typedefs::MacError; 12use super::typedefs::MacError;
11use crate::mac::runner::Runner; 13use crate::mac::runner::Runner;
12 14
@@ -62,10 +64,9 @@ impl<'a> EventToken<'a> {
62} 64}
63 65
64impl<'a> Future for EventToken<'a> { 66impl<'a> Future for EventToken<'a> {
65 // TODO: output something 67 type Output = MacEvent<'a>;
66 type Output = ();
67 68
68 fn poll(self: core::pin::Pin<&mut Self>, cx: &mut task::Context<'_>) -> task::Poll<Self::Output> { 69 fn poll(self: core::pin::Pin<&mut Self>, cx: &mut task::Context<'_>) -> Poll<Self::Output> {
69 self.get_mut().runner.rx_event_channel.lock(|s| { 70 self.get_mut().runner.rx_event_channel.lock(|s| {
70 let signal = s.borrow_mut(); 71 let signal = s.borrow_mut();
71 let signal = match &*signal { 72 let signal = match &*signal {
@@ -73,10 +74,13 @@ impl<'a> Future for EventToken<'a> {
73 _ => unreachable!(), 74 _ => unreachable!(),
74 }; 75 };
75 76
76 let _ = signal.wait().poll_unpin(cx); 77 let result = match signal.wait().poll_unpin(cx) {
77 }); 78 Poll::Ready(mac_event) => Poll::Ready(mac_event),
79 Poll::Pending => Poll::Pending,
80 };
78 81
79 todo!() 82 result
83 })
80 } 84 }
81} 85}
82 86