From 516c701bfaabebcf8e5b6b23b6909bf8236c6dc8 Mon Sep 17 00:00:00 2001 From: rusEfi Date: Mon, 3 Nov 2014 10:03:54 -0600 Subject: [PATCH] auto-sync --- firmware/console/tunerstudio/tunerstudio.cpp | 11 ++-- .../controllers/algo/engine_configuration.h | 27 +++++----- firmware/tunerstudio/rusefi.ini | 50 ++++++++++++++----- 3 files changed, 60 insertions(+), 28 deletions(-) diff --git a/firmware/console/tunerstudio/tunerstudio.cpp b/firmware/console/tunerstudio/tunerstudio.cpp index ad4be7816d..7babe837b8 100644 --- a/firmware/console/tunerstudio/tunerstudio.cpp +++ b/firmware/console/tunerstudio/tunerstudio.cpp @@ -127,11 +127,14 @@ static void printStats(void) { // int fuelMapOffset = (int) (&engineConfiguration->fuelTable) - (int) engineConfiguration; // scheduleMsg(&logger, "fuelTable %d", fuelMapOffset); // - int offset = (int) (&boardConfiguration->max31855spiDevice) - (int) engineConfiguration; - scheduleMsg(&logger, "max31855_SpiDevice %d", offset); + int offset = (int) (&boardConfiguration->le_formulas) - (int) engineConfiguration; + scheduleMsg(&logger, "le_formulas %d", offset); // -// offset = (int) (&boardConfiguration->idleSolenoidFrequency) - (int) engineConfiguration; -// scheduleMsg(&logger, "idleSolenoidFrequency %d", offset); + offset = (int) (&engineConfiguration->crankingCycleBins) - (int) engineConfiguration; + scheduleMsg(&logger, "crankingCycleBins %d", offset); + + offset = (int) (&engineConfiguration->engineCycle) - (int) engineConfiguration; + scheduleMsg(&logger, "engineCycle %d", offset); } void tunerStudioWriteData(const uint8_t * buffer, int size) { diff --git a/firmware/controllers/algo/engine_configuration.h b/firmware/controllers/algo/engine_configuration.h index 15dce36ee9..f342ad3a37 100644 --- a/firmware/controllers/algo/engine_configuration.h +++ b/firmware/controllers/algo/engine_configuration.h @@ -19,7 +19,6 @@ #define MOCK_UNDEFINED -1 typedef struct { - float unused[3]; float baseCrankingFuel; /** @@ -261,6 +260,7 @@ typedef struct { /** * Should the trigger emulator push data right into trigger input, eliminating the need for physical jumper wires? * PS: Funny name, right? :) + * todo: make this a bit on some bit field */ short int directSelfStimulation; // size 2, offset 328 @@ -271,6 +271,19 @@ typedef struct { short int tpsMax; // size 2, offset 332 short int analogChartMode; + /** + * todo: finish implementation. These values are used for TPS disconnect detection + */ + short int tpsErrorLowValue; + short int tpsErrorHighValue; + + float primingSquirtDurationMs; + /** + * 360 for two-stroke + * 720 for four-stroke + */ + int engineCycle; + cranking_parameters_s crankingSettings; MAP_sensor_config_s map; @@ -461,23 +474,13 @@ typedef struct { */ float injectorFlow; // size 4 - /** - * 360 for two-stroke - * 720 for four-stroke - */ - int engineCycle; - - short int tpsErrorLowValue; - short int tpsErrorHighValue; - - float primingSquirtDurationMs; - float crankingFuelCoef[CRANKING_CURVE_SIZE]; float crankingFuelBins[CRANKING_CURVE_SIZE]; float crankingCycleCoef[CRANKING_CURVE_SIZE]; float crankingCycleBins[CRANKING_CURVE_SIZE]; + int unused33[3]; int unused3[91]; } engine_configuration_s; diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index 1753f5b201..c08d0d9c28 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -54,10 +54,11 @@ enable2ndByteCanID = false tpsMax = scalar, S16, 332, "ADC", 1, 0, 0, 1023, 0 ; * ( 2 bytes) analogChartMode = bits, S16, 334, [0:1], "none", "trigger", "MAP", "INVALID" - CrankingCoolantTempMin = scalar, F32, 336, "°C", 1, 0, -40, 200, 1; size 4 - CrankingCoolantTempMax = scalar, F32, 340, "°C", 1, 0, -40, 200, 1; size 4 - CrankingMinTempPW = scalar, F32, 344, "ms", 1, 0, 0, 200, 1; size 4 - CrankingMaxTempPW = scalar, F32, 348, "ms", 1, 0, 0, 200, 1; size 4 + tpsErrorLowValue = scalar, U16, 336, "°C", 1, 0, -40, 200, 1; size 4 + tpsErrorHighValue = scalar, U16, 338, "°C", 1, 0, -40, 200, 1; size 4 + primingSquirtDurationMs = scalar, F32, 340, "°C", 1, 0, -40, 200, 1; size 4 + engineCycle = scalar, U32, 344, "engine cycle", 1, 0, 0, 1000, 0 ; size 4 + baseCrankingFuelPW = scalar, F32, 348, "ms", 1, 0, 0, 200, 1; size 4 crankingRpm = scalar, S16, 352, "RPM", 1, 0, 0, 3000, 0 ; * ( 2 bytes) mapSamplingAngleBins = array, F32, 356, [8], "RPM", 1, 0, 0.0, 18000, 2; size 64 @@ -298,7 +299,7 @@ enable2ndByteCanID = false max31855_cs5 = bits, U32, 5900, [0:6], "GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4", "GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9", "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14", "GPIOA_15", "GPIOB_0", "GPIOB_1", "GPIOB_2", "GPIOB_3", "GPIOB_4", "GPIOB_5", "GPIOB_6", "GPIOB_7", "GPIOB_8", "GPIOB_9", "GPIOB_10", "GPIOB_11", "GPIOB_12", "GPIOB_13", "GPIOB_14", "GPIOB_15", "GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4", "GPIOC_5", "GPIOC_6", "GPIOC_7", "GPIOC_8", "GPIOC_9", "GPIOC_10", "GPIOC_11", "GPIOC_12", "GPIOC_13", "GPIOC_14", "GPIOC_15", "GPIOD_0", "GPIOD_1", "GPIOD_2", "GPIOD_3", "GPIOD_4", "GPIOD_5", "GPIOD_6", "GPIOD_7", "GPIOD_8", "GPIOD_9", "GPIOD_10", "GPIOD_11", "GPIOD_12", "GPIOD_13", "GPIOD_14", "GPIOD_15", "GPIOE_0", "GPIOE_1", "GPIOE_2", "GPIOE_3", "GPIOE_4", "GPIOE_5", "GPIOE_6", "GPIOE_7", "GPIOE_8", "GPIOE_9", "GPIOE_10", "GPIOE_11", "GPIOE_12", "GPIOE_13", "GPIOE_14", "GPIOE_15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" max31855_cs6 = bits, U32, 5904, [0:6], "GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4", "GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9", "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14", "GPIOA_15", "GPIOB_0", "GPIOB_1", "GPIOB_2", "GPIOB_3", "GPIOB_4", "GPIOB_5", "GPIOB_6", "GPIOB_7", "GPIOB_8", "GPIOB_9", "GPIOB_10", "GPIOB_11", "GPIOB_12", "GPIOB_13", "GPIOB_14", "GPIOB_15", "GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4", "GPIOC_5", "GPIOC_6", "GPIOC_7", "GPIOC_8", "GPIOC_9", "GPIOC_10", "GPIOC_11", "GPIOC_12", "GPIOC_13", "GPIOC_14", "GPIOC_15", "GPIOD_0", "GPIOD_1", "GPIOD_2", "GPIOD_3", "GPIOD_4", "GPIOD_5", "GPIOD_6", "GPIOD_7", "GPIOD_8", "GPIOD_9", "GPIOD_10", "GPIOD_11", "GPIOD_12", "GPIOD_13", "GPIOD_14", "GPIOD_15", "GPIOE_0", "GPIOE_1", "GPIOE_2", "GPIOE_3", "GPIOE_4", "GPIOE_5", "GPIOE_6", "GPIOE_7", "GPIOE_8", "GPIOE_9", "GPIOE_10", "GPIOE_11", "GPIOE_12", "GPIOE_13", "GPIOE_14", "GPIOE_15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" max31855_cs7 = bits, U32, 5908, [0:6], "GPIOA_0", "GPIOA_1", "GPIOA_2", "GPIOA_3", "GPIOA_4", "GPIOA_5", "GPIOA_6", "GPIOA_7", "GPIOA_8", "GPIOA_9", "GPIOA_10", "GPIOA_11", "GPIOA_12", "GPIOA_13", "GPIOA_14", "GPIOA_15", "GPIOB_0", "GPIOB_1", "GPIOB_2", "GPIOB_3", "GPIOB_4", "GPIOB_5", "GPIOB_6", "GPIOB_7", "GPIOB_8", "GPIOB_9", "GPIOB_10", "GPIOB_11", "GPIOB_12", "GPIOB_13", "GPIOB_14", "GPIOB_15", "GPIOC_0", "GPIOC_1", "GPIOC_2", "GPIOC_3", "GPIOC_4", "GPIOC_5", "GPIOC_6", "GPIOC_7", "GPIOC_8", "GPIOC_9", "GPIOC_10", "GPIOC_11", "GPIOC_12", "GPIOC_13", "GPIOC_14", "GPIOC_15", "GPIOD_0", "GPIOD_1", "GPIOD_2", "GPIOD_3", "GPIOD_4", "GPIOD_5", "GPIOD_6", "GPIOD_7", "GPIOD_8", "GPIOD_9", "GPIOD_10", "GPIOD_11", "GPIOD_12", "GPIOD_13", "GPIOD_14", "GPIOD_15", "GPIOE_0", "GPIOE_1", "GPIOE_2", "GPIOE_3", "GPIOE_4", "GPIOE_5", "GPIOE_6", "GPIOE_7", "GPIOE_8", "GPIOE_9", "GPIOE_10", "GPIOE_11", "GPIOE_12", "GPIOE_13", "GPIOE_14", "GPIOE_15", "NONE", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" - max31855_SpiDevice = bits, U32, 5912, [0:1], "Off", "SPI1", "SPI2", "SPI3" + max31855spiDevice = bits, U32, 5912, [0:1], "Off", "SPI1", "SPI2", "SPI3" @@ -313,6 +314,18 @@ enable2ndByteCanID = false digitalChartSize = scalar, U32, 6296, "count", 1, 0, 0, 300, 0 ; size 4 injectorFlow = scalar, F32, 6300, "cm3/min", 1, 0, 0, 1000, 2; size 4 + + ; le_formulas 6280 - the formulas expressions take about 4Kb + + ; name = bits, type, offset, bits + ; name = array, type, offset, shape, units, scale, translate, lo, hi, digits + ; name = scalar, type, offset, units, scale, translate, lo, hi, digits + + crankingFuelCoef = array, F32, 9504, [8], "%", 100, 0, 0.0, 500.0, 2; size 32 + crankingFuelBins = array, F32, 9536, [8], "C", 1, 0, -80.0, 170.0, 2; size 32 + + crankingCycleCoef = array, F32, 9568, [8], "%", 100, 0, 0.0, 500.0, 2; size 32 + crankingCycleBins = array, F32, 9600, [8], "C", 1, 0, -80.0, 170.0, 2; size 32 [OutputChannels] @@ -428,6 +441,21 @@ fileVersion = { 20141103 } yBins = cltFuelCorr gauge = CLTGauge + curve = crankingFuelCurve, "Cranking Coolant Temp correction" + columnLabel = "Coolant", "Correction" + xAxis = -40, 120, 10 + yAxis = -300, 300, 10 + xBins = cltFuelCorrBins, coolant + yBins = cltFuelCorr + gauge = CLTGauge + + curve = crankingDurationCurve, "Cranking Duration correction" + columnLabel = "Coolant", "Correction" + xAxis = -40, 120, 10 + yAxis = -300, 300, 10 + xBins = cltFuelCorrBins, coolant + yBins = cltFuelCorr + gauge = CLTGauge [TableEditor] ; table_id, map3d_id, "title", page @@ -571,6 +599,8 @@ fileVersion = { 20141103 } subMenu = generalSettings, "General" subMenu = std_separator subMenu = cranking, "Cranking" + subMenu = crankingFuelCurve, "Cranking Coolant Temp correction" + subMenu = crankingDurationCurve, "Cranking Duration correction" subMenu = std_separator subMenu = fuelTableTbl, "Fuel Table", {fuelAlgorithm != 3} subMenu = iatFuelCorrCurve, "Intake air temp fuel correction" @@ -628,7 +658,7 @@ fileVersion = { 20141103 } dialog = injChars, "Injector Settings" field = "Injector Open Time", injectorLag field = "Injector Flow", injectorFlow - field = "" + field = "Engine Cycle", engineCycle field = "" field = "" field = "" @@ -744,7 +774,7 @@ fileVersion = { 20141103 } field = "ADC on PC5", adcModePC5 dialog = egtInputs, "EGT inputs" - field = "SPI", max31855_SpiDevice + field = "SPI", max31855spiDevice field = "CS #1", max31855_cs0 field = "CS #2", max31855_cs1 field = "CS #3", max31855_cs2 @@ -883,11 +913,7 @@ fileVersion = { 20141103 } dialog = cranking, "Cranking" field = "Cranking RPM limit", crankingRpm field = "" - field = "Minimum temp point", CrankingCoolantTempMin - field = "Pulse Width at Minimum temp point", CrankingMinTempPW - field = "" - field = "Maximum temp point", CrankingCoolantTempMax - field = "Pulse Width at Maximum temp point", CrankingMaxTempPW + field = "Base cranking Pulse Width", baseCrankingFuelPW field = "" field = "Charge Angle", crankingChargeAngle field = "Advance during cranking", crankingTimingAngle \ No newline at end of file