diff options
author | 2019-09-24 17:20:15 +0200 | |
---|---|---|
committer | 2019-09-24 17:20:15 +0200 | |
commit | 06e6e9dc9dea33d18df968d7399aaeda65c1ef40 (patch) | |
tree | 044962cabbd76201f162d9f059b10333966d8f9e /macros/src/codegen/hardware_tasks.rs | |
parent | 99a45ff28ed524abb62ff0d8f6dbfaa519d52c50 (diff) | |
download | rtic-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.rs | 18 |
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); |