From ef5307d83a1d62df0569d78db75d4006147c927d Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Tue, 6 Jul 2021 22:47:48 +0200 Subject: Minimal app now compiles --- macros/src/codegen/software_tasks.rs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'macros/src/codegen/software_tasks.rs') diff --git a/macros/src/codegen/software_tasks.rs b/macros/src/codegen/software_tasks.rs index 0372e8e..da594e7 100644 --- a/macros/src/codegen/software_tasks.rs +++ b/macros/src/codegen/software_tasks.rs @@ -5,7 +5,7 @@ use rtic_syntax::{ast::App, Context}; use crate::{ analyze::Analysis, check::Extra, - codegen::{locals, module, resources_struct, util}, + codegen::{local_resources_struct, module, shared_resources_struct, util}, }; pub fn codegen( @@ -91,35 +91,38 @@ pub fn codegen( // `${task}Resources` let mut needs_lt = false; - if !task.args.resources.is_empty() { + + // TODO: Fix locals + // `${task}Locals` + if !task.args.local_resources.is_empty() { let (item, constructor) = - resources_struct::codegen(Context::SoftwareTask(name), &mut needs_lt, app); + local_resources_struct::codegen(Context::SoftwareTask(name), &mut needs_lt, app); root.push(item); mod_app.push(constructor); } - // `${task}Locals` - let mut locals_pat = None; - if !task.locals.is_empty() { - let (struct_, pat) = locals::codegen(Context::SoftwareTask(name), &task.locals, app); + if !task.args.shared_resources.is_empty() { + let (item, constructor) = + shared_resources_struct::codegen(Context::SoftwareTask(name), &mut needs_lt, app); - locals_pat = Some(pat); - root.push(struct_); + root.push(item); + + mod_app.push(constructor); } + 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)*) { + fn #name(#context: #name::Context #(,#inputs)*) { use rtic::Mutex as _; use rtic::mutex_prelude::*; -- cgit v1.2.3 From d7393c5b27fc95f3569d12137ee0c4d03ff7e2ba Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Wed, 7 Jul 2021 21:03:56 +0200 Subject: Full local resource syntax working --- macros/src/codegen/software_tasks.rs | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'macros/src/codegen/software_tasks.rs') diff --git a/macros/src/codegen/software_tasks.rs b/macros/src/codegen/software_tasks.rs index da594e7..6941d9a 100644 --- a/macros/src/codegen/software_tasks.rs +++ b/macros/src/codegen/software_tasks.rs @@ -90,13 +90,16 @@ pub fn codegen( )); // `${task}Resources` - let mut needs_lt = false; + let mut shared_needs_lt = false; + let mut local_needs_lt = false; - // TODO: Fix locals // `${task}Locals` if !task.args.local_resources.is_empty() { - let (item, constructor) = - local_resources_struct::codegen(Context::SoftwareTask(name), &mut needs_lt, app); + let (item, constructor) = local_resources_struct::codegen( + Context::SoftwareTask(name), + &mut local_needs_lt, + app, + ); root.push(item); @@ -104,15 +107,17 @@ pub fn codegen( } if !task.args.shared_resources.is_empty() { - let (item, constructor) = - shared_resources_struct::codegen(Context::SoftwareTask(name), &mut needs_lt, app); + let (item, constructor) = shared_resources_struct::codegen( + Context::SoftwareTask(name), + &mut shared_needs_lt, + app, + ); root.push(item); mod_app.push(constructor); } - if !&task.is_extern { let context = &task.context; let attrs = &task.attrs; @@ -133,7 +138,8 @@ pub fn codegen( root.push(module::codegen( Context::SoftwareTask(name), - needs_lt, + shared_needs_lt, + local_needs_lt, app, analysis, extra, -- cgit v1.2.3 From 8f3704378295fe8007290dbddbc1f4946ac599f9 Mon Sep 17 00:00:00 2001 From: Emil Fresk Date: Thu, 8 Jul 2021 23:18:44 +0200 Subject: Cleanup from review (needs releases to compile) --- macros/src/codegen/software_tasks.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'macros/src/codegen/software_tasks.rs') diff --git a/macros/src/codegen/software_tasks.rs b/macros/src/codegen/software_tasks.rs index 6941d9a..cfd21e4 100644 --- a/macros/src/codegen/software_tasks.rs +++ b/macros/src/codegen/software_tasks.rs @@ -45,7 +45,7 @@ pub fn codegen( quote!(rtic::export::Queue(unsafe { rtic::export::iQueue::u8_sc() })), - Box::new(|| util::link_section_uninit(true)), + Box::new(|| util::link_section_uninit()), ) }; mod_app.push(quote!( -- cgit v1.2.3