22#include "rusefi/efistring.h"
44 chibios_rt::CriticalSectionLocker csl;
138#if EFI_LAUNCH_CONTROL
152#define MAKE_HUMAN_READABLE_ADVANCE(advance) (advance > getEngineState()->engineCycle / 2 ? advance - getEngineState()->engineCycle : advance)
157#if EFI_SHAFT_POSITION_INPUT
205 float stage1InjectionMass = untrimmedInjectionMass - stage2InjectionMass;
217#if EFI_LAUNCH_CONTROL
237 for (
size_t bankIndex = 0; bankIndex < FT_BANK_COUNT; bankIndex++) {
245 auto bankTrim = clResult.banks[bankIndex] * ltftResult.banks[bankIndex];
268#if EFI_ANTILAG_SYSTEM
274#if EFI_ENGINE_CONTROL
277 if (!std::isnan(newTCharge)) {
314 criticalError(
"Tune is password protected. Please use console to unlock tune.");
321 efiPrintf(
"Nope rebooting...");
326 efiPrintf(
"Unlocked! Burning...");
size_t getMultiSparkCount(float rpm)
angle_t getCylinderIgnitionTrim(size_t cylinderNumber, float rpm, float ignitionLoad)
void recalculateAuxValveTiming()
FuelComputer fuelComputer
SoftSparkLimiter softSparkLimiter
IgnitionState ignitionState
bool slowCallBackWasInvoked
LaunchControlBase launchController
RpmCalculator rpmCalculator
AntilagSystemBase antilagController
LambdaMonitor lambdaMonitor
TunerStudioOutputChannels outputChannels
SoftSparkLimiter hardSparkLimiter
constexpr auto & module()
ShiftTorqueReductionController shiftTorqueReductionController
Timer timeSinceLastTChargeK
void periodicFastCallback()
bool shouldUpdateInjectionTiming
WarningCodeState warnings
void updateTChargeK(float rpm, float tps)
floatms_t injectionDuration
floatms_t injectionDurationStage2
float injectionStage2Fraction
multispark_state multispark
angle_t timingAdvance[MAX_CYLINDER_COUNT]
void updateAdvanceCorrections(float engineLoad)
angle_t getTrailingSparkAngle(const float rpm, const float engineLoad)
angle_t getWrappedAdvance(const float rpm, const float engineLoad)
angle_t getSparkHardwareLatencyCorrection()
void updateDwell(float rpm, bool isCranking)
float getSparkSkipRatio() const
void updateRevLimit(float rpm)
angle_t getLimitingTimingRetard() const
trigger_config_s getType() const override
bool isVerboseTriggerSynchDetails() const override
bool isCranking() const override
virtual SensorResult get() const =0
static float getOrZero(SensorType type)
float getSparkSkipRatio() const
void updateTargetSkipRatio(float luaSoftSparkSkip, float tractionControlSparkSkip, float launchOrShiftTorqueReductionControllerSparkSkipRatio=0.0f)
virtual bool isVerboseTriggerSynchDetails() const =0
trigger_config_s TriggerType
bool VerboseTriggerSynchDetails
virtual trigger_config_s getType() const =0
trigger_config_s getType() const override
bool isVerboseTriggerSynchDetails() const override
warningBuffer_t recentWarnings
const char * getWarningMessage()
void addWarningCode(ObdCode code, const char *text=nullptr)
bool isWarningNow() const
Timer timeSinceLastWarning
float limitRateOfChange(float newValue, float oldValue, float incrLimitPerSec, float decrLimitPerSec, float secsPassed)
void unlockEcu(int password)
LimpManager * getLimpManager()
trigger_type_e getVvtTriggerType(vvt_mode_e vvtMode)
static EngineAccessor engine
static constexpr engine_configuration_s * engineConfiguration
bool warning(ObdCode code, const char *fmt,...)
float getStage2InjectionFraction(float rpm, float load)
float getPostCrankingFuelCorrection()
angle_t getInjectionOffset(float rpm, float load)
float getIatFuelCorrection()
float getBaroCorrection()
float getCltFuelCorrection()
Engine warm-up fuel correction.
PUBLIC_API_WEAK_SOMETHING_WEIRD float getCylinderFuelTrim(size_t cylinderNumber, float rpm, float fuelLoad)
float getInjectionMass(float rpm)
percent_t getInjectorDutyCycle(float rpm)
@ CUSTOM_SLOW_NOT_INVOKED
@ CUSTOM_ERR_ADCANCE_CALC_ANGLE
@ EngineStatePeriodicFastCallback
correctedIgnitionAdvance("Timing: ignition", SensorCategory.SENSOR_INPUTS, FieldType.INT16, 962, 0.02, 0.0, 0.0, "deg")
temperature_t getTCharge(float rpm, float tps)
void update(float rpm, float load)
bool enableStagedInjection
float tChargeAirIncrLimit
bool verboseTriggerSynchDetails
vvt_mode_e vvtMode[CAMS_PER_BANK]
uint8_t cylinderBankSelect[MAX_CYLINDER_COUNT]
float tChargeAirDecrLimit
float stftCorrection[FT_BANK_COUNT]
float injectionMass[MAX_CYLINDER_COUNT]
float tractionControlSparkSkip
scaled_channel< uint16_t, 100, 1 > afrTableYAxis
scaled_channel< int16_t, 100, 1 > trailingSparkAngle
scaled_channel< int16_t, 50, 1 > baseIgnitionAdvance
scaled_channel< int16_t, 50, 1 > correctedIgnitionAdvance
uint16_t recentErrorCode[8]
float postCrankingFuelCorrection
float intakeTemperatureCoefficient
float coolantTemperatureCoefficient
float timeSinceCrankingInSecs
scaled_channel< int16_t, 100, 1 > tCharge
T * find(const TSearch &search) const
void wrapAngle(angle_t &angle, const char *msg, ObdCode code)