44 return 360 * getOneDegreeTimeMs(rpm);
59 for (
int i = 0; i < DWELL_CURVE_SIZE; i++) {
80#if EFI_SHAFT_POSITION_INPUT
82 if (ignitionMode == IM_INDIVIDUAL_COILS) {
83 bool missingPhaseInfoForSequential =
87 ignitionMode = IM_WASTED_SPARK;
103 bool isOddFire =
false;
123#if EFI_SHAFT_POSITION_INPUT
139 auto result = firingOrderOffset + adjustment;
164 return { 0, 0, 0, 0 };
170 return { 0, 0, 0, 0 };
179 float tableValue = interpolate3d(
187 return { value.Value, blendFactor, 0.01f * blendFactor * tableValue, load };
const char * getIgnition_mode_e(ignition_mode_e value)
TriggerCentral triggerCentral
FuelSchedule injectionEvents
RpmCalculator rpmCalculator
virtual operation_mode_e getOperationMode() const =0
bool useOddFireWastedSpark
bool hasSynchronizedPhase() const
bool isSpinningUp() const
PrimaryTriggerDecoder triggerState
void prepareTriggerShape()
EngineRotationState * getEngineRotationState()
EngineState * getEngineState()
static EngineAccessor engine
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
angle_t getPerCylinderFiringOrderOffset(uint8_t cylinderIndex, uint8_t cylinderNumber)
void setAlgorithm(engine_load_mode_e algo)
void setFlatInjectorLag(float value)
floatms_t getEngineCycleDuration(float rpm)
void setSingleCoilDwell()
void prepareOutputSignals()
void setTimingRpmBin(float from, float to)
floatms_t getCrankshaftRevolutionTimeMs(float rpm)
BlendResult calculateBlend(blend_table_s &cfg, float rpm, float load)
ignition_mode_e getCurrentIgnitionMode()
expected< float > readGppwmChannel(gppwm_channel_e channel)
void updateCylinders(void)
uint16_t loadBins[BLEND_TABLE_COUNT]
gppwm_channel_e blendParameter
scaled_channel< int16_t, 10, 1 > blendBins[BLEND_FACTOR_SIZE]
scaled_channel< uint8_t, 2, 1 > blendValues[BLEND_FACTOR_SIZE]
scaled_channel< int16_t, 10, 1 > table[BLEND_TABLE_COUNT][BLEND_TABLE_COUNT]
gppwm_channel_e yAxisOverride
uint16_t rpmBins[BLEND_TABLE_COUNT]
angle_t timing_offset_cylinder[MAX_CYLINDER_COUNT]
engine_load_mode_e fuelAlgorithm
ignition_mode_e ignitionMode
scaled_channel< int16_t, 100, 1 > battLagCorrTable[VBAT_INJECTOR_CURVE_PRESSURE_SIZE][VBAT_INJECTOR_CURVE_SIZE]
uint16_t sparkDwellRpmBins[DWELL_CURVE_SIZE]
uint16_t ignitionRpmBins[IGN_RPM_COUNT]
scaled_channel< uint16_t, 100, 1 > sparkDwellValues[DWELL_CURVE_SIZE]
constexpr void setTable(TElement(&dest)[N][M], const VElement value)
void setRpmBin(kType array[], int size, float idleRpm, float topRpm)
angle_t getEngineCycle(operation_mode_e operationMode)