Make ParseConfig() restore indicator icons. Fixes #107

This commit is contained in:
László Monda
2018-04-28 14:43:13 +02:00
parent ec8301ae62
commit ebd0e3b762
4 changed files with 15 additions and 14 deletions
+10 -1
View File
@@ -5,6 +5,7 @@
uint8_t IconsAndLayerTextsBrightness = 0xff; uint8_t IconsAndLayerTextsBrightness = 0xff;
uint8_t AlphanumericSegmentsBrightness = 0xff; uint8_t AlphanumericSegmentsBrightness = 0xff;
bool ledIconStates[LedDisplayIcon_Last];
static const uint16_t capitalLetterToSegmentMap[] = { static const uint16_t capitalLetterToSegmentMap[] = {
0b0000000011110111, 0b0000000011110111,
@@ -108,5 +109,13 @@ bool LedDisplay_GetIcon(led_display_icon_t icon)
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled) 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]);
}
} }
+3 -2
View File
@@ -13,6 +13,7 @@
LedDisplayIcon_CapsLock, LedDisplayIcon_CapsLock,
LedDisplayIcon_Agent, LedDisplayIcon_Agent,
LedDisplayIcon_Adaptive, LedDisplayIcon_Adaptive,
LedDisplayIcon_Last = LedDisplayIcon_Adaptive,
} led_display_icon_t; } led_display_icon_t;
// Variables: // Variables:
@@ -25,8 +26,8 @@
void LedDisplay_SetText(uint8_t length, const char* text); void LedDisplay_SetText(uint8_t length, const char* text);
void LedDisplay_SetCurrentKeymapText(void); void LedDisplay_SetCurrentKeymapText(void);
void LedDisplay_SetLayer(layer_id_t layerId); 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); bool LedDisplay_GetIcon(led_display_icon_t icon);
void LedDisplay_SetIcon(led_display_icon_t icon, bool isEnabled);
void LedDisplay_UpdateIcons(void);
#endif #endif
+1 -3
View File
@@ -74,9 +74,7 @@ void LedSlaveDriver_Init(uint8_t ledDriverId)
memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT); memset(LedDriverValues[ledDriverId], KeyBacklightBrightness, LED_DRIVER_LED_COUNT);
if (ledDriverId == LedDriverId_Left) { if (ledDriverId == LedDriverId_Left) {
LedDisplay_SetIcon(LedDisplayIcon_CapsLock, false); LedDisplay_UpdateIcons();
LedDisplay_SetIcon(LedDisplayIcon_Agent, false);
LedDisplay_SetIcon(LedDisplayIcon_Adaptive, false);
LedDisplay_SetCurrentKeymapText(); LedDisplay_SetCurrentKeymapText();
} }
} }
+1 -8
View File
@@ -165,14 +165,9 @@ static usb_device_class_config_list_struct_t UsbDeviceCompositeConfigList = {
bool IsHostSleeping = false; bool IsHostSleeping = false;
static uint8_t oldKeyBacklightBrightness = 0xFF; static uint8_t oldKeyBacklightBrightness = 0xFF;
static bool capsLockOn = false, agentOn = false, adaptiveOn = false;
static void suspendHost(void) { static void suspendHost(void) {
IsHostSleeping = true; 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 // Disable keyboard backlight
oldKeyBacklightBrightness = KeyBacklightBrightness; oldKeyBacklightBrightness = KeyBacklightBrightness;
@@ -204,9 +199,7 @@ void WakeUpHost(bool sendResume) {
LedDisplay_SetLayer(GetActiveLayer()); LedDisplay_SetLayer(GetActiveLayer());
// Restore icon states // Restore icon states
LedDisplay_SetIcon(LedDisplayIcon_CapsLock, capsLockOn); LedDisplay_UpdateIcons();
LedDisplay_SetIcon(LedDisplayIcon_Agent, agentOn);
LedDisplay_SetIcon(LedDisplayIcon_Adaptive, adaptiveOn);
} }
static usb_status_t usbDeviceCallback(usb_device_handle handle, uint32_t event, void *param) static usb_status_t usbDeviceCallback(usb_device_handle handle, uint32_t event, void *param)