mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-24 20:32:58 +00:00
wilba leds
This commit is contained in:
parent
8ee730992d
commit
357494852a
@ -33,7 +33,7 @@
|
||||
|
||||
// Called from via_init() if VIA_ENABLE
|
||||
// Called from matrix_init_kb() if not VIA_ENABLE
|
||||
void via_init_kb(void)
|
||||
void wt_main_init(void)
|
||||
{
|
||||
// This checks both an EEPROM reset (from bootmagic lite, keycodes)
|
||||
// and also firmware build date (from via_eeprom_is_valid())
|
||||
@ -64,11 +64,9 @@ void via_init_kb(void)
|
||||
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.
|
||||
// Call via_init_kb() the same way as via_init_kb() does.
|
||||
#ifndef VIA_ENABLE
|
||||
via_init_kb();
|
||||
via_eeprom_set_valid(true);
|
||||
wt_main_init();
|
||||
#endif // VIA_ENABLE
|
||||
|
||||
matrix_init_user();
|
||||
@ -109,6 +107,10 @@ void suspend_wakeup_init_kb(void)
|
||||
// Moving this to the bottom of this source file is a workaround
|
||||
// for an intermittent compiler error for Atmel compiler.
|
||||
#ifdef VIA_ENABLE
|
||||
void via_init_kb(void) {
|
||||
wt_main_init();
|
||||
}
|
||||
|
||||
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
|
||||
uint8_t *command_id = &(data[0]);
|
||||
uint8_t *channel_id = &(data[1]);
|
||||
@ -159,50 +161,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
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user