diff --git a/firmware/config/engines/GY6_139QMB.cpp b/firmware/config/engines/GY6_139QMB.cpp
index 73fa7ad894..7148a4f011 100644
--- a/firmware/config/engines/GY6_139QMB.cpp
+++ b/firmware/config/engines/GY6_139QMB.cpp
@@ -20,7 +20,7 @@ void setGy6139qmbDefaultEngineConfiguration(
engineConfiguration->analogInputDividerCoefficient = 1.52;
engineConfiguration->algorithm = LM_MAP;
engineConfiguration->globalTriggerAngleOffset = 45;
- engineConfiguration->bc.analogChartMode = AC_MAP;
+ engineConfiguration->bc.sensorChartMode = SC_MAP;
engineConfiguration->specs.displacement = 0.072; // 72cc
engineConfiguration->specs.cylindersCount = 1;
setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR);
diff --git a/firmware/config/engines/bmw_e34.cpp b/firmware/config/engines/bmw_e34.cpp
index a3bb587399..c52e0fe4f7 100644
--- a/firmware/config/engines/bmw_e34.cpp
+++ b/firmware/config/engines/bmw_e34.cpp
@@ -60,7 +60,7 @@ void setBmwE34(DECLARE_ENGINE_PARAMETER_F) {
setAlgorithm(LM_SPEED_DENSITY PASS_ENGINE_PARAMETER);
// for best performance at high RPM, we need to turn off 'Engine Sniffer' and 'Sensor Sniffer'
- boardConfiguration->analogChartMode = AC_OFF;
+ boardConfiguration->sensorChartMode = SC_OFF;
engineConfiguration->isDigitalChartEnabled = false;
engineConfiguration->isCylinderCleanupEnabled = false;
diff --git a/firmware/config/engines/dodge_neon.cpp b/firmware/config/engines/dodge_neon.cpp
index e15993b39f..a1c2e8d7a4 100644
--- a/firmware/config/engines/dodge_neon.cpp
+++ b/firmware/config/engines/dodge_neon.cpp
@@ -182,7 +182,7 @@ void setDodgeNeon1995EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
setThermistorConfiguration(&engineConfiguration->clt, 0, 32500, 30, 7550, 100, 700);
engineConfiguration->clt.bias_resistor = 2700;
- engineConfiguration->analogChartFrequency = 7;
+ engineConfiguration->sensorChartFrequency = 7;
}
void setDodgeNeonNGCEngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
@@ -357,7 +357,7 @@ void setDodgeNeonNGCEngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->cltAdcChannel = EFI_ADC_12;
- boardConfiguration->analogChartMode = AC_MAP;
+ boardConfiguration->sensorChartMode = SC_MAP;
boardConfiguration->isFastAdcEnabled = true;
engineConfiguration->map.sensor.type = MT_DODGE_NEON_2003;
diff --git a/firmware/config/engines/dodge_ram.cpp b/firmware/config/engines/dodge_ram.cpp
index b2fe8b3a1a..c398d5aada 100644
--- a/firmware/config/engines/dodge_ram.cpp
+++ b/firmware/config/engines/dodge_ram.cpp
@@ -17,8 +17,7 @@ void setDodgeRam1996(DECLARE_ENGINE_PARAMETER_F) {
board_configuration_s * boardConfiguration = &engineConfiguration->bc;
setOperationMode(engineConfiguration, FOUR_STROKE_CAM_SENSOR);
- engineConfiguration->trigger.type = TT_ONE_PLUS_TOOTHED_WHEEL_60_2;
-
+ engineConfiguration->trigger.type = TT_DODGE_RAM;
//Base engine setting
engineConfiguration->specs.cylindersCount = 8;
diff --git a/firmware/config/engines/mazda_626.cpp b/firmware/config/engines/mazda_626.cpp
index f0c64bbdc5..607c08dd5f 100644
--- a/firmware/config/engines/mazda_626.cpp
+++ b/firmware/config/engines/mazda_626.cpp
@@ -26,8 +26,8 @@ void setMazda626EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->digitalChartSize = 150;
- boardConfiguration->analogChartMode = AC_TRIGGER;
- engineConfiguration->analogChartFrequency = 2;
+ boardConfiguration->sensorChartMode = SC_TRIGGER;
+ engineConfiguration->sensorChartFrequency = 2;
engineConfiguration->injector.flow = 330;
engineConfiguration->specs.displacement = 2.0;
diff --git a/firmware/config/engines/subaru.cpp b/firmware/config/engines/subaru.cpp
index db4c0db23e..a8eca667a1 100644
--- a/firmware/config/engines/subaru.cpp
+++ b/firmware/config/engines/subaru.cpp
@@ -22,5 +22,5 @@ void setSubaru2003Wrx(engine_configuration_s *engineConfiguration) {
engineConfiguration->trigger.customTotalToothCount = 5;
engineConfiguration->trigger.customSkippedToothCount = 1;
- engineConfiguration->analogChartFrequency = 2;
+ engineConfiguration->sensorChartFrequency = 2;
}
diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp
index aec1331c27..7bc91cf69f 100644
--- a/firmware/controllers/algo/engine_configuration.cpp
+++ b/firmware/controllers/algo/engine_configuration.cpp
@@ -296,7 +296,7 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->fixedModeTiming = 50;
// performance optimization
- boardConfiguration->analogChartMode = AC_OFF;
+ boardConfiguration->sensorChartMode = SC_OFF;
engineConfiguration->map.sensor.hwChannel = EFI_ADC_4;
engineConfiguration->baroSensor.hwChannel = EFI_ADC_4;
@@ -310,7 +310,7 @@ void setDefaultConfiguration(DECLARE_ENGINE_PARAMETER_F) {
engineConfiguration->injectionAngle = 0;
engineConfiguration->ignitionBaseAngle = 0;
engineConfiguration->overrideCrankingIgnition = true;
- engineConfiguration->analogChartFrequency = 20;
+ engineConfiguration->sensorChartFrequency = 20;
engineConfiguration->algorithm = LM_PLAIN_MAF;
diff --git a/firmware/controllers/algo/engine_configuration_generated_structures.h b/firmware/controllers/algo/engine_configuration_generated_structures.h
index 4b48882940..9d1dc3f0ce 100644
--- a/firmware/controllers/algo/engine_configuration_generated_structures.h
+++ b/firmware/controllers/algo/engine_configuration_generated_structures.h
@@ -1,4 +1,4 @@
-// this section was generated by config_definition.jar on Sat Apr 18 18:59:21 EDT 2015
+// this section was generated by config_definition.jar on Thu Apr 23 14:13:44 EDT 2015
// begin
#include "rusefi_types.h"
typedef struct {
@@ -604,7 +604,7 @@ typedef struct {
/**
* offset 784
*/
- analog_chart_e analogChartMode;
+ sensor_chart_e sensorChartMode;
/**
* offset 788
*/
@@ -839,7 +839,7 @@ typedef struct {
/**
* offset 512
*/
- int analogChartFrequency;
+ int sensorChartFrequency;
/**
* offset 516
*/
@@ -1283,4 +1283,4 @@ typedef struct {
} persistent_config_s;
// end
-// this section was generated by config_definition.jar on Sat Apr 18 18:59:21 EDT 2015
+// this section was generated by config_definition.jar on Thu Apr 23 14:13:44 EDT 2015
diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h
index cb23a6df11..27157fe0fa 100644
--- a/firmware/controllers/algo/rusefi_enums.h
+++ b/firmware/controllers/algo/rusefi_enums.h
@@ -542,14 +542,14 @@ typedef enum {
} can_device_mode_e;
typedef enum {
- AC_OFF = 0,
+ SC_OFF = 0,
/**
* You would use this value if you want to see a detailed graph of your trigger events
*/
- AC_TRIGGER = 1, AC_MAP = 2,
+ SC_TRIGGER = 1, SC_MAP = 2,
- Internal_ForceMyEnumIntSize_analog_chart = ENUM_32_BITS,
-} analog_chart_e;
+ Internal_ForceMyEnumIntSize_sensor_chart = ENUM_32_BITS,
+} sensor_chart_e;
typedef enum {
CUSTOM = 0,
diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp
index 11afca5530..ea163c364b 100644
--- a/firmware/controllers/engine_controller.cpp
+++ b/firmware/controllers/engine_controller.cpp
@@ -21,6 +21,7 @@
* If not, see .
*/
+#include
#include "main.h"
#include "engine_configuration.h"
#include "trigger_central.h"
@@ -39,7 +40,6 @@
#include "engine_math.h"
#include "wave_analyzer.h"
#include "allsensors.h"
-#include "analog_chart.h"
#include "electronic_throttle.h"
#include "map_averaging.h"
#include "malfunction_central.h"
@@ -469,7 +469,7 @@ void initEngineContoller(Logging *sharedLogger, Engine *engine) {
#endif
#if EFI_ANALOG_CHART || defined(__DOXYGEN__)
- initAnalogChart();
+ initSensorChart();
#endif /* EFI_ANALOG_CHART */
initAlgo(sharedLogger, engineConfiguration);
diff --git a/firmware/controllers/map_averaging.cpp b/firmware/controllers/map_averaging.cpp
index 21bd4a43cd..46a526a74a 100644
--- a/firmware/controllers/map_averaging.cpp
+++ b/firmware/controllers/map_averaging.cpp
@@ -35,7 +35,7 @@
#include "engine_math.h"
#if EFI_ANALOG_CHART
-#include "analog_chart.h"
+#include
#endif /* EFI_ANALOG_CHART */
#define FAST_MAP_CHART_SKIP_FACTOR 16
@@ -108,7 +108,7 @@ static void startAveraging(void *arg) {
* as fast as possible
*/
void mapAveragingCallback(adcsample_t adcValue) {
- if(!isAveraging && boardConfiguration->analogChartMode != AC_MAP) {
+ if(!isAveraging && boardConfiguration->sensorChartMode != SC_MAP) {
return;
}
@@ -118,11 +118,11 @@ void mapAveragingCallback(adcsample_t adcValue) {
#if (EFI_ANALOG_CHART && EFI_ANALOG_SENSORS) || defined(__DOXYGEN__)
- if (boardConfiguration->analogChartMode == AC_MAP)
+ if (boardConfiguration->sensorChartMode == SC_MAP)
if (perRevolutionCounter % FAST_MAP_CHART_SKIP_FACTOR == 0) {
float voltage = adcToVoltsDivided(adcValue);
float currentPressure = getMapByVoltage(voltage);
- acAddData(getCrankshaftAngleNt(getTimeNowNt() PASS_ENGINE_PARAMETER), currentPressure);
+ scAddData(getCrankshaftAngleNt(getTimeNowNt() PASS_ENGINE_PARAMETER), currentPressure);
}
#endif /* EFI_ANALOG_CHART */
diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp
index 0b4b301a79..115f451f20 100644
--- a/firmware/controllers/settings.cpp
+++ b/firmware/controllers/settings.cpp
@@ -352,8 +352,8 @@ static void setMalfunctionIndicatorPinMode(int value) {
doPrintConfiguration(engine);
}
-static void setAnalogChartMode(int value) {
- boardConfiguration->analogChartMode = (analog_chart_e) value;
+static void setSensorChartMode(int value) {
+ boardConfiguration->sensorChartMode = (sensor_chart_e) value;
doPrintConfiguration(engine);
}
@@ -915,7 +915,7 @@ void initSettings(engine_configuration_s *engineConfiguration) {
addConsoleActionF("set_ignition_offset", setIgnitionOffset);
addConsoleActionF("set_injection_offset", setInjectionOffset);
addConsoleActionF("set_global_trigger_offset_angle", setGlobalTriggerAngleOffset);
- addConsoleActionI("set_analog_chart_mode", setAnalogChartMode);
+ addConsoleActionI("set_sensor_chart_mode", setSensorChartMode);
addConsoleActionI("set_fixed_mode_timing", setFixedModeTiming);
addConsoleActionI("set_timing_mode", setTimingMode);
addConsoleActionI("set_engine_type", setEngineType);
diff --git a/firmware/controllers/trigger/rpm_calculator.cpp b/firmware/controllers/trigger/rpm_calculator.cpp
index 4547ed652c..740266d940 100644
--- a/firmware/controllers/trigger/rpm_calculator.cpp
+++ b/firmware/controllers/trigger/rpm_calculator.cpp
@@ -25,7 +25,7 @@
#endif
#if ! EFI_UNIT_TEST
-#include "analog_chart.h"
+#include
#endif
#include "efilib2.h"
@@ -146,8 +146,8 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType, uint32_t index DECL
if (index != 0) {
#if EFI_ANALOG_CHART || defined(__DOXYGEN__)
- if (boardConfiguration->analogChartMode == AC_TRIGGER)
- acAddData(getCrankshaftAngleNt(nowNt PASS_ENGINE_PARAMETER), 1000 * ckpSignalType + index);
+ if (boardConfiguration->sensorChartMode == SC_TRIGGER)
+ scAddData(getCrankshaftAngleNt(nowNt PASS_ENGINE_PARAMETER), 1000 * ckpSignalType + index);
#endif
return;
}
@@ -174,8 +174,8 @@ void rpmShaftPositionCallback(trigger_event_e ckpSignalType, uint32_t index DECL
rpmState->onNewEngineCycle();
rpmState->lastRpmEventTimeNt = nowNt;
#if EFI_ANALOG_CHART || defined(__DOXYGEN__)
- if (boardConfiguration->analogChartMode == AC_TRIGGER)
- acAddData(getCrankshaftAngleNt(nowNt PASS_ENGINE_PARAMETER), index);
+ if (boardConfiguration->sensorChartMode == SC_TRIGGER)
+ scAddData(getCrankshaftAngleNt(nowNt PASS_ENGINE_PARAMETER), index);
#endif
engine->m.rpmCbTime = GET_TIMESTAMP() - engine->m.beforeRpmCb;
}
diff --git a/firmware/controllers/trigger/trigger_chrysler.cpp b/firmware/controllers/trigger/trigger_chrysler.cpp
index a3625934e7..acefb46017 100644
--- a/firmware/controllers/trigger/trigger_chrysler.cpp
+++ b/firmware/controllers/trigger/trigger_chrysler.cpp
@@ -7,6 +7,17 @@
#include "trigger_chrysler.h"
+void initDodgeRam(TriggerShape *s) {
+
+ s->reset(FOUR_STROKE_CAM_SENSOR, false);
+ s->useRiseEdge = true;
+
+ s->isSynchronizationNeeded = false;
+
+ s->addEvent(540, T_PRIMARY, TV_HIGH);
+ s->addEvent(720, T_PRIMARY, TV_LOW);
+}
+
void configureNeon2003TriggerShape(TriggerShape *s) {
s->reset(FOUR_STROKE_CAM_SENSOR, false);
diff --git a/firmware/controllers/trigger/trigger_chrysler.h b/firmware/controllers/trigger/trigger_chrysler.h
index 32aa8dfa07..e645ab6cba 100644
--- a/firmware/controllers/trigger/trigger_chrysler.h
+++ b/firmware/controllers/trigger/trigger_chrysler.h
@@ -14,5 +14,6 @@
void configureNeon1995TriggerShape(TriggerShape *s);
void configureNeon2003TriggerShape(TriggerShape *s);
+void initDodgeRam(TriggerShape *s);
#endif /* TRIGGER_CHRYSLER_H_ */
diff --git a/firmware/controllers/trigger/trigger_decoder.cpp b/firmware/controllers/trigger/trigger_decoder.cpp
index 0fdbaac960..9ef9b2f60a 100644
--- a/firmware/controllers/trigger/trigger_decoder.cpp
+++ b/firmware/controllers/trigger/trigger_decoder.cpp
@@ -391,6 +391,10 @@ void initializeTriggerShape(Logging *logger, engine_configuration_s const *engin
initializeMitsubishi4g18(triggerShape);
break;
+ case TT_DODGE_RAM:
+ initDodgeRam(triggerShape);
+ break;
+
default:
firmwareError("initializeTriggerShape() not implemented: %d", triggerConfig->type);
;
diff --git a/firmware/development/analog_chart.h b/firmware/development/analog_chart.h
deleted file mode 100644
index 64875e9f3c..0000000000
--- a/firmware/development/analog_chart.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * @file analog_chart.h
- *
- * @date Dec 20, 2013
- * @author Andrey Belomutskiy, (c) 2012-2015
- */
-
-#ifndef ANALOG_CHART_H_
-#define ANALOG_CHART_H_
-
-#include "global.h"
-
-void acAddData(float angle, float value);
-void initAnalogChart(void);
-
-#endif /* ANALOG_CHART_H_ */
diff --git a/firmware/development/development.mk b/firmware/development/development.mk
index d7452d211b..b103e17c71 100644
--- a/firmware/development/development.mk
+++ b/firmware/development/development.mk
@@ -4,7 +4,7 @@ DEV_SRC = development/test/test.c \
DEV_SRC_CPP = development/trigger_emulator.cpp \
development/hw_layer/poten.cpp \
- development/analog_chart.cpp \
+ development/sensor_chart.cpp \
development/rfi_perftest.cpp \
development/engine_emulator.cpp \
$(PROJECT_DIR)/development/wave_chart.cpp \
diff --git a/firmware/development/analog_chart.cpp b/firmware/development/sensor_chart.cpp
similarity index 79%
rename from firmware/development/analog_chart.cpp
rename to firmware/development/sensor_chart.cpp
index 1fb14f3c8e..c2b1a4991f 100644
--- a/firmware/development/analog_chart.cpp
+++ b/firmware/development/sensor_chart.cpp
@@ -5,8 +5,8 @@
* @author Andrey Belomutskiy, (c) 2012-2015
*/
+#include
#include "main.h"
-#include "analog_chart.h"
#include "engine.h"
#include "rpm_calculator.h"
#include "status_loop.h"
@@ -21,12 +21,12 @@ static int initialized = FALSE;
extern engine_configuration_s *engineConfiguration;
-void acAddData(float angle, float value) {
+void scAddData(float angle, float value) {
if (!initialized) {
return; // this is possible because of initialization sequence
}
- if (engineConfiguration->analogChartFrequency < 2) {
+ if (engineConfiguration->sensorChartFrequency < 2) {
/**
* analog chart frequency cannot be 1 because of the way
* data flush is implemented, see below
@@ -35,7 +35,7 @@ void acAddData(float angle, float value) {
return;
}
- if (getRevolutionCounter() % engineConfiguration->analogChartFrequency != 0) {
+ if (getRevolutionCounter() % engineConfiguration->sensorChartFrequency != 0) {
/**
* We are here if we do NOT need to add an event to the analog chart
*/
@@ -66,12 +66,12 @@ void acAddData(float angle, float value) {
}
}
-static void setAnalogChartFrequency(int value) {
- engineConfiguration->analogChartFrequency = value;
+static void setSensorChartFrequency(int value) {
+ engineConfiguration->sensorChartFrequency = value;
}
-void initAnalogChart(void) {
- addConsoleActionI("set_analog_chart_freq", setAnalogChartFrequency);
+void initSensorChart(void) {
+ addConsoleActionI("set_sensor_chart_freq", setSensorChartFrequency);
initialized = true;
}
diff --git a/firmware/development/sensor_chart.h b/firmware/development/sensor_chart.h
new file mode 100644
index 0000000000..0441da226f
--- /dev/null
+++ b/firmware/development/sensor_chart.h
@@ -0,0 +1,16 @@
+/**
+ * @file sensor_chart.h
+ *
+ * @date Dec 20, 2013
+ * @author Andrey Belomutskiy, (c) 2012-2015
+ */
+
+#ifndef SENSOR_CHART_H_
+#define SENSOR_CHART_H_
+
+#include "global.h"
+
+void scAddData(float angle, float value);
+void initSensorChart(void);
+
+#endif /* SENSOR_CHART_H_ */
diff --git a/firmware/integration/Fields.java b/firmware/integration/Fields.java
index 25e2ee06c3..c50d28c7a3 100644
--- a/firmware/integration/Fields.java
+++ b/firmware/integration/Fields.java
@@ -5,8 +5,8 @@ package com.rusefi.config;
*/
public class Fields {
- public static final Field SENSOR_SNIFFER_FREQUENCY = new Field(@@analogChartFrequency@@, FieldType.INT);
- public static final Field SENSOR_SNIFFER_MODE = new Field(@@analogChartMode@@, FieldType.ANALOG_CHART_E);
+ public static final Field SENSOR_SNIFFER_FREQUENCY = new Field(@@sensorChartFrequency@@, FieldType.INT);
+ public static final Field SENSOR_SNIFFER_MODE = new Field(@@sensorChartMode@@, FieldType.ANALOG_CHART_E);
public static final Field GLOBAL_FUEL_CORRECTION = new Field(@@globalFuelCorrection@@, FieldType.FLOAT);
public static final Field ENGINE_SNIFFER_SIZE = new Field(@@digitalChartSize@@, FieldType.INT);
public static final Field isDigitalChartEnabled = new Field(@@isDigitalChartEnabled@@, FieldType.BIT, 5);
diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt
index a280552425..fc6e6df418 100644
--- a/firmware/integration/rusefi_config.txt
+++ b/firmware/integration/rusefi_config.txt
@@ -197,7 +197,7 @@ log_format_e logFormat;
adc_channel_e tpsAdcChannel;
int overrideCrankingIgnition;
- int analogChartFrequency;;"index", 1, 0, 0, 300, 0 ; size 4
+ int sensorChartFrequency;;"index", 1, 0, 0, 300, 0 ; size 4
struct trigger_config_s @brief Trigger wheel(s) configuration
@@ -393,8 +393,8 @@ custom fsio_setting_t 4 scalar, F32, @OFFSET@, "Val", 1, 0, 0,
brain_pin_e joystickCPin;
brain_pin_e joystickDPin;
-custom analog_chart_e 4 bits, S32, @OFFSET@, [0:1], "none", "trigger", "MAP", "INVALID"
-analog_chart_e analogChartMode;
+custom sensor_chart_e 4 bits, S32, @OFFSET@, [0:1], "none", "trigger", "MAP", "INVALID"
+sensor_chart_e sensorChartMode;
maf_sensor_type_e mafSensorType;
brain_pin_e vehicleSpeedSensorInputPin;
diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp
index c8235c6df5..3b3f1c6618 100644
--- a/firmware/rusefi.cpp
+++ b/firmware/rusefi.cpp
@@ -290,5 +290,5 @@ int getRusEfiVersion(void) {
return 123; // this is here to make the compiler happy about the unused array
if (UNUSED_CCM_SIZE[0] * 0 != 0)
return 3211; // this is here to make the compiler happy about the unused array
- return 20150421;
+ return 20150423;
}
diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini
index 42f93d6302..e5eaa488f1 100644
--- a/firmware/tunerstudio/rusefi.ini
+++ b/firmware/tunerstudio/rusefi.ini
@@ -40,7 +40,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
-; this section was generated by ConfigDefinition.jar on Sat Apr 18 18:59:23 EDT 2015
+; this section was generated by ConfigDefinition.jar on Thu Apr 23 14:13:46 EDT 2015
pageSize = 15288
page = 1
@@ -120,7 +120,7 @@ page = 1
HD44780height = scalar, S32, 500, "index", 1, 0, 0, 300, 0
tpsAdcChannel = bits, U32, 504, [0:3] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5"
;skipping overrideCrankingIgnition offset 508
- analogChartFrequency = scalar, S32, 512, "index", 1, 0, 0, 300, 0 ; size 4
+ sensorChartFrequency = scalar, S32, 512, "index", 1, 0, 0, 300, 0 ; size 4
trigger_type = bits, U32, 516, [0:4], "custom toothed wheel", "ford aspire", "dodge neon", "Miata NA", "Miata NB", "GM_7X", "Cooper", "Mazda SOHC 4", "60/2", "36/1", "Accord CD", "MITSU", "ACCORD 2", "ACCORD DIP", "Neon 2003", "MAZDA D 1+4", "1+1", "1+60/2", "Single Tooth", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID"
trigger_customIsSynchronizationNeeded= bits, U32, 520, [0:0], "false", "true"
trigger_customNeedSecondTriggerInput= bits, U32, 520, [1:1], "false", "true"
@@ -360,7 +360,7 @@ page = 1
joystickBPin = bits, U32, 1388, [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"
joystickCPin = bits, U32, 1392, [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"
joystickDPin = bits, U32, 1396, [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"
- analogChartMode = bits, S32, 1400, [0:1], "none", "trigger", "MAP", "INVALID"
+ sensorChartMode = bits, S32, 1400, [0:1], "none", "trigger", "MAP", "INVALID"
;skipping mafSensorType offset 1404
vehicleSpeedSensorInputPin = bits, U32, 1408, [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"
clutchUpPin = bits, U32, 1412, [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"
@@ -1260,7 +1260,7 @@ fileVersion = { 20150406 }
field = ""
field = "Fuel Algorithm", algorithm
field = ""
- field = "analog chart", analogChartMode
+ field = "sensor chart", sensorChartMode
field = "#System ON/OFF"
field = "CylinderCleanup", isCylinderCleanupEnabled
field = "Injection", isInjectionEnabled
diff --git a/java_console/ui/src/com/rusefi/AnalogChartPanel.java b/java_console/ui/src/com/rusefi/AnalogChartPanel.java
index 263583be0b..e15d76561a 100644
--- a/java_console/ui/src/com/rusefi/AnalogChartPanel.java
+++ b/java_console/ui/src/com/rusefi/AnalogChartPanel.java
@@ -2,6 +2,7 @@ package com.rusefi;
import com.rusefi.config.Fields;
import com.rusefi.ui.RpmModel;
+import com.rusefi.ui.config.EnumConfigField;
import com.rusefi.ui.util.UiUtils;
import com.rusefi.ui.engine.EngineSnifferPanel;
import com.rusefi.ui.config.ConfigField;
@@ -106,7 +107,7 @@ public class AnalogChartPanel {
lowerPanel.setBorder(BorderFactory.createLineBorder(Color.white));
content.add(lowerPanel, BorderLayout.SOUTH);
- lowerPanel.add(new ConfigField(Fields.SENSOR_SNIFFER_MODE, "Sensor chart mode").getContent());
+ lowerPanel.add(new EnumConfigField(Fields.SENSOR_SNIFFER_MODE, "Mode", "Off", "Trigger", "MAP").getContent());
lowerPanel.add(new ConfigField(Fields.SENSOR_SNIFFER_FREQUENCY, "Every XXX engine cycles").getContent());
lowerPanel.add(new ConfigField(Fields.GLOBAL_FUEL_CORRECTION, "Global Fuel Correction").getContent());
}
diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java
index 917de9763b..d384926cda 100644
--- a/java_console/ui/src/com/rusefi/Launcher.java
+++ b/java_console/ui/src/com/rusefi/Launcher.java
@@ -32,7 +32,7 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
* @see com.rusefi.StartupFrame
*/
public class Launcher {
- public static final int CONSOLE_VERSION = 20150422;
+ public static final int CONSOLE_VERSION = 20150423;
public static final boolean SHOW_STIMULATOR = false;
private static final String TAB_INDEX = "main_tab";
protected static final String PORT_KEY = "port";
diff --git a/java_console/ui/src/com/rusefi/ui/config/EnumConfigField.java b/java_console/ui/src/com/rusefi/ui/config/EnumConfigField.java
new file mode 100644
index 0000000000..026bf4cdab
--- /dev/null
+++ b/java_console/ui/src/com/rusefi/ui/config/EnumConfigField.java
@@ -0,0 +1,48 @@
+package com.rusefi.ui.config;
+
+import com.rusefi.config.Field;
+import com.rusefi.core.MessagesCentral;
+import com.rusefi.core.Pair;
+
+import javax.swing.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+public class EnumConfigField extends BaseConfigField {
+ private final JComboBox view = new JComboBox<>();
+ private boolean ec;
+
+ public EnumConfigField(final Field field, String caption, String... options) {
+ super(field);
+
+ for (String option : options)
+ view.addItem(option);
+
+ createUi(caption, view);
+
+ MessagesCentral.getInstance().addListener(new MessagesCentral.MessageListener() {
+ @Override
+ public void onMessage(Class clazz, String message) {
+ if (Field.isIntValueMessage(message)) {
+ Pair p = Field.parseResponse(message);
+ if (p != null && p.first == field.getOffset()) {
+ int value = (Integer) p.second;
+ ec = true;
+ view.setSelectedIndex(value);
+ onValueArrived();
+ ec = false;
+ }
+ }
+ }
+ });
+
+ view.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (ec)
+ return;
+ sendValue(field, Integer.toString(view.getSelectedIndex()));
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/unit_tests/test_trigger_decoder.cpp b/unit_tests/test_trigger_decoder.cpp
index 26cc7e4750..ab14e4edcd 100644
--- a/unit_tests/test_trigger_decoder.cpp
+++ b/unit_tests/test_trigger_decoder.cpp
@@ -509,6 +509,8 @@ void testTriggerDecoder(void) {
// lame duty cycle implementation!
testTriggerDecoder2("ford aspire", FORD_ASPIRE_1996, 4, 0.0, 0.5);
+ testTriggerDecoder2("dodge ram", DODGE_RAM, 0, 0.7500, 0);
+
//testTriggerDecoder2("bmw", BMW_E34, 0, 0.9750, 0.5167);
testTriggerDecoder2("bmw", BMW_E34, 0, 0.4667, 0.0);
diff --git a/win32_functional_tests/Makefile b/win32_functional_tests/Makefile
index 028cfe9f65..a0be900738 100644
--- a/win32_functional_tests/Makefile
+++ b/win32_functional_tests/Makefile
@@ -121,7 +121,7 @@ CPPSRC = $(UTILSRC_CPP) \
$(CONTROLLERS_ALGO_SRC_CPP) \
$(PROJECT_DIR)/controllers/settings.cpp \
$(PROJECT_DIR)/controllers/engine_controller.cpp \
- $(PROJECT_DIR)/development/analog_chart.cpp \
+ $(PROJECT_DIR)/development/sensor_chart.cpp \
$(TRIGGER_SRC_CPP) \
$(TRIGGER_DECODERS_SRC_CPP) \
$(SYSTEMSRC_CPP) \
diff --git a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp
index 7eeb2fe493..055ab4aea1 100644
--- a/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp
+++ b/win32_functional_tests/simulator/rusEfiFunctionalTest.cpp
@@ -22,7 +22,7 @@
#include "trigger_emulator_algo.h"
#include "main_trigger_callback.h"
#include "allsensors.h"
-#include "analog_chart.h"
+#include "sensor_chart.h"
#include "injector_central.h"
#include "engine.h"
#include "tunerstudio.h"
@@ -90,7 +90,7 @@ void rusEfiFunctionalTest(void) {
initRpmCalculator(engine);
#if EFI_ANALOG_CHART
- initAnalogChart();
+ initSensorChart();
#endif /* EFI_ANALOG_CHART */
initTriggerEmulator(&sharedLogger, engine);