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
				
			
		| 
						 | 
				
			
			@ -36,7 +36,7 @@ void eeconfig_init_kb(void) {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
    // Write default value to EEPROM now
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
 | 
			
		||||
    eeconfig_init_user();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ void eeconfig_init_kb(void) {
 | 
			
		|||
// On Keyboard startup
 | 
			
		||||
void keyboard_post_init_kb(void) {
 | 
			
		||||
    // Read custom menu variables from memory
 | 
			
		||||
    eeconfig_read_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_read_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
 | 
			
		||||
    // Set runtime values to EEPROM values
 | 
			
		||||
    ec_config.actuation_mode                 = eeprom_ec_config.actuation_mode;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,26 +0,0 @@
 | 
			
		|||
/* Copyright 2023 Cipulot
 | 
			
		||||
 *
 | 
			
		||||
 * This program is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License as published by
 | 
			
		||||
 * the Free Software Foundation, either version 3 of the License, or
 | 
			
		||||
 * (at your option) any later version.
 | 
			
		||||
 *
 | 
			
		||||
 * This program is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include "eeprom.h"
 | 
			
		||||
 | 
			
		||||
#if (EECONFIG_KB_DATA_SIZE) > 0
 | 
			
		||||
#    define EEPROM_KB_PARTIAL_UPDATE(__struct, __field) eeprom_update_block(&(__struct.__field), (void *)((void *)(EECONFIG_KB_DATABLOCK) + offsetof(typeof(__struct), __field)), sizeof(__struct.__field))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (EECONFIG_USER_DATA_SIZE) > 0
 | 
			
		||||
#    define EEPROM_USER_PARTIAL_UPDATE(__struct, __field) eeprom_update_block(&(__struct.__field), (void *)((void *)(EECONFIG_USER_DATABLOCK) + offsetof(typeof(__struct), __field)), sizeof(__struct.__field))
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			@ -13,7 +13,6 @@
 | 
			
		|||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
#include "eeprom_tools.h"
 | 
			
		||||
#include "ec_switch_matrix.h"
 | 
			
		||||
#include "action.h"
 | 
			
		||||
#include "print.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -73,7 +72,7 @@ void via_config_set_value(uint8_t *data) {
 | 
			
		|||
                uprintf("# Actuation Mode: Rapid Trigger #\n");
 | 
			
		||||
                uprintf("#################################\n");
 | 
			
		||||
            }
 | 
			
		||||
            EEPROM_KB_PARTIAL_UPDATE(eeprom_ec_config, actuation_mode);
 | 
			
		||||
            eeconfig_update_kb_datablock_field(eeprom_ec_config, actuation_mode);
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
        case id_mode_0_actuation_threshold: {
 | 
			
		||||
| 
						 | 
				
			
			@ -293,7 +292,7 @@ void ec_save_threshold_data(uint8_t option) {
 | 
			
		|||
        ec_rescale_values(3);
 | 
			
		||||
        ec_rescale_values(4);
 | 
			
		||||
    }
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
    uprintf("####################################\n");
 | 
			
		||||
    uprintf("# New thresholds applied and saved #\n");
 | 
			
		||||
    uprintf("####################################\n");
 | 
			
		||||
| 
						 | 
				
			
			@ -321,7 +320,7 @@ void ec_save_bottoming_reading(void) {
 | 
			
		|||
    ec_rescale_values(2);
 | 
			
		||||
    ec_rescale_values(3);
 | 
			
		||||
    ec_rescale_values(4);
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Show the calibration data
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ void eeconfig_init_kb(void) {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
    // Write default value to EEPROM now
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
 | 
			
		||||
    eeconfig_init_user();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ void eeconfig_init_kb(void) {
 | 
			
		|||
// On Keyboard startup
 | 
			
		||||
void keyboard_post_init_kb(void) {
 | 
			
		||||
    // Read custom menu variables from memory
 | 
			
		||||
    eeconfig_read_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_read_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
 | 
			
		||||
    // Set runtime values to EEPROM values
 | 
			
		||||
    ec_config.actuation_mode                 = eeprom_ec_config.actuation_mode;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,7 +44,7 @@ void eeconfig_init_kb(void) {
 | 
			
		|||
        }
 | 
			
		||||
    }
 | 
			
		||||
    // Write default value to EEPROM now
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_update_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
 | 
			
		||||
    eeconfig_init_user();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ void eeconfig_init_kb(void) {
 | 
			
		|||
// On Keyboard startup
 | 
			
		||||
void keyboard_post_init_kb(void) {
 | 
			
		||||
    // Read custom menu variables from memory
 | 
			
		||||
    eeconfig_read_kb_datablock(&eeprom_ec_config);
 | 
			
		||||
    eeconfig_read_kb_datablock(&eeprom_ec_config, 0, EECONFIG_KB_DATA_SIZE);
 | 
			
		||||
 | 
			
		||||
    // Set runtime values to EEPROM values
 | 
			
		||||
    ec_config.actuation_mode                 = eeprom_ec_config.actuation_mode;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue