diff options
| author | Dario Nieuwenhuis <[email protected]> | 2021-02-02 05:14:52 +0100 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2021-02-02 05:20:41 +0100 |
| commit | aeaa34d7a163b327643c08e299e1b40bb497c01c (patch) | |
| tree | 6054344c8a7d990b910416a1002aded9ad4d10eb /embassy-nrf/src/rtc.rs | |
| parent | d098952077b8fdc8426754151bb8064214a046fa (diff) | |
Executor API V2.
- It's no longer possible to call run() reentrantly from within a task (soundness issue)
- it's now possible to spawn Send tasks across threads (SendSpawner, #37)
Diffstat (limited to 'embassy-nrf/src/rtc.rs')
| -rw-r--r-- | embassy-nrf/src/rtc.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/embassy-nrf/src/rtc.rs b/embassy-nrf/src/rtc.rs index 015583943..dde0fd4ca 100644 --- a/embassy-nrf/src/rtc.rs +++ b/embassy-nrf/src/rtc.rs | |||
| @@ -40,7 +40,7 @@ mod test { | |||
| 40 | 40 | ||
| 41 | struct AlarmState { | 41 | struct AlarmState { |
| 42 | timestamp: Cell<u64>, | 42 | timestamp: Cell<u64>, |
| 43 | callback: Cell<Option<fn()>>, | 43 | callback: Cell<Option<(fn(*mut ()), *mut ())>>, |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | impl AlarmState { | 46 | impl AlarmState { |
| @@ -159,13 +159,13 @@ impl<T: Instance> RTC<T> { | |||
| 159 | alarm.timestamp.set(u64::MAX); | 159 | alarm.timestamp.set(u64::MAX); |
| 160 | 160 | ||
| 161 | // Call after clearing alarm, so the callback can set another alarm. | 161 | // Call after clearing alarm, so the callback can set another alarm. |
| 162 | alarm.callback.get().map(|f| f()); | 162 | alarm.callback.get().map(|(f, ctx)| f(ctx)); |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | fn set_alarm_callback(&self, n: usize, callback: fn()) { | 165 | fn set_alarm_callback(&self, n: usize, callback: fn(*mut ()), ctx: *mut ()) { |
| 166 | interrupt::free(|cs| { | 166 | interrupt::free(|cs| { |
| 167 | let alarm = &self.alarms.borrow(cs)[n]; | 167 | let alarm = &self.alarms.borrow(cs)[n]; |
| 168 | alarm.callback.set(Some(callback)); | 168 | alarm.callback.set(Some((callback, ctx))); |
| 169 | }) | 169 | }) |
| 170 | } | 170 | } |
| 171 | 171 | ||
| @@ -220,8 +220,8 @@ pub struct Alarm<T: Instance> { | |||
| 220 | } | 220 | } |
| 221 | 221 | ||
| 222 | impl<T: Instance> embassy::time::Alarm for Alarm<T> { | 222 | impl<T: Instance> embassy::time::Alarm for Alarm<T> { |
| 223 | fn set_callback(&self, callback: fn()) { | 223 | fn set_callback(&self, callback: fn(*mut ()), ctx: *mut ()) { |
| 224 | self.rtc.set_alarm_callback(self.n, callback); | 224 | self.rtc.set_alarm_callback(self.n, callback, ctx); |
| 225 | } | 225 | } |
| 226 | 226 | ||
| 227 | fn set(&self, timestamp: u64) { | 227 | fn set(&self, timestamp: u64) { |
