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

703 {
704#if EFI_PROD_CODE
705 efiAssertVoid(ObdCode::CUSTOM_APPLY_STACK, hasLotsOfRemainingStack(), "apply c");
706 efiPrintf("applyNonPersistentConfiguration()");
707#endif
708
709#if EFI_ENGINE_CONTROL
711#endif // EFI_ENGINE_CONTROL
712}
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://wiki.rusefi.com/Custom-Firmware and https://wiki.rusefi.com/Canned-Tune-Process todo: why two hooks? is one already dead?

Definition at line 126 of file engine_configuration.cpp.

126 {
127 // placeholder
128}

◆ boardOnConfigurationChange()

void boardOnConfigurationChange ( engine_configuration_s )

Definition at line 130 of file engine_configuration.cpp.

130 {
131 // placeholder
132}

◆ commonFrankensoAnalogInputs()

void commonFrankensoAnalogInputs ( )

VBatt

Definition at line 723 of file engine_configuration.cpp.

723 {
724 /**
725 * VBatt
726 */
728}
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 695 of file engine_configuration.cpp.

695 {
696 UNUSED(p_engineConfiguration);
697}
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 745 of file engine_configuration.cpp.

745{ return 0; }

◆ getBoardMetaLowSideOutputsCount()

PUBLIC_API_WEAK int getBoardMetaLowSideOutputsCount ( )

Definition at line 743 of file engine_configuration.cpp.

743{ 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 744 of file engine_configuration.cpp.

744{ return nullptr; }

◆ getBoardMetaOutputsCount()

PUBLIC_API_WEAK_SOMETHING_WEIRD int getBoardMetaOutputsCount ( )

Definition at line 741 of file engine_configuration.cpp.

741{ return 0; }

Referenced by getBoardMetaLowSideOutputsCount().

Here is the caller graph for this function:

◆ hackHellenBoardId()

PUBLIC_API_WEAK int hackHellenBoardId ( int  detectedId)

Definition at line 737 of file engine_configuration.cpp.

737{ 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 141 of file engine_configuration.cpp.

141 {
143 assertStackVoid("increment", ObdCode::STACK_USAGE_MISC, EXPECTED_REMAINING_STACK);
145 criticalError("too early to invoke incrementGlobalConfigurationVersion %s", msg);
146 }
148#if EFI_DETAILED_LOGGING
149 efiPrintf("set globalConfigurationVersion=%d", globalConfigurationVersion);
150#endif /* EFI_DETAILED_LOGGING */
151
153
155
157
158#if EFI_ELECTRONIC_THROTTLE_BODY
160#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
161
162#if EFI_ENGINE_CONTROL && EFI_PROD_CODE
164#endif
165
166#if EFI_SHAFT_POSITION_INPUT
168#endif /* EFI_SHAFT_POSITION_INPUT */
169#if EFI_EMULATE_POSITION_SENSORS && ! EFI_UNIT_TEST
171#endif /* EFI_EMULATE_POSITION_SENSORS */
172
173 engine->engineModules.apply_all([](auto & m) {
174 m.onConfigurationChange(&activeConfiguration);
175 });
177}
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 637 of file engine_configuration.cpp.

637 {
638
639#if ! EFI_ACTIVE_CONFIGURATION_IN_FLASH
640 // Clear the active configuration so that registered output pins (etc) detect the change on startup and init properly
642#endif /* EFI_ACTIVE_CONFIGURATION_IN_FLASH */
643
644 /* If board have any storage */
645#if EFI_CONFIGURATION_STORAGE
646 if (IGNORE_FLASH_CONFIGURATION) {
647 engineConfiguration->engineType = DEFAULT_ENGINE_TYPE;
650 } else {
651 // this call reads configuration from flash memory or sets default configuration
652 // if flash state does not look right.
654 }
655#else
656 // This board doesn't load configuration, initialize the default
657 engineConfiguration->engineType = DEFAULT_ENGINE_TYPE;
659#endif /* EFI_CONFIGURATION_STORAGE */
660
661 // Force any board configuration options that humans shouldn't be able to change
663}
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 739 of file engine_configuration.cpp.

739{ }

◆ onBurnRequest()

void onBurnRequest ( )

Definition at line 115 of file engine_configuration.cpp.

115 {
117 wipeStrings();
118
120}
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 229 of file engine_configuration.cpp.

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

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

665 {
666 enginePins.reset(); // that's mostly important for functional tests
667 /**
668 * Let's apply global defaults first
669 */
671
672 /**
673 * custom board engine defaults. Yes, this overlaps with (older) engine_type_e approach.
674 */
676
677 // set initial pin groups
679
680 if (boardCallback != nullptr) {
681 boardCallback(engineConfiguration);
682 }
683
684#if EFI_PROD_CODE
685 // call board-specific configuration setup, if needed (for custom boards only)
688#endif // EFI_PROD_CODE
689
690 engineConfiguration->engineType = engineType;
691 applyEngineType(engineType);
693}
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 699 of file engine_configuration.cpp.

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

◆ setBoardConfigOverrides()

void setBoardConfigOverrides ( )

Definition at line 733 of file engine_configuration.cpp.

733 {
734 // time to force migration to custom_board_ConfigOverrides
735}

◆ setBoardDefaultConfiguration()

void setBoardDefaultConfiguration ( )

Board-specific configuration defaults.

Definition at line 730 of file engine_configuration.cpp.

730 {
731 // custom_board_DefaultConfiguration
732}

◆ setCamOperationMode()

void setCamOperationMode ( )

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

183 {
184 for (int i = 0; i < DWELL_CURVE_SIZE; i++) {
185 config->sparkDwellRpmBins[i] = 1000 * i;
186 }
188}
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 238 of file engine_configuration.cpp.

238 {
239#if EFI_PROD_CODE
240 // call overrided board-specific serial configuration setup, if needed (for custom boards only)
241 // needed also by bootloader code
243#endif /* EFI_PROD_CODE */
244
245 // set UART pads configuration based on the board
246// needed also by bootloader code
247#ifdef TS_SECONDARY_UxART_PORT
250#endif // TS_SECONDARY_UxART_PORT
251
254}
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 316 of file engine_configuration.cpp.

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultCanSettings()

static void setDefaultCanSettings ( )
static

Definition at line 331 of file engine_configuration.cpp.

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

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

383 {
384#if (! EFI_UNIT_TEST)
386#endif
388
389#if EFI_BOOST_CONTROL
391#endif
392
394
396
400
401#if EFI_ENGINE_CONTROL
406
407 // VVT closed loop, totally random values!
414
415 engineConfiguration->vvtOutputFrequency = DEFAULT_SOLENOID_FREQUENCY; // VVT solenoid control
416
418
423
425
426#if EFI_IDLE_CONTROL
428#endif /* EFI_IDLE_CONTROL */
429
430#if EFI_ELECTRONIC_THROTTLE_BODY
433#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
434
436
439
441
445
446 initTemperatureCurve(IAT_FUEL_CORRECTION_CURVE, 1);
447
448 initBoostTemperatureCurve(config->cltBoostCorrBins, config->cltBoostCorr, 1.0f);
449 initBoostTemperatureCurve(config->iatBoostCorrBins, config->iatBoostCorr, 1.0f);
450 initBoostTemperatureCurve(config->cltBoostAdderBins, config->cltBoostAdder, 0.0f);
451 initBoostTemperatureCurve(config->iatBoostAdderBins, config->iatBoostAdder, 0.0f);
452
455
458
459 setLinearCurve(config->scriptCurve2Bins, 0, 100, /*precision*/1);
460 setLinearCurve(config->scriptCurve2, 30, 170, 1);
461
466
467 setLinearCurve(config->alsIgnRetardLoadBins, 2, 10, /*precision*/1);
469 setLinearCurve(config->alsFuelAdjustmentLoadBins, 2, 10, /*precision*/1);
472
473
478
479#if VVT_TABLE_SIZE == 8
482#else
485#endif
488
490
491 // is this same old setCommonNTCSensor?
492 engineConfiguration->clt.config = {0, 23.8889, 48.8889, 9500, 2100, 1000, 1500};
493
495
496 // wow unit tests have much cooler setDefaultLaunchParameters method
498// engineConfiguration->launchTimingRetard = 10;
501
503
504 /**
505 * Idle control defaults
506 */
508 // setTargetRpmCurve(1200);
509
512
515 /**
516 * between variation between different sensor and weather and fabrication tolerance
517 * five percent looks like a safer default
518 */
520
521 engineConfiguration->idle.solenoidFrequency = DEFAULT_SOLENOID_FREQUENCY;
522 // set idle_position 50
524// engineConfiguration->idleMode = IM_AUTO;
526
528
530
531#if !EFI_UNIT_TEST
533#endif
534
535
540
545
546 engineConfiguration->idlePositionMin = PACK_MULT_VOLTAGE * 0;
547 engineConfiguration->idlePositionMax = PACK_MULT_VOLTAGE * 5;
552
556 engineConfiguration->oilPressure.value2 = 689.476f; // 100psi = 689.476kPa
557
559 // todo: start using this for custom MAP
561
563
565
566 setEgoSensor(ES_14Point7_Free);
567
569
570 engineConfiguration->map.sensor.type = MT_MPX4250;
571
575
576#if EFI_PROD_CODE
578#else
579 // need more events for automated test
581#endif
582
583#if EFI_PROD_CODE || EFI_SIMULATOR
584 // some tests broke with map averaging, see https://github.com/rusefi/rusefi/issues/7868
586#endif
588
595
602
603 engineConfiguration->triggerSimulatorRpm = DEFAULT_SELT_STIM_RPM;
604 engineConfiguration->simulatorCamPosition[0] = DEFAULT_SELT_STIM_VVT0;
605
606 engineConfiguration->alternatorPwmFrequency = DEFAULT_SOLENOID_FREQUENCY;
607
609
614
616 // todo: default limits should be hard-coded for each sensor type
617 // https://github.com/rusefi/rusefi/issues/4030
619
621#endif // EFI_ENGINE_CONTROL
622 // Allow custom default_script.lua to be provided by BOARDINC
623 // see https://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC6
624 #include <default_script.lua>
625}
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 321 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 283 of file engine_configuration.cpp.

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

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultIdleOpenLoopParameters()

static void setDefaultIdleOpenLoopParameters ( )
static

Definition at line 359 of file engine_configuration.cpp.

359 {
361 setLinearCurve(config->cltIdleCorrBins, CLT_CURVE_RANGE_FROM, 140, 10);
362 for (size_t i = 0; i < CLT_IDLE_TABLE_RPM_SIZE; i++) {
363 setLinearCurve(config->cltIdleCorrTable[i], 75.0, 50, 5);
364 }
365}
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 267 of file engine_configuration.cpp.

267 {
268#if CLT_CURVE_SIZE == 16
269 copyArray(config->cltIdleRpmBins, { -30, - 20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 , 110, 120 });
270 copyArray(config->cltIdleRpm, { 1350, 1350, 1300, 1200, 1150, 1100, 1050, 1000, 1000, 950, 950, 930, 900, 900, 1000, 1100 });
271#endif // CLT_CURVE_SIZE
272}
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 348 of file engine_configuration.cpp.

348 {
357}

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

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

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

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

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

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

203 {
205}
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.