rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Functions | Variables
engine_configuration.cpp File Reference

Detailed Description

Utility method related to the engine configuration data structure.

Date
Nov 22, 2013
Author
Andrey Belomutskiy, (c) 2012-2020

This file is part of rusEfi - see http://rusefi.com

rusEfi is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

rusEfi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file engine_configuration.cpp.

Functions

void rememberCurrentConfiguration ()
 
static void fillAfterString (char *string, int size)
 
static void wipeStrings ()
 
void onBurnRequest ()
 
void boardBeforeTuneDefaults ()
 
void boardOnConfigurationChange (engine_configuration_s *)
 
void incrementGlobalConfigurationVersion (const char *msg)
 
void setConstantDwell (floatms_t dwellMs)
 Sets the same dwell time across the whole getRpm() range set dwell X.
 
void setFuelTablesLoadBin (float minValue, float maxValue)
 
void setWholeIatCorrTimingTable (float value)
 
void setWholeTimingTable (angle_t value)
 
void prepareVoidConfiguration (engine_configuration_s *p_engineConfiguration)
 
void setDefaultBasePins ()
 
void setDefaultSdCardParameters ()
 
static void setDefaultIdleSpeedTarget ()
 
void setTargetRpmCurve (float rpm)
 
static void setDefaultGppwmParameters ()
 
static void setDefaultBoostOpenLoopParameters ()
 
static void setDefaultEngineNoiseTable ()
 
static void setDefaultCanSettings ()
 
static void setDefaultScriptParameters ()
 
static void setDefaultIdleOpenLoopParameters ()
 
static void setDefaultEngineConfiguration ()
 Global default engine configuration This method sets the global engine configuration defaults. These default values are then overridden by engine-specific defaults and the settings are saved in flash memory.
 
void loadConfiguration ()
 
void resetConfigurationExt (configuration_callback_t boardCallback, engine_type_e engineType)
 
void emptyCallbackWithConfiguration (engine_configuration_s *p_engineConfiguration)
 
void resetConfigurationExt (engine_type_e engineType)
 
void applyNonPersistentConfiguration ()
 
void setCamOperationMode ()
 
void setCrankOperationMode ()
 
void commonFrankensoAnalogInputs ()
 
void setBoardDefaultConfiguration ()
 Board-specific configuration defaults.
 
void setBoardConfigOverrides ()
 
PUBLIC_API_WEAK int hackHellenBoardId (int detectedId)
 
PUBLIC_API_WEAK void onBoardStandBy ()
 
PUBLIC_API_WEAK_SOMETHING_WEIRD int getBoardMetaOutputsCount ()
 
PUBLIC_API_WEAK int getBoardMetaLowSideOutputsCount ()
 
PUBLIC_API_WEAK GpiogetBoardMetaOutputs ()
 
PUBLIC_API_WEAK int getBoardMetaDcOutputsCount ()
 

Variables

std::optional< setup_custom_board_overrides_typecustom_board_DefaultConfiguration
 
std::optional< setup_custom_board_overrides_typecustom_board_ConfigOverrides
 
std::optional< setup_custom_board_config_typecustom_board_OnConfigurationChange
 
static bool hasRememberedConfiguration = false
 
engine_configuration_sactiveConfiguration = reinterpret_cast<persistent_config_container_s*>(getFlashAddrFirstCopy())->persistentConfiguration.engineConfiguration
 
bool isActiveConfigurationVoid = true
 
static engine_configuration_s activeConfigurationLocalStorage
 

Function Documentation

◆ applyNonPersistentConfiguration()

void applyNonPersistentConfiguration ( )

Definition at line 700 of file engine_configuration.cpp.

700 {
701#if EFI_PROD_CODE
702 efiAssertVoid(ObdCode::CUSTOM_APPLY_STACK, hasLotsOfRemainingStack(), "apply c");
703 efiPrintf("applyNonPersistentConfiguration()");
704#endif
705
706#if EFI_ENGINE_CONTROL
708#endif // EFI_ENGINE_CONTROL
709}
void updateTriggerConfiguration()
Definition engine.cpp:133
static EngineAccessor engine
Definition engine.h:413
@ CUSTOM_APPLY_STACK

Referenced by readFromFlash(), and resetConfigurationExt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ boardBeforeTuneDefaults()

void boardBeforeTuneDefaults ( )

this hook is about https://github.com/rusefi/rusefi/wiki/Custom-Firmware and https://github.com/rusefi/rusefi/wiki/Canned-Tune-Process todo: why two hooks? is one already dead?

Definition at line 125 of file engine_configuration.cpp.

125 {
126 // placeholder
127}

◆ boardOnConfigurationChange()

void boardOnConfigurationChange ( engine_configuration_s )

Definition at line 129 of file engine_configuration.cpp.

129 {
130 // placeholder
131}

◆ commonFrankensoAnalogInputs()

void commonFrankensoAnalogInputs ( )

VBatt

Definition at line 720 of file engine_configuration.cpp.

720 {
721 /**
722 * VBatt
723 */
725}
static constexpr engine_configuration_s * engineConfiguration

Referenced by setDodgeNeonNGCEngineConfiguration(), and setFrankensoConfiguration().

Here is the caller graph for this function:

◆ emptyCallbackWithConfiguration()

void emptyCallbackWithConfiguration ( engine_configuration_s p_engineConfiguration)

Definition at line 692 of file engine_configuration.cpp.

692 {
693 UNUSED(p_engineConfiguration);
694}
UNUSED(samplingTimeSeconds)

Referenced by resetConfigurationExt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fillAfterString()

static void fillAfterString ( char string,
int  size 
)
static

Definition at line 101 of file engine_configuration.cpp.

101 {
102 // we have to reset bytes after \0 symbol in order to calculate correct tune CRC from MSQ file
103 for (int i = std::strlen(string) + 1; i < size; i++) {
104 string[i] = 0;
105 }
106}
composite packet size

Referenced by wipeStrings().

Here is the caller graph for this function:

◆ getBoardMetaDcOutputsCount()

PUBLIC_API_WEAK int getBoardMetaDcOutputsCount ( )

Definition at line 742 of file engine_configuration.cpp.

742{ return 0; }

◆ getBoardMetaLowSideOutputsCount()

PUBLIC_API_WEAK int getBoardMetaLowSideOutputsCount ( )

Definition at line 740 of file engine_configuration.cpp.

740{ return getBoardMetaOutputsCount(); }
PUBLIC_API_WEAK_SOMETHING_WEIRD int getBoardMetaOutputsCount()
Here is the call graph for this function:

◆ getBoardMetaOutputs()

PUBLIC_API_WEAK Gpio * getBoardMetaOutputs ( )

Definition at line 741 of file engine_configuration.cpp.

741{ return nullptr; }

◆ getBoardMetaOutputsCount()

PUBLIC_API_WEAK_SOMETHING_WEIRD int getBoardMetaOutputsCount ( )

Definition at line 738 of file engine_configuration.cpp.

738{ return 0; }

Referenced by getBoardMetaLowSideOutputsCount().

Here is the caller graph for this function:

◆ hackHellenBoardId()

PUBLIC_API_WEAK int hackHellenBoardId ( int  detectedId)

Definition at line 734 of file engine_configuration.cpp.

734{ return detectedId; }

◆ incrementGlobalConfigurationVersion()

void incrementGlobalConfigurationVersion ( const char msg)

this is the top-level method which should be called in case of any changes to engine configuration online tuning of most values in the maps does not count as configuration change, but 'Burn' command does

this method is NOT currently invoked on ECU start - actual user input has to happen! See 'preCalculate' or 'startHardware' which are invoked BOTH on start and configuration change

Definition at line 140 of file engine_configuration.cpp.

140 {
142 assertStackVoid("increment", ObdCode::STACK_USAGE_MISC, EXPECTED_REMAINING_STACK);
144 criticalError("too early to invoke incrementGlobalConfigurationVersion %s", msg);
145 }
147#if EFI_DETAILED_LOGGING
148 efiPrintf("set globalConfigurationVersion=%d", globalConfigurationVersion);
149#endif /* EFI_DETAILED_LOGGING */
150
152
154
156
157#if EFI_ELECTRONIC_THROTTLE_BODY
159#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
160
161#if EFI_ENGINE_CONTROL && EFI_PROD_CODE
163#endif
164
165#if EFI_SHAFT_POSITION_INPUT
167#endif /* EFI_SHAFT_POSITION_INPUT */
168#if EFI_EMULATE_POSITION_SENSORS && ! EFI_UNIT_TEST
170#endif /* EFI_EMULATE_POSITION_SENSORS */
171
172 engine->engineModules.apply_all([](auto & m) {
173 m.onConfigurationChange(&activeConfiguration);
174 });
176}
void onConfigurationChangeBenchTest()
static bool call_board_override(std::optional< FuncType > board_override, Args &&... args)
void preCalculate()
Definition engine.cpp:334
int globalConfigurationVersion
Definition engine.h:315
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
Definition engine.h:194
void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration)
static bool hasRememberedConfiguration
void rememberCurrentConfiguration()
std::optional< setup_custom_board_config_type > custom_board_OnConfigurationChange
engine_configuration_s & activeConfiguration
void applyNewHardwareSettings()
Definition hardware.cpp:314
@ STACK_USAGE_MISC
void onTransitionEvent(TransitionEvent event)
void onConfigurationChangeTriggerCallback()
void onConfigurationChangeRpmEmulatorCallback(engine_configuration_s *previousConfiguration)

Referenced by configureRusefiLuaHooks(), disableTriggerStimulator(), enableExternalTriggerStimulator(), enableOrDisable(), enableTriggerStimulator(), onBurnRequest(), setAnalogInputPin(), setBit(), setByte(), setCrankingInjectionMode(), setCrankingTimingAngle(), setEngineType(), setFloat(), setGlobalTriggerAngleOffset(), setIdleSolenoidFrequency(), setIgnitionMode(), setIgnitionPin(), setIndividualPin(), setInjectionMode(), setInt(), setLogicInputPin(), setShort(), setTriggerInputPin(), setTriggerSimulatorPin(), and setTriggerType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ loadConfiguration()

void loadConfiguration ( )

Definition at line 634 of file engine_configuration.cpp.

634 {
635
636#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
637 // Clear the active configuration so that registered output pins (etc) detect the change on startup and init properly
639#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
640
641 /* If board have any storage */
642#if EFI_CONFIGURATION_STORAGE
643 if (IGNORE_FLASH_CONFIGURATION) {
644 engineConfiguration->engineType = DEFAULT_ENGINE_TYPE;
647 } else {
648 // this call reads configuration from flash memory or sets default configuration
649 // if flash state does not look right.
651 }
652#else
653 // This board doesn't load configuration, initialize the default
654 engineConfiguration->engineType = DEFAULT_ENGINE_TYPE;
656#endif /* EFI_CONFIGURATION_STORAGE */
657
658 // Force any board configuration options that humans shouldn't be able to change
660}
std::optional< setup_custom_board_overrides_type > custom_board_ConfigOverrides
void resetConfigurationExt(configuration_callback_t boardCallback, engine_type_e engineType)
void prepareVoidConfiguration(engine_configuration_s *p_engineConfiguration)
void readFromFlash()
void writeToFlashNow()

Referenced by runRusEfi().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ onBoardStandBy()

PUBLIC_API_WEAK void onBoardStandBy ( )

Definition at line 736 of file engine_configuration.cpp.

736{ }

◆ onBurnRequest()

void onBurnRequest ( )

Definition at line 114 of file engine_configuration.cpp.

114 {
116 wipeStrings();
117
119}
void incrementGlobalConfigurationVersion(const char *msg)
static void wipeStrings()

Referenced by requestBurn().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ prepareVoidConfiguration()

void prepareVoidConfiguration ( engine_configuration_s p_engineConfiguration)

Definition at line 228 of file engine_configuration.cpp.

228 {
229 criticalAssertVoid(p_engineConfiguration != nullptr, "ec NULL");
230 efi::clear(p_engineConfiguration);
231
232 p_engineConfiguration->clutchDownPinMode = PI_PULLUP;
233 p_engineConfiguration->clutchUpPinMode = PI_PULLUP;
234 p_engineConfiguration->brakePedalPinMode = PI_PULLUP;
235}

Referenced by loadConfiguration(), and setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ rememberCurrentConfiguration()

void rememberCurrentConfiguration ( )

Definition at line 92 of file engine_configuration.cpp.

92 {
93#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
95#else
97#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
99}
bool isActiveConfigurationVoid

Referenced by incrementGlobalConfigurationVersion(), and initEfiWithConfig().

Here is the caller graph for this function:

◆ resetConfigurationExt() [1/2]

void resetConfigurationExt ( configuration_callback_t  boardCallback,
engine_type_e  engineType 
)

boardCallback is invoked after configuration reset but before specific engineType configuration

Let's apply global defaults first

custom board engine defaults. Yes, this overlaps with (older) engine_type_e approach.

Definition at line 662 of file engine_configuration.cpp.

662 {
663 enginePins.reset(); // that's mostly important for functional tests
664 /**
665 * Let's apply global defaults first
666 */
668
669 /**
670 * custom board engine defaults. Yes, this overlaps with (older) engine_type_e approach.
671 */
673
674 // set initial pin groups
676
677 if (boardCallback != nullptr) {
678 boardCallback(engineConfiguration);
679 }
680
681#if EFI_PROD_CODE
682 // call board-specific configuration setup, if needed (for custom boards only)
685#endif // EFI_PROD_CODE
686
687 engineConfiguration->engineType = engineType;
688 applyEngineType(engineType);
690}
std::optional< setup_custom_board_overrides_type > custom_board_BeforeTuneDefaults
Definition hardware.cpp:79
void reset()
Definition efi_gpio.cpp:275
EnginePins enginePins
Definition efi_gpio.cpp:24
static void setDefaultEngineConfiguration()
Global default engine configuration This method sets the global engine configuration defaults....
void setDefaultBasePins()
std::optional< setup_custom_board_overrides_type > custom_board_DefaultConfiguration
void applyNonPersistentConfiguration()
void applyEngineType(engine_type_e engineType)

Referenced by doResetConfiguration(), loadConfiguration(), readFromFlash(), resetConfigurationExt(), and setEngineType().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ resetConfigurationExt() [2/2]

void resetConfigurationExt ( engine_type_e  engineType)

Definition at line 696 of file engine_configuration.cpp.

696 {
698}
void emptyCallbackWithConfiguration(engine_configuration_s *p_engineConfiguration)
Here is the call graph for this function:

◆ setBoardConfigOverrides()

void setBoardConfigOverrides ( )

Definition at line 730 of file engine_configuration.cpp.

730 {
731 // time to force migration to custom_board_ConfigOverrides
732}

◆ setBoardDefaultConfiguration()

void setBoardDefaultConfiguration ( )

Board-specific configuration defaults.

Definition at line 727 of file engine_configuration.cpp.

727 {
728 // custom_board_DefaultConfiguration
729}

◆ setCamOperationMode()

void setCamOperationMode ( )

Definition at line 711 of file engine_configuration.cpp.

Referenced by setFordInline6(), setSubaruEG33Defaults(), and setTestCamEngineConfiguration().

Here is the caller graph for this function:

◆ setConstantDwell()

void setConstantDwell ( floatms_t  dwellMs)

Sets the same dwell time across the whole getRpm() range set dwell X.

Definition at line 182 of file engine_configuration.cpp.

182 {
183 for (int i = 0; i < DWELL_CURVE_SIZE; i++) {
184 config->sparkDwellRpmBins[i] = 1000 * i;
185 }
187}
static constexpr persistent_config_s * config
scaled_channel< uint16_t, 100, 1 > sparkDwellValues[DWELL_CURVE_SIZE]
void setArrayValues(TValue(&array)[TSize], float value)

Referenced by setDefaultIgnition(), setFordInline6(), setTestCamEngineConfiguration(), and setValue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setCrankOperationMode()

void setCrankOperationMode ( )

◆ setDefaultBasePins()

void setDefaultBasePins ( )

Definition at line 237 of file engine_configuration.cpp.

237 {
238#if EFI_PROD_CODE
239 // call overrided board-specific serial configuration setup, if needed (for custom boards only)
240 // needed also by bootloader code
242#endif /* EFI_PROD_CODE */
243
244 // set UART pads configuration based on the board
245// needed also by bootloader code
246#ifdef TS_SECONDARY_UxART_PORT
249#endif // TS_SECONDARY_UxART_PORT
250
253}
void setPinConfigurationOverrides()

Referenced by resetConfigurationExt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setDefaultBoostOpenLoopParameters()

static void setDefaultBoostOpenLoopParameters ( )
static

Definition at line 315 of file engine_configuration.cpp.

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultCanSettings()

static void setDefaultCanSettings ( )
static

Definition at line 330 of file engine_configuration.cpp.

330 {
331 // OBD-II default rate is 500kbps
334#if (EFI_CAN_BUS_COUNT >= 3)
336#endif
337
342
343 // Don't enable, but set default address
344 engineConfiguration->verboseCanBaseAddress = CAN_DEFAULT_BASE;
345}

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultEngineConfiguration()

static void setDefaultEngineConfiguration ( )
static

Global default engine configuration This method sets the global engine configuration defaults. These default values are then overridden by engine-specific defaults and the settings are saved in flash memory.

This method is invoked only when new configuration is needed:

  • recently re-flashed chip
  • flash version of configuration failed CRC check or appears to be older then FLASH_DATA_VERSION
  • 'rewriteconfig' command
  • 'set engine_type X' command

This method should only change the state of the configuration data structure but should NOT change the state of anything else.

This method should NOT be setting any default pinout

Idle control defaults

between variation between different sensor and weather and fabrication tolerance five percent looks like a safer default

Definition at line 382 of file engine_configuration.cpp.

382 {
383#if (! EFI_UNIT_TEST)
385#endif
387
388#if EFI_BOOST_CONTROL
390#endif
391
393
395
399
400#if EFI_ENGINE_CONTROL
405
406 // VVT closed loop, totally random values!
413
414 engineConfiguration->vvtOutputFrequency = DEFAULT_SOLENOID_FREQUENCY; // VVT solenoid control
415
417
422
424
425#if EFI_IDLE_CONTROL
427#endif /* EFI_IDLE_CONTROL */
428
429#if EFI_ELECTRONIC_THROTTLE_BODY
432#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
433
435
438
440
444
445 initTemperatureCurve(IAT_FUEL_CORRECTION_CURVE, 1);
446
447 initBoostTemperatureCurve(config->cltBoostCorrBins, config->cltBoostCorr, 1.0f);
448 initBoostTemperatureCurve(config->iatBoostCorrBins, config->iatBoostCorr, 1.0f);
449 initBoostTemperatureCurve(config->cltBoostAdderBins, config->cltBoostAdder, 0.0f);
450 initBoostTemperatureCurve(config->iatBoostAdderBins, config->iatBoostAdder, 0.0f);
451
454
457
458 setLinearCurve(config->scriptCurve2Bins, 0, 100, /*precision*/1);
459 setLinearCurve(config->scriptCurve2, 30, 170, 1);
460
465
466 setLinearCurve(config->alsIgnRetardLoadBins, 2, 10, /*precision*/1);
468 setLinearCurve(config->alsFuelAdjustmentLoadBins, 2, 10, /*precision*/1);
471
472
477
478#if VVT_TABLE_SIZE == 8
481#else
484#endif
487
489
490 // is this same old setCommonNTCSensor?
491 engineConfiguration->clt.config = {0, 23.8889, 48.8889, 9500, 2100, 1000, 1500};
492
494
495 // wow unit tests have much cooler setDefaultLaunchParameters method
497// engineConfiguration->launchTimingRetard = 10;
500
502
503 /**
504 * Idle control defaults
505 */
507 // setTargetRpmCurve(1200);
508
511
514 /**
515 * between variation between different sensor and weather and fabrication tolerance
516 * five percent looks like a safer default
517 */
519
520 engineConfiguration->idle.solenoidFrequency = DEFAULT_SOLENOID_FREQUENCY;
521 // set idle_position 50
523// engineConfiguration->idleMode = IM_AUTO;
525
527
529
530#if !EFI_UNIT_TEST
532#endif
533
534
539
544
545 engineConfiguration->idlePositionMin = PACK_MULT_VOLTAGE * 0;
546 engineConfiguration->idlePositionMax = PACK_MULT_VOLTAGE * 5;
551
555 engineConfiguration->oilPressure.value2 = 689.476f; // 100psi = 689.476kPa
556
558 // todo: start using this for custom MAP
560
562
564
565 setEgoSensor(ES_14Point7_Free);
566
568
569 engineConfiguration->map.sensor.type = MT_MPX4250;
570
574
575#if EFI_PROD_CODE
577#else
578 // need more events for automated test
580#endif
581
582#if EFI_PROD_CODE || EFI_SIMULATOR
583 // some tests broke with map averaging, see https://github.com/rusefi/rusefi/issues/7868
585#endif
587
594
601
602 engineConfiguration->triggerSimulatorRpm = DEFAULT_SELT_STIM_RPM;
603 engineConfiguration->simulatorCamPosition[0] = DEFAULT_SELT_STIM_VVT0;
604
605 engineConfiguration->alternatorPwmFrequency = DEFAULT_SOLENOID_FREQUENCY;
606
608
613
615 // todo: default limits should be hard-coded for each sensor type
616 // https://github.com/rusefi/rusefi/issues/4030
618
620#endif // EFI_ENGINE_CONTROL
621 #include "default_script.lua"
622}
void setDefaultBoostParameters()
void setBoschHDEV_5_injectors()
void setTPS1Calibration(uint16_t tpsMin, uint16_t tpsMax)
void setDefaultBaseEngine()
void setDefaultCranking()
void setDefaultFuel()
void setDefaultIgnition()
void setEgoSensor(ego_sensor_e type)
Definition ego.cpp:100
void setDefaultEtbParameters()
void setDefaultEtbBiasCurve()
static void setDefaultBoostOpenLoopParameters()
static void setDefaultGppwmParameters()
static void setDefaultIdleOpenLoopParameters()
static void setDefaultScriptParameters()
static void setDefaultEngineNoiseTable()
static void setDefaultIdleSpeedTarget()
static void setDefaultCanSettings()
persistent_config_container_s persistentState
void setDefaultIdleParameters()
void setBosch0280218037()
Definition maf.cpp:25
scaled_channel< uint8_t, 1, 100 > iacCoastingRpmBins[CLT_CURVE_SIZE]
scaled_channel< uint16_t, 1000, 1 > fuelLevelBins[FUEL_LEVEL_TABLE_COUNT]
scaled_channel< uint16_t, 10, 1 > throttleEstimateEffectiveAreaBins[THR_EST_SIZE]
void setRpmTableBin(TValue(&array)[TSize])
void setLinearCurve(TValue(&array)[TSize], float from, float to, float precision=0.01f)
void setCommonNTCSensorParameters(ThermistorConf *thermistorConf)
constexpr int convertVoltageTo10bitADC(float voltage)
Definition tps.h:21

Referenced by resetConfigurationExt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setDefaultEngineNoiseTable()

static void setDefaultEngineNoiseTable ( )
static

Definition at line 320 of file engine_configuration.cpp.

Referenced by setDefaultEngineConfiguration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setDefaultGppwmParameters()

static void setDefaultGppwmParameters ( )
static

Definition at line 282 of file engine_configuration.cpp.

282 {
283 // Same config for all channels
284 for (size_t i = 0; i < efi::size(engineConfiguration->gppwm); i++) {
285 auto& cfg = engineConfiguration->gppwm[i];
286 chsnprintf(engineConfiguration->gpPwmNote[i], sizeof(engineConfiguration->gpPwmNote[0]), "GPPWM%d", i);
287
288 // Set default axes
289 cfg.loadAxis = GPPWM_Zero;
290 cfg.rpmAxis = GPPWM_Rpm;
291
292 cfg.pin = Gpio::Unassigned;
293 cfg.dutyIfError = 0;
294 cfg.onAboveDuty = 60;
295 cfg.offBelowDuty = 50;
296 cfg.pwmFrequency = 250;
297
298 for (size_t j = 0; j < efi::size(cfg.loadBins); j++) {
299 uint8_t z = j * 100 / (efi::size(cfg.loadBins) - 1);
300 cfg.loadBins[j] = z;
301
302 // Fill some values in the table
303 for (size_t k = 0; k < efi::size(cfg.rpmBins); k++) {
304 cfg.table[j][k] = z;
305 }
306
307 }
308
309 for (size_t j = 0; j < efi::size(cfg.rpmBins); j++) {
310 cfg.rpmBins[j] = 1000 * j;
311 }
312 }
313}
@ Unassigned

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultIdleOpenLoopParameters()

static void setDefaultIdleOpenLoopParameters ( )
static

Definition at line 358 of file engine_configuration.cpp.

358 {
360 setLinearCurve(config->cltIdleCorrBins, CLT_CURVE_RANGE_FROM, 140, 10);
361 for (size_t i = 0; i < CLT_IDLE_TABLE_RPM_SIZE; i++) {
362 setLinearCurve(config->cltIdleCorrTable[i], 75.0, 50, 5);
363 }
364}
float cltIdleCorrTable[CLT_IDLE_TABLE_RPM_SIZE][CLT_IDLE_TABLE_CLT_SIZE]
scaled_channel< uint8_t, 1, 100 > rpmIdleCorrBins[CLT_IDLE_TABLE_RPM_SIZE]

Referenced by setDefaultEngineConfiguration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setDefaultIdleSpeedTarget()

static void setDefaultIdleSpeedTarget ( )
static

see also setTargetRpmCurve()

Definition at line 266 of file engine_configuration.cpp.

266 {
267#if CLT_CURVE_SIZE == 16
268 copyArray(config->cltIdleRpmBins, { -30, - 20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 , 110, 120 });
269 copyArray(config->cltIdleRpm, { 1350, 1350, 1300, 1200, 1150, 1100, 1050, 1000, 1000, 950, 950, 930, 900, 900, 1000, 1100 });
270#endif // CLT_CURVE_SIZE
271}
scaled_channel< int16_t, 1, 1 > cltIdleRpmBins[CLT_CURVE_SIZE]
scaled_channel< uint8_t, 1, 20 > cltIdleRpm[CLT_CURVE_SIZE]

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultScriptParameters()

static void setDefaultScriptParameters ( )
static

Definition at line 347 of file engine_configuration.cpp.

347 {
356}

Referenced by setDefaultEngineConfiguration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setDefaultSdCardParameters()

void setDefaultSdCardParameters ( )

Definition at line 257 of file engine_configuration.cpp.

Referenced by f407_discovery_DefaultConfiguration().

Here is the caller graph for this function:

◆ setFuelTablesLoadBin()

void setFuelTablesLoadBin ( float  minValue,
float  maxValue 
)

Definition at line 189 of file engine_configuration.cpp.

189 {
190 setLinearCurve(config->injPhaseLoadBins, minValue, maxValue, 1);
191 setLinearCurve(config->veLoadBins, minValue, maxValue, 1);
192 setLinearCurve(config->lambdaLoadBins, minValue, maxValue, 1);
193}

Referenced by setDefaultFuel(), setDodgeNeonNGCEngineConfiguration(), and setVwAba().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setTargetRpmCurve()

void setTargetRpmCurve ( float  rpm)

see also setDefaultIdleSpeedTarget()

Definition at line 277 of file engine_configuration.cpp.

277 {
278 setLinearCurve(config->cltIdleRpmBins, CLT_CURVE_RANGE_FROM, 140, 10);
279 setLinearCurve(config->cltIdleRpm, rpm, rpm, 10);
280}

Referenced by setGy6139qmbDefaultEngineConfiguration(), and setTargetIdleRpm().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setWholeIatCorrTimingTable()

void setWholeIatCorrTimingTable ( float  value)

Definition at line 195 of file engine_configuration.cpp.

195 {
197}
scaled_channel< int16_t, 10, 1 > ignitionIatCorrTable[IAT_IGN_CORR_LOAD_COUNT][IAT_IGN_CORR_COUNT]
constexpr void setTable(TElement(&dest)[N][M], const VElement value)

Referenced by setTestCamEngineConfiguration().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ setWholeTimingTable()

void setWholeTimingTable ( angle_t  value)

See also crankingTimingAngle

Definition at line 202 of file engine_configuration.cpp.

202 {
204}
scaled_channel< int16_t, 10, 1 > ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]

Referenced by setDodgeNeon1995EngineConfiguration(), setVwAba(), and testEngine6451().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ wipeStrings()

static void wipeStrings ( )
static

Definition at line 108 of file engine_configuration.cpp.

Referenced by onBurnRequest().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ activeConfiguration

◆ activeConfigurationLocalStorage

engine_configuration_s activeConfigurationLocalStorage
static

Definition at line 88 of file engine_configuration.cpp.

◆ custom_board_ConfigOverrides

std::optional<setup_custom_board_overrides_type> custom_board_ConfigOverrides

◆ custom_board_DefaultConfiguration

std::optional<setup_custom_board_overrides_type> custom_board_DefaultConfiguration

Definition at line 70 of file engine_configuration.cpp.

Referenced by resetConfigurationExt(), and setup_custom_board_overrides().

◆ custom_board_OnConfigurationChange

std::optional<setup_custom_board_config_type> custom_board_OnConfigurationChange

◆ hasRememberedConfiguration

bool hasRememberedConfiguration = false
static

Current engine configuration. On firmware start we assign empty configuration, then we copy actual configuration after reading settings from flash. This is useful to compare old/current (activeConfiguration) and new/future (engineConfiguration) configurations in order to apply new settings.

todo: place this field next to 'engineConfiguration'?

Definition at line 81 of file engine_configuration.cpp.

Referenced by incrementGlobalConfigurationVersion(), and rememberCurrentConfiguration().

◆ isActiveConfigurationVoid

bool isActiveConfigurationVoid = true

Go to the source code of this file.