From ebd0e3b7620289b69524835f5ff1009d66e27c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Sat, 28 Apr 2018 14:43:13 +0200 Subject: [PATCH] Make ParseConfig() restore indicator icons. Fixes #107 --- right/src/led_display.c | 11 ++++++++++- right/src/led_display.h | 5 +++-- right/src/slave_drivers/is31fl3731_driver.c | 4 +--- right/src/usb_composite_device.c | 9 +-------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/right/src/led_display.c b/right/src/led_display.c index 1096dfb..537b14d 100644 --- a/right/src/led_display.c +++ b/right/src/led_display.c @@ -5,6 +5,7 @@ uint8_t IconsAndLayerTextsBrightness = 0xff; uint8_t AlphanumericSegmentsBrightness = 0xff; +bool ledIconStates[LedDisplayIcon_Last]; static const uint16_t capitalLetterToSegmentMap[] = { 0b0000000011110111, @@ -108,5 +109,13 @@ bool LedDisplay_GetIcon(led_display_icon_t icon) void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled) { - LedDriverValues[LedDriverId_Left][8 + icon] = isEnabled ? IconsAndLayerTextsBrightness : 0; + ledIconStates[icon] = isEnabled; + LedDriverValues[LedDriverId_Left][icon + 8] = isEnabled ? IconsAndLayerTextsBrightness : 0; +} + +void LedDisplay_UpdateIcons(void) +{ + for (uint8_t i=0; i<=LedDisplayIcon_Last; i++) { + LedDisplay_SetIcon(i, ledIconStates[i]); + } } diff --git a/right/src/led_display.h b/right/src/led_display.h index aa1bbce..cce22b1 100644 --- a/right/src/led_display.h +++ b/right/src/led_display.h @@ -13,6 +13,7 @@ LedDisplayIcon_CapsLock, LedDisplayIcon_Agent, LedDisplayIcon_Adaptive, + LedDisplayIcon_Last = LedDisplayIcon_Adaptive, } led_display_icon_t; // Variables: @@ -25,8 +26,8 @@ void LedDisplay_SetText(uint8_t length, const char* text); void LedDisplay_SetCurrentKeymapText(void); void LedDisplay_SetLayer(layer_id_t layerId); - void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled); - bool LedDisplay_GetIcon(led_display_icon_t icon); + void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled); + void LedDisplay_UpdateIcons(void); #endif diff --git a/right/src/slave_drivers/is31fl3731_driver.c b/right/src/slave_drivers/is31fl3731_driver.c index c2384ca..9d95dec 100644 --- a/right/src/slave_drivers/is31fl3731_driver.c +++ b/right/src/slave_drivers/is31fl3731_driver.c @@ -74,9 +74,7 @@ void LedSlaveDriver_Init(uint8_t ledDriverId) memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT); if (ledDriverId == LedDriverId_Left) { - LedDisplay_SetIcon(LedDisplayIcon_CapsLock, false); - LedDisplay_SetIcon(LedDisplayIcon_Agent, false); - LedDisplay_SetIcon(LedDisplayIcon_Adaptive, false); + LedDisplay_UpdateIcons(); LedDisplay_SetCurrentKeymapText(); } } diff --git a/right/src/usb_composite_device.c b/right/src/usb_composite_device.c index b5989bc..7f602b0 100644 --- a/right/src/usb_composite_device.c +++ b/right/src/usb_composite_device.c @@ -165,14 +165,9 @@ static usb_device_class_config_list_struct_t UsbDeviceCompositeConfigList = { bool IsHostSleeping = false; static uint8_t oldKeyBacklightBrightness = 0xFF; -static bool capsLockOn = false, agentOn = false, adaptiveOn = false; static void suspendHost(void) { IsHostSleeping = true; - // Save the state of the icons - capsLockOn = LedDisplay_GetIcon(LedDisplayIcon_CapsLock); - agentOn = LedDisplay_GetIcon(LedDisplayIcon_Agent); - adaptiveOn = LedDisplay_GetIcon(LedDisplayIcon_Adaptive); // Disable keyboard backlight oldKeyBacklightBrightness = KeyBacklightBrightness; @@ -204,9 +199,7 @@ void WakeUpHost(bool sendResume) { LedDisplay_SetLayer(GetActiveLayer()); // Restore icon states - LedDisplay_SetIcon(LedDisplayIcon_CapsLock, capsLockOn); - LedDisplay_SetIcon(LedDisplayIcon_Agent, agentOn); - LedDisplay_SetIcon(LedDisplayIcon_Adaptive, adaptiveOn); + LedDisplay_UpdateIcons(); } static usb_status_t usbDeviceCallback(usb_device_handle handle, uint32_t event, void *param)