summaryrefslogtreecommitdiff
path: root/quantum/via.c
diff options
context:
space:
mode:
authorIlya Zhuravlev <whatever@xyz.is>2020-12-19 21:51:11 -0500
committerIlya Zhuravlev <whatever@xyz.is>2020-12-19 21:51:11 -0500
commit21bd0cdda09d480f7078b757b006f1ebec27ef94 (patch)
tree0a8811152ee51bc9394fbcf0f7d7977ff5d12b55 /quantum/via.c
parent10e15c09a4c7ad13f4d47dc0dd5b5a0695d170e7 (diff)
vial: use more entropy for determining whether to reset eeprom
Diffstat (limited to 'quantum/via.c')
-rw-r--r--quantum/via.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/quantum/via.c b/quantum/via.c
index 263c0f4958..253cecae67 100644
--- a/quantum/via.c
+++ b/quantum/via.c
@@ -65,10 +65,16 @@ void via_qmk_rgblight_get_value(uint8_t *data);
// Can be called in an overriding via_init_kb() to test if keyboard level code usage of
// EEPROM is invalid and use/save defaults.
bool via_eeprom_is_valid(void) {
+#ifdef VIAL_ENABLE
+ uint8_t magic0 = BUILD_ID & 0xFF;
+ uint8_t magic1 = (BUILD_ID >> 8) & 0xFF;
+ uint8_t magic2 = (BUILD_ID >> 16) & 0xFF;
+#else
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);
+#endif
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);
}
@@ -76,10 +82,16 @@ bool via_eeprom_is_valid(void) {
// Sets VIA/keyboard level usage of EEPROM to valid/invalid
// Keyboard level code (eg. via_init_kb()) should not call this
void via_eeprom_set_valid(bool valid) {
+#ifdef VIAL_ENABLE
+ uint8_t magic0 = BUILD_ID & 0xFF;
+ uint8_t magic1 = (BUILD_ID >> 8) & 0xFF;
+ uint8_t magic2 = (BUILD_ID >> 16) & 0xFF;
+#else
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);
+#endif
eeprom_update_byte((void *)VIA_EEPROM_MAGIC_ADDR + 0, valid ? magic0 : 0xFF);
eeprom_update_byte((void *)VIA_EEPROM_MAGIC_ADDR + 1, valid ? magic1 : 0xFF);