aboutsummaryrefslogtreecommitdiff
path: root/macros/src/codegen/hardware_tasks.rs
diff options
context:
space:
mode:
authorGravatar Per <Per Lindgren> 2019-09-24 17:20:15 +0200
committerGravatar Per <Per Lindgren> 2019-09-24 17:20:15 +0200
commit06e6e9dc9dea33d18df968d7399aaeda65c1ef40 (patch)
tree044962cabbd76201f162d9f059b10333966d8f9e /macros/src/codegen/hardware_tasks.rs
parent99a45ff28ed524abb62ff0d8f6dbfaa519d52c50 (diff)
downloadrtic-06e6e9dc9dea33d18df968d7399aaeda65c1ef40.tar.gz
rtic-06e6e9dc9dea33d18df968d7399aaeda65c1ef40.tar.zst
rtic-06e6e9dc9dea33d18df968d7399aaeda65c1ef40.zip
wip, problem with static Context
Diffstat (limited to 'macros/src/codegen/hardware_tasks.rs')
-rw-r--r--macros/src/codegen/hardware_tasks.rs18
1 files changed, 12 insertions, 6 deletions
diff --git a/macros/src/codegen/hardware_tasks.rs b/macros/src/codegen/hardware_tasks.rs
index e6233071..119ef2c9 100644
--- a/macros/src/codegen/hardware_tasks.rs
+++ b/macros/src/codegen/hardware_tasks.rs
@@ -74,10 +74,12 @@ pub fn codegen(
#let_instant
rtfm::export::run(PRIORITY, || {
- hprintln!("here").unwrap();
- // core::pin::Pin::new(crate::#gen_static.assume_init()).resume();
- // let stat = &mut core::mem::transmute::<_,#gen_type>(crate::#gen_static);
- core::pin::Pin::new(#gen_static.as_mut_ptr()).resume();
+ // TODO: Remove trace
+ hprintln!("interrupt dispatch").unwrap();
+ // TODO: possible compiler bug
+ // core::pin::Pin::new(#gen_static.as_mut_ptr()).resume();
+ let mut g: &mut dyn Generator<Yield = (), Return = !> = &mut *#gen_static.as_mut_ptr();
+ core::pin::Pin::new_unchecked(&mut *g).resume();
});
}
));
@@ -129,8 +131,12 @@ pub fn codegen(
// `${task}Locals`
let mut locals_pat = None;
if !task.locals.is_empty() {
- let (struct_, pat) =
- locals::codegen(Context::HardwareTask(name), &task.locals, core, app);
+ let (struct_, pat) = locals::codegen(
+ Context::HardwareTask(name),
+ &task.locals,
+ core,
+ app,
+ );
root.push(struct_);
locals_pat = Some(pat);