auto-sync

This commit is contained in:
rusEfi 2015-04-23 15:05:57 -04:00
parent 1a32d86161
commit 199edc1686
30 changed files with 139 additions and 73 deletions

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -22,5 +22,5 @@ void setSubaru2003Wrx(engine_configuration_s *engineConfiguration) {
engineConfiguration->trigger.customTotalToothCount = 5;
engineConfiguration->trigger.customSkippedToothCount = 1;
engineConfiguration->analogChartFrequency = 2;
engineConfiguration->sensorChartFrequency = 2;
}

View File

@ -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;

View File

@ -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

View File

@ -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,

View File

@ -21,6 +21,7 @@
* If not, see <http://www.gnu.org/licenses/>.
*/
#include <sensor_chart.h>
#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);

View File

@ -35,7 +35,7 @@
#include "engine_math.h"
#if EFI_ANALOG_CHART
#include "analog_chart.h"
#include <sensor_chart.h>
#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 */

View File

@ -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);

View File

@ -25,7 +25,7 @@
#endif
#if ! EFI_UNIT_TEST
#include "analog_chart.h"
#include <sensor_chart.h>
#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;
}

View File

@ -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);

View File

@ -14,5 +14,6 @@
void configureNeon1995TriggerShape(TriggerShape *s);
void configureNeon2003TriggerShape(TriggerShape *s);
void initDodgeRam(TriggerShape *s);
#endif /* TRIGGER_CHRYSLER_H_ */

View File

@ -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);
;

View File

@ -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_ */

View File

@ -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 \

View File

@ -5,8 +5,8 @@
* @author Andrey Belomutskiy, (c) 2012-2015
*/
#include <sensor_chart.h>
#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;
}

View File

@ -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_ */

View File

@ -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);

View File

@ -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;

View File

@ -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;
}

View File

@ -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

View File

@ -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());
}

View File

@ -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";

View File

@ -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<String> 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<Integer, ?> 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()));
}
});
}
}

View File

@ -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);

View File

@ -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) \

View File

@ -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);