Merge pull request #1599 from ilikepi63/main

feature(1355): Add trigger to task, triggered + clear to Event
This commit is contained in:
Dario Nieuwenhuis 2023-06-29 15:53:11 +00:00 committed by GitHub
commit 4feabb13bf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -137,6 +137,11 @@ impl Task {
Self(ptr) Self(ptr)
} }
/// Triggers this task.
pub fn trigger(&mut self) {
unsafe { self.0.as_ptr().write_volatile(1) };
}
pub(crate) fn from_reg<T>(reg: &T) -> Self { pub(crate) fn from_reg<T>(reg: &T) -> Self {
Self(unsafe { NonNull::new_unchecked(reg as *const _ as *mut _) }) Self(unsafe { NonNull::new_unchecked(reg as *const _ as *mut _) })
} }
@ -173,6 +178,16 @@ impl Event {
Self(unsafe { NonNull::new_unchecked(reg as *const _ as *mut _) }) Self(unsafe { NonNull::new_unchecked(reg as *const _ as *mut _) })
} }
/// Describes whether this Event is currently in a triggered state.
pub fn is_triggered(&self) -> bool {
unsafe { self.0.as_ptr().read_volatile() == 1 }
}
/// Clear the current register's triggered state, reverting it to 0.
pub fn clear(&mut self) {
unsafe { self.0.as_ptr().write_volatile(0) };
}
/// Address of publish register for this event. /// Address of publish register for this event.
#[cfg(feature = "_dppi")] #[cfg(feature = "_dppi")]
pub fn publish_reg(&self) -> *mut u32 { pub fn publish_reg(&self) -> *mut u32 {