summaryrefslogtreecommitdiffstats
path: root/keyboards/handwired/promethium/rgbsps.c
diff options
context:
space:
mode:
authorluc wastiaux <luc.wastiaux@airpost.net>2017-02-13 00:44:28 +0100
committerluc wastiaux <luc.wastiaux@airpost.net>2017-02-13 00:44:28 +0100
commit352d79e1fbbd7eea65793abb261dd544fec7bb1c (patch)
treee006ee8098826054d93939b2a59521f6c032e10d /keyboards/handwired/promethium/rgbsps.c
parent5f8535b356e66975e20f1a573ab104db75f8b33c (diff)
parent4505db5d0e0c2423645cc9117f29b942d4841c5b (diff)
downloadqmk_firmware-352d79e1fbbd7eea65793abb261dd544fec7bb1c.tar.gz
qmk_firmware-352d79e1fbbd7eea65793abb261dd544fec7bb1c.tar.xz
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'keyboards/handwired/promethium/rgbsps.c')
-rw-r--r--keyboards/handwired/promethium/rgbsps.c51
1 files changed, 50 insertions, 1 deletions
diff --git a/keyboards/handwired/promethium/rgbsps.c b/keyboards/handwired/promethium/rgbsps.c
index ea922ec3f..f30badd35 100644
--- a/keyboards/handwired/promethium/rgbsps.c
+++ b/keyboards/handwired/promethium/rgbsps.c
@@ -21,4 +21,53 @@ void rgbsps_turnoff(void) {
void rgbsps_send(void) {
ws2812_setleds(led, RGBSPS_NUM);
-} \ No newline at end of file
+}
+
+void rgbsps_sethsv(uint8_t index, uint16_t hue, uint8_t sat, uint8_t val) {
+ uint8_t r = 0, g = 0, b = 0, base, color;
+
+ if (sat == 0) { // Acromatic color (gray). Hue doesn't mind.
+ r = val;
+ g = val;
+ b = val;
+ } else {
+ base = ((255 - sat) * val) >> 8;
+ color = (val - base) * (hue % 60) / 60;
+
+ switch (hue / 60) {
+ case 0:
+ r = val;
+ g = base + color;
+ b = base;
+ break;
+ case 1:
+ r = val - color;
+ g = val;
+ b = base;
+ break;
+ case 2:
+ r = base;
+ g = val;
+ b = base + color;
+ break;
+ case 3:
+ r = base;
+ g = val - color;
+ b = val;
+ break;
+ case 4:
+ r = base + color;
+ g = base;
+ b = val;
+ break;
+ case 5:
+ r = val;
+ g = base;
+ b = val - color;
+ break;
+ }
+ }
+
+ rgbsps_set(index, r, g, b);
+}
+