summaryrefslogtreecommitdiff
path: root/quantum/via.c
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/via.c')
-rw-r--r--quantum/via.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/quantum/via.c b/quantum/via.c
index 7c8aa753e7..05ab799cbb 100644
--- a/quantum/via.c
+++ b/quantum/via.c
@@ -45,7 +45,7 @@
#include "raw_hid.h"
#include "dynamic_keymap.h"
#include "eeprom.h"
-#include "version.h" // for QMK_BUILDDATE used in EEPROM magic
+#include "version.h" // for QMK_BUILDDATE used in EEPROM magic
#include "via_ensure_keycode.h"
// Forward declare some helpers.
@@ -62,7 +62,7 @@ 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) {
- char * p = QMK_BUILDDATE; // e.g. "2019-11-05-11:29:54"
+ 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);
@@ -73,7 +73,7 @@ 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) {
- char * p = QMK_BUILDDATE; // e.g. "2019-11-05-11:29:54"
+ 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);
@@ -96,6 +96,7 @@ void via_init(void) {
// Let keyboard level test EEPROM valid state,
// but not set it valid, it is done here.
via_init_kb();
+ via_set_layout_options_kb(via_get_layout_options());
// If the EEPROM has the magic, the data is good.
// OK to load from EEPROM.
@@ -131,7 +132,10 @@ uint32_t via_get_layout_options(void) {
return value;
}
+__attribute__((weak)) void via_set_layout_options_kb(uint32_t value) {}
+
void via_set_layout_options(uint32_t value) {
+ via_set_layout_options_kb(value);
// Start at the least significant byte
void *target = (void *)(VIA_EEPROM_LAYOUT_OPTIONS_ADDR + VIA_EEPROM_LAYOUT_OPTIONS_SIZE - 1);
for (uint8_t i = 0; i < VIA_EEPROM_LAYOUT_OPTIONS_SIZE; i++) {
@@ -343,13 +347,13 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
}
case id_dynamic_keymap_macro_get_buffer: {
uint16_t offset = (command_data[0] << 8) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
+ uint16_t size = command_data[2]; // size <= 28
dynamic_keymap_macro_get_buffer(offset, size, &command_data[3]);
break;
}
case id_dynamic_keymap_macro_set_buffer: {
uint16_t offset = (command_data[0] << 8) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
+ uint16_t size = command_data[2]; // size <= 28
dynamic_keymap_macro_set_buffer(offset, size, &command_data[3]);
break;
}
@@ -363,13 +367,13 @@ void raw_hid_receive(uint8_t *data, uint8_t length) {
}
case id_dynamic_keymap_get_buffer: {
uint16_t offset = (command_data[0] << 8) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
+ uint16_t size = command_data[2]; // size <= 28
dynamic_keymap_get_buffer(offset, size, &command_data[3]);
break;
}
case id_dynamic_keymap_set_buffer: {
uint16_t offset = (command_data[0] << 8) | command_data[1];
- uint16_t size = command_data[2]; // size <= 28
+ uint16_t size = command_data[2]; // size <= 28
dynamic_keymap_set_buffer(offset, size, &command_data[3]);
break;
}
@@ -434,7 +438,7 @@ void via_qmk_backlight_set_value(uint8_t *data) {
}
}
-#endif // #if defined(VIA_QMK_BACKLIGHT_ENABLE)
+#endif // #if defined(VIA_QMK_BACKLIGHT_ENABLE)
#if defined(VIA_QMK_RGBLIGHT_ENABLE)
@@ -490,4 +494,4 @@ void via_qmk_rgblight_set_value(uint8_t *data) {
}
}
-#endif // #if defined(VIA_QMK_RGBLIGHT_ENABLE)
+#endif // #if defined(VIA_QMK_RGBLIGHT_ENABLE)