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 ()
 
PUBLIC_API_WEAK void boardBeforeTuneDefaults ()
 
PUBLIC_API_WEAK 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
 
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 693 of file engine_configuration.cpp.

693 {
694#if EFI_PROD_CODE
695 efiAssertVoid(ObdCode::CUSTOM_APPLY_STACK, hasLotsOfRemainingStack(), "apply c");
696 efiPrintf("applyNonPersistentConfiguration()");
697#endif
698
699#if EFI_ENGINE_CONTROL
701#endif // EFI_ENGINE_CONTROL
702}
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()

PUBLIC_API_WEAK 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 124 of file engine_configuration.cpp.

124{ }

Referenced by resetConfigurationExt().

Here is the caller graph for this function:

◆ boardOnConfigurationChange()

PUBLIC_API_WEAK void boardOnConfigurationChange ( engine_configuration_s previousConfiguration)

Definition at line 127 of file engine_configuration.cpp.

127{ }

Referenced by incrementGlobalConfigurationVersion().

Here is the caller graph for this function:

◆ commonFrankensoAnalogInputs()

void commonFrankensoAnalogInputs ( )

VBatt

Definition at line 713 of file engine_configuration.cpp.

713 {
714 /**
715 * VBatt
716 */
718}
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 685 of file engine_configuration.cpp.

685 {
686 UNUSED(p_engineConfiguration);
687}
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 100 of file engine_configuration.cpp.

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

Referenced by wipeStrings().

Here is the caller graph for this function:

◆ getBoardMetaDcOutputsCount()

PUBLIC_API_WEAK int getBoardMetaDcOutputsCount ( )

Definition at line 735 of file engine_configuration.cpp.

735{ return 0; }

◆ getBoardMetaLowSideOutputsCount()

PUBLIC_API_WEAK int getBoardMetaLowSideOutputsCount ( )

Definition at line 733 of file engine_configuration.cpp.

733{ 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 734 of file engine_configuration.cpp.

734{ return nullptr; }

◆ getBoardMetaOutputsCount()

PUBLIC_API_WEAK_SOMETHING_WEIRD int getBoardMetaOutputsCount ( )

Definition at line 731 of file engine_configuration.cpp.

731{ return 0; }

Referenced by getBoardMetaLowSideOutputsCount().

Here is the caller graph for this function:

◆ hackHellenBoardId()

PUBLIC_API_WEAK int hackHellenBoardId ( int  detectedId)

Definition at line 727 of file engine_configuration.cpp.

727{ 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 136 of file engine_configuration.cpp.

136 {
138 assertStackVoid("increment", ObdCode::STACK_USAGE_MISC, EXPECTED_REMAINING_STACK);
140 criticalError("too early to invoke incrementGlobalConfigurationVersion %s", msg);
141 }
143#if EFI_DETAILED_LOGGING
144 efiPrintf("set globalConfigurationVersion=%d", globalConfigurationVersion);
145#endif /* EFI_DETAILED_LOGGING */
146
148
150
152
153#if EFI_ELECTRONIC_THROTTLE_BODY
155#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
156
157#if EFI_ENGINE_CONTROL && EFI_PROD_CODE
159#endif
160
161#if EFI_SHAFT_POSITION_INPUT
163#endif /* EFI_SHAFT_POSITION_INPUT */
164#if EFI_EMULATE_POSITION_SENSORS && ! EFI_UNIT_TEST
166#endif /* EFI_EMULATE_POSITION_SENSORS */
167
168 engine->engineModules.apply_all([](auto & m) {
169 m.onConfigurationChange(&activeConfiguration);
170 });
172}
void onConfigurationChangeBenchTest()
void preCalculate()
Definition engine.cpp:324
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()
PUBLIC_API_WEAK void boardOnConfigurationChange(engine_configuration_s *)
engine_configuration_s & activeConfiguration
void applyNewHardwareSettings()
Definition hardware.cpp:311
@ 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 627 of file engine_configuration.cpp.

627 {
628
629#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
630 // Clear the active configuration so that registered output pins (etc) detect the change on startup and init properly
632#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
633
634 /* If board have any storage */
635#if EFI_CONFIGURATION_STORAGE
636 if (IGNORE_FLASH_CONFIGURATION) {
637 engineConfiguration->engineType = DEFAULT_ENGINE_TYPE;
640 } else {
641 // this call reads configuration from flash memory or sets default configuration
642 // if flash state does not look right.
644 }
645#else
646 // This board doesn't load configuration, initialize the default
647 engineConfiguration->engineType = DEFAULT_ENGINE_TYPE;
649#endif /* EFI_CONFIGURATION_STORAGE */
650
651 // Force any board configuration options that humans shouldn't be able to change
653}
static bool call_board_override(std::optional< setup_custom_board_overrides_type > board_override)
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 729 of file engine_configuration.cpp.

729{ }

◆ onBurnRequest()

void onBurnRequest ( )

Definition at line 113 of file engine_configuration.cpp.

113 {
115 wipeStrings();
116
118}
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 224 of file engine_configuration.cpp.

224 {
225 criticalAssertVoid(p_engineConfiguration != nullptr, "ec NULL");
226 efi::clear(p_engineConfiguration);
227
228 p_engineConfiguration->clutchDownPinMode = PI_PULLUP;
229 p_engineConfiguration->clutchUpPinMode = PI_PULLUP;
230 p_engineConfiguration->brakePedalPinMode = PI_PULLUP;
231}

Referenced by loadConfiguration(), and setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ rememberCurrentConfiguration()

void rememberCurrentConfiguration ( )

Definition at line 91 of file engine_configuration.cpp.

91 {
92#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
94#else
96#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
98}
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 655 of file engine_configuration.cpp.

655 {
656 enginePins.reset(); // that's mostly important for functional tests
657 /**
658 * Let's apply global defaults first
659 */
661
662 /**
663 * custom board engine defaults. Yes, this overlaps with (older) engine_type_e approach.
664 */
666
667 // set initial pin groups
669
670 if (boardCallback != nullptr) {
671 boardCallback(engineConfiguration);
672 }
673
674#if EFI_PROD_CODE
675 // call board-specific configuration setup, if needed (for custom boards only)
678#endif // EFI_PROD_CODE
679
680 engineConfiguration->engineType = engineType;
681 applyEngineType(engineType);
683}
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
PUBLIC_API_WEAK void boardBeforeTuneDefaults()
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 689 of file engine_configuration.cpp.

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

◆ setBoardConfigOverrides()

void setBoardConfigOverrides ( )

Definition at line 723 of file engine_configuration.cpp.

723 {
724 // time to force migration to custom_board_ConfigOverrides
725}

◆ setBoardDefaultConfiguration()

void setBoardDefaultConfiguration ( )

Board-specific configuration defaults.

Definition at line 720 of file engine_configuration.cpp.

720 {
721 // custom_board_DefaultConfiguration
722}

◆ setCamOperationMode()

void setCamOperationMode ( )

Definition at line 704 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 178 of file engine_configuration.cpp.

178 {
179 for (int i = 0; i < DWELL_CURVE_SIZE; i++) {
180 config->sparkDwellRpmBins[i] = 1000 * i;
181 }
183}
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 233 of file engine_configuration.cpp.

233 {
234#if EFI_PROD_CODE
235 // call overrided board-specific serial configuration setup, if needed (for custom boards only)
236 // needed also by bootloader code
238#endif /* EFI_PROD_CODE */
239
240 // set UART pads configuration based on the board
241// needed also by bootloader code
242#ifdef TS_SECONDARY_UxART_PORT
245#endif // TS_SECONDARY_UxART_PORT
246
249}
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 311 of file engine_configuration.cpp.

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultCanSettings()

static void setDefaultCanSettings ( )
static

Definition at line 326 of file engine_configuration.cpp.

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 375 of file engine_configuration.cpp.

375 {
376#if (! EFI_UNIT_TEST)
378#endif
380
381#if EFI_BOOST_CONTROL
383#endif
384
386
388
392
393#if EFI_ENGINE_CONTROL
398
399 // VVT closed loop, totally random values!
406
407 engineConfiguration->vvtOutputFrequency = DEFAULT_SOLENOID_FREQUENCY; // VVT solenoid control
408
410
415
417
418#if EFI_IDLE_CONTROL
420#endif /* EFI_IDLE_CONTROL */
421
422#if EFI_ELECTRONIC_THROTTLE_BODY
425#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
426
428
431
433
437
438 initTemperatureCurve(IAT_FUEL_CORRECTION_CURVE, 1);
439
440 initBoostTemperatureCurve(config->cltBoostCorrBins, config->cltBoostCorr, 1.0f);
441 initBoostTemperatureCurve(config->iatBoostCorrBins, config->iatBoostCorr, 1.0f);
442 initBoostTemperatureCurve(config->cltBoostAdderBins, config->cltBoostAdder, 0.0f);
443 initBoostTemperatureCurve(config->iatBoostAdderBins, config->iatBoostAdder, 0.0f);
444
447
450
451 setLinearCurve(config->scriptCurve2Bins, 0, 100, /*precision*/1);
452 setLinearCurve(config->scriptCurve2, 30, 170, 1);
453
458
459 setLinearCurve(config->alsIgnRetardLoadBins, 2, 10, /*precision*/1);
461 setLinearCurve(config->alsFuelAdjustmentLoadBins, 2, 10, /*precision*/1);
464
465
470
471#if VVT_TABLE_SIZE == 8
474#else
477#endif
480
482
483 // is this same old setCommonNTCSensor?
484 engineConfiguration->clt.config = {0, 23.8889, 48.8889, 9500, 2100, 1000, 1500};
485
487
488 // wow unit tests have much cooler setDefaultLaunchParameters method
490// engineConfiguration->launchTimingRetard = 10;
493
495
496 /**
497 * Idle control defaults
498 */
500 // setTargetRpmCurve(1200);
501
504
507 /**
508 * between variation between different sensor and weather and fabrication tolerance
509 * five percent looks like a safer default
510 */
512
513 engineConfiguration->idle.solenoidFrequency = DEFAULT_SOLENOID_FREQUENCY;
514 // set idle_position 50
516// engineConfiguration->idleMode = IM_AUTO;
518
520
522
523#if !EFI_UNIT_TEST
525#endif
526
527
532
537
538 engineConfiguration->idlePositionMin = PACK_MULT_VOLTAGE * 0;
539 engineConfiguration->idlePositionMax = PACK_MULT_VOLTAGE * 5;
544
548 engineConfiguration->oilPressure.value2 = 689.476f; // 100psi = 689.476kPa
549
551 // todo: start using this for custom MAP
553
555
557
558 setEgoSensor(ES_14Point7_Free);
559
561
562 engineConfiguration->map.sensor.type = MT_MPX4250;
563
567
568#if EFI_PROD_CODE
570#else
571 // need more events for automated test
573#endif
574
575#if EFI_PROD_CODE || EFI_SIMULATOR
576 // some tests broke with map averaging, see https://github.com/rusefi/rusefi/issues/7868
578#endif
580
587
594
595 engineConfiguration->triggerSimulatorRpm = DEFAULT_SELT_STIM_RPM;
596 engineConfiguration->simulatorCamPosition[0] = DEFAULT_SELT_STIM_VVT0;
597
598 engineConfiguration->alternatorPwmFrequency = DEFAULT_SOLENOID_FREQUENCY;
599
601
606
608 // todo: default limits should be hard-coded for each sensor type
609 // https://github.com/rusefi/rusefi/issues/4030
611
613#endif // EFI_ENGINE_CONTROL
614 #include "default_script.lua"
615}
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 316 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 278 of file engine_configuration.cpp.

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

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultIdleOpenLoopParameters()

static void setDefaultIdleOpenLoopParameters ( )
static

Definition at line 351 of file engine_configuration.cpp.

351 {
353 setLinearCurve(config->cltIdleCorrBins, CLT_CURVE_RANGE_FROM, 140, 10);
354 for (size_t i = 0; i < CLT_IDLE_TABLE_RPM_SIZE; i++) {
355 setLinearCurve(config->cltIdleCorrTable[i], 75.0, 50, 5);
356 }
357}
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 262 of file engine_configuration.cpp.

262 {
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 });
266#endif // CLT_CURVE_SIZE
267}
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 340 of file engine_configuration.cpp.

340 {
349}

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 253 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 185 of file engine_configuration.cpp.

185 {
186 setLinearCurve(config->injPhaseLoadBins, minValue, maxValue, 1);
187 setLinearCurve(config->veLoadBins, minValue, maxValue, 1);
188 setLinearCurve(config->lambdaLoadBins, minValue, maxValue, 1);
189}

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 273 of file engine_configuration.cpp.

273 {
274 setLinearCurve(config->cltIdleRpmBins, CLT_CURVE_RANGE_FROM, 140, 10);
275 setLinearCurve(config->cltIdleRpm, rpm, rpm, 10);
276}

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 191 of file engine_configuration.cpp.

191 {
193}
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 198 of file engine_configuration.cpp.

198 {
200}
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 107 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 87 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().

◆ 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 80 of file engine_configuration.cpp.

Referenced by incrementGlobalConfigurationVersion(), and rememberCurrentConfiguration().

◆ isActiveConfigurationVoid

bool isActiveConfigurationVoid = true

Go to the source code of this file.