Move rtic macros to repo root, tune xtask

This commit is contained in:
Henrik Tjäder 2023-02-04 16:47:17 +01:00
parent 4124fbdd61
commit 9e445b3583
134 changed files with 31 additions and 29 deletions

View file

@ -0,0 +1,75 @@
use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
use crate::analyze::Analysis;
use crate::syntax::ast::App;
mod assertions;
mod async_dispatchers;
mod hardware_tasks;
mod idle;
mod init;
mod local_resources;
mod local_resources_struct;
mod module;
mod post_init;
mod pre_init;
mod shared_resources;
mod shared_resources_struct;
mod software_tasks;
mod util;
mod main;
// TODO: organize codegen to actual parts of code
// so `main::codegen` generates ALL the code for `fn main`,
// `software_tasks::codegen` generates ALL the code for software tasks etc...
#[allow(clippy::too_many_lines)]
pub fn app(app: &App, analysis: &Analysis) -> TokenStream2 {
// Generate the `main` function
let main = main::codegen(app, analysis);
let init_codegen = init::codegen(app, analysis);
let idle_codegen = idle::codegen(app, analysis);
let shared_resources_codegen = shared_resources::codegen(app, analysis);
let local_resources_codegen = local_resources::codegen(app, analysis);
let hardware_tasks_codegen = hardware_tasks::codegen(app, analysis);
let software_tasks_codegen = software_tasks::codegen(app, analysis);
let async_dispatchers_codegen = async_dispatchers::codegen(app, analysis);
let user_imports = &app.user_imports;
let user_code = &app.user_code;
let name = &app.name;
let device = &app.args.device;
let rt_err = util::rt_err_ident();
quote!(
/// The RTIC application module
pub mod #name {
/// Always include the device crate which contains the vector table
use #device as #rt_err;
#(#user_imports)*
#(#user_code)*
/// User code end
#init_codegen
#idle_codegen
#hardware_tasks_codegen
#software_tasks_codegen
#shared_resources_codegen
#local_resources_codegen
#async_dispatchers_codegen
#main
}
)
}