diff --git a/card10/src/leds.rs b/card10/src/leds.rs new file mode 100644 index 0000000000000000000000000000000000000000..053bdd663eb09ac5a0c4315a83768a5a377761ce --- /dev/null +++ b/card10/src/leds.rs @@ -0,0 +1,30 @@ +#[link(name = "card10")] +extern { + fn leds_init(); + fn leds_update(); + fn leds_set_dim(led: u8,dim: u8); + fn leds_set(led: u8,r: u8,g: u8,b: u8); + fn leds_set_hsv(led: u8, h: f32, s: f32, v: f32); +} + +pub const LEDS: u8 = 15; + +pub fn init() { + unsafe { leds_init(); } +} + +pub fn update() { + unsafe { leds_update(); } +} + +pub fn set_dim(led: u8,dim: u8) { + unsafe { leds_set_dim(led, dim); } +} + +pub fn set(led: u8,r: u8,g: u8,b: u8) { + unsafe { leds_set(led, r, g, b); } +} + +pub fn set_hsv(led: u8, h: f32, s: f32, v: f32) { + unsafe { leds_set_hsv(led, h, s, v); } +} diff --git a/card10/src/lib.rs b/card10/src/lib.rs index e738d46683899f8ad939bec91fb4ac0b83204c96..163ce14dc0a12ef10300559b4b625e5359f07ad2 100644 --- a/card10/src/lib.rs +++ b/card10/src/lib.rs @@ -5,6 +5,7 @@ pub use cortex_m_rt as _; pub use cortex_m_rt::entry; pub mod lcd; +pub mod leds; #[link(name = "card10")] extern { diff --git a/watchapp/src/main.rs b/watchapp/src/main.rs index 478bd4c7ee7b1f864f7e67d51c9d114138662494..7d8a6458a049717f4294cc4243d14a9e6289367c 100644 --- a/watchapp/src/main.rs +++ b/watchapp/src/main.rs @@ -2,12 +2,13 @@ #![no_main] use panic_abort as _; -use card10::{entry, lcd}; +use card10::{entry, lcd, leds}; #[entry] fn main() -> ! { card10::init(); + leds::init(); lcd::set_backlight(1000); let mut t = 0; @@ -23,6 +24,11 @@ fn main() -> ! { } lcd::update(); + for led in 0..leds::LEDS { + leds::set(led, ((t << 2) & 0xFF) as u8, ((t << 1) & 0xFF) as u8, ((t >> 2) & 0xFF) as u8); + } + leds::update(); + t += 1; } }