From ddebc93cee1b39eea4cc65a1fdc54dff1d2dc720 Mon Sep 17 00:00:00 2001
From: trilader <trilader@schroedingers-bit.net>
Date: Tue, 20 Aug 2019 18:39:22 +0200
Subject: [PATCH] feat(epicardium): Add API function to clear all LEDs to a
 single color

---
 epicardium/epicardium.h   | 10 ++++++++++
 epicardium/modules/leds.c | 13 +++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/epicardium/epicardium.h b/epicardium/epicardium.h
index 7ecf9b57..325b80d5 100644
--- a/epicardium/epicardium.h
+++ b/epicardium/epicardium.h
@@ -84,6 +84,7 @@ typedef _Bool bool;
 #define API_LEDS_SET_ALL           0x6a
 #define API_LEDS_SET_ALL_HSV       0x6b
 #define API_LEDS_SET_GAMMA_TABLE   0x6c
+#define API_LEDS_CLEAR_ALL         0x6d
 
 #define API_VIBRA_SET              0x70
 #define API_VIBRA_VIBRATE          0x71
@@ -648,6 +649,15 @@ API(API_LEDS_SET_GAMMA_TABLE, void epic_leds_set_gamma_table(
 	uint8_t *gamma_table
 ));
 
+/**
+ * Set all LEDs to a certain RGB color.
+ *
+ * :param uint8_t r: Value for the red color channel.
+ * :param uint8_t g: Value for the green color channel.
+ * :param uint8_t b: Value for the blue color channel.
+ */
+API(API_LEDS_CLEAR_ALL, void epic_leds_clear_all(uint8_t r, uint8_t g, uint8_t b));
+
 /**
  * Sensor Data Streams
  * ===================
diff --git a/epicardium/modules/leds.c b/epicardium/modules/leds.c
index 0faca35e..290fb16d 100644
--- a/epicardium/modules/leds.c
+++ b/epicardium/modules/leds.c
@@ -87,3 +87,16 @@ void epic_leds_set_gamma_table(uint8_t rgb_channel, uint8_t gamma_table[256])
 {
 	leds_set_gamma_table(rgb_channel, gamma_table);
 }
+
+void epic_leds_clear_all(uint8_t r, uint8_t g, uint8_t b)
+{
+	for (int i = 0; i < NUM_LEDS; i++) {
+		if (i == PERSONAL_STATE_LED && personal_state_enabled)
+			continue;
+
+		leds_prep(i, r, g, b);
+	}
+
+	leds_update_power();
+	leds_update();
+}
-- 
GitLab