Non-volatile memory data repository pattern (#24356)
* First batch of eeconfig conversions. * Offset and length for datablocks. * `via`, `dynamic_keymap`. * Fix filename. * Commentary. * wilba leds * satisfaction75 * satisfaction75 * more keyboard whack-a-mole * satisfaction75 * omnikeyish * more whack-a-mole * `generic_features.mk` to automatically pick up nvm repositories * thievery * deferred variable resolve * whitespace * convert api to structs/unions * convert api to structs/unions * convert api to structs/unions * fixups * code-side docs * code size fix * rollback * nvm_xxxxx_erase * Updated location of eeconfig magic numbers so non-EEPROM nvm drivers can use them too. * Fixup build. * Fixup compilation error with encoders. * Build fixes. * Add `via_ci` keymap to onekey to exercise VIA bindings (and thus dynamic keymap et.al.), fixup compilation errors based on preprocessor+sizeof. * Build failure rectification.
This commit is contained in:
parent
c9d62ddc78
commit
2b00b846dc
87 changed files with 1464 additions and 839 deletions
|
|
@ -215,10 +215,13 @@ uint16_t handle_encoder_press(void){
|
|||
|
||||
uint16_t retrieve_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior){
|
||||
#ifdef DYNAMIC_KEYMAP_ENABLE
|
||||
void* addr = (void*)(EEPROM_CUSTOM_ENCODER + (encoder_idx * 6) + (behavior * 2));
|
||||
uint32_t offset = EEPROM_CUSTOM_ENCODER_OFFSET + (encoder_idx * 6) + (behavior * 2);
|
||||
//big endian
|
||||
uint16_t keycode = eeprom_read_byte(addr) << 8;
|
||||
keycode |= eeprom_read_byte(addr + 1);
|
||||
uint8_t hi, lo;
|
||||
read_custom_config(&hi, offset+0, 1);
|
||||
read_custom_config(&lo, offset+1, 1);
|
||||
uint16_t keycode = hi << 8;
|
||||
keycode |= lo;
|
||||
return keycode;
|
||||
#else
|
||||
return 0;
|
||||
|
|
@ -227,8 +230,10 @@ uint16_t retrieve_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior){
|
|||
|
||||
void set_custom_encoder_config(uint8_t encoder_idx, uint8_t behavior, uint16_t new_code){
|
||||
#ifdef DYNAMIC_KEYMAP_ENABLE
|
||||
void* addr = (void*)(EEPROM_CUSTOM_ENCODER + (encoder_idx * 6) + (behavior * 2));
|
||||
eeprom_update_byte(addr, (uint8_t)(new_code >> 8));
|
||||
eeprom_update_byte(addr + 1, (uint8_t)(new_code & 0xFF));
|
||||
uint32_t offset = EEPROM_CUSTOM_ENCODER_OFFSET + (encoder_idx * 6) + (behavior * 2);
|
||||
uint8_t hi = new_code >> 8;
|
||||
uint8_t lo = new_code & 0xFF;
|
||||
write_custom_config(&hi, offset+0, 1);
|
||||
write_custom_config(&lo, offset+1, 1);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue