12#if defined(HAS_OS_ACCESS)
13#error "Unexpected OS ACCESS HERE"
34 return interpolateMsg(
"Kcurr", rpmMin, minRpmKcurrentTPS, rpmMax, maxRpmKcurrentTPS, rpm);
37 constexpr floatms_t gramsPerMsToKgPerHour = (3600.0f * 1000.0f) / 1000.0f;
85 float coolantTemp =
clt.Value;
99 if (std::isnan(Tcharge)) {
void initTable(TValueInit(&table)[TRowNum][TColNum], const TXColumnInit(&columnBins)[TColNum], const TRowInit(&rowBins)[TRowNum])
virtual SensorResult get() const =0
float interpolateMsg(const char *msg, float x1, float y1, float x2, float y2, float x)
Linear interpolation by two points.
float interpolateClamped(float x1, float y1, float x2, float y2, float x)
static constexpr persistent_config_s * config
static constexpr engine_configuration_s * engineConfiguration
floatms_t getEngineCycleDuration(float rpm)
bool warning(ObdCode code, const char *fmt,...)
static CCM_OPTIONAL FunctionalSensor iat(SensorType::Iat, MS2NT(10))
static CCM_OPTIONAL FunctionalSensor clt(SensorType::Clt, MS2NT(10))
@ CUSTOM_ERR_TCHARGE_NOT_READY
temperature_t getTCharge(float rpm, float tps)
float getTChargeCoefficient(float rpm, float tps)
scaled_channel< uint8_t, 100, 1 > tchargeValues[16]
tChargeMode_e tChargeMode
scaled_channel< uint8_t, 200, 1 > tChargeMinRpmMaxTps
scaled_channel< uint8_t, 200, 1 > tChargeMaxRpmMinTps
scaled_channel< uint8_t, 200, 1 > tChargeMaxRpmMaxTps
scaled_channel< uint8_t, 200, 1 > tChargeMinRpmMinTps
scaled_channel< uint8_t, 1, 5 > tchargeBins[16]
float sdAirMassInOneCylinder
uint16_t veLoadBins[VE_LOAD_COUNT]
scaled_channel< uint16_t, 10, 1 > veTable[VE_LOAD_COUNT][VE_RPM_COUNT]
uint16_t veRpmBins[VE_RPM_COUNT]