mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-28 14:10:13 +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 via_init() if VIA_ENABLE
|
||||||
// Called from matrix_init_kb() if not 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)
|
// This checks both an EEPROM reset (from bootmagic lite, keycodes)
|
||||||
// and also firmware build date (from via_eeprom_is_valid())
|
// and also firmware build date (from via_eeprom_is_valid())
|
||||||
@ -64,11 +64,9 @@ void via_init_kb(void)
|
|||||||
void matrix_init_kb(void)
|
void matrix_init_kb(void)
|
||||||
{
|
{
|
||||||
// If VIA is disabled, we still need to load backlight settings.
|
// If VIA is disabled, we still need to load backlight settings.
|
||||||
// Call via_init_kb() the same way as via_init(), with setting
|
// Call via_init_kb() the same way as via_init_kb() does.
|
||||||
// EEPROM valid afterwards.
|
|
||||||
#ifndef VIA_ENABLE
|
#ifndef VIA_ENABLE
|
||||||
via_init_kb();
|
wt_main_init();
|
||||||
via_eeprom_set_valid(true);
|
|
||||||
#endif // VIA_ENABLE
|
#endif // VIA_ENABLE
|
||||||
|
|
||||||
matrix_init_user();
|
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
|
// Moving this to the bottom of this source file is a workaround
|
||||||
// for an intermittent compiler error for Atmel compiler.
|
// for an intermittent compiler error for Atmel compiler.
|
||||||
#ifdef VIA_ENABLE
|
#ifdef VIA_ENABLE
|
||||||
|
void via_init_kb(void) {
|
||||||
|
wt_main_init();
|
||||||
|
}
|
||||||
|
|
||||||
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
|
void via_custom_value_command_kb(uint8_t *data, uint8_t length) {
|
||||||
uint8_t *command_id = &(data[0]);
|
uint8_t *command_id = &(data[0]);
|
||||||
uint8_t *channel_id = &(data[1]);
|
uint8_t *channel_id = &(data[1]);
|
||||||
@ -159,50 +161,3 @@ void via_set_device_indication(uint8_t value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif // VIA_ENABLE
|
#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 "progmem.h"
|
||||||
#include "eeprom.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
|
#include "via.h" // uses EEPROM address, lighting value IDs
|
||||||
#define MONO_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR)
|
#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 "quantum/color.h"
|
||||||
#include "eeprom.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
|
#include "via.h" // uses EEPROM address, lighting value IDs
|
||||||
#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR)
|
#define RGB_BACKLIGHT_CONFIG_EEPROM_ADDR (VIA_EEPROM_CUSTOM_CONFIG_ADDR)
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ void eeconfig_init_quantum(void) {
|
|||||||
|
|
||||||
#if defined(VIA_ENABLE)
|
#if defined(VIA_ENABLE)
|
||||||
// Invalidate VIA eeprom config, and then reset.
|
// 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.
|
// properly re-initialized.
|
||||||
via_eeprom_set_valid(false);
|
via_eeprom_set_valid(false);
|
||||||
eeconfig_init_via();
|
eeconfig_init_via();
|
||||||
@ -116,11 +116,23 @@ void eeconfig_disable(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool eeconfig_is_enabled(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) {
|
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) {
|
uint8_t eeconfig_read_debug(void) {
|
||||||
|
@ -11,30 +11,12 @@
|
|||||||
# include "eeprom_driver.h"
|
# include "eeprom_driver.h"
|
||||||
#endif
|
#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 nvm_eeconfig_is_enabled(void) {
|
||||||
bool is_eeprom_enabled = (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER);
|
return 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool nvm_eeconfig_is_disabled(void) {
|
bool nvm_eeconfig_is_disabled(void) {
|
||||||
bool is_eeprom_disabled = (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER_OFF);
|
return 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvm_eeconfig_enable(void) {
|
void nvm_eeconfig_enable(void) {
|
||||||
|
Loading…
Reference in New Issue
Block a user