Skip to content

Commit

Permalink
wilba leds
Browse files Browse the repository at this point in the history
  • Loading branch information
tzarc committed Sep 3, 2024
1 parent 8ee7309 commit 0a1cb2a
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 83 deletions.
60 changes: 0 additions & 60 deletions keyboards/wilba_tech/wt_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
2 changes: 2 additions & 0 deletions keyboards/wilba_tech/wt_mono_backlight.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
2 changes: 2 additions & 0 deletions keyboards/wilba_tech/wt_rgb_backlight.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
18 changes: 15 additions & 3 deletions quantum/eeconfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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) {
Expand Down
22 changes: 2 additions & 20 deletions quantum/nvm/eeprom/nvm_eeconfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit 0a1cb2a

Please sign in to comment.