mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-23 20:22:51 +01:00
allow handlers to be named 'main'
`#[init]`, `#[idle]` and `#[task]` handlers can now be named `main` fixes #311
This commit is contained in:
parent
1e827e24d0
commit
0ad311074e
7 changed files with 82 additions and 3 deletions
20
examples/t-htask-main.rs
Normal file
20
examples/t-htask-main.rs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#![deny(unsafe_code)]
|
||||||
|
#![deny(warnings)]
|
||||||
|
#![no_main]
|
||||||
|
#![no_std]
|
||||||
|
|
||||||
|
use cortex_m_semihosting::debug;
|
||||||
|
use panic_semihosting as _;
|
||||||
|
|
||||||
|
#[rtfm::app(device = lm3s6965)]
|
||||||
|
const APP: () = {
|
||||||
|
#[init]
|
||||||
|
fn init(_: init::Context) {
|
||||||
|
rtfm::pend(lm3s6965::Interrupt::UART0)
|
||||||
|
}
|
||||||
|
|
||||||
|
#[task(binds = UART0)]
|
||||||
|
fn main(_: main::Context) {
|
||||||
|
debug::exit(debug::EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
};
|
20
examples/t-idle-main.rs
Normal file
20
examples/t-idle-main.rs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#![deny(unsafe_code)]
|
||||||
|
#![deny(warnings)]
|
||||||
|
#![no_main]
|
||||||
|
#![no_std]
|
||||||
|
|
||||||
|
use cortex_m_semihosting::debug;
|
||||||
|
use panic_semihosting as _;
|
||||||
|
|
||||||
|
#[rtfm::app(device = lm3s6965)]
|
||||||
|
const APP: () = {
|
||||||
|
#[init]
|
||||||
|
fn init(_: init::Context) {
|
||||||
|
}
|
||||||
|
|
||||||
|
#[idle]
|
||||||
|
fn main(_: main::Context) -> ! {
|
||||||
|
debug::exit(debug::EXIT_SUCCESS);
|
||||||
|
loop {}
|
||||||
|
}
|
||||||
|
};
|
15
examples/t-init-main.rs
Normal file
15
examples/t-init-main.rs
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#![deny(unsafe_code)]
|
||||||
|
#![deny(warnings)]
|
||||||
|
#![no_main]
|
||||||
|
#![no_std]
|
||||||
|
|
||||||
|
use cortex_m_semihosting::debug;
|
||||||
|
use panic_semihosting as _;
|
||||||
|
|
||||||
|
#[rtfm::app(device = lm3s6965)]
|
||||||
|
const APP: () = {
|
||||||
|
#[init]
|
||||||
|
fn main(_: main::Context) {
|
||||||
|
debug::exit(debug::EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
};
|
24
examples/t-stask-main.rs
Normal file
24
examples/t-stask-main.rs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#![deny(unsafe_code)]
|
||||||
|
#![deny(warnings)]
|
||||||
|
#![no_main]
|
||||||
|
#![no_std]
|
||||||
|
|
||||||
|
use cortex_m_semihosting::debug;
|
||||||
|
use panic_semihosting as _;
|
||||||
|
|
||||||
|
#[rtfm::app(device = lm3s6965)]
|
||||||
|
const APP: () = {
|
||||||
|
#[init(spawn = [main])]
|
||||||
|
fn init(cx: init::Context) {
|
||||||
|
cx.spawn.main().ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
#[task]
|
||||||
|
fn main(_: main::Context) {
|
||||||
|
debug::exit(debug::EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
fn UART0();
|
||||||
|
}
|
||||||
|
};
|
|
@ -141,7 +141,7 @@ pub fn codegen(app: &App, analysis: &Analysis, extra: &Extra) -> Vec<TokenStream
|
||||||
#let_instant
|
#let_instant
|
||||||
#fq.split().0.enqueue_unchecked(index);
|
#fq.split().0.enqueue_unchecked(index);
|
||||||
let priority = &rtfm::export::Priority::new(PRIORITY);
|
let priority = &rtfm::export::Priority::new(PRIORITY);
|
||||||
#name(
|
crate::#name(
|
||||||
#locals_new
|
#locals_new
|
||||||
#name::Context::new(priority #instant)
|
#name::Context::new(priority #instant)
|
||||||
#(,#pats)*
|
#(,#pats)*
|
||||||
|
|
|
@ -72,7 +72,7 @@ pub fn codegen(
|
||||||
));
|
));
|
||||||
|
|
||||||
let locals_new = locals_new.iter();
|
let locals_new = locals_new.iter();
|
||||||
let call_idle = quote!(#name(
|
let call_idle = quote!(crate::#name(
|
||||||
#(#locals_new,)*
|
#(#locals_new,)*
|
||||||
#name::Context::new(&rtfm::export::Priority::new(0))
|
#name::Context::new(&rtfm::export::Priority::new(0))
|
||||||
));
|
));
|
||||||
|
|
|
@ -105,7 +105,7 @@ pub fn codegen(
|
||||||
|
|
||||||
let locals_new = locals_new.iter();
|
let locals_new = locals_new.iter();
|
||||||
let call_init =
|
let call_init =
|
||||||
Some(quote!(let late = #name(#(#locals_new,)* #name::Context::new(core.into()));));
|
Some(quote!(let late = crate::#name(#(#locals_new,)* #name::Context::new(core.into()));));
|
||||||
|
|
||||||
root_init.push(module::codegen(Context::Init(core), needs_lt, app, extra));
|
root_init.push(module::codegen(Context::Init(core), needs_lt, app, extra));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue