/** * @file backup_ram.cpp * @brief Non-volatile backup-RAM registers support * * @date Dec 19, 2017 */ #pragma once #include "global.h" #include "efi_gpio.h" typedef enum { /** * IAC Stepper motor position, 16-bit (stored in BKP0R 0..15) * Used in stepper.cpp */ BACKUP_STEPPER_POS, /** * Ignition switch counter, 8-bit (stored in BKP0R 16..23) * The counter stores the number of times the ignition switch is turned on. Used for prime injection pulse. * We need a protection against 'fake' ignition switch on and off (i.e. no engine started), to avoid repeated prime pulses. * So we check and update the ignition switch counter in non-volatile backup-RAM. * See startPrimeInjectionPulse() in controllers/trigger/main_trigger_callback.cpp */ BACKUP_IGNITION_SWITCH_COUNTER, /** * CJ125 Calibration data (16bit) */ BACKUP_CJ125_CALIBRATION_LAMBDA, /** * CJ125 Calibration data (16bit) */ BACKUP_CJ125_CALIBRATION_HEATER, DFU_JUMP_REQUESTED, } backup_ram_e; // load data from backup-power RTC registers (non-volatile memory) uint32_t backupRamLoad(backup_ram_e idx); // use backup-power RTC registers (non-volatile memory) to store the data void backupRamSave(backup_ram_e idx, uint32_t value);