From 02d06b8f4523f2d07ec7daacdbd9bc89b73b872c Mon Sep 17 00:00:00 2001
From: Astro <astro@spaceboyz.net>
Date: Mon, 22 Jul 2019 01:44:17 +0200
Subject: [PATCH] add card10::leds

---
 card10/src/leds.rs   | 30 ++++++++++++++++++++++++++++++
 card10/src/lib.rs    |  1 +
 watchapp/src/main.rs |  8 +++++++-
 3 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 card10/src/leds.rs

diff --git a/card10/src/leds.rs b/card10/src/leds.rs
new file mode 100644
index 00000000..053bdd66
--- /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 e738d466..163ce14d 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 478bd4c7..7d8a6458 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;
     }
 }
-- 
GitLab