mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-26 05:29:38 +01:00
97 lines
1.7 KiB
Markdown
97 lines
1.7 KiB
Markdown
|
# Migrating from v0.5.x to v0.6.0
|
||
|
|
||
|
This section describes how to upgrade from v0.5.x to v0.6.0 of the RTIC framework.
|
||
|
|
||
|
### `Cargo.toml` - version bump
|
||
|
|
||
|
Change the version of `cortex-m-rtic` to `"0.6.0"`.
|
||
|
|
||
|
### Module instead of Const
|
||
|
|
||
|
With the support of attributes on modules the `const APP` workaround is not needed.
|
||
|
|
||
|
Change
|
||
|
|
||
|
``` rust
|
||
|
#[rtic::app(/* .. */)]
|
||
|
const APP: () = {
|
||
|
[code here]
|
||
|
};
|
||
|
```
|
||
|
|
||
|
into
|
||
|
|
||
|
``` rust
|
||
|
#[rtic::app(/* .. */)]
|
||
|
mod app {
|
||
|
[code here]
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Now that a regular Rust module is used it means it is possible to have custom
|
||
|
user code within that module.
|
||
|
Additionally, it means that `use`-statements for resources etc may be required.
|
||
|
|
||
|
### Init always returns late resources
|
||
|
|
||
|
In order to make the API more symmetric the #[init]-task always returns a late resource.
|
||
|
|
||
|
From this:
|
||
|
|
||
|
``` rust
|
||
|
#[rtic::app(device = lm3s6965)]
|
||
|
mod app {
|
||
|
#[init]
|
||
|
fn init(_: init::Context) {
|
||
|
rtic::pend(Interrupt::UART0);
|
||
|
}
|
||
|
[more code]
|
||
|
}
|
||
|
```
|
||
|
|
||
|
to this:
|
||
|
|
||
|
``` rust
|
||
|
#[rtic::app(device = lm3s6965)]
|
||
|
mod app {
|
||
|
#[init]
|
||
|
fn init(_: init::Context) -> init::LateResources {
|
||
|
rtic::pend(Interrupt::UART0);
|
||
|
|
||
|
init::LateResources {}
|
||
|
}
|
||
|
[more code]
|
||
|
}
|
||
|
```
|
||
|
|
||
|
### Resources struct - #[resources]
|
||
|
|
||
|
Previously the RTIC resources had to be in in a struct named exactly "Resources":
|
||
|
|
||
|
``` rust
|
||
|
struct Resources {
|
||
|
// Resources defined in here
|
||
|
}
|
||
|
```
|
||
|
|
||
|
With RTIC v0.6.0 the resources struct is annotated similarly like
|
||
|
`#[task]`, `#[init]`, `#[idle]`: with an attribute `#[resources]`
|
||
|
|
||
|
``` rust
|
||
|
#[resources]
|
||
|
struct Resources {
|
||
|
// Resources defined in here
|
||
|
}
|
||
|
```
|
||
|
|
||
|
In fact, the name of the struct is now up to the developer:
|
||
|
|
||
|
``` rust
|
||
|
#[resources]
|
||
|
struct whateveryouwant {
|
||
|
// Resources defined in here
|
||
|
}
|
||
|
```
|
||
|
|
||
|
would work equally well.
|