1
0
Fork 0

Add 'rgblight_disable' and 'rgblight_setrgb_at/rgblight_sethsv_at'

Refactors rgblight_toggle to use rgblight_enable or rgblight_disable
Use 'rgblight_setrgb_at/rgblight_sethsv_at' to control an individual LED
This commit is contained in:
Colin T.A. Gray 2017-12-05 11:56:15 -07:00 committed by Jack Humbert
parent 1620d78e73
commit 16546ee06f
3 changed files with 52 additions and 11 deletions

View file

@ -245,17 +245,12 @@ void rgblight_mode(uint8_t mode) {
}
void rgblight_toggle(void) {
rgblight_config.enable ^= 1;
eeconfig_update_rgblight(rgblight_config.raw);
xprintf("rgblight toggle: rgblight_config.enable = %u\n", rgblight_config.enable);
xprintf("rgblight toggle: rgblight_config.enable = %u\n", !rgblight_config.enable);
if (rgblight_config.enable) {
rgblight_mode(rgblight_config.mode);
} else {
#ifdef RGBLIGHT_ANIMATIONS
rgblight_timer_disable();
#endif
_delay_ms(50);
rgblight_set();
rgblight_disable();
}
else {
rgblight_enable();
}
}
@ -266,6 +261,17 @@ void rgblight_enable(void) {
rgblight_mode(rgblight_config.mode);
}
void rgblight_disable(void) {
rgblight_config.enable = 0;
eeconfig_update_rgblight(rgblight_config.raw);
xprintf("rgblight disable: rgblight_config.enable = %u\n", rgblight_config.enable);
#ifdef RGBLIGHT_ANIMATIONS
rgblight_timer_disable();
#endif
_delay_ms(50);
rgblight_set();
}
void rgblight_increase_hue(void) {
uint16_t hue;
@ -365,7 +371,8 @@ void rgblight_sethsv(uint16_t hue, uint8_t sat, uint8_t val) {
}
void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b) {
// dprintf("rgblight set rgb: %u,%u,%u\n", r,g,b);
if (!rgblight_config.enable) { return; }
for (uint8_t i = 0; i < RGBLED_NUM; i++) {
led[i].r = r;
led[i].g = g;
@ -374,6 +381,23 @@ void rgblight_setrgb(uint8_t r, uint8_t g, uint8_t b) {
rgblight_set();
}
void rgblight_setrgb_at(uint8_t r, uint8_t g, uint8_t b, uint8_t index) {
if (!rgblight_config.enable || index >= RGBLED_NUM) { return; }
led[index].r = r;
led[index].g = g;
led[index].b = b;
rgblight_set();
}
void rgblight_sethsv_at(uint16_t hue, uint8_t sat, uint8_t val, uint8_t index) {
if (!rgblight_config.enable) { return; }
LED_TYPE tmp_led;
sethsv(hue, sat, val, &tmp_led);
rgblight_setrgb_at(tmp_led.r, tmp_led.g, tmp_led.b, index);
}
#ifndef RGBLIGHT_CUSTOM_DRIVER
void rgblight_set(void) {
if (rgblight_config.enable) {