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

Functions

static void setDefaultAlternatorParameters ()
 
void setHpfpLobeProfileAngle (int lobes)
 
static void setDefaultHPFP ()
 
static void setGdiDefaults ()
 
void setGDIFueling ()
 
void setLeftRightBanksNeedBetterName ()
 
static void mc33810defaults ()
 
void setDynoDefaults ()
 
void defaultsOrFixOnBurn ()
 
void setDefaultBaseEngine ()
 
void setPPSInputs (adc_channel_e pps1, adc_channel_e pps2)
 
void setTPS1Inputs (adc_channel_e tps1, adc_channel_e tps2)
 
void setTPS1Calibration (uint16_t tpsMin, uint16_t tpsMax)
 
void setTPS1Calibration (uint16_t tpsMin, uint16_t tpsMax, uint16_t tps1SecondaryMin, uint16_t tps1SecondaryMax)
 
void setCustomMap (float lowValue, float mapLowValueVoltage, float highValue, float mapHighValueVoltage)
 
void setPPSCalibration (float primaryUp, float primaryDown, float secondaryUp, float secondaryDown)
 
void setEtbPID (float p, float i, float d)
 
void setInline4 ()
 
void setProteusEtbIO ()
 
void setupTLE9201 (Gpio controlPin, Gpio direction, Gpio disable, int dcIndex)
 
void setupTLE9201IncludingStepper (Gpio controlPin, Gpio direction, Gpio disable, int dcIndex)
 

Function Documentation

◆ defaultsOrFixOnBurn()

void defaultsOrFixOnBurn ( )

Definition at line 129 of file default_base_engine.cpp.

129 {
130 if (config->dynoCarCarMassKg == 0) {
132 }
133
136 }
137
140 }
143 }
144
147 }
150 }
153 }
154
157 }
158}
void setDynoDefaults()
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration

Referenced by setDefaultBaseEngine(), and validateConfigOnStartUpOrBurn().

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

◆ mc33810defaults()

static void mc33810defaults ( )
static

Definition at line 102 of file default_base_engine.cpp.

Referenced by setDefaultBaseEngine().

Here is the caller graph for this function:

◆ setCustomMap()

void setCustomMap ( float  lowValue,
float  mapLowValueVoltage,
float  highValue,
float  mapHighValueVoltage 
)

◆ setDefaultAlternatorParameters()

static void setDefaultAlternatorParameters ( )
static

Definition at line 13 of file default_base_engine.cpp.

Referenced by setDefaultBaseEngine().

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

◆ setDefaultBaseEngine()

void setDefaultBaseEngine ( )

Definition at line 160 of file default_base_engine.cpp.

160 {
161 // Base Engine Settings
164#if MAX_CYLINDER_COUNT >= 4
165 setInline4();
166#else
167 // todo: invoke more complete one cylinder default?
169#endif
170
172
173 for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
174 // one knock sensor by default. See also 'setLeftRightBanksNeedBetterName()'
175 // zero-based index
177 }
178
181
186
188
189#ifdef EFI_KLINE
190 engineConfiguration->kLinePeriodUs = 300 /* us*/;
192#endif
193
195
196 // it's useful to know what starting point is given tune based on
197 engineConfiguration->calibrationBirthday = compilationYear() * 10000 + compilationMonth() * 100 + compilationDay();
198
200
203
206
210
213
215
220
222
223 setLinearCurve(engineConfiguration->tractionControlSlipBins, /*from*/0.9, /*to*/1.2, 0.05);
225
227
229
232
233 engineConfiguration->fuelAlgorithm = engine_load_mode_e::LM_SPEED_DENSITY;
234 // let's have valid default while we still have the field
235 engineConfiguration->debugMode = DBG_EXECUTOR;
236
237 engineConfiguration->speedometerPulsePerKm = 2485; // GM GMT800 platform
238
240 // this should not be below default rpm! maybe even make them equal?
242
243 // todo: this "2JZ" trigger is very powerful for many low tooth quantity applications
244 // todo: we might be getting closer to a re-name
245 // by the way 2GRFE intake likes position 160 / precision 20
246 // see also https://github.com/rusefi/rusefi/issues/7345
247 //
248 // 2JZ values
251
252 // Limits and Fallbacks
258
260
263
264 // CLT RPM limit table - just the X axis
265 copyArray(config->cltRevLimitRpmBins, { -20, 0, 40, 80 });
266
271// engineConfiguration->alsMinPps = 10;
275
277
282
283 // Trigger
285
286#if EFI_SIMULATOR
287 engineConfiguration->vvtMode[0] = VVT_SINGLE_TOOTH;
289 engineConfiguration->vvtPins[0] = Gpio::A0; // a random unused pin needed to unblock startSimplePwmExt()
290#endif // EFI_SIMULATOR
291
292#if EFI_SIMULATOR
293 // R
294 config->tcuSolenoidTable[0][0] = 99;
295 config->tcuSolenoidTable[0][1] = 1;
296 config->tcuSolenoidTable[0][2] = 2;
297 config->tcuSolenoidTable[0][3] = 3;
298 config->tcuSolenoidTable[0][4] = 4;
299 config->tcuSolenoidTable[0][5] = 5;
300 // P/N
301 config->tcuSolenoidTable[1][0] = 10;
302 config->tcuSolenoidTable[1][1] = 11;
303 config->tcuSolenoidTable[1][2] = 12;
304 config->tcuSolenoidTable[1][3] = 13;
305 config->tcuSolenoidTable[1][4] = 14;
306 config->tcuSolenoidTable[1][5] = 15;
307 config->tcuSolenoidTable[1][6] = 16;
308 config->tcuSolenoidTable[1][7] = 17;
309 config->tcuSolenoidTable[1][8] = 18;
310 config->tcuSolenoidTable[1][9] = 19;
311 // 1
312 config->tcuSolenoidTable[2][0] = 20;
313 config->tcuSolenoidTable[2][1] = 21;
314 config->tcuSolenoidTable[2][2] = 22;
315 // 2
316 config->tcuSolenoidTable[3][0] = 30;
317 config->tcuSolenoidTable[3][1] = 31;
318 config->tcuSolenoidTable[3][3] = 33;
319 // 3
320 config->tcuSolenoidTable[4][0] = 40;
321 config->tcuSolenoidTable[4][1] = 41;
322 config->tcuSolenoidTable[4][4] = 44;
323 // 4
324 config->tcuSolenoidTable[5][0] = 50;
325 config->tcuSolenoidTable[5][1] = 51;
326 config->tcuSolenoidTable[5][5] = 55;
327
328 // [tag:runNotSquareTest] huh why is this not a unit test?!
329 config->scriptTable4[0][0] = 140;
330 config->scriptTable4[0][1] = 141;
331 config->scriptTable4[0][2] = 142;
332 config->scriptTable4[0][3] = 143;
333 config->scriptTable4[0][4] = 144;
334 config->scriptTable4[0][5] = 145;
335
336 config->scriptTable4[1][0] = 240;
337 config->scriptTable4[1][1] = 241;
338 config->scriptTable4[1][2] = 242;
339 config->scriptTable4[1][3] = 243;
340 config->scriptTable4[1][4] = 244;
341 config->scriptTable4[1][5] = 245;
342
343 config->scriptTable4[4][0] = 40;
344 config->scriptTable4[4][2] = 41;
345 config->scriptTable4[4][3] = 42;
346 config->scriptTable4[4][4] = 43;
347 config->scriptTable4[4][5] = 44;
348 config->scriptTable4[4][5] = 45;
349
350 config->scriptTable4[5][0] = 50;
351 config->scriptTable4[5][1] = 51;
352 config->scriptTable4[5][2] = 52;
353 config->scriptTable4[5][3] = 53;
354 config->scriptTable4[5][4] = 54;
355 config->scriptTable4[5][5] = 55;
356
357#endif // EFI_SIMULATOR
358
360
361 // Default this to on - if you want to diagnose, turn it off.
363
368
369 engineConfiguration->etbSplit = MAX_TPS_PPS_DISCREPANCY;
370
371 // Advanced Trigger
372
373 // Battery and alternator
374 engineConfiguration->vbattDividerCoeff = ((float) (15 + 65)) / 15;
375
376#if EFI_ALTERNATOR_CONTROL
378#endif /* EFI_ALTERNATOR_CONTROL */
379
380 // Fuel pump
381 // todo: maybe change to 2s as default?
383
384 engineConfiguration->kLineBaudRate = KLINE_BAUD_RATE;
385
389
390
391 // Tachometer
392 // 50% duty cycle is the default for tach signal
396
399
402
403 //knock
404#ifdef KNOCK_SPECTROGRAM
409#endif
410
411 // Check engine light
412#if EFI_PROD_CODE
414#else
416#endif /* EFI_PROD_CODE */
417
419
420 // Oil pressure protection
424
425 engine->engineModules.apply_all([](auto & m) { m.setDefaultConfiguration(); });
426 // we invoke this last so that we can validate even defaults
428}
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 defaultsOrFixOnBurn()
static void mc33810defaults()
void setInline4()
static void setDefaultAlternatorParameters()
static void setGdiDefaults()
static EngineAccessor engine
Definition engine.h:413
uint8_t tractionControlSpeedBins[TRACTION_CONTROL_ETB_DROP_SPEED_SIZE]
scaled_channel< uint16_t, 100, 1 > tractionControlSlipBins[TRACTION_CONTROL_ETB_DROP_SLIP_SIZE]
scaled_channel< uint8_t, 1, 100 > maximumOilPressureBins[4]
uint8_t tcuSolenoidTable[TCU_SOLENOID_COUNT][TCU_GEAR_COUNT]
scaled_channel< int16_t, 1, 1 > cltRevLimitRpmBins[CLT_LIMITER_CURVE_SIZE]
uint8_t scriptTable4[TABLE_4_LOAD_SIZE][TABLE_4_RPM_SIZE]
scaled_channel< uint8_t, 1, 100 > minimumOilPressureBins[8]
void setRpmTableBin(TValue(&array)[TSize])
void setLinearCurve(TValue(&array)[TSize], float from, float to, float precision=0.01f)
void setDefaultVrThresholds()
Definition vr_pwm.cpp:57

Referenced by setDefaultEngineConfiguration().

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

◆ setDefaultHPFP()

static void setDefaultHPFP ( )
static

Definition at line 37 of file default_base_engine.cpp.

37 {
38#if ! EFI_UNIT_TEST
39 // unit tests rely on 'hpfpCamLobes' for isGdiEngine() and we need not-GDI by default for unit tests
41#endif
42
43// todo: would be nice for unit tests to be happy about these defaults
44#if EFI_PROD_CODE || EFI_SIMULATOR
46#endif
53}

Referenced by setGdiDefaults().

Here is the caller graph for this function:

◆ setDynoDefaults()

void setDynoDefaults ( )

Definition at line 108 of file default_base_engine.cpp.

108 {
109 config->dynoRpmStep = 100;
110
112 config->dynoSaeBaro = STD_ATMOSPHERE;
114
118
122
123 config->dynoCarCarMassKg = 1000;
127 }

Referenced by defaultsOrFixOnBurn().

Here is the caller graph for this function:

◆ setEtbPID()

void setEtbPID ( float  p,
float  i,
float  d 
)

◆ setGdiDefaults()

static void setGdiDefaults ( )
static

Definition at line 55 of file default_base_engine.cpp.

55 {
57
61
65
68}
static void setDefaultHPFP()
scaled_channel< uint16_t, 10, 1 > injectorFlowLinearizationPressureBins[FLOW_LINEARIZATION_PRESSURE_SIZE]
scaled_channel< uint16_t, 10, 1 > hpfpFuelMassCompensationFuelPressure[HPFP_FUEL_MASS_COMPENSATION_SIZE]
scaled_channel< uint8_t, 1, 50 > hpfpTargetRpmBins[HPFP_TARGET_SIZE]
uint16_t hpfpTarget[HPFP_TARGET_SIZE][HPFP_TARGET_SIZE]
scaled_channel< uint16_t, 100, 1 > injectorFlowLinearizationFuelMassBins[FLOW_LINEARIZATION_MASS_SIZE]
scaled_channel< uint16_t, 100, 1 > hpfpFuelMassCompensationFuelMass[HPFP_FUEL_MASS_COMPENSATION_SIZE]
scaled_channel< uint16_t, 10, 1 > hpfpTargetLoadBins[HPFP_TARGET_SIZE]
scaled_channel< uint16_t, 100, 1 > hpfpFuelMassCompensation[HPFP_FUEL_MASS_COMPENSATION_SIZE][HPFP_FUEL_MASS_COMPENSATION_SIZE]

Referenced by setDefaultBaseEngine().

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

◆ setGDIFueling()

void setGDIFueling ( )

Definition at line 70 of file default_base_engine.cpp.

70 {
71#ifdef HW_HELLEN_8CHAN
73#endif
74
75 engineConfiguration->injectionMode = IM_SEQUENTIAL;
77 engineConfiguration->ignitionMode = IM_INDIVIDUAL_COILS;
78
80 // Use high pressure sensor
82 // Automatic compensation of injector flow based on rail pressure
83 engineConfiguration->injectorCompensationMode = ICM_SensedRailPressure;
84 // Reference rail pressure is 10 000 kPa = 100 bar
86 //setting "flat" 0.2 ms injector's lag time
88
92}
void setGdiWallWetting()
scaled_channel< int16_t, 100, 1 > battLagCorrTable[VBAT_INJECTOR_CURVE_PRESSURE_SIZE][VBAT_INJECTOR_CURVE_SIZE]
int16_t injectionPhase[INJ_PHASE_LOAD_COUNT][INJ_PHASE_RPM_COUNT]

Referenced by alphax_4kgdi_defaultConfiguration(), commonPassatB6(), setGmGdi(), and setHyundaiPb().

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

◆ setHpfpLobeProfileAngle()

void setHpfpLobeProfileAngle ( int  lobes)

Definition at line 22 of file default_base_engine.cpp.

22 {
23#if HPFP_LOBE_PROFILE_SIZE == 16
24static const float hardCodedHpfpLobeProfileAnglesForThreeLobes[16] = {0.0, 7.5, 16.5, 24.0,
2532.0 , 40.0, 48.0, 56.0,
2664.0 , 72.0, 80.0, 88.0,
2796.0 , 103.5, 112.5, 120.0
28};
29
30 float multiplier = 3.0 / lobes;
31 for (size_t i = 0; i < HPFP_LOBE_PROFILE_SIZE; i++) {
32 config->hpfpLobeProfileAngle[i] = multiplier * hardCodedHpfpLobeProfileAnglesForThreeLobes[i];
33 }
34#endif // HPFP_LOBE_PROFILE_SIZE
35}
scaled_channel< uint8_t, 2, 1 > hpfpLobeProfileAngle[HPFP_LOBE_PROFILE_SIZE]

Referenced by set4CylGmEcotec3(), setBoschHDEV_5_injectors(), setFordEcoboost(), and setHyundaiPb().

Here is the caller graph for this function:

◆ setInline4()

void setInline4 ( )

◆ setLeftRightBanksNeedBetterName()

void setLeftRightBanksNeedBetterName ( )

file defaults.h

Definition at line 95 of file default_base_engine.cpp.

95 {
96 for (size_t i = 0; i < engineConfiguration->cylindersCount; i++) {
97 // zero-based index
99 }
100}

Referenced by setGmLs4(), and setSubaruEG33Defaults().

Here is the caller graph for this function:

◆ setPPSCalibration()

void setPPSCalibration ( float  primaryUp,
float  primaryDown,
float  secondaryUp,
float  secondaryDown 
)

◆ setPPSInputs()

void setPPSInputs ( adc_channel_e  pps1,
adc_channel_e  pps2 
)

◆ setProteusEtbIO()

void setProteusEtbIO ( )

Definition at line 479 of file default_base_engine.cpp.

479 {
480#if HW_PROTEUS && EFI_PROD_CODE
481 engineConfiguration->tps1_2AdcChannel = PROTEUS_IN_TPS1_2;
482 setPPSInputs(PROTEUS_IN_PPS, PROTEUS_IN_PPS2);
483#endif // HW_PROTEUS
484}
void setPPSInputs(adc_channel_e pps1, adc_channel_e pps2)

Referenced by proteusStimQc(), setHyundaiPb(), setMaverickX3(), setMercedesM111EngineConfiguration(), setProteusVwPassatB6(), setSlingshot(), and setSubaru2011().

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

◆ setTPS1Calibration() [1/2]

void setTPS1Calibration ( uint16_t  tpsMin,
uint16_t  tpsMax 
)

◆ setTPS1Calibration() [2/2]

void setTPS1Calibration ( uint16_t  tpsMin,
uint16_t  tpsMax,
uint16_t  tps1SecondaryMin,
uint16_t  tps1SecondaryMax 
)

Definition at line 445 of file default_base_engine.cpp.

445 {
446 setTPS1Calibration(tpsMin, tpsMax);
447
448
449 engineConfiguration->tps1SecondaryMin = tps1SecondaryMin;
450 engineConfiguration->tps1SecondaryMax = tps1SecondaryMax;
451}
void setTPS1Calibration(uint16_t tpsMin, uint16_t tpsMax)
Here is the call graph for this function:

◆ setTPS1Inputs()

void setTPS1Inputs ( adc_channel_e  tps1,
adc_channel_e  tps2 
)

Definition at line 435 of file default_base_engine.cpp.

435 {
438}
static RedundantPair tps2(tps2p, tps2s, SensorType::Tps2)

Referenced by alphax_4kgdi_defaultConfiguration(), m74_9_boardDefaultConfiguration(), setDefaultSensorInputs(), setGmEcotec3(), setGmLs4(), setHarley(), setMercedesM111EngineConfiguration(), and setupDefaultSensorInputs().

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

◆ setupTLE9201()

void setupTLE9201 ( Gpio  controlPin,
Gpio  direction,
Gpio  disable,
int  dcIndex 
)

Definition at line 486 of file default_base_engine.cpp.

486 {
487 // TLE9201 driver
488 // This chip has three control pins:
489 // DIR - sets direction of the motor
490 // PWM - pwm control (enable high, coast low)
491 // DIS - disables motor (enable low)
492
493 // PWM pin
494 engineConfiguration->etbIo[dcIndex].controlPin = controlPin;
495 // DIR pin
496 engineConfiguration->etbIo[dcIndex].directionPin1 = direction;
497 // Disable pin
499
500 // we only have pwm/dir, no dira/dirb
502}
static void disable(const char *param)
Definition settings.cpp:449

Referenced by alphax_4chan_defaultConfiguration(), alphax_4kgdi_boardConfigOverrides(), hellen154hyundai_f7_boardConfigOverrides(), hellen_gm_e67_boardConfigOverrides(), setupEtb(), and setupTLE9201IncludingStepper().

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

◆ setupTLE9201IncludingStepper()

void setupTLE9201IncludingStepper ( Gpio  controlPin,
Gpio  direction,
Gpio  disable,
int  dcIndex 
)

Definition at line 504 of file default_base_engine.cpp.

504 {
505 setupTLE9201(controlPin, direction, disable, dcIndex);
506
507 // on SBC style stepper IAC fully-extended valve shaft would give least idle air
508 // fully-retracted valve shaft would give most idle air
509 int stepperIndexWeirdness = 1 - dcIndex;
510 engineConfiguration->stepperDcIo[stepperIndexWeirdness].controlPin = controlPin;
511 engineConfiguration->stepperDcIo[stepperIndexWeirdness].directionPin1 = direction;
513 engineConfiguration->stepperDcIo[stepperIndexWeirdness].disablePin = disable;
514}
@ Unassigned
void setupTLE9201(Gpio controlPin, Gpio direction, Gpio disable, int dcIndex)

Referenced by set8chanDefaultETBPins(), setDefaultETBPins(), setMegaUaefiBoardDefaultConfiguration(), and setUaefiDefaultETBPins().

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

Go to the source code of this file.