aboutsummaryrefslogtreecommitdiff
path: root/macros/src
diff options
context:
space:
mode:
authorGravatar Per Lindgren <per.lindgren@ltu.se> 2020-10-24 19:38:49 +0200
committerGravatar Per Lindgren <per.lindgren@ltu.se> 2020-10-29 19:29:46 +0100
commit96cd625223404a3b32a62384055ccd4765f92312 (patch)
treee1190b395650334f834c218ff33583b783f81054 /macros/src
parentd11b2ddd3559b29480b9bbcf9d5b7836de190f77 (diff)
downloadrtic-96cd625223404a3b32a62384055ccd4765f92312.tar.gz
rtic-96cd625223404a3b32a62384055ccd4765f92312.tar.zst
rtic-96cd625223404a3b32a62384055ccd4765f92312.zip
extern task
Diffstat (limited to 'macros/src')
-rw-r--r--macros/src/codegen/hardware_tasks.rs28
-rw-r--r--macros/src/codegen/software_tasks.rs32
2 files changed, 32 insertions, 28 deletions
diff --git a/macros/src/codegen/hardware_tasks.rs b/macros/src/codegen/hardware_tasks.rs
index e5a8deb9..c9d0297e 100644
--- a/macros/src/codegen/hardware_tasks.rs
+++ b/macros/src/codegen/hardware_tasks.rs
@@ -95,19 +95,21 @@ pub fn codegen(
locals_pat = Some(pat);
}
- let attrs = &task.attrs;
- let context = &task.context;
- let stmts = &task.stmts;
- let locals_pat = locals_pat.iter();
- user_tasks.push(quote!(
- #(#attrs)*
- #[allow(non_snake_case)]
- fn #name(#(#locals_pat,)* #context: #name::Context) {
- use rtic::Mutex as _;
-
- #(#stmts)*
- }
- ));
+ if !&task.is_extern {
+ let attrs = &task.attrs;
+ let context = &task.context;
+ let stmts = &task.stmts;
+ let locals_pat = locals_pat.iter();
+ user_tasks.push(quote!(
+ #(#attrs)*
+ #[allow(non_snake_case)]
+ fn #name(#(#locals_pat,)* #context: #name::Context) {
+ use rtic::Mutex as _;
+
+ #(#stmts)*
+ }
+ ));
+ }
}
(mod_app, root, user_tasks)
diff --git a/macros/src/codegen/software_tasks.rs b/macros/src/codegen/software_tasks.rs
index dfba193b..833e338d 100644
--- a/macros/src/codegen/software_tasks.rs
+++ b/macros/src/codegen/software_tasks.rs
@@ -99,21 +99,23 @@ pub fn codegen(
root.push(struct_);
}
- let context = &task.context;
- let attrs = &task.attrs;
- let cfgs = &task.cfgs;
- let stmts = &task.stmts;
- let locals_pat = locals_pat.iter();
- user_tasks.push(quote!(
- #(#attrs)*
- #(#cfgs)*
- #[allow(non_snake_case)]
- fn #name(#(#locals_pat,)* #context: #name::Context #(,#inputs)*) {
- use rtic::Mutex as _;
-
- #(#stmts)*
- }
- ));
+ if !&task.is_extern {
+ let context = &task.context;
+ let attrs = &task.attrs;
+ let cfgs = &task.cfgs;
+ let stmts = &task.stmts;
+ let locals_pat = locals_pat.iter();
+ user_tasks.push(quote!(
+ #(#attrs)*
+ #(#cfgs)*
+ #[allow(non_snake_case)]
+ fn #name(#(#locals_pat,)* #context: #name::Context #(,#inputs)*) {
+ use rtic::Mutex as _;
+
+ #(#stmts)*
+ }
+ ));
+ }
root.push(module::codegen(
Context::SoftwareTask(name),