44#if EFI_ALTERNATOR_CONTROL
48#if EFI_ELECTRONIC_THROTTLE_BODY
58#if EFI_EMULATE_POSITION_SENSORS
68#define TS_DEFAULT_SPEED 38400
81#if EFI_ACTIVE_CONFIGURATION_IN_FLASH
92#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
102 for (
int i = std::strlen(
string) + 1; i <
size; i++) {
140 criticalError(
"too early to invoke incrementGlobalConfigurationVersion %s", msg);
143#if EFI_DETAILED_LOGGING
144 efiPrintf(
"set globalConfigurationVersion=%d", globalConfigurationVersion);
153#if EFI_ELECTRONIC_THROTTLE_BODY
157#if EFI_ENGINE_CONTROL && EFI_PROD_CODE
161#if EFI_SHAFT_POSITION_INPUT
164#if EFI_EMULATE_POSITION_SENSORS && ! EFI_UNIT_TEST
179 for (
int i = 0; i < DWELL_CURVE_SIZE; i++) {
202#if EFI_ENGINE_CONTROL
204 void initTemperatureCurve(
206 float *
const values,
208 const float defaultValue,
209 const float initialTemperature = -40.0f,
210 const float temperatureStep = 10.0f
212 for (
int i = 0; i <
size; i++) {
213 bins[i] = initialTemperature + i * temperatureStep;
214 values[i] = defaultValue;
218 void initBoostTemperatureCurve(
float*
const bins,
float*
const values,
const float defaultValue) {
219 initTemperatureCurve(bins, values, BOOST_CURVE_SIZE, defaultValue, 20.0f, 20.0f);
225 criticalAssertVoid(p_engineConfiguration !=
nullptr,
"ec NULL");
226 efi::clear(p_engineConfiguration);
242#ifdef TS_SECONDARY_UxART_PORT
257#if EFI_ENGINE_CONTROL
263#if CLT_CURVE_SIZE == 16
264 copyArray(
config->
cltIdleRpmBins, { -30, - 20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 , 110, 120 });
265 copyArray(
config->
cltIdleRpm, { 1350, 1350, 1300, 1200, 1150, 1100, 1050, 1000, 1000, 950, 950, 930, 900, 900, 1000, 1100 });
285 cfg.loadAxis = GPPWM_Zero;
286 cfg.rpmAxis = GPPWM_Rpm;
290 cfg.onAboveDuty = 60;
291 cfg.offBelowDuty = 50;
292 cfg.pwmFrequency = 250;
294 for (
size_t j = 0; j < efi::size(cfg.loadBins); j++) {
295 uint8_t z = j * 100 / (efi::size(cfg.loadBins) - 1);
299 for (
size_t k = 0; k < efi::size(cfg.rpmBins); k++) {
305 for (
size_t j = 0; j < efi::size(cfg.rpmBins); j++) {
306 cfg.rpmBins[j] = 1000 * j;
315#if EFI_ENGINE_CONTROL
354 for (
size_t i = 0; i < CLT_IDLE_TABLE_RPM_SIZE; i++) {
393#if EFI_ENGINE_CONTROL
422#if EFI_ELECTRONIC_THROTTLE_BODY
438 initTemperatureCurve(IAT_FUEL_CORRECTION_CURVE, 1);
471#if VVT_TABLE_SIZE == 8
575#if EFI_PROD_CODE || EFI_SIMULATOR
614 #include "default_script.lua"
617#if defined(STM32F7) && defined(HARDWARE_CI)
619#define IGNORE_FLASH_CONFIGURATION true
623#ifndef IGNORE_FLASH_CONFIGURATION
624#define IGNORE_FLASH_CONFIGURATION false
629#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
635#if EFI_CONFIGURATION_STORAGE
636 if (IGNORE_FLASH_CONFIGURATION) {
670 if (boardCallback !=
nullptr) {
686 UNUSED(p_engineConfiguration);
696 efiPrintf(
"applyNonPersistentConfiguration()");
699#if EFI_ENGINE_CONTROL
void onConfigurationChangeBenchTest()
Utility methods related to bench testing.
static bool call_board_override(std::optional< setup_custom_board_overrides_type > board_override)
void setDefaultBoostParameters()
void setPinConfigurationOverrides()
int globalConfigurationVersion
void updateTriggerConfiguration()
type_list< Mockable< InjectorModelPrimary >, Mockable< InjectorModelSecondary >,#if EFI_IDLE_CONTROL Mockable< IdleController >,#endif TriggerScheduler,#if EFI_HPFP &&EFI_ENGINE_CONTROL Mockable< HpfpController >,#endif #if EFI_ENGINE_CONTROL Mockable< ThrottleModel >,#endif #if EFI_ALTERNATOR_CONTROL AlternatorController,#endif MainRelayController, Mockable< IgnitionController >, Mockable< AcController >, PrimeController, DfcoController,#if EFI_HD_ACR HarleyAcr,#endif Mockable< WallFuelController >, KnockController, SensorChecker,#if EFI_ENGINE_CONTROL Mockable< LimpManager >,#endif #if EFI_VVT_PID VvtController1, VvtController2, VvtController3, VvtController4,#endif #if EFI_BOOST_CONTROL BoostController,#endif TpsAccelEnrichment,#if EFI_LAUNCH_CONTROL NitrousController,#endif #if EFI_LTFT_CONTROL LongTermFuelTrim,#endif ShortTermFuelTrim,#include "modules_list_generated.h" EngineModule > engineModules
void setBoschHDEV_5_injectors()
void setTPS1Calibration(uint16_t tpsMin, uint16_t tpsMax)
void setDefaultBaseEngine()
void setDefaultCranking()
void setDefaultIgnition()
void setEgoSensor(ego_sensor_e type)
void setDefaultEtbParameters()
void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration)
void setDefaultEtbBiasCurve()
static EngineAccessor engine
void setConstantDwell(floatms_t dwellMs)
Sets the same dwell time across the whole getRpm() range set dwell X.
PUBLIC_API_WEAK_SOMETHING_WEIRD int getBoardMetaOutputsCount()
static void setDefaultEngineConfiguration()
Global default engine configuration This method sets the global engine configuration defaults....
void setBoardDefaultConfiguration()
Board-specific configuration defaults.
void emptyCallbackWithConfiguration(engine_configuration_s *p_engineConfiguration)
static void setDefaultBoostOpenLoopParameters()
static void setDefaultGppwmParameters()
void setCamOperationMode()
void commonFrankensoAnalogInputs()
std::optional< setup_custom_board_overrides_type > custom_board_ConfigOverrides
void setDefaultBasePins()
static void setDefaultIdleOpenLoopParameters()
PUBLIC_API_WEAK int getBoardMetaDcOutputsCount()
PUBLIC_API_WEAK Gpio * getBoardMetaOutputs()
void incrementGlobalConfigurationVersion(const char *msg)
static void setDefaultScriptParameters()
PUBLIC_API_WEAK void onBoardStandBy()
void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e engineType)
std::optional< setup_custom_board_overrides_type > custom_board_DefaultConfiguration
void setTargetRpmCurve(float rpm)
void setDefaultSdCardParameters()
void setCrankOperationMode()
static engine_configuration_s activeConfigurationLocalStorage
static void setDefaultEngineNoiseTable()
void setWholeIatCorrTimingTable(float value)
PUBLIC_API_WEAK void boardBeforeTuneDefaults()
PUBLIC_API_WEAK int hackHellenBoardId(int detectedId)
static bool hasRememberedConfiguration
void rememberCurrentConfiguration()
void setBoardConfigOverrides()
void applyNonPersistentConfiguration()
static void fillAfterString(char *string, int size)
void setWholeTimingTable(angle_t value)
PUBLIC_API_WEAK void boardOnConfigurationChange(engine_configuration_s *)
static void wipeStrings()
static void setDefaultIdleSpeedTarget()
void prepareVoidConfiguration(engine_configuration_s *p_engineConfiguration)
bool isActiveConfigurationVoid
void setFuelTablesLoadBin(float minValue, float maxValue)
static void setDefaultCanSettings()
engine_configuration_s & activeConfiguration
PUBLIC_API_WEAK int getBoardMetaLowSideOutputsCount()
static constexpr persistent_config_s * config
void applyEngineType(engine_type_e engineType)
void(* configuration_callback_t)(engine_configuration_s *)
static constexpr engine_configuration_s * engineConfiguration
persistent_config_container_s persistentState
uintptr_t getFlashAddrFirstCopy(void)
void applyNewHardwareSettings()
Idle Valve Control thread.
void setDefaultIdleParameters()
UNUSED(samplingTimeSeconds)
void setBosch0280218037()
constexpr uint16_t MAX_AC_PRESSURE
constexpr uint16_t NITROUS_DEACTIVATION_RPM
constexpr uint16_t MIN_AC_PRESSURE
constexpr uint8_t NITROUS_MINIMUM_CLT
constexpr int NITROUS_MINIMUM_TPS
constexpr float NITROUS_MAXIMUM_AFR
constexpr uint16_t NITROUS_DEACTIVATION_RPM_WINDOW
constexpr float AC_PRESSURE_ENABLE_HYST
constexpr uint16_t NITROUS_ACTIVATION_RPM
char[VEHICLE_INFO_SIZE] vehicle_info_t
float samplingAngle[MAP_ANGLE_SIZE]
air_pressure_sensor_config_s sensor
float samplingWindow[MAP_WINDOW_SIZE]
float samplingWindowBins[MAP_WINDOW_SIZE]
float samplingAngleBins[MAP_ANGLE_SIZE]
air_pressure_sensor_type_e type
can_baudrate_e canBaudRate
float mapHighValueVoltage
vehicle_info_t engineMake
pin_input_mode_e clutchDownPinMode
uint32_t tunerStudioSerialSpeed
uint16_t nitrousDeactivationRpm
bool isAlternatorControlEnabled
uint8_t simulatorCamPosition[CAM_INPUTS_COUNT]
scaled_channel< uint16_t, 100, 1 > finalGearRatio
scaled_channel< uint16_t, 10000, 1 > canVssScaling
gppwm_channel gppwm[GPPWM_CHANNELS]
int16_t nitrousMinimumClt
can_baudrate_e can2BaudRate
gppwm_note_t gpPwmNote[GPPWM_CHANNELS]
bool isMapAveragingEnabled
uint16_t nitrousActivationRpm
uint32_t uartConsoleSerialSpeed
pin_input_mode_e clutchUpPinMode
uint16_t triggerSimulatorRpm
int16_t tpsErrorDetectionTooLow
scaled_channel< uint16_t, 1000, 1 > vssGearRatio
vehicle_info_t vehicleName
bool isWaveAnalyzerEnabled
pid_s auxPid[CAMS_PER_BANK]
float wastegatePositionOpenedVoltage
float analogInputDividerCoefficient
scaled_channel< uint8_t, 10, 1 > acDelay
float mapErrorDetectionTooHigh
scaled_channel< uint8_t, 10, 1 > nitrousMaximumAfr
int16_t knockSamplingDuration
air_pressure_sensor_config_s baroSensor
uint16_t tps2SecondaryMax
pin_input_mode_e brakePedalPinMode
uint16_t startCrankingDuration
uint32_t verboseCanBaseAddress
gppwm_channel_e boostOpenLoopYAxis
float knockDetectionWindowStart
uint8_t acIdleExtraOffset
scaled_channel< uint8_t, 1, 50 > maxAcRpm
float wastegatePositionClosedVoltage
uint16_t engineSnifferRpmThreshold
linear_sensor_s oilPressure
pwm_freq_t vvtOutputFrequency
uint16_t sdCardLogFrequency
float mapErrorDetectionTooLow
uint16_t vvtActivationDelayMs
vehicle_info_t engineCode
bool isCylinderCleanupEnabled
uint16_t nitrousDeactivationRpmWindow
float turboSpeedSensorMultiplier
int alternatorPwmFrequency
uint16_t tps2SecondaryMin
int16_t idlePidDeactivationTpsThreshold
adc_channel_e vbattAdcChannel
scaled_channel< uint8_t, 2, 1 > acPressureEnableHyst
int16_t tpsErrorDetectionTooHigh
persistent_config_s persistentConfiguration
float cltIdleCorrTable[CLT_IDLE_TABLE_RPM_SIZE][CLT_IDLE_TABLE_CLT_SIZE]
int16_t scriptTable2LoadBins[TABLE_2_LOAD_SIZE]
scaled_channel< int16_t, 1, 1 > cltIdleRpmBins[CLT_CURVE_SIZE]
int16_t scriptTable1LoadBins[SCRIPT_TABLE_8]
float iatBoostCorr[BOOST_CURVE_SIZE]
uint16_t alsIgnRetardLoadBins[ALS_SIZE]
uint16_t veLoadBins[VE_LOAD_COUNT]
scaled_channel< uint8_t, 1, 100 > iacCoastingRpmBins[CLT_CURVE_SIZE]
int16_t scriptTable3LoadBins[SCRIPT_TABLE_8]
float cltBoostCorr[BOOST_CURVE_SIZE]
uint16_t alsFuelAdjustmentLoadBins[ALS_SIZE]
scaled_channel< int8_t, 2, 1 > knockBaseNoise[ENGINE_NOISE_CURVE_SIZE]
float cltIdleCorrBins[CLT_IDLE_TABLE_CLT_SIZE]
scaled_channel< uint16_t, 1000, 1 > fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]
uint16_t injPhaseLoadBins[INJ_PHASE_LOAD_COUNT]
int16_t scriptTable1RpmBins[SCRIPT_TABLE_8]
uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]
float cltBoostAdderBins[BOOST_CURVE_SIZE]
float iatBoostAdder[BOOST_CURVE_SIZE]
scaled_channel< uint16_t, 10, 1 > throttleEstimateEffectiveAreaBins[THR_EST_SIZE]
float scriptCurve6Bins[SCRIPT_CURVE_8]
uint16_t vvtTable1RpmBins[VVT_TABLE_SIZE]
float scriptCurve4Bins[SCRIPT_CURVE_8]
uint16_t vvtTable1LoadBins[VVT_TABLE_SIZE]
int16_t scriptTable3RpmBins[SCRIPT_TABLE_8]
uint16_t vvtTable2RpmBins[VVT_TABLE_SIZE]
float scriptCurve5Bins[SCRIPT_CURVE_8]
float iatBoostAdderBins[BOOST_CURVE_SIZE]
float scriptCurve1[SCRIPT_CURVE_16]
float scriptCurve2Bins[SCRIPT_CURVE_16]
float cltBoostAdder[BOOST_CURVE_SIZE]
uint16_t alsIgnRetardrpmBins[ALS_SIZE]
float cltBoostCorrBins[BOOST_CURVE_SIZE]
scaled_channel< uint8_t, 1, 100 > rpmIdleCorrBins[CLT_IDLE_TABLE_RPM_SIZE]
float scriptCurve3Bins[SCRIPT_CURVE_8]
float scriptCurve1Bins[SCRIPT_CURVE_16]
float iatBoostCorrBins[BOOST_CURVE_SIZE]
scaled_channel< int16_t, 10, 1 > ignitionIatCorrTable[IAT_IGN_CORR_LOAD_COUNT][IAT_IGN_CORR_COUNT]
int16_t scriptTable2RpmBins[TABLE_2_RPM_SIZE]
uint16_t vvtTable2LoadBins[VVT_TABLE_SIZE]
scaled_channel< int16_t, 10, 1 > ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]
int16_t scriptTable4LoadBins[SCRIPT_TABLE_8]
float scriptCurve2[SCRIPT_CURVE_16]
scaled_channel< uint8_t, 1, 20 > cltIdleRpm[CLT_CURVE_SIZE]
int16_t scriptTable4RpmBins[TABLE_4_RPM]
scaled_channel< uint16_t, 100, 1 > sparkDwellValues[DWELL_CURVE_SIZE]
uint16_t knockNoiseRpmBins[ENGINE_NOISE_CURVE_SIZE]
uint16_t alsFuelAdjustmentrpmBins[ALS_SIZE]
uint16_t lambdaLoadBins[FUEL_LOAD_COUNT]
constexpr void setTable(TElement(&dest)[N][M], const VElement value)
void setRpmTableBin(TValue(&array)[TSize])
void setLinearCurve(TValue(&array)[TSize], float from, float to, float precision=0.01f)
void setArrayValues(TValue(&array)[TSize], float value)
void setCommonNTCSensorParameters(ThermistorConf *thermistorConf)
constexpr int convertVoltageTo10bitADC(float voltage)
void onTransitionEvent(TransitionEvent event)
@ GlobalConfigurationVersion
void onConfigurationChangeTriggerCallback()
void onConfigurationChangeRpmEmulatorCallback(engine_configuration_s *previousConfiguration)