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

706 {
707#if EFI_PROD_CODE
708 efiAssertVoid(ObdCode::CUSTOM_APPLY_STACK, hasLotsOfRemainingStack(), "apply c");
709 efiPrintf("applyNonPersistentConfiguration()");
710#endif
711
712#if EFI_ENGINE_CONTROL
714#endif // EFI_ENGINE_CONTROL
715}
void updateTriggerConfiguration()
Definition engine.cpp:133
static EngineAccessor engine
Definition engine.h:415
@ 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 127 of file engine_configuration.cpp.

127 {
128 // placeholder
129}

◆ boardOnConfigurationChange()

void boardOnConfigurationChange ( engine_configuration_s )

Definition at line 131 of file engine_configuration.cpp.

131 {
132 // placeholder
133}

◆ commonFrankensoAnalogInputs()

void commonFrankensoAnalogInputs ( )

VBatt

Definition at line 726 of file engine_configuration.cpp.

726 {
727 /**
728 * VBatt
729 */
731}
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 698 of file engine_configuration.cpp.

698 {
699 UNUSED(p_engineConfiguration);
700}
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 102 of file engine_configuration.cpp.

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

Referenced by wipeStrings().

Here is the caller graph for this function:

◆ getBoardMetaDcOutputsCount()

PUBLIC_API_WEAK int getBoardMetaDcOutputsCount ( )

Definition at line 748 of file engine_configuration.cpp.

748{ return 0; }

◆ getBoardMetaLowSideOutputsCount()

PUBLIC_API_WEAK int getBoardMetaLowSideOutputsCount ( )

Definition at line 746 of file engine_configuration.cpp.

746{ 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 747 of file engine_configuration.cpp.

747{ return nullptr; }

◆ getBoardMetaOutputsCount()

PUBLIC_API_WEAK_SOMETHING_WEIRD int getBoardMetaOutputsCount ( )

Definition at line 744 of file engine_configuration.cpp.

744{ return 0; }

Referenced by getBoardMetaLowSideOutputsCount().

Here is the caller graph for this function:

◆ hackHellenBoardId()

PUBLIC_API_WEAK int hackHellenBoardId ( int  detectedId)

Definition at line 740 of file engine_configuration.cpp.

740{ 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 142 of file engine_configuration.cpp.

142 {
144 assertStackVoid("increment", ObdCode::STACK_USAGE_MISC, EXPECTED_REMAINING_STACK);
146 criticalError("too early to invoke incrementGlobalConfigurationVersion %s", msg);
147 }
149#if EFI_DETAILED_LOGGING
150 efiPrintf("set globalConfigurationVersion=%d", globalConfigurationVersion);
151#endif /* EFI_DETAILED_LOGGING */
152
154
156
158
159#if EFI_ELECTRONIC_THROTTLE_BODY
161#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
162
163#if EFI_ENGINE_CONTROL && EFI_PROD_CODE
165#endif
166
167#if EFI_SHAFT_POSITION_INPUT
169#endif /* EFI_SHAFT_POSITION_INPUT */
170#if EFI_EMULATE_POSITION_SENSORS && ! EFI_UNIT_TEST
172#endif /* EFI_EMULATE_POSITION_SENSORS */
173
174 engine->engineModules.apply_all([](auto & m) {
175 m.onConfigurationChange(&activeConfiguration);
176 });
178}
void onConfigurationChangeBenchTest()
static bool call_board_override(std::optional< FuncType > board_override, Args &&... args)
void preCalculate()
Definition engine.cpp:333
int globalConfigurationVersion
Definition engine.h:323
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:198
void onConfigurationChangeElectronicThrottleCallback(engine_configuration_s *previousConfiguration)
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 640 of file engine_configuration.cpp.

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

742{ }

◆ onBurnRequest()

void onBurnRequest ( )

Definition at line 116 of file engine_configuration.cpp.

116 {
118 wipeStrings();
119
121}
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 230 of file engine_configuration.cpp.

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

Referenced by loadConfiguration(), and setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ rememberCurrentConfiguration()

void rememberCurrentConfiguration ( )

Definition at line 93 of file engine_configuration.cpp.

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

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

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

◆ setBoardConfigOverrides()

void setBoardConfigOverrides ( )

Definition at line 736 of file engine_configuration.cpp.

736 {
737 // time to force migration to custom_board_ConfigOverrides
738}

◆ setBoardDefaultConfiguration()

void setBoardDefaultConfiguration ( )

Board-specific configuration defaults.

Definition at line 733 of file engine_configuration.cpp.

733 {
734 // custom_board_DefaultConfiguration
735}

◆ setCamOperationMode()

void setCamOperationMode ( )

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

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

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

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultCanSettings()

static void setDefaultCanSettings ( )
static

Definition at line 332 of file engine_configuration.cpp.

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

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

384 {
385#if (! EFI_UNIT_TEST)
387#endif
389
390#if EFI_BOOST_CONTROL
392#endif
393
395
397
401
402#if EFI_ENGINE_CONTROL
407
408 // VVT closed loop, totally random values!
415
416 engineConfiguration->vvtOutputFrequency = DEFAULT_SOLENOID_FREQUENCY; // VVT solenoid control
417
419
424
426
427#if EFI_IDLE_CONTROL
429#endif /* EFI_IDLE_CONTROL */
430
431#if EFI_ELECTRONIC_THROTTLE_BODY
434#endif /* EFI_ELECTRONIC_THROTTLE_BODY */
435
437
440
442
446
447 initTemperatureCurve(IAT_FUEL_CORRECTION_CURVE, 1);
448
449 initBoostTemperatureCurve(config->cltBoostCorrBins, config->cltBoostCorr, 1.0f);
450 initBoostTemperatureCurve(config->iatBoostCorrBins, config->iatBoostCorr, 1.0f);
451 initBoostTemperatureCurve(config->cltBoostAdderBins, config->cltBoostAdder, 0.0f);
452 initBoostTemperatureCurve(config->iatBoostAdderBins, config->iatBoostAdder, 0.0f);
453
456
459
460 setLinearCurve(config->scriptCurve2Bins, 0, 100, /*precision*/1);
461 setLinearCurve(config->scriptCurve2, 30, 170, 1);
462
467
468 setLinearCurve(config->alsIgnRetardLoadBins, 2, 10, /*precision*/1);
470 setLinearCurve(config->alsFuelAdjustmentLoadBins, 2, 10, /*precision*/1);
473
474
479
480#if VVT_TABLE_SIZE == 8
483#else
486#endif
489
491
492 // is this same old setCommonNTCSensor?
493 engineConfiguration->clt.config = {0, 23.8889, 48.8889, 9500, 2100, 1000, 1500};
494
496
497 // wow unit tests have much cooler setDefaultLaunchParameters method
499// engineConfiguration->launchTimingRetard = 10;
502
504
505 /**
506 * Idle control defaults
507 */
509 // setTargetRpmCurve(1200);
510
513
516 /**
517 * between variation between different sensor and weather and fabrication tolerance
518 * five percent looks like a safer default
519 */
521
522 engineConfiguration->idle.solenoidFrequency = DEFAULT_SOLENOID_FREQUENCY;
523 // set idle_position 50
525// engineConfiguration->idleMode = IM_AUTO;
527
529
531
532#if !EFI_UNIT_TEST
533 // todo: remove from *engine* defaults, move into boards?
535#endif
536
537
542
547
548 engineConfiguration->idlePositionMin = PACK_MULT_VOLTAGE * 0;
549 engineConfiguration->idlePositionMax = PACK_MULT_VOLTAGE * 5;
554
558 engineConfiguration->oilPressure.value2 = 689.476f; // 100psi = 689.476kPa
559
561 // todo: start using this for custom MAP
563
565
567
568 setEgoSensor(ES_14Point7_Free);
569
570 // todo: remove from *engine* defaults, move into boards?
572
573 engineConfiguration->map.sensor.type = MT_MPX4250;
574
578
579#if EFI_PROD_CODE
581#else
582 // need more events for automated test
584#endif
585
586#if EFI_PROD_CODE || EFI_SIMULATOR
587 // some tests broke with map averaging, see https://github.com/rusefi/rusefi/issues/7868
589#endif
591
598
605
606 engineConfiguration->triggerSimulatorRpm = DEFAULT_SELT_STIM_RPM;
607 engineConfiguration->simulatorCamPosition[0] = DEFAULT_SELT_STIM_VVT0;
608
609 engineConfiguration->alternatorPwmFrequency = DEFAULT_SOLENOID_FREQUENCY;
610
612
617
619 // todo: default limits should be hard-coded for each sensor type
620 // https://github.com/rusefi/rusefi/issues/4030
622
624#endif // EFI_ENGINE_CONTROL
625 // Allow custom default_script.lua to be provided by BOARDINC
626 // see https://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC6
627 #include <default_script.lua>
628}
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 322 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 284 of file engine_configuration.cpp.

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

Referenced by setDefaultEngineConfiguration().

Here is the caller graph for this function:

◆ setDefaultIdleOpenLoopParameters()

static void setDefaultIdleOpenLoopParameters ( )
static

Definition at line 360 of file engine_configuration.cpp.

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

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

349 {
358}

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

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

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

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

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

197 {
199}
scaled_channel< int16_t, 10, 1 > ignitionIatCorrTable[IAT_IGN_CORR_LOAD_COUNT][IAT_IGN_CORR_TEMP_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 204 of file engine_configuration.cpp.

204 {
206}
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 109 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 89 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

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'? todo: not great that it's a global variable which we have to clean, move to 'engine' somewhere?

Definition at line 82 of file engine_configuration.cpp.

Referenced by incrementGlobalConfigurationVersion(), and rememberCurrentConfiguration().

◆ isActiveConfigurationVoid

bool isActiveConfigurationVoid = true

Go to the source code of this file.