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