EFI_ACTIVE_CONFIGURATION_IN_FLASH

This commit is contained in:
Matthew Kennedy 2024-08-07 12:09:30 -07:00
parent 1913853adb
commit 48b8f08cb8
5 changed files with 0 additions and 29 deletions

View File

@ -33,8 +33,6 @@
#define EFI_TEXT_LOGGING TRUE
#define EFI_ACTIVE_CONFIGURATION_IN_FLASH FALSE
#ifndef EFI_MC33816
#define EFI_MC33816 TRUE
#endif

View File

@ -111,22 +111,11 @@
*
* todo: place this field next to 'engineConfiguration'?
*/
#if EFI_ACTIVE_CONFIGURATION_IN_FLASH
#include "flash_int.h"
engine_configuration_s & activeConfiguration = reinterpret_cast<persistent_config_container_s*>(getFlashAddrFirstCopy())->persistentConfiguration.engineConfiguration;
// we cannot use this activeConfiguration until we call rememberCurrentConfiguration()
bool isActiveConfigurationVoid = true;
#else
static engine_configuration_s activeConfigurationLocalStorage;
engine_configuration_s & activeConfiguration = activeConfigurationLocalStorage;
#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
void rememberCurrentConfiguration() {
#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
memcpy(&activeConfiguration, engineConfiguration, sizeof(engine_configuration_s));
#else
isActiveConfigurationVoid = false;
#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
}
static void wipeString(char *string, int size) {
@ -599,10 +588,8 @@ static void setDefaultEngineConfiguration() {
#endif
void loadConfiguration() {
#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
// Clear the active configuration so that registered output pins (etc) detect the change on startup and init properly
prepareVoidConfiguration(&activeConfiguration);
#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
#if EFI_INTERNAL_FLASH
if (IGNORE_FLASH_CONFIGURATION) {

View File

@ -85,16 +85,8 @@ extern persistent_config_s *config;
*/
extern engine_configuration_s & activeConfiguration;
#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
// We store a special changeable copy of configuration is RAM, so we can just compare them
#define isConfigurationChanged(x) (engineConfiguration->x != activeConfiguration.x)
#else
// We cannot call prepareVoidConfiguration() for activeConfiguration if it's stored in flash,
// so we need to tell the firmware that it's "void" (i.e. zeroed, invalid) by setting a special flag variable,
// and then we consider 'x' as changed if it's just non-zero.
extern bool isActiveConfigurationVoid;
#define isConfigurationChanged(x) ((engineConfiguration->x != activeConfiguration.x) || (isActiveConfigurationVoid && (int)(engineConfiguration->x) != 0))
#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
#define isPinOrModeChanged(pin, mode) (isConfigurationChanged(pin) || isConfigurationChanged(mode))

View File

@ -54,11 +54,7 @@ void ButtonDebounce::startConfigurationList () {
void ButtonDebounce::stopConfiguration () {
// If the configuration has changed
#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
if (*m_pin != active_pin || *m_mode != active_mode) {
#else
if (*m_pin != active_pin || *m_mode != active_mode || (isActiveConfigurationVoid && ((int)(*m_pin) != 0 || (int)(*m_mode) != 0))) {
#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
#if EFI_PROD_CODE
efiSetPadUnused(active_pin);
#endif /* EFI_UNIT_TEST */

View File

@ -34,8 +34,6 @@
#define SC_BUFFER_SIZE 4000
#define EFI_ACTIVE_CONFIGURATION_IN_FLASH FALSE
#define EFI_BOOST_CONTROL TRUE
#define EFI_CANBUS_SLAVE FALSE