From 0a1cb2a798df42001657929f6ea9068dca038aa7 Mon Sep 17 00:00:00 2001 From: Nick Brassel Date: Tue, 3 Sep 2024 12:09:13 +1000 Subject: [PATCH] wilba leds --- keyboards/wilba_tech/wt_main.c | 60 ------------------------ keyboards/wilba_tech/wt_mono_backlight.c | 2 + keyboards/wilba_tech/wt_rgb_backlight.c | 2 + quantum/eeconfig.c | 18 +++++-- quantum/nvm/eeprom/nvm_eeconfig.c | 22 +-------- 5 files changed, 21 insertions(+), 83 deletions(-) diff --git a/keyboards/wilba_tech/wt_main.c b/keyboards/wilba_tech/wt_main.c index 92c43c794da4..31eb83bb68ad 100644 --- a/keyboards/wilba_tech/wt_main.c +++ b/keyboards/wilba_tech/wt_main.c @@ -61,19 +61,6 @@ void via_init_kb(void) #endif // RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED } -void matrix_init_kb(void) -{ - // If VIA is disabled, we still need to load backlight settings. - // Call via_init_kb() the same way as via_init(), with setting - // EEPROM valid afterwards. -#ifndef VIA_ENABLE - via_init_kb(); - via_eeprom_set_valid(true); -#endif // VIA_ENABLE - - matrix_init_user(); -} - void matrix_scan_kb(void) { #if RGB_BACKLIGHT_ENABLED || MONO_BACKLIGHT_ENABLED @@ -159,50 +146,3 @@ void via_set_device_indication(uint8_t value) } #endif // VIA_ENABLE - -// -// In the case of VIA being disabled, we still need to check if -// keyboard level EEPROM memory is valid before loading. -// Thus these are copies of the same functions in VIA, since -// the backlight settings reuse VIA's EEPROM magic/version, -// and the ones in via.c won't be compiled in. -// -// Yes, this is sub-optimal, and is only here for completeness -// (i.e. catering to the 1% of people that want wilba.tech LED bling -// AND want persistent settings BUT DON'T want to use dynamic keymaps/VIA). -// -#ifndef VIA_ENABLE - -bool via_eeprom_is_valid(void) -{ - char *p = QMK_BUILDDATE; // e.g. "2019-11-05-11:29:54" - uint8_t magic0 = ( ( p[2] & 0x0F ) << 4 ) | ( p[3] & 0x0F ); - uint8_t magic1 = ( ( p[5] & 0x0F ) << 4 ) | ( p[6] & 0x0F ); - uint8_t magic2 = ( ( p[8] & 0x0F ) << 4 ) | ( p[9] & 0x0F ); - - return (eeprom_read_byte( (void*)VIA_EEPROM_MAGIC_ADDR+0 ) == magic0 && - eeprom_read_byte( (void*)VIA_EEPROM_MAGIC_ADDR+1 ) == magic1 && - eeprom_read_byte( (void*)VIA_EEPROM_MAGIC_ADDR+2 ) == magic2 ); -} - -void via_eeprom_set_valid(bool valid) -{ - char *p = QMK_BUILDDATE; // e.g. "2019-11-05-11:29:54" - uint8_t magic0 = ( ( p[2] & 0x0F ) << 4 ) | ( p[3] & 0x0F ); - uint8_t magic1 = ( ( p[5] & 0x0F ) << 4 ) | ( p[6] & 0x0F ); - uint8_t magic2 = ( ( p[8] & 0x0F ) << 4 ) | ( p[9] & 0x0F ); - - eeprom_update_byte( (void*)VIA_EEPROM_MAGIC_ADDR+0, valid ? magic0 : 0xFF); - eeprom_update_byte( (void*)VIA_EEPROM_MAGIC_ADDR+1, valid ? magic1 : 0xFF); - eeprom_update_byte( (void*)VIA_EEPROM_MAGIC_ADDR+2, valid ? magic2 : 0xFF); -} - -void via_eeprom_reset(void) -{ - // Set the VIA specific EEPROM state as invalid. - via_eeprom_set_valid(false); - // Set the TMK/QMK EEPROM state as invalid. - eeconfig_disable(); -} - -#endif // VIA_ENABLE diff --git a/keyboards/wilba_tech/wt_mono_backlight.c b/keyboards/wilba_tech/wt_mono_backlight.c index 1426e09fc6fd..a0ea7ac3cc9c 100644 --- a/keyboards/wilba_tech/wt_mono_backlight.c +++ b/keyboards/wilba_tech/wt_mono_backlight.c @@ -25,6 +25,8 @@ #include "progmem.h" #include "eeprom.h" +#include "nvm_eeprom_eeconfig_internal.h" +#include "nvm_eeprom_via_internal.h" #include "via.h" // uses EEPROM address, lighting value IDs #define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR) diff --git a/keyboards/wilba_tech/wt_rgb_backlight.c b/keyboards/wilba_tech/wt_rgb_backlight.c index 936286c2eefa..ed7a293cf6e1 100644 --- a/keyboards/wilba_tech/wt_rgb_backlight.c +++ b/keyboards/wilba_tech/wt_rgb_backlight.c @@ -67,6 +67,8 @@ rgb_led_t g_ws2812_leds[WS2812_LED_TOTAL]; #include "quantum/color.h" #include "eeprom.h" +#include "nvm_eeprom_eeconfig_internal.h" +#include "nvm_eeprom_via_internal.h" #include "via.h" // uses EEPROM address, lighting value IDs #define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR) diff --git a/quantum/eeconfig.c b/quantum/eeconfig.c index e97f9489acf5..a6052f54e89e 100644 --- a/quantum/eeconfig.c +++ b/quantum/eeconfig.c @@ -94,7 +94,7 @@ void eeconfig_init_quantum(void) { #if defined(VIA_ENABLE) // Invalidate VIA eeprom config, and then reset. - // Just in case if power is lost mid init, this makes sure that it pets + // Just in case if power is lost mid init, this makes sure that it gets // properly re-initialized. via_eeprom_set_valid(false); eeconfig_init_via(); @@ -116,11 +116,23 @@ void eeconfig_disable(void) { } bool eeconfig_is_enabled(void) { - return nvm_eeconfig_is_enabled(); + bool is_eeprom_enabled = nvm_eeconfig_is_enabled(); + #ifdef VIA_ENABLE + if (is_eeprom_enabled) { + is_eeprom_enabled = via_eeprom_is_valid(); + } +#endif // VIA_ENABLE + return is_eeprom_enabled; } bool eeconfig_is_disabled(void) { - return nvm_eeconfig_is_disabled(); + bool is_eeprom_disabled = nvm_eeconfig_is_disabled(); +#ifdef VIA_ENABLE + if (!is_eeprom_disabled) { + is_eeprom_disabled = !via_eeprom_is_valid(); + } +#endif // VIA_ENABLE + return is_eeprom_disabled; } uint8_t eeconfig_read_debug(void) { diff --git a/quantum/nvm/eeprom/nvm_eeconfig.c b/quantum/nvm/eeprom/nvm_eeconfig.c index a40b3f93a257..0b7bb6fa8947 100644 --- a/quantum/nvm/eeprom/nvm_eeconfig.c +++ b/quantum/nvm/eeprom/nvm_eeconfig.c @@ -11,30 +11,12 @@ # include "eeprom_driver.h" #endif -#if defined(VIA_ENABLE) -bool via_eeprom_is_valid(void); -void via_eeprom_set_valid(bool valid); -void eeconfig_init_via(void); -#endif - bool nvm_eeconfig_is_enabled(void) { - bool is_eeprom_enabled = (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); -#ifdef VIA_ENABLE - if (is_eeprom_enabled) { - is_eeprom_enabled = via_eeprom_is_valid(); - } -#endif // VIA_ENABLE - return is_eeprom_enabled; + return eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER; } bool nvm_eeconfig_is_disabled(void) { - bool is_eeprom_disabled = (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER_OFF); -#ifdef VIA_ENABLE - if (!is_eeprom_disabled) { - is_eeprom_disabled = !via_eeprom_is_valid(); - } -#endif // VIA_ENABLE - return is_eeprom_disabled; + return eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER_OFF; } void nvm_eeconfig_enable(void) {