aboutsummaryrefslogtreecommitdiff
path: root/quantum/rgblight.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/rgblight.c')
-rw-r--r--quantum/rgblight.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/quantum/rgblight.c b/quantum/rgblight.c
index ae1834408..75512e97a 100644
--- a/quantum/rgblight.c
+++ b/quantum/rgblight.c
@@ -27,6 +27,9 @@
27#define RGBLIGHT_LIMIT_VAL 255 27#define RGBLIGHT_LIMIT_VAL 255
28#endif 28#endif
29 29
30#define MIN(a,b) (((a)<(b))?(a):(b))
31#define MAX(a,b) (((a)>(b))?(a):(b))
32
30__attribute__ ((weak)) 33__attribute__ ((weak))
31const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5}; 34const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5};
32__attribute__ ((weak)) 35__attribute__ ((weak))
@@ -122,6 +125,7 @@ void eeconfig_update_rgblight_default(void) {
122 rgblight_config.hue = 0; 125 rgblight_config.hue = 0;
123 rgblight_config.sat = 255; 126 rgblight_config.sat = 255;
124 rgblight_config.val = RGBLIGHT_LIMIT_VAL; 127 rgblight_config.val = RGBLIGHT_LIMIT_VAL;
128 rgblight_config.speed = 0;
125 eeconfig_update_rgblight(rgblight_config.raw); 129 eeconfig_update_rgblight(rgblight_config.raw);
126} 130}
127void eeconfig_debug_rgblight(void) { 131void eeconfig_debug_rgblight(void) {
@@ -131,6 +135,7 @@ void eeconfig_debug_rgblight(void) {
131 dprintf("rgblight_config.hue = %d\n", rgblight_config.hue); 135 dprintf("rgblight_config.hue = %d\n", rgblight_config.hue);
132 dprintf("rgblight_config.sat = %d\n", rgblight_config.sat); 136 dprintf("rgblight_config.sat = %d\n", rgblight_config.sat);
133 dprintf("rgblight_config.val = %d\n", rgblight_config.val); 137 dprintf("rgblight_config.val = %d\n", rgblight_config.val);
138 dprintf("rgblight_config.speed = %d\n", rgblight_config.speed);
134} 139}
135 140
136void rgblight_init(void) { 141void rgblight_init(void) {
@@ -280,6 +285,18 @@ void rgblight_disable(void) {
280 rgblight_set(); 285 rgblight_set();
281} 286}
282 287
288// Deals with the messy details of incrementing an integer
289uint8_t increment( uint8_t value, uint8_t step, uint8_t min, uint8_t max ) {
290 int16_t new_value = value;
291 new_value += step;
292 return MIN( MAX( new_value, min ), max );
293}
294
295uint8_t decrement( uint8_t value, uint8_t step, uint8_t min, uint8_t max ) {
296 int16_t new_value = value;
297 new_value -= step;
298 return MIN( MAX( new_value, min ), max );
299}
283 300
284void rgblight_increase_hue(void) { 301void rgblight_increase_hue(void) {
285 uint16_t hue; 302 uint16_t hue;
@@ -331,6 +348,15 @@ void rgblight_decrease_val(void) {
331 } 348 }
332 rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, val); 349 rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, val);
333} 350}
351void rgblight_increase_speed(void) {
352 rgblight_config.speed = increment( rgblight_config.speed, 1, 0, 3 );
353 eeconfig_update_rgblight(rgblight_config.raw);//EECONFIG needs to be increased to support this
354}
355
356void rgblight_decrease_speed(void) {
357 rgblight_config.speed = decrement( rgblight_config.speed, 1, 0, 3 );
358 eeconfig_update_rgblight(rgblight_config.raw);//EECONFIG needs to be increased to support this
359}
334 360
335void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val) { 361void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val) {
336 inmem_config.raw = rgblight_config.raw; 362 inmem_config.raw = rgblight_config.raw;