diff --git a/firmware/console/binary/output_channels.txt b/firmware/console/binary/output_channels.txt index 56bd77503f..172733fe16 100644 --- a/firmware/console/binary/output_channels.txt +++ b/firmware/console/binary/output_channels.txt @@ -74,7 +74,6 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 uint16_t autoscale chargeAirMass;@@GAUGE_NAME_AIR_MASS@@;"g",{1/1000}, 0, 0, 0, 3 uint16_t autoscale crankingFuelMs;crankingFuelMs\nairmass in mg, 0-65 grams;"ms",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 2 - uint16_t autoscale currentTargetAfr;@@GAUGE_NAME_TARGET_AFR@@;"ratio",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 2 uint16_t autoscale baseFuel;@@GAUGE_NAME_FUEL_BASE@@\nThis is the raw value we take from the fuel map or base fuel algorithm, before the corrections;"mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 3 uint16_t autoscale fuelRunning;@@GAUGE_NAME_FUEL_RUNNING@@\nTotal fuel with CLT IAT and TPS acceleration without injector lag corrections per cycle, as pulse per cycle;"mg",{1/@@PACK_MULT_FUEL_MASS@@}, 0, 0, 0, 3 @@ -118,9 +117,8 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 uint16_t totalFuelConsumption;@@GAUGE_NAME_FUEL_CONSUMPTION@@;"grams",1, 0, 0, 0, 1 uint16_t autoscale fuelFlowRate;@@GAUGE_NAME_FUEL_FLOW@@;"gram/s",{1/@@PACK_MULT_FUEL_FLOW@@}, 0, 0, 0, 3 -! Y axis values for selectable tables - uint16_t autoscale veTableYAxis;;"%",{1/100}, 0, 0, 0, 0 - uint16_t autoscale afrTableYAxis;;"%",{1/100}, 0, 0, 0, 0 + int16_t autoscale TPS2Value;@@GAUGE_NAME_TPS2@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2 + uint16_t tuneCrc16;@@GAUGE_NAME_TUNE_CRC16@@;"crc16", 1, 0, 0, 0, 0 float knockLevel;@@GAUGE_NAME_KNOCK_LEVEL@@;"Volts", 1, 0, 0, 0, 2 @@ -132,6 +130,10 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 int16_t autoscale rawIdlePositionSensor;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 int16_t autoscale rawWastegatePosition;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 +! todo: reimplement { LIS302DLCsPin != 0 || imuType != 0 } + int16_t autoscale accelerationX;@@GAUGE_NAME_ACCEL_X@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2 + int16_t autoscale accelerationY;@@GAUGE_NAME_ACCEL_Y@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2 + ! todo: this not needed in light of TS_SIGNATURE but rusEFI console still uses it. Need to migrate ! rusEFI console from TS_FILE_VERSION to TS_SIGNATURE :( uint32_t tsConfigVersion;;"", 1, 0, 0, 0, 0 @@ -151,6 +153,9 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 uint8_t calibrationMode;;"", 1, 0, 0, 0, 0 uint8_t idleTargetPosition;;"", 1, 0, 0, 0, 0 + uint8_t detectedGear;@@GAUGE_NAME_DETECTED_GEAR@@;"", 1, 0, 0, @@GEARS_COUNT@@, 0 + uint8_t maxTriggerReentrant;;"", 1, 0, 0, 100, 0 + ! Errors uint32_t totalTriggerErrorCounter;@@GAUGE_NAME_TRG_ERR@@;"counter",1, 0, 0, 0, 0 uint32_t orderingErrorCounter;;"",1, 0, 0, 0, 0 @@ -176,22 +181,15 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 int16_t debugIntField4;;"val", 1, 0, 0, 0, 0 int16_t debugIntField5;;"val", 1, 0, 0, 0, 0 -! todo: reimplement { LIS302DLCsPin != 0 || imuType != 0 } - int16_t autoscale accelerationX;@@GAUGE_NAME_ACCEL_X@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2 - int16_t autoscale accelerationY;@@GAUGE_NAME_ACCEL_Y@@;"G",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2 - ! todo: { max31855_cs1 != 0} uint16_t[EGT_CHANNEL_COUNT iterate] egt;;"deg C", 1, 0, 0, 0, 0 - int16_t autoscale TPS2Value;@@GAUGE_NAME_TPS2@@;"%",{1/@@PACK_MULT_PERCENT@@}, 0, 0, 0, 2 - int16_t autoscale rawTps1Primary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 int16_t autoscale rawPpsPrimary;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 int16_t autoscale rawClt;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 int16_t autoscale rawIat;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 int16_t autoscale rawOilPressure;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 - uint16_t tuneCrc16;@@GAUGE_NAME_TUNE_CRC16@@;"crc16", 1, 0, 0, 0, 0 uint8_t fuelClosedLoopBinIdx;;"", 1, 0, 0, 0, 0 int8_t tcuCurrentGear;@@GAUGE_NAME_CURRENT_GEAR@@;"gear", 1, 0, -1, 10, 0 @@ -292,12 +290,9 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 uint16_t autoscale fallbackMap;;"kPa", 0.1, 0, 0, 1000, 1 - uint8_t detectedGear;@@GAUGE_NAME_DETECTED_GEAR@@;"", 1, 0, 0, @@GEARS_COUNT@@, 0 - uint16_t autoscale instantMAPValue;Instant MAP;"kPa",{1/@@PACK_MULT_PRESSURE@@}, 0, 0, 655, 2 uint16_t maxLockedDuration;;"us", 1, 0, 0, 65535, 0 - uint8_t maxTriggerReentrant;;"", 1, 0, 0, 100, 0 uint16_t canWriteOk;;"", 1, 0, -10000, 10000, 3 uint16_t canWriteNotOk;;"", 1, 0, -10000, 10000, 3 @@ -314,6 +309,8 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 uint8_t starterRelayDisable;;"", 1, 0, -10000, 10000, 3 uint8_t multiSparkCounter;;"", 1, 0, -10000, 10000, 3 + uint8_t extiOverflowCount;;"", 1, 0, 0, 255, 0 + pid_status_s alternatorStatus pid_status_s idleStatus pid_status_s etbStatus @@ -331,8 +328,6 @@ uint16_t rpmAcceleration;dRPM;"RPM/s",1, 0, 0, 5, 2 int16_t autoscale rawBattery;;"V",{1/@@PACK_MULT_VOLTAGE@@}, 0, 0, 5, 3 - uint8_t extiOverflowCount;;"", 1, 0, 0, 255, 0 - uint8_t[IGN_BLEND_COUNT iterate] autoscale ignBlendBias;;"%", 0.5, 0, 0, 100, 1 int16_t[IGN_BLEND_COUNT iterate] autoscale ignBlendOutput;;"deg", 0.01, 0, -300, 300, 2 diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 03f66ac6e4..f17c351db0 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -574,11 +574,6 @@ static void updateFuelCorrections() { engine->outputChannels.injectorLagMs = engine->module()->getDeadtime(); } -static void updateFuelLoads() { - engine->outputChannels.veTableYAxis = engine->engineState.currentVeLoad; - engine->outputChannels.afrTableYAxis = engine->fuelComputer->currentAfrLoad; -} - static void updateFuelResults() { // todo: kill outputChannel while taking care of gauge name and scale! engine->outputChannels.chargeAirMass = engine->fuelComputer->sdAirMassInOneCylinder; @@ -592,7 +587,6 @@ static void updateFuelResults() { static void updateFuelInfo() { updateFuelCorrections(); - updateFuelLoads(); updateFuelResults(); const auto& wallFuel = engine->injectionEvents.elements[0].wallFuel; @@ -602,7 +596,6 @@ static void updateFuelInfo() { engine->outputChannels.injectionOffset = engine->engineState.injectionOffset; engine->outputChannels.veValue = engine->engineState.currentVe; - engine->outputChannels.currentTargetAfr = engine->fuelComputer->targetAFR; engine->outputChannels.crankingFuelMs = engine->engineState.crankingFuel.fuel; } diff --git a/firmware/controllers/algo/airmass/airmass.cpp b/firmware/controllers/algo/airmass/airmass.cpp index 4dec3151b3..84c4028364 100644 --- a/firmware/controllers/algo/airmass/airmass.cpp +++ b/firmware/controllers/algo/airmass/airmass.cpp @@ -52,6 +52,6 @@ float AirmassVeModelBase::getVe(int rpm, float load) const { } engine->engineState.currentVe = ve; - engine->engineState.currentVeLoad = load; + engine->engineState.veTableYAxis = load; return ve * PERCENT_DIV; } diff --git a/firmware/controllers/algo/engine_state.h b/firmware/controllers/algo/engine_state.h index 1ebdc6e336..c97ce7480c 100644 --- a/firmware/controllers/algo/engine_state.h +++ b/firmware/controllers/algo/engine_state.h @@ -61,7 +61,6 @@ public: efitick_t timeSinceLastTChargeK; float currentVe = 0; - float currentVeLoad = 0; /** * Raw fuel injection duration produced by current fuel algorithm, without any correction diff --git a/firmware/controllers/algo/engine_state.txt b/firmware/controllers/algo/engine_state.txt index 063beaea46..badfdc6e71 100644 --- a/firmware/controllers/algo/engine_state.txt +++ b/firmware/controllers/algo/engine_state.txt @@ -105,6 +105,7 @@ uint32_t sparkCounter float fuelingLoad;@@GAUGE_NAME_FUEL_LOAD@@ float ignitionLoad;@@GAUGE_NAME_IGNITION_LOAD@@ + uint16_t autoscale veTableYAxis;;"%",{1/100}, 0, 0, 0, 0 ! engine_state_s end_struct diff --git a/firmware/controllers/algo/fuel/fuel_computer.cpp b/firmware/controllers/algo/fuel/fuel_computer.cpp index c75bd018e9..579e38cd65 100644 --- a/firmware/controllers/algo/fuel/fuel_computer.cpp +++ b/firmware/controllers/algo/fuel/fuel_computer.cpp @@ -15,7 +15,7 @@ mass_t FuelComputerBase::getCycleFuel(mass_t airmass, int rpm, float load) { float lambda = getTargetLambda(rpm, load); float afr = stoich * lambda; - currentAfrLoad = load; + afrTableYAxis = load; targetLambda = lambda; targetAFR = afr; stoichiometricRatio = stoich; @@ -73,7 +73,7 @@ float IFuelComputer::getLoadOverride(float defaultLoad, load_override_e override // TPS/pedal default to 100% - failed TPS goes rich case AFR_Tps: return Sensor::get(SensorType::Tps1).value_or(100); case AFR_AccPedal: return Sensor::get(SensorType::AcceleratorPedal).value_or(100); - case AFR_CylFilling: return 100 * engine->fuelComputer->sdAirMassInOneCylinder / getStandardAirCharge(); + case AFR_CylFilling: return 100 * sdAirMassInOneCylinder / getStandardAirCharge(); default: return 0; } } diff --git a/firmware/controllers/algo/fuel/fuel_computer.txt b/firmware/controllers/algo/fuel/fuel_computer.txt index d8b6d953eb..bfc5986826 100644 --- a/firmware/controllers/algo/fuel/fuel_computer.txt +++ b/firmware/controllers/algo/fuel/fuel_computer.txt @@ -1,9 +1,10 @@ struct_no_prefix fuel_computer_s - float currentAfrLoad - float targetLambda - float stoichiometricRatio - float targetAFR + uint16_t autoscale afrTableYAxis;;"%",{1/100}, 0, 0, 0, 0 + uint16_t autoscale targetLambda;@@GAUGE_NAME_TARGET_LAMBDA@@;"",{1/@@PACK_MULT_LAMBDA@@}, 0, 0, 0, 3 + uint16_t autoscale targetAFR;@@GAUGE_NAME_TARGET_AFR@@;"ratio",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 2 + + uint16_t autoscale stoichiometricRatio;fuel: stoich ratio;"ratio",{1/@@PACK_MULT_AFR@@}, 0, 0, 0, 2 ! c'mon, not the whole LiveData spaghetti for SD class? float sdTcharge_coff diff --git a/firmware/controllers/can/can_dash.cpp b/firmware/controllers/can/can_dash.cpp index 5c1153fe48..efa0041bf9 100644 --- a/firmware/controllers/can/can_dash.cpp +++ b/firmware/controllers/can/can_dash.cpp @@ -1240,8 +1240,8 @@ static void populateFrame(Aim5f7& msg) { msg.LambdaErr1 = 0; msg.LambdaErr2 = 0; // both targets are the same for now - msg.LambdaTarget1 = engine->fuelComputer->targetLambda; - msg.LambdaTarget2 = engine->fuelComputer->targetLambda; + msg.LambdaTarget1 = (float)engine->fuelComputer->targetLambda; + msg.LambdaTarget2 = (float)engine->fuelComputer->targetLambda; } void canDashboardAim(CanCycle cycle) { diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 732935cc2b..21e7043083 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -1329,7 +1329,7 @@ gaugeCategory = Fueling totalFuelConsumptionGauge = totalFuelConsumption, @@GAUGE_NAME_FUEL_CONSUMPTION@@, "g", 0, 10000, 0, 0, 10000, 10000, 0, 0 fuelFlowRateGauge = fuelFlowRate, @@GAUGE_NAME_FUEL_FLOW@@, "g/s", 0, 50, 0, 0, 50, 50, 2, 0 targetLambdaGauge = targetLambda,"fuel: target lambda", "", 10, 19.4, 12, 13, 15, 16, 2, 2 - currentTargetAfrGauge = currentTargetAfr,"fuel: target AFR", "", 0.65, 1.2, 0.7, 0.75, 1.1, 1.15, 3, 2 + currentTargetAfrGauge = targetAFR,"fuel: target AFR", "", 0.65, 1.2, 0.7, 0.75, 1.1, 1.15, 3, 2 gaugeCategory = Throttle Body (incl. ETB) pedalPositionGauge = throttlePedalPosition, @@GAUGE_NAME_THROTTLE_PEDAL@@, "%", 0, 120, 0, 0, 100, 100, 1, 1 diff --git a/java_console/io/src/test/java/com/rusefi/native_/JniUnitTest.java b/java_console/io/src/test/java/com/rusefi/native_/JniUnitTest.java index c920695e59..7defa15dbd 100644 --- a/java_console/io/src/test/java/com/rusefi/native_/JniUnitTest.java +++ b/java_console/io/src/test/java/com/rusefi/native_/JniUnitTest.java @@ -27,7 +27,6 @@ public class JniUnitTest { assertEquals(TS_FILE_VERSION, (int) getValue(engineLogic.getOutputs(), Sensor.FIRMWARE_VERSION)); - assertEquals(14.0, getValue(engineLogic.getOutputs(), Sensor.TARGET_AFR)); double veValue = getValue(engineLogic.getOutputs(), Sensor.veValue); assertTrue("veValue", veValue > 40 && veValue < 90); diff --git a/java_console/models/src/main/java/com/rusefi/core/Sensor.java b/java_console/models/src/main/java/com/rusefi/core/Sensor.java index fc29820ae4..c500317154 100644 --- a/java_console/models/src/main/java/com/rusefi/core/Sensor.java +++ b/java_console/models/src/main/java/com/rusefi/core/Sensor.java @@ -56,7 +56,6 @@ public enum Sensor implements BinaryLogEntry { // // fuel math // CHARGE_AIR_MASS("airmass", SensorCategory.OPERATIONS, FieldType.UINT16, 44, 0.001, 0, 3, "g/cyl"), // crankingFuel(GAUGE_NAME_FUEL_CRANKING, SensorCategory.FUEL, FieldType.UINT16, 46, 1.0 / PACK_MULT_MS, 0, 30, "ms"), - TARGET_AFR(GAUGE_NAME_TARGET_AFR, SensorCategory.OPERATIONS, FieldType.INT16, TsOutputs.CURRENTTARGETAFR, 1.0 / PACK_MULT_AFR, 10, 20, "afr"), baseFuel(Fields.GAUGE_NAME_FUEL_BASE, SensorCategory.FUEL, FieldType.UINT16, TsOutputs.BASEFUEL, 1.0 / PACK_MULT_MS, 0, 30, "ms"), runningFuel(GAUGE_NAME_FUEL_RUNNING, SensorCategory.FUEL, FieldType.UINT16, TsOutputs.FUELRUNNING, 1.0 / PACK_MULT_FUEL_MASS, 0, 15, "ms"), // actualLastInjection(GAUGE_NAME_FUEL_LAST_INJECTION, SensorCategory.FUEL, FieldType.UINT16, 54, 1.0 / PACK_MULT_MS, 0, 30, "ms"), diff --git a/java_console/ui/src/main/java/com/rusefi/sensor_logs/BinarySensorLogSandbox.java b/java_console/ui/src/main/java/com/rusefi/sensor_logs/BinarySensorLogSandbox.java index 127305dba9..6f33395728 100644 --- a/java_console/ui/src/main/java/com/rusefi/sensor_logs/BinarySensorLogSandbox.java +++ b/java_console/ui/src/main/java/com/rusefi/sensor_logs/BinarySensorLogSandbox.java @@ -31,7 +31,7 @@ public class BinarySensorLogSandbox { Sensor.etb1DutyCycle, Sensor.totalTriggerErrorCounter, Sensor.Lambda, - Sensor.TARGET_AFR, +// Sensor.TARGET_AFR, Sensor.FIRMWARE_VERSION, Sensor.CLT)); diff --git a/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java b/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java index ba69c57f11..80617c81df 100644 --- a/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java +++ b/java_console/ui/src/main/java/com/rusefi/sensor_logs/SensorLogger.java @@ -34,7 +34,7 @@ public class SensorLogger { // // Sensor.idlePosition, - Sensor.TARGET_AFR, +// Sensor.TARGET_AFR, // Sensor.tCharge, Sensor.veValue, diff --git a/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java b/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java index d3c265f172..aff5a3653a 100644 --- a/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java +++ b/java_console/ui/src/main/java/com/rusefi/ui/GaugesPanel.java @@ -38,7 +38,6 @@ public class GaugesPanel { Sensor.tCharge, Sensor.baseFuel, Sensor.runningFuel, - Sensor.TARGET_AFR, Sensor.etbTarget, Sensor.lastErrorCode, diff --git a/unit_tests/tests/ignition_injection/test_fuel_math.cpp b/unit_tests/tests/ignition_injection/test_fuel_math.cpp index e3b134518a..6e2ed50c9d 100644 --- a/unit_tests/tests/ignition_injection/test_fuel_math.cpp +++ b/unit_tests/tests/ignition_injection/test_fuel_math.cpp @@ -124,13 +124,13 @@ TEST(AirmassModes, VeOverride) { // Use default mode - will call with 10 dut.getAirmass(0); - EXPECT_FLOAT_EQ(engine->engineState.currentVeLoad, 10.0f); + EXPECT_FLOAT_EQ(engine->engineState.veTableYAxis, 10.0f); // Override to TPS engineConfiguration->veOverrideMode = VE_TPS; Sensor::setMockValue(SensorType::Tps1, 30.0f); dut.getAirmass(0); - EXPECT_FLOAT_EQ(engine->engineState.currentVeLoad, 30.0f); + EXPECT_FLOAT_EQ(engine->engineState.veTableYAxis, 30.0f); } TEST(AirmassModes, FallbackMap) {