summaryrefslogtreecommitdiffstats
path: root/keyboards/handwired/promethium/rgbsps.c
diff options
context:
space:
mode:
authorTerryMathews <terry@terrymathews.net>2017-04-08 06:30:54 +0200
committerGitHub <noreply@github.com>2017-04-08 06:30:54 +0200
commit3899bec4b603a0880055c60df534c5a86ad44a52 (patch)
treedd3ac70f403290fafff4bf8005925a3d5eed69cd /keyboards/handwired/promethium/rgbsps.c
parent2a2be010d9d8c10d872c01637f4b4cd263f9bc1b (diff)
parent154305ce1be16b2c8abce5e5d4dee421f295d6b3 (diff)
downloadqmk_firmware-3899bec4b603a0880055c60df534c5a86ad44a52.tar.gz
qmk_firmware-3899bec4b603a0880055c60df534c5a86ad44a52.tar.xz
Merge pull request #1 from qmk/master
Catchup
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);
+}
+