Merge pull request #1361 from fredizzimo/ergodox_infinity_backlight
Add Ergodox Infinity backlight support
This commit is contained in:
		
						commit
						51a86b85f3
					
				
					 11 changed files with 139 additions and 35 deletions
				
			
		| 
						 | 
				
			
			@ -127,3 +127,17 @@ bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer
 | 
			
		|||
    gdispGSetOrientation(LED_DISPLAY, GDISP_ROTATE_0);
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state) {
 | 
			
		||||
    (void)state;
 | 
			
		||||
    (void)animation;
 | 
			
		||||
    gdispGSetPowerMode(LED_DISPLAY, powerOff);
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state) {
 | 
			
		||||
    (void)state;
 | 
			
		||||
    (void)animation;
 | 
			
		||||
    gdispGSetPowerMode(LED_DISPLAY, powerOn);
 | 
			
		||||
    return false;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -35,6 +35,9 @@ bool led_keyframe_crossfade(keyframe_animation_t* animation, visualizer_state_t*
 | 
			
		|||
bool led_keyframe_mirror_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
 | 
			
		||||
bool led_keyframe_normal_orientation(keyframe_animation_t* animation, visualizer_state_t* state);
 | 
			
		||||
 | 
			
		||||
bool led_keyframe_disable(keyframe_animation_t* animation, visualizer_state_t* state);
 | 
			
		||||
bool led_keyframe_enable(keyframe_animation_t* animation, visualizer_state_t* state);
 | 
			
		||||
 | 
			
		||||
extern keyframe_animation_t led_test_animation;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,8 +58,11 @@ SOFTWARE.
 | 
			
		|||
static visualizer_keyboard_status_t current_status = {
 | 
			
		||||
    .layer = 0xFFFFFFFF,
 | 
			
		||||
    .default_layer = 0xFFFFFFFF,
 | 
			
		||||
    .mods = 0xFF,
 | 
			
		||||
    .leds = 0xFFFFFFFF,
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
    .backlight_level = 0,
 | 
			
		||||
#endif
 | 
			
		||||
    .mods = 0xFF,
 | 
			
		||||
    .suspended = false,
 | 
			
		||||
#ifdef VISUALIZER_USER_DATA_SIZE
 | 
			
		||||
    .user_data = {0}
 | 
			
		||||
| 
						 | 
				
			
			@ -72,6 +75,9 @@ static bool same_status(visualizer_keyboard_status_t* status1, visualizer_keyboa
 | 
			
		|||
        status1->mods == status2->mods &&
 | 
			
		||||
        status1->leds == status2->leds &&
 | 
			
		||||
        status1->suspended == status2->suspended
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
        && status1->backlight_level == status2->backlight_level
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef VISUALIZER_USER_DATA_SIZE
 | 
			
		||||
        && memcmp(status1->user_data, status2->user_data, VISUALIZER_USER_DATA_SIZE) == 0
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -279,6 +285,18 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
 | 
			
		|||
        bool enabled = visualizer_enabled;
 | 
			
		||||
        if (force_update || !same_status(&state.status, ¤t_status)) {
 | 
			
		||||
            force_update = false;
 | 
			
		||||
    #if BACKLIGHT_ENABLE
 | 
			
		||||
            if(current_status.backlight_level != state.status.backlight_level) {
 | 
			
		||||
                if (current_status.backlight_level != 0) {
 | 
			
		||||
                    gdispGSetPowerMode(LED_DISPLAY, powerOn);
 | 
			
		||||
                    uint16_t percent = (uint16_t)current_status.backlight_level * 100 / BACKLIGHT_LEVELS;
 | 
			
		||||
                    gdispGSetBacklight(LED_DISPLAY, percent);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    gdispGSetPowerMode(LED_DISPLAY, powerOff);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
    #endif
 | 
			
		||||
            if (visualizer_enabled) {
 | 
			
		||||
                if (current_status.suspended) {
 | 
			
		||||
                    stop_all_keyframe_animations();
 | 
			
		||||
| 
						 | 
				
			
			@ -309,7 +327,7 @@ static DECLARE_THREAD_FUNCTION(visualizerThread, arg) {
 | 
			
		|||
                update_keyframe_animation(animations[i], &state, delta, &sleep_time);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
#ifdef LED_ENABLE
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
        gdispGFlush(LED_DISPLAY);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -372,7 +390,7 @@ void visualizer_init(void) {
 | 
			
		|||
#ifdef LCD_ENABLE
 | 
			
		||||
    LCD_DISPLAY = get_lcd_display();
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef LED_ENABLE
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
    LED_DISPLAY = get_led_display();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -445,6 +463,9 @@ void visualizer_update(uint32_t default_state, uint32_t state, uint8_t mods, uin
 | 
			
		|||
            .default_layer = default_state,
 | 
			
		||||
            .mods = mods,
 | 
			
		||||
            .leds = leds,
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
            .backlight_level = current_status.backlight_level,
 | 
			
		||||
#endif
 | 
			
		||||
            .suspended = current_status.suspended,
 | 
			
		||||
        };
 | 
			
		||||
#ifdef VISUALIZER_USER_DATA_SIZE
 | 
			
		||||
| 
						 | 
				
			
			@ -467,3 +488,10 @@ void visualizer_resume(void) {
 | 
			
		|||
    current_status.suspended = false;
 | 
			
		||||
    update_status(true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
void backlight_set(uint8_t level) {
 | 
			
		||||
    current_status.backlight_level = level;
 | 
			
		||||
    update_status(true);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,10 @@ SOFTWARE.
 | 
			
		|||
#include "lcd_backlight.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
#include "backlight.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// use this function to merge both real_mods and oneshot_mods in a uint16_t
 | 
			
		||||
uint8_t visualizer_get_mods(void);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -65,9 +69,12 @@ struct keyframe_animation_t;
 | 
			
		|||
typedef struct {
 | 
			
		||||
    uint32_t layer;
 | 
			
		||||
    uint32_t default_layer;
 | 
			
		||||
    uint8_t mods;
 | 
			
		||||
    uint32_t leds; // See led.h for available statuses
 | 
			
		||||
    uint8_t mods;
 | 
			
		||||
    bool suspended;
 | 
			
		||||
#ifdef BACKLIGHT_ENABLE
 | 
			
		||||
    uint8_t backlight_level;
 | 
			
		||||
#endif
 | 
			
		||||
#ifdef VISUALIZER_USER_DATA_SIZE
 | 
			
		||||
    uint8_t user_data[VISUALIZER_USER_DATA_SIZE];
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,9 +42,8 @@ SRC += $(VISUALIZER_DIR)/resources/lcd_logo.c
 | 
			
		|||
OPT_DEFS += -DLCD_BACKLIGHT_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(LED_ENABLE)), yes)
 | 
			
		||||
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
 | 
			
		||||
SRC += $(VISUALIZER_DIR)/led_keyframes.c
 | 
			
		||||
OPT_DEFS += -DLED_ENABLE
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
include $(GFXLIB)/gfx.mk
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue