Browse Source

Expose the time of the last change to the LED state (#17222)

Jouke Witteveen 2 years ago
parent
commit
0112938140
2 changed files with 14 additions and 1 deletions
  1. 11 1
      quantum/led.c
  2. 3 0
      quantum/led.h

+ 11 - 1
quantum/led.c

@@ -15,6 +15,7 @@
  */
  */
 #include "led.h"
 #include "led.h"
 #include "host.h"
 #include "host.h"
+#include "timer.h"
 #include "debug.h"
 #include "debug.h"
 #include "gpio.h"
 #include "gpio.h"
 
 
@@ -54,6 +55,14 @@ static void handle_backlight_caps_lock(led_t led_state) {
 }
 }
 #endif
 #endif
 
 
+static uint32_t last_led_modification_time = 0;
+uint32_t        last_led_activity_time(void) {
+    return last_led_modification_time;
+}
+uint32_t last_led_activity_elapsed(void) {
+    return timer_elapsed32(last_led_modification_time);
+}
+
 /** \brief Lock LED set callback - keymap/user level
 /** \brief Lock LED set callback - keymap/user level
  *
  *
  * \deprecated Use led_update_user() instead.
  * \deprecated Use led_update_user() instead.
@@ -174,7 +183,8 @@ void led_task(void) {
     // update LED
     // update LED
     uint8_t led_status = host_keyboard_leds();
     uint8_t led_status = host_keyboard_leds();
     if (last_led_status != led_status) {
     if (last_led_status != led_status) {
-        last_led_status = led_status;
+        last_led_status            = led_status;
+        last_led_modification_time = timer_read32();
 
 
         if (debug_keyboard) {
         if (debug_keyboard) {
             debug("led_task: ");
             debug("led_task: ");

+ 3 - 0
quantum/led.h

@@ -61,6 +61,9 @@ void led_set_kb(uint8_t usb_led);
 bool led_update_user(led_t led_state);
 bool led_update_user(led_t led_state);
 bool led_update_kb(led_t led_state);
 bool led_update_kb(led_t led_state);
 
 
+uint32_t last_led_activity_time(void);    // Timestamp of the LED activity
+uint32_t last_led_activity_elapsed(void); // Number of milliseconds since the last LED activity
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif