summaryrefslogtreecommitdiff
path: root/keyboards/handwired/promethium/rgbsps.c
diff options
context:
space:
mode:
authormilestogo <milestogo@users.noreply.github.com>2017-03-08 15:51:30 -0800
committermilestogo <milestogo@users.noreply.github.com>2017-03-08 15:51:30 -0800
commitfeb858c5a9afff06ff54ec401359f8bfd5abdd73 (patch)
treecf61bfad47984bb4987540404f0ec349defbff1a /keyboards/handwired/promethium/rgbsps.c
parentb5bfb5104b63766ab9a54509302a3f4b0b1d7b16 (diff)
parentffb04bad660ba7c487e4b923e4391b6c7dd5eddd (diff)
Merge branch 'master' into sculpt2
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 ea922ec3fd..f30badd356 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);
+}
+