20#if IAT_IGN_CORR_COUNT == 8
24 for (
size_t i = 3; i < IAT_IGN_CORR_COUNT; i++) {
41#if CLT_TIMING_CURVE_SIZE == 5
42 for (
size_t i = 0; i < CLT_TIMING_CURVE_SIZE; i++) {
53#if TRAILING_SPARK_SIZE == 4
54 for (
size_t i = 0; i < TRAILING_SPARK_SIZE; i++) {
73#define round10(x) efiRound(x, 0.1)
76 map = std::min(map, 100.0f);
80 return round10(advance + 0.1 * (100 - map));
81 return round10(advance + 0.1 * (100 - map) * rpm / 3000);
95 for (
int loadIndex = 0; loadIndex < IGN_LOAD_COUNT; loadIndex++) {
97 for (
int rpmIndex = 0;rpmIndex<IGN_RPM_COUNT;rpmIndex++) {
137#if IGN_TRIM_SIZE == 4
static void setDefaultCltTimingCorrection()
static void setDefaultTrailingSparkTable()
static void buildTimingMap(float advanceMax)
float getInitialAdvance(float rpm, float map, float advanceMax)
static void setDefaultMultisparkParameters()
void setDefaultIgnition()
static float getAdvanceForRpm(float rpm, float advanceMax)
static void setDefaultIatTimingCorrection()
float interpolateMsg(const char *msg, float x1, float y1, float x2, float y2, float x)
Linear interpolation by two points.
void setConstantDwell(floatms_t dwellMs)
Sets the same dwell time across the whole getRpm() range set dwell X.
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
void setTimingRpmBin(float from, float to)
bool warning(ObdCode code, const char *fmt,...)
uint8_t multisparkMaxSparkingAngle
engine_load_mode_e fuelAlgorithm
uint8_t multisparkMaxExtraSparkCount
scaled_channel< uint16_t, 1000, 1 > multisparkDwell
scaled_channel< uint8_t, 1, 50 > multisparkMaxRpm
scaled_channel< uint16_t, 1000, 1 > multisparkSparkDuration
int8_t maximumIgnitionTiming
int8_t minimumIgnitionTiming
blend_table_s ignBlends[IGN_BLEND_COUNT]
scaled_channel< uint8_t, 10, 1 > dwellVoltageCorrVoltBins[DWELL_CURVE_SIZE]
uint16_t ignTrimRpmBins[IGN_TRIM_SIZE]
uint16_t ignitionLoadBins[IGN_LOAD_COUNT]
scaled_channel< int8_t, 10, 1 > trailingSparkTable[TRAILING_SPARK_SIZE][TRAILING_SPARK_SIZE]
scaled_channel< uint8_t, 1, 5 > trailingSparkLoadBins[TRAILING_SPARK_SIZE]
scaled_channel< uint8_t, 50, 1 > dwellVoltageCorrValues[DWELL_CURVE_SIZE]
scaled_channel< int16_t, 10, 1 > ignitionCltCorrTable[CLT_TIMING_CURVE_SIZE][CLT_TIMING_CURVE_SIZE]
uint16_t ignitionRpmBins[IGN_RPM_COUNT]
int8_t ignitionIatCorrTempBins[IAT_IGN_CORR_COUNT]
scaled_channel< int16_t, 1, 1 > ignitionCltCorrTempBins[CLT_TIMING_CURVE_SIZE]
scaled_channel< uint8_t, 1, 50 > trailingSparkRpmBins[TRAILING_SPARK_SIZE]
scaled_channel< int16_t, 10, 1 > ignitionIatCorrTable[IAT_IGN_CORR_LOAD_COUNT][IAT_IGN_CORR_COUNT]
scaled_channel< int16_t, 10, 1 > ignitionTable[IGN_LOAD_COUNT][IGN_RPM_COUNT]
scaled_channel< uint8_t, 1, 5 > ignitionIatCorrLoadBins[IAT_IGN_CORR_LOAD_COUNT]
scaled_channel< uint8_t, 1, 5 > ignitionCltCorrLoadBins[CLT_TIMING_CURVE_SIZE]
uint16_t ignTrimLoadBins[IGN_TRIM_SIZE]
void setRpmTableBin(TValue(&array)[TSize])
void setLinearCurve(TValue(&array)[TSize], float from, float to, float precision=0.01f)