From f05b8ba675556141b4134993a7f966ea5ed50059 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Mon, 29 Mar 2021 05:57:37 -0700 Subject: [PATCH] More gppwm and fsio (#2509) * gppwm aux temp * fsio fuel flow rate and oil pressure Co-authored-by: Matthew Kennedy --- .../controllers/actuators/gppwm/gppwm_channel.cpp | 11 +++++++---- firmware/controllers/algo/rusefi_enums.h | 2 ++ firmware/controllers/core/fsio_core.h | 6 ++++-- firmware/controllers/core/fsio_impl.cpp | 7 +++++++ firmware/integration/rusefi_config.txt | 2 +- 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/firmware/controllers/actuators/gppwm/gppwm_channel.cpp b/firmware/controllers/actuators/gppwm/gppwm_channel.cpp index afcf4d769c..397def0255 100644 --- a/firmware/controllers/actuators/gppwm/gppwm_channel.cpp +++ b/firmware/controllers/actuators/gppwm/gppwm_channel.cpp @@ -14,9 +14,8 @@ expected readGppwmChannel(gppwm_channel_e channel DECLARE_ENGINE_PARAMETE switch (channel) { case GPPWM_Tps: return Sensor::get(SensorType::Tps1); - case GPPWM_Map: { + case GPPWM_Map: return Sensor::get(SensorType::Map); - } case GPPWM_Clt: return Sensor::get(SensorType::Clt); case GPPWM_Iat: @@ -25,9 +24,13 @@ expected readGppwmChannel(gppwm_channel_e channel DECLARE_ENGINE_PARAMETE return getFuelingLoad(PASS_ENGINE_PARAMETER_SIGNATURE); case GPPWM_IgnLoad: return getIgnitionLoad(PASS_ENGINE_PARAMETER_SIGNATURE); - default: - return unexpected; + case GPPWM_AuxTemp1: + return Sensor::get(SensorType::AuxTemp1); + case GPPWM_AuxTemp2: + return Sensor::get(SensorType::AuxTemp2); } + + return unexpected; } void GppwmChannel::setOutput(float result) { diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index 58704ffe7a..9e4f3c4ff0 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -1009,6 +1009,8 @@ typedef enum __attribute__ ((__packed__)) { GPPWM_Iat = 3, GPPWM_FuelLoad = 4, GPPWM_IgnLoad = 5, + GPPWM_AuxTemp1 = 6, + GPPWM_AuxTemp2 = 7, } gppwm_channel_e; typedef enum __attribute__ ((__packed__)) { diff --git a/firmware/controllers/core/fsio_core.h b/firmware/controllers/core/fsio_core.h index 2d92cb70a7..03f1d6ac90 100644 --- a/firmware/controllers/core/fsio_core.h +++ b/firmware/controllers/core/fsio_core.h @@ -13,8 +13,9 @@ #define MAX_TABLE_INDEX 4 typedef enum { + LE_UNDEFINED = 0, + LE_METHOD_RETURN = 130, - LE_UNDEFINED = 0 , LE_NUMERIC_VALUE = 1, LE_BOOLEAN_VALUE = 126, LE_OPERATOR_LESS = 2, @@ -58,7 +59,8 @@ typedef enum { LE_METHOD_PPS = 125, LE_METHOD_TIME_SINCE_TRIGGER_EVENT = 127, LE_METHOD_IN_MR_BENCH = 128, - LE_METHOD_RETURN = 130, + LE_METHOD_FUEL_FLOW_RATE = 131, + LE_METHOD_OIL_PRESSURE = 132, #include "fsio_enums_generated.def" diff --git a/firmware/controllers/core/fsio_impl.cpp b/firmware/controllers/core/fsio_impl.cpp index 8b599c1400..a9c2b15a94 100644 --- a/firmware/controllers/core/fsio_impl.cpp +++ b/firmware/controllers/core/fsio_impl.cpp @@ -56,6 +56,8 @@ static LENameOrdinalPair leFan(LE_METHOD_FAN, "fan"); static LENameOrdinalPair leCoolant(LE_METHOD_COOLANT, "coolant"); static LENameOrdinalPair leIntakeTemp(LE_METHOD_INTAKE_AIR, "iat"); static LENameOrdinalPair leIsCoolantBroken(LE_METHOD_IS_COOLANT_BROKEN, "is_clt_broken"); +static LENameOrdinalPair leOilPressure(LE_METHOD_OIL_PRESSURE, "oilp"); + // @returns boolean state of A/C toggle switch static LENameOrdinalPair leAcToggle(LE_METHOD_AC_TOGGLE, "ac_on_switch"); // @returns float number of seconds since last A/C toggle @@ -73,6 +75,7 @@ static LENameOrdinalPair leStartupFuelPumpDuration(LE_METHOD_STARTUP_FUEL_PUMP_D static LENameOrdinalPair leInShutdown(LE_METHOD_IN_SHUTDOWN, "in_shutdown"); static LENameOrdinalPair leInMrBench(LE_METHOD_IN_MR_BENCH, "in_mr_bench"); static LENameOrdinalPair leTimeSinceTrigger(LE_METHOD_TIME_SINCE_TRIGGER_EVENT, "time_since_trigger"); +static LENameOrdinalPair leFuelRate(LE_METHOD_FUEL_FLOW_RATE, "fuel_flow"); #include "fsio_names.def" @@ -165,6 +168,10 @@ FsioResult getEngineValue(le_action_e action DECLARE_ENGINE_PARAMETER_SUFFIX) { return Sensor::get(SensorType::BatteryVoltage).value_or(0); case LE_METHOD_TPS: return Sensor::get(SensorType::DriverThrottleIntent).value_or(0); + case LE_METHOD_FUEL_FLOW_RATE: + return engine->engineState.fuelConsumption.getConsumptionGramPerSecond(); + case LE_METHOD_OIL_PRESSURE: + return Sensor::get(SensorType::OilPressure).value_or(0); // cfg_xxx references are code generated #include "fsio_getters.def" default: diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index f7274c8f87..4d9572d930 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -331,7 +331,7 @@ struct spi_pins end_struct -#define gppwm_channel_e_enum "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "INVALID", "INVALID" +#define gppwm_channel_e_enum "TPS", "MAP", "CLT", "IAT", "Fuel Load", "Ignition Load", "Aux Temp 1", "Aux Temp 2" custom gppwm_channel_e 1 bits, U08, @OFFSET@, [0:2], @@gppwm_channel_e_enum@@ struct gppwm_channel