diff options
Diffstat (limited to 'quantum')
| -rw-r--r-- | quantum/led_matrix.c | 47 | ||||
| -rw-r--r-- | quantum/led_matrix.h | 3 | ||||
| -rw-r--r-- | quantum/led_matrix_drivers.c | 3 | 
3 files changed, 25 insertions, 28 deletions
| diff --git a/quantum/led_matrix.c b/quantum/led_matrix.c index 3b284990d9..f849d478dd 100644 --- a/quantum/led_matrix.c +++ b/quantum/led_matrix.c @@ -55,6 +55,9 @@ led_config_t led_matrix_config;  bool g_suspend_state = false; +// Last uniform brightness level. +uint8_t g_uniform_brightness = 0; +  // Global tick at 20 Hz  uint32_t g_tick = 0; @@ -118,6 +121,7 @@ void led_matrix_set_index_value_all(uint8_t value) {  }  bool process_led_matrix(uint16_t keycode, keyrecord_t *record) { +/* FIXME: Why you comment out skully?      if (record->event.pressed) {          uint8_t led[8], led_count;          map_row_column_to_led(record->event.key.row, record->event.key.col, led, &led_count); @@ -141,6 +145,7 @@ bool process_led_matrix(uint16_t keycode, keyrecord_t *record) {          g_any_key_hit = 255;          #endif      } +*/      return true;  } @@ -155,22 +160,20 @@ void led_matrix_all_off(void) {  // Uniform brightness  void led_matrix_uniform_brightness(void) { -    led_matrix_set_index_value_all(led_matrix_config.val); +    uint8_t current_brightness = (LED_MATRIX_MAXIMUM_BRIGHTNESS / BACKLIGHT_LEVELS) * led_matrix_config.val; +    if (current_brightness != g_uniform_brightness) { +        g_uniform_brightness = current_brightness; +        led_matrix_set_index_value_all(current_brightness); +    }  }  void led_matrix_custom(void) {}  void led_matrix_task(void) { -  #ifdef TRACK_PREVIOUS_EFFECT -      static uint8_t toggle_enable_last = 255; -  #endif -	if (!led_matrix_config.enable) { -     led_matrix_all_off(); -     led_matrix_indicators(); -     #ifdef TRACK_PREVIOUS_EFFECT -         toggle_enable_last = led_matrix_config.enable; -     #endif -     return; +    if (!led_matrix_config.enable) { +        led_matrix_all_off(); +        led_matrix_indicators(); +        return;      }      // delay 1 second before driving LEDs or doing anything else @@ -187,6 +190,7 @@ void led_matrix_task(void) {          g_any_key_hit++;      } +/* FIXME: WHY YOU COMMENT OUT?!      for (int led = 0; led < LED_DRIVER_LED_COUNT; led++) {          if (g_key_hit[led] < 255) {              if (g_key_hit[led] == 254) @@ -200,24 +204,13 @@ void led_matrix_task(void) {          led_matrix_uniform_brightness();          return;      } - +*/      // Ideally we would also stop sending zeros to the LED driver PWM buffers      // while suspended and just do a software shutdown. This is a cheap hack for now.      bool suspend_backlight = ((g_suspend_state && LED_DISABLE_WHEN_USB_SUSPENDED) ||              (LED_DISABLE_AFTER_TIMEOUT > 0 && g_any_key_hit > LED_DISABLE_AFTER_TIMEOUT * 60 * 20));      uint8_t effect = suspend_backlight ? 0 : led_matrix_config.mode; -    #ifdef TRACK_PREVIOUS_EFFECT -        // Keep track of the effect used last time, -        // detect change in effect, so each effect can -        // have an optional initialization. - -        static uint8_t effect_last = 255; -        bool initialize = (effect != effect_last) || (led_matrix_config.enable != toggle_enable_last); -        effect_last = effect; -        toggle_enable_last = led_matrix_config.enable; -    #endif -      // this gets ticked at 20 Hz.      // each effect can opt to do calculations      // and/or request PWM buffer updates. @@ -230,10 +223,12 @@ void led_matrix_task(void) {              break;      } -    if (! suspend_backlight) { +    if (!suspend_backlight) {          led_matrix_indicators();      } +    // Tell the LED driver to update its state +    led_matrix_driver.flush();  }  void led_matrix_indicators(void) { @@ -404,3 +399,7 @@ void led_matrix_set_value(uint8_t val) {      led_matrix_set_value_noeeprom(val);      eeconfig_update_led_matrix(led_matrix_config.raw);  } + +void backlight_set(uint8_t val) { +    led_matrix_set_value(val); +} diff --git a/quantum/led_matrix.h b/quantum/led_matrix.h index 6db162963e..9bf20d0447 100644 --- a/quantum/led_matrix.h +++ b/quantum/led_matrix.h @@ -112,9 +112,6 @@ uint8_t led_matrix_get_mode(void);  void led_matrix_set_value(uint8_t mode);  void led_matrix_set_value_noeeprom(uint8_t mode); -// Hook into the existing backlight API -#define backlight_set(val) led_matrix_set_value(val) -  typedef struct {      /* Perform any initialisation required for the other driver functions to work. */      void (*init)(void); diff --git a/quantum/led_matrix_drivers.c b/quantum/led_matrix_drivers.c index e0f8b20949..21e8a14c66 100644 --- a/quantum/led_matrix_drivers.c +++ b/quantum/led_matrix_drivers.c @@ -64,7 +64,8 @@ static void init(void) {              IS31FL3733_init(LED_DRIVER_ADDR_4);          #endif      #endif -    for (int index = 0; index < LED_DRIVER_COUNT; index++) { + +    for (int index = 0; index < LED_DRIVER_LED_COUNT; index++) {          #ifdef IS31FL3731              IS31FL3731_set_led_control_register(index, true);          #else | 
