5 Commits

8 changed files with 37 additions and 39 deletions

View File

@@ -27,7 +27,7 @@ embassy-executor = { version = "0.7", features = [
"executor-interrupt" "executor-interrupt"
]} ]}
va108xx-hal = { path = "../../va108xx-hal" } va108xx-hal = "0.9"
va108xx-embassy = { path = "../../va108xx-embassy", default-features = false } va108xx-embassy = { path = "../../va108xx-embassy", default-features = false }
[features] [features]

View File

@@ -22,5 +22,5 @@ rtic-sync = { version = "1.3", features = ["defmt-03"] }
once_cell = {version = "1", default-features = false, features = ["critical-section"]} once_cell = {version = "1", default-features = false, features = ["critical-section"]}
ringbuf = { version = "0.4.7", default-features = false, features = ["portable-atomic"] } ringbuf = { version = "0.4.7", default-features = false, features = ["portable-atomic"] }
va108xx-hal = { version = "0.9", path = "../../va108xx-hal" } va108xx-hal = "0.9"
vorago-reb1 = { path = "../../vorago-reb1" } vorago-reb1 = { path = "../../vorago-reb1" }

View File

@@ -16,7 +16,6 @@ embedded-io = "0.6"
cortex-m-semihosting = "0.5.0" cortex-m-semihosting = "0.5.0"
[dependencies.va108xx-hal] [dependencies.va108xx-hal]
path = "../../va108xx-hal"
version = "0.9" version = "0.9"
features = ["rt", "defmt"] features = ["rt", "defmt"]

View File

@@ -25,12 +25,6 @@ rustup target add thumbv6m-none-eabi
After that, you can use `cargo build` to build the development version of the crate. After that, you can use `cargo build` to build the development version of the crate.
If you have not done this yet, it is recommended to read some of the excellent resources
available to learn Rust:
- [Rust Embedded Book](https://docs.rust-embedded.org/book/)
- [Rust Discovery Book](https://docs.rust-embedded.org/discovery/)
## Setting up your own binary crate ## Setting up your own binary crate
If you have a custom board, you might be interested in setting up a new binary crate for your If you have a custom board, you might be interested in setting up a new binary crate for your
@@ -65,3 +59,11 @@ is contained within the
7. Flashing the board might work differently for different boards and there is usually 7. Flashing the board might work differently for different boards and there is usually
more than one way. You can find example instructions in primary README. more than one way. You can find example instructions in primary README.
## Embedded Rust
If you have not done this yet, it is recommended to read some of the excellent resources available
to learn Rust:
- [Rust Embedded Book](https://docs.rust-embedded.org/book/)
- [Rust Discovery Book](https://docs.rust-embedded.org/discovery/)

View File

@@ -8,6 +8,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [unreleased] ## [unreleased]
## [v0.7.0] 2025-02-13
- Bumped `va108xx-hal` dependency to 0.9
- Minor adjustments to `Button` API.
- `Button`, `Led` and `Leds` now simply wrap a type using a tuple struct.
## [v0.6.0] 2024-09-30 ## [v0.6.0] 2024-09-30
- Added M95M01 EEPROM module/API - Added M95M01 EEPROM module/API

View File

@@ -1,6 +1,6 @@
[package] [package]
name = "vorago-reb1" name = "vorago-reb1"
version = "0.6.0" version = "0.7.0"
authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"] authors = ["Robin Mueller <muellerr@irs.uni-stuttgart.de>"]
edition = "2021" edition = "2021"
description = "Board Support Crate for the Vorago REB1 development board" description = "Board Support Crate for the Vorago REB1 development board"
@@ -19,7 +19,6 @@ bitfield = ">=0.17, <=0.18"
max116xx-10bit = "0.3" max116xx-10bit = "0.3"
[dependencies.va108xx-hal] [dependencies.va108xx-hal]
path = "../va108xx-hal"
version = "0.9" version = "0.9"
features = ["rt"] features = ["rt"]

View File

@@ -11,23 +11,21 @@ use va108xx_hal::{
}; };
#[derive(Debug)] #[derive(Debug)]
pub struct Button { pub struct Button(pub Pin<PA11, InputFloating>);
button: Pin<PA11, InputFloating>,
}
impl Button { impl Button {
pub fn new(pin: Pin<PA11, InputFloating>) -> Button { pub fn new(pin: Pin<PA11, InputFloating>) -> Button {
Button { button: pin } Button(pin)
} }
#[inline] #[inline]
pub fn pressed(&mut self) -> bool { pub fn pressed(&mut self) -> bool {
self.button.is_low().ok().unwrap() self.0.is_low().ok().unwrap()
} }
#[inline] #[inline]
pub fn released(&mut self) -> bool { pub fn released(&mut self) -> bool {
self.button.is_high().ok().unwrap() self.0.is_high().ok().unwrap()
} }
/// Configures an IRQ on edge. /// Configures an IRQ on edge.
@@ -38,7 +36,7 @@ impl Button {
syscfg: Option<&mut pac::Sysconfig>, syscfg: Option<&mut pac::Sysconfig>,
irqsel: Option<&mut pac::Irqsel>, irqsel: Option<&mut pac::Irqsel>,
) { ) {
self.button self.0
.configure_edge_interrupt(edge_type, irq_cfg, syscfg, irqsel); .configure_edge_interrupt(edge_type, irq_cfg, syscfg, irqsel);
} }
@@ -50,7 +48,7 @@ impl Button {
syscfg: Option<&mut pac::Sysconfig>, syscfg: Option<&mut pac::Sysconfig>,
irqsel: Option<&mut pac::Irqsel>, irqsel: Option<&mut pac::Irqsel>,
) { ) {
self.button self.0
.configure_level_interrupt(level, irq_cfg, syscfg, irqsel); .configure_level_interrupt(level, irq_cfg, syscfg, irqsel);
} }
@@ -59,6 +57,6 @@ impl Button {
/// Please note that you still have to set a clock divisor yourself using the /// Please note that you still have to set a clock divisor yourself using the
/// [`va108xx_hal::clock::set_clk_div_register`] function in order for this to work. /// [`va108xx_hal::clock::set_clk_div_register`] function in order for this to work.
pub fn configure_filter_type(&mut self, filter: FilterType, clksel: FilterClkSel) { pub fn configure_filter_type(&mut self, filter: FilterType, clksel: FilterClkSel) {
self.button.configure_filter_type(filter, clksel); self.0.configure_filter_type(filter, clksel);
} }
} }

View File

@@ -15,15 +15,12 @@ pub type LD2 = Pin<PA10, PushPullOutput>;
pub type LD3 = Pin<PA7, PushPullOutput>; pub type LD3 = Pin<PA7, PushPullOutput>;
pub type LD4 = Pin<PA6, PushPullOutput>; pub type LD4 = Pin<PA6, PushPullOutput>;
pub struct Leds { #[derive(Debug)]
leds: [Led; 3], pub struct Leds(pub [Led; 3]);
}
impl Leds { impl Leds {
pub fn new(led_pin1: LD2, led_pin2: LD3, led_pin3: LD4) -> Leds { pub fn new(led_pin1: LD2, led_pin2: LD3, led_pin3: LD4) -> Leds {
Leds { Leds([led_pin1.into(), led_pin2.into(), led_pin3.into()])
leds: [led_pin1.into(), led_pin2.into(), led_pin3.into()],
}
} }
} }
@@ -31,13 +28,13 @@ impl core::ops::Deref for Leds {
type Target = [Led]; type Target = [Led];
fn deref(&self) -> &[Led] { fn deref(&self) -> &[Led] {
&self.leds &self.0
} }
} }
impl core::ops::DerefMut for Leds { impl core::ops::DerefMut for Leds {
fn deref_mut(&mut self) -> &mut [Led] { fn deref_mut(&mut self) -> &mut [Led] {
&mut self.leds &mut self.0
} }
} }
@@ -45,28 +42,25 @@ impl core::ops::Index<usize> for Leds {
type Output = Led; type Output = Led;
fn index(&self, i: usize) -> &Led { fn index(&self, i: usize) -> &Led {
&self.leds[i] &self.0[i]
} }
} }
impl core::ops::IndexMut<usize> for Leds { impl core::ops::IndexMut<usize> for Leds {
fn index_mut(&mut self, i: usize) -> &mut Led { fn index_mut(&mut self, i: usize) -> &mut Led {
&mut self.leds[i] &mut self.0[i]
} }
} }
pub struct Led { #[derive(Debug)]
pin: DynPin, pub struct Led(pub DynPin);
}
macro_rules! ctor { macro_rules! ctor {
($($ldx:ident),+) => { ($($ldx:ident),+) => {
$( $(
impl From<$ldx> for Led { impl From<$ldx> for Led {
fn from(led: $ldx) -> Self { fn from(led: $ldx) -> Self {
Led { Led(led.into())
pin: led.into()
}
} }
} }
)+ )+
@@ -79,18 +73,18 @@ impl Led {
/// Turns the LED off. Setting the pin high actually turns the LED off /// Turns the LED off. Setting the pin high actually turns the LED off
#[inline] #[inline]
pub fn off(&mut self) { pub fn off(&mut self) {
self.pin.set_high().ok(); self.0.set_high().ok();
} }
/// Turns the LED on. Setting the pin low actually turns the LED on /// Turns the LED on. Setting the pin low actually turns the LED on
#[inline] #[inline]
pub fn on(&mut self) { pub fn on(&mut self) {
self.pin.set_low().ok(); self.0.set_low().ok();
} }
/// Toggles the LED /// Toggles the LED
#[inline] #[inline]
pub fn toggle(&mut self) { pub fn toggle(&mut self) {
self.pin.toggle_with_toggle_reg().ok(); self.0.toggle_with_toggle_reg().ok();
} }
} }