aboutsummaryrefslogtreecommitdiff
path: root/quantum/visualizer
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2017-06-03 21:14:26 +0300
committerFred Sundvik <fsundvik@gmail.com>2017-06-03 21:14:26 +0300
commiteffffa33a503a093be4fa00b570df7a4e2996edc (patch)
tree0aedf482526971833c3eadc1bf1977a670b7e415 /quantum/visualizer
parent0f9bfafb9e1fea118a0a61ff2baaff73b05ec157 (diff)
downloadqmk_firmware-effffa33a503a093be4fa00b570df7a4e2996edc.tar.gz
qmk_firmware-effffa33a503a093be4fa00b570df7a4e2996edc.zip
Backlight level handling for the visualizer
Diffstat (limited to 'quantum/visualizer')
-rw-r--r--quantum/visualizer/visualizer.c30
-rw-r--r--quantum/visualizer/visualizer.h9
2 files changed, 37 insertions, 2 deletions
diff --git a/quantum/visualizer/visualizer.c b/quantum/visualizer/visualizer.c
index cd2dff6a6..29db7005c 100644
--- a/quantum/visualizer/visualizer.c
+++ b/quantum/visualizer/visualizer.c
@@ -58,8 +58,11 @@ SOFTWARE.
58static visualizer_keyboard_status_t current_status = { 58static visualizer_keyboard_status_t current_status = {
59 .layer = 0xFFFFFFFF, 59 .layer = 0xFFFFFFFF,
60 .default_layer = 0xFFFFFFFF, 60 .default_layer = 0xFFFFFFFF,
61 .mods = 0xFF,
62 .leds = 0xFFFFFFFF, 61 .leds = 0xFFFFFFFF,
62#ifdef BACKLIGHT_ENABLE
63 .backlight_level = 0,
64#endif
65 .mods = 0xFF,
63 .suspended = false, 66 .suspended = false,
64#ifdef VISUALIZER_USER_DATA_SIZE 67#ifdef VISUALIZER_USER_DATA_SIZE
65 .user_data = {0} 68 .user_data = {0}
@@ -72,6 +75,9 @@ static bool same_status(visualizer_keyboard_status_t* status1, visualizer_keyboa
72 status1->mods == status2->mods && 75 status1->mods == status2->mods &&
73 status1->leds == status2->leds && 76 status1->leds == status2->leds &&
74 status1->suspended == status2->suspended 77 status1->suspended == status2->suspended
78#ifdef BACKLIGHT_ENABLE
79 && status1->backlight_level == status2->backlight_level
80#endif
75#ifdef VISUALIZER_USER_DATA_SIZE 81#ifdef VISUALIZER_USER_DATA_SIZE
76 && memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0 82 && memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0
77#endif 83#endif
@@ -279,6 +285,18 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
279 bool enabled = visualizer_enabled; 285 bool enabled = visualizer_enabled;
280 if (force_update || !same_status(&state.status, &current_status)) { 286 if (force_update || !same_status(&state.status, &current_status)) {
281 force_update = false; 287 force_update = false;
288 #if BACKLIGHT_ENABLE
289 if(current_status.backlight_level != state.status.backlight_level) {
290 if (current_status.backlight_level != 0) {
291 gdispGSetPowerMode(LED_DISPLAY, powerOn);
292 uint16_t percent = (uint16_t)current_status.backlight_level * 100 / 255;
293 gdispGSetBacklight(LED_DISPLAY, percent);
294 }
295 else {
296 gdispGSetPowerMode(LED_DISPLAY, powerOff);
297 }
298 }
299 #endif
282 if (visualizer_enabled) { 300 if (visualizer_enabled) {
283 if (current_status.suspended) { 301 if (current_status.suspended) {
284 stop_all_keyframe_animations(); 302 stop_all_keyframe_animations();
@@ -445,6 +463,9 @@ void visualizer_update(uint32_t default_state, uint32_t state, uint8_t mods, uin
445 .default_layer = default_state, 463 .default_layer = default_state,
446 .mods = mods, 464 .mods = mods,
447 .leds = leds, 465 .leds = leds,
466#ifdef BACKLIGHT_ENABLE
467 .backlight_level = current_status.backlight_level,
468#endif
448 .suspended = current_status.suspended, 469 .suspended = current_status.suspended,
449 }; 470 };
450#ifdef VISUALIZER_USER_DATA_SIZE 471#ifdef VISUALIZER_USER_DATA_SIZE
@@ -467,3 +488,10 @@ void visualizer_resume(void) {
467 current_status.suspended = false; 488 current_status.suspended = false;
468 update_status(true); 489 update_status(true);
469} 490}
491
492#ifdef BACKLIGHT_ENABLE
493void backlight_set(uint8_t level) {
494 current_status.backlight_level = level;
495 update_status(true);
496}
497#endif
diff --git a/quantum/visualizer/visualizer.h b/quantum/visualizer/visualizer.h
index d6f279e10..1c567440f 100644
--- a/quantum/visualizer/visualizer.h
+++ b/quantum/visualizer/visualizer.h
@@ -34,6 +34,10 @@ SOFTWARE.
34#include "lcd_backlight.h" 34#include "lcd_backlight.h"
35#endif 35#endif
36 36
37#ifdef BACKLIGHT_ENABLE
38#include "backlight.h"
39#endif
40
37// use this function to merge both real_mods and oneshot_mods in a uint16_t 41// use this function to merge both real_mods and oneshot_mods in a uint16_t
38uint8_t visualizer_get_mods(void); 42uint8_t visualizer_get_mods(void);
39 43
@@ -65,9 +69,12 @@ struct keyframe_animation_t;
65typedef struct { 69typedef struct {
66 uint32_t layer; 70 uint32_t layer;
67 uint32_t default_layer; 71 uint32_t default_layer;
68 uint8_t mods;
69 uint32_t leds; // See led.h for available statuses 72 uint32_t leds; // See led.h for available statuses
73 uint8_t mods;
70 bool suspended; 74 bool suspended;
75#ifdef BACKLIGHT_ENABLE
76 uint8_t backlight_level;
77#endif
71#ifdef VISUALIZER_USER_DATA_SIZE 78#ifdef VISUALIZER_USER_DATA_SIZE
72 uint8_t user_data[VISUALIZER_USER_DATA_SIZE]; 79 uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
73#endif 80#endif