summaryrefslogtreecommitdiff
path: root/quantum
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2022-07-02 13:57:05 +0200
committerGitHub <noreply@github.com>2022-07-02 21:57:05 +1000
commit0112938140b4a59904f4b0b8c3893588410013cb (patch)
treea080e4c39d1711a371394c5df7ab71969202d7b1 /quantum
parent2af2c5e109cb58401521e32df4b83d7e7f6f1444 (diff)
Expose the time of the last change to the LED state (#17222)
Diffstat (limited to 'quantum')
-rw-r--r--quantum/led.c12
-rw-r--r--quantum/led.h3
2 files changed, 14 insertions, 1 deletions
diff --git a/quantum/led.c b/quantum/led.c
index c5ddbc22c5..444d38f751 100644
--- a/quantum/led.c
+++ b/quantum/led.c
@@ -15,6 +15,7 @@
*/
#include "led.h"
#include "host.h"
+#include "timer.h"
#include "debug.h"
#include "gpio.h"
@@ -54,6 +55,14 @@ static void handle_backlight_caps_lock(led_t led_state) {
}
#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
*
* \deprecated Use led_update_user() instead.
@@ -174,7 +183,8 @@ void led_task(void) {
// update LED
uint8_t led_status = host_keyboard_leds();
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) {
debug("led_task: ");
diff --git a/quantum/led.h b/quantum/led.h
index 934d25312c..b8262cbd8e 100644
--- a/quantum/led.h
+++ b/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_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
}
#endif