diff options
author | Joel Challis <git@zvecr.com> | 2022-01-22 21:17:02 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-22 21:17:02 +0000 |
commit | 6e83b449409f7fe479210a9fab808e8bcae64977 (patch) | |
tree | 0429c5a810d39fbd423350566d476fa3f798db27 /quantum/led.c | |
parent | 448a90f6b0b68ef074b1a19a081eceaafcc7425e (diff) | |
download | qmk_firmware-6e83b449409f7fe479210a9fab808e8bcae64977.tar.gz qmk_firmware-6e83b449409f7fe479210a9fab808e8bcae64977.zip |
Align location of some host led logic (#15954)
* Align location of host led logic
* Move more
* align ifdefs
* Fix up includes
* Move callback defs
* Convert comment to build message
Diffstat (limited to 'quantum/led.c')
-rw-r--r-- | quantum/led.c | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/quantum/led.c b/quantum/led.c index 8f0eccf55d..7ee67b55e6 100644 --- a/quantum/led.c +++ b/quantum/led.c @@ -13,13 +13,15 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "quantum.h" +#include "led.h" +#include "host.h" +#include "debug.h" #ifdef BACKLIGHT_ENABLE # include "backlight.h" extern backlight_config_t backlight_config; #else -// Cannot use BACKLIGHT_CAPS_LOCK without backlight being enabled +# pragma message "Cannot use BACKLIGHT_CAPS_LOCK without backlight being enabled" # undef BACKLIGHT_CAPS_LOCK #endif @@ -135,3 +137,41 @@ __attribute__((weak)) void led_set(uint8_t usb_led) { led_set_kb(usb_led); led_update_kb((led_t)usb_led); } + +/** \brief Trigger behaviour on transition to suspend + */ +void led_suspend(void) { + uint8_t leds_off = 0; +#ifdef BACKLIGHT_CAPS_LOCK + if (is_backlight_enabled()) { + // Don't try to turn off Caps Lock indicator as it is backlight and backlight is already off + leds_off |= (1 << USB_LED_CAPS_LOCK); + } +#endif + led_set(leds_off); +} + +/** \brief Trigger behaviour on transition from suspend + */ +void led_wakeup(void) { led_set(host_keyboard_leds()); } + +/** \brief set host led state + * + * Only sets state if change detected + */ +void led_task(void) { + static uint8_t last_led_status = 0; + + // update LED + uint8_t led_status = host_keyboard_leds(); + if (last_led_status != led_status) { + last_led_status = led_status; + + if (debug_keyboard) { + debug("led_task: "); + debug_hex8(led_status); + debug("\n"); + } + led_set(led_status); + } +} |