// Copyright 2023 Christopher Courtney, aka Drashna Jael're (@drashna) // SPDX-License-Identifier: GPL-2.0-or-later #include "eeconfig_users.h" #include "eeprom.h" #include "eeconfig.h" #include #if (TOTAL_EEPROM_BYTE_COUNT - 1) < EECONFIG_SIZE && !defined(KEYBOARD_input_club_ergodox_infinity) # error "More eeprom configured than is available." #endif #if (EECONFIG_USER_DATA_SIZE) != 0 && (EECONFIG_USER_DATA_SIZE) < 4 # error "Not enough EEPROM configured for user config." #endif #if (EECONFIG_USER_DATA_SIZE) == 0 # define EECONFIG_USER_TEMP EECONFIG_USER #else # define EECONFIG_USER_TEMP (uint32_t *)(EECONFIG_USER_DATABLOCK) #endif void eeconfig_read_user_config(uint32_t *data) { #if (EECONFIG_USER_DATA_SIZE) > 0 if (!eeconfig_is_user_datablock_valid()) { memset(data, 0, 4); } else #endif eeprom_read_block(data, EECONFIG_USER_TEMP, 4); } void eeconfig_update_user_config(const uint32_t *data) { eeprom_update_block(data, EECONFIG_USER_TEMP, 4); #if (EECONFIG_USER_DATA_SIZE) > 0 eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION)); #endif } void eeconfig_read_user_data(void *data) { #if (EECONFIG_USER_DATA_SIZE) > 4 if (eeconfig_is_user_datablock_valid()) { eeprom_read_block(data, EECONFIG_USER_DATABLOCK + 4, (EECONFIG_USER_DATA_SIZE)-4); } else { memset(data, 0, (EECONFIG_USER_DATA_SIZE)); } #endif } void eeconfig_update_user_data(const void *data) { #if (EECONFIG_USER_DATA_SIZE) > 4 eeprom_update_dword(EECONFIG_USER, (EECONFIG_USER_DATA_VERSION)); eeprom_update_block(data, EECONFIG_USER_DATABLOCK + 4, (EECONFIG_USER_DATA_SIZE)-4); #endif }