rusefi-1/firmware/hw_layer/backup_ram.h

45 lines
1.2 KiB
C

/**
* @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);