summaryrefslogtreecommitdiffstats
path: root/quantum/rgblight.c
diff options
context:
space:
mode:
authoryiancar <yiangosyiangou@cytanet.com.cy>2018-05-09 05:23:21 +0200
committerJack Humbert <jack.humb@gmail.com>2018-05-09 05:23:21 +0200
commitafacd42368e0dc7627a695508f15598b38429c63 (patch)
tree8228c3f9974282e0f8f506bcce5489616ce3e684 /quantum/rgblight.c
parent23df5fb89a05ead778b25fe1e586e47df6209c6d (diff)
downloadqmk_firmware-afacd42368e0dc7627a695508f15598b38429c63.tar.gz
qmk_firmware-afacd42368e0dc7627a695508f15598b38429c63.tar.xz
Add effect speed support for RGB Matrix *No EEPROM yet* (#2922)
* Added Modular keyboards L,R and NUM Created code modules for the 3 modules of the modular keyboard. Original idea by MechboardsUK. Uses i2c implementation similar to lets split * Remove modular from master This is to fix incorrect branching * Add effect speed support for RGB Matrix *No eeprom yet* Keycodes RGB_SPI and RGB_SPD have been added to increase and decrease effect speed. Speed is not saved in EEPROM yet as per Jack's request. * Update rgb_matrix.c * RGB Matrix speed fix rgblight.h * More fixes for rgb speed. Speed functions declared but not used in rgblight * More travis fixes.. * Another one for travis..
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 @@
#define RGBLIGHT_LIMIT_VAL 255
#endif
+#define MIN(a,b) (((a)<(b))?(a):(b))
+#define MAX(a,b) (((a)>(b))?(a):(b))
+
__attribute__ ((weak))
const uint8_t RGBLED_BREATHING_INTERVALS[] PROGMEM = {30, 20, 10, 5};
__attribute__ ((weak))
@@ -122,6 +125,7 @@ void eeconfig_update_rgblight_default(void) {
rgblight_config.hue = 0;
rgblight_config.sat = 255;
rgblight_config.val = RGBLIGHT_LIMIT_VAL;
+ rgblight_config.speed = 0;
eeconfig_update_rgblight(rgblight_config.raw);
}
void eeconfig_debug_rgblight(void) {
@@ -131,6 +135,7 @@ void eeconfig_debug_rgblight(void) {
dprintf("rgblight_config.hue = %d\n", rgblight_config.hue);
dprintf("rgblight_config.sat = %d\n", rgblight_config.sat);
dprintf("rgblight_config.val = %d\n", rgblight_config.val);
+ dprintf("rgblight_config.speed = %d\n", rgblight_config.speed);
}
void rgblight_init(void) {
@@ -280,6 +285,18 @@ void rgblight_disable(void) {
rgblight_set();
}
+// Deals with the messy details of incrementing an integer
+uint8_t increment( uint8_t value, uint8_t step, uint8_t min, uint8_t max ) {
+ int16_t new_value = value;
+ new_value += step;
+ return MIN( MAX( new_value, min ), max );
+}
+
+uint8_t decrement( uint8_t value, uint8_t step, uint8_t min, uint8_t max ) {
+ int16_t new_value = value;
+ new_value -= step;
+ return MIN( MAX( new_value, min ), max );
+}
void rgblight_increase_hue(void) {
uint16_t hue;
@@ -331,6 +348,15 @@ void rgblight_decrease_val(void) {
}
rgblight_sethsv(rgblight_config.hue, rgblight_config.sat, val);
}
+void rgblight_increase_speed(void) {
+ rgblight_config.speed = increment( rgblight_config.speed, 1, 0, 3 );
+ eeconfig_update_rgblight(rgblight_config.raw);//EECONFIG needs to be increased to support this
+}
+
+void rgblight_decrease_speed(void) {
+ rgblight_config.speed = decrement( rgblight_config.speed, 1, 0, 3 );
+ eeconfig_update_rgblight(rgblight_config.raw);//EECONFIG needs to be increased to support this
+}
void rgblight_sethsv_noeeprom(uint16_t hue, uint8_t sat, uint8_t val) {
inmem_config.raw = rgblight_config.raw;