diff --git a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h
index 7f0980582f..d0c284e366 100644
--- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h
+++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h
@@ -986,6 +986,7 @@
#define GAUGE_NAME_AFR "Air/Fuel Ratio"
#define GAUGE_NAME_AIR_FLOW "MAF air flow"
#define GAUGE_NAME_AIR_MASS "air mass"
+#define GAUGE_NAME_BARO_PRESSURE "Barometric pressure"
#define GAUGE_NAME_CPU_TEMP "CPU Temperature"
#define GAUGE_NAME_DEBUG_F1 "debug f1"
#define GAUGE_NAME_DEBUG_F2 "debug f2: iTerm"
@@ -2268,6 +2269,8 @@
#define ts_show_hip9011 true
#define ts_show_joystick true
#define ts_show_lcd true
+#define ts_show_main_relay true
+#define ts_show_main_relay_microRusEFI_message false
#define ts_show_sd_card true
#define ts_show_spi true
#define ts_show_trigger_comparator true
diff --git a/firmware/config/boards/microrusefi/prepend.txt b/firmware/config/boards/microrusefi/prepend.txt
index 73e90b6153..63b69d2d28 100644
--- a/firmware/config/boards/microrusefi/prepend.txt
+++ b/firmware/config/boards/microrusefi/prepend.txt
@@ -11,3 +11,5 @@
#define ts_show_sd_card true
#define ts_show_can_pins false
#define ts_show_tunerstudio_port false
+#define ts_show_main_relay false
+#define ts_show_main_relay_microRusEFI_message true
diff --git a/firmware/config/boards/nucleo_f746/board.h b/firmware/config/boards/nucleo_f746/board.h
index acb49d30a5..549584b0d1 100644
--- a/firmware/config/boards/nucleo_f746/board.h
+++ b/firmware/config/boards/nucleo_f746/board.h
@@ -37,7 +37,6 @@
#define BOARD_NAME "STM32 Nucleo144-F746ZI for RusEFI"
#define EFI_USB_AF 10U
-#define EFI_USB_SERIAL_ID GPIOA_10
#define EFI_USB_SERIAL_DM GPIOA_11
#define EFI_USB_SERIAL_DP GPIOA_12
diff --git a/firmware/config/boards/nucleo_f767/board.h b/firmware/config/boards/nucleo_f767/board.h
index e386580834..4160fed6b0 100644
--- a/firmware/config/boards/nucleo_f767/board.h
+++ b/firmware/config/boards/nucleo_f767/board.h
@@ -37,7 +37,6 @@
#define BOARD_NAME "STM32 Nucleo144-F767ZI for RusEFI"
#define EFI_USB_AF 10U
-#define EFI_USB_SERIAL_ID GPIOA_10
#define EFI_USB_SERIAL_DM GPIOA_11
#define EFI_USB_SERIAL_DP GPIOA_12
diff --git a/firmware/config/boards/st_stm32f4/board.h b/firmware/config/boards/st_stm32f4/board.h
index 1f0b31ee34..72afc416d7 100644
--- a/firmware/config/boards/st_stm32f4/board.h
+++ b/firmware/config/boards/st_stm32f4/board.h
@@ -33,7 +33,6 @@
#define BOARD_NAME "STM32F407 for RusEFI"
#define EFI_USB_AF 10U
-#define EFI_USB_SERIAL_ID GPIOA_10
#define EFI_USB_SERIAL_DM GPIOA_11
#define EFI_USB_SERIAL_DP GPIOA_12
diff --git a/firmware/config/engines/toyota_jzs147.cpp b/firmware/config/engines/toyota_jzs147.cpp
index 39bd4aa2dd..a42d5bb618 100644
--- a/firmware/config/engines/toyota_jzs147.cpp
+++ b/firmware/config/engines/toyota_jzs147.cpp
@@ -128,8 +128,8 @@ void setToyota_2jz_vics(DECLARE_CONFIG_PARAMETER_SIGNATURE) {
engineConfiguration->debugMode = DBG_VVT;
// todo: these magic values would be hardcoded once we find out proper magic values
- engineConfiguration->fsio_setting[14] = -90;
- engineConfiguration->fsio_setting[15] = +90;
+ engineConfiguration->fsio_setting[14] = 175 - 45;
+ engineConfiguration->fsio_setting[15] = 175 + 45;
engineConfiguration->auxPidPins[0] = GPIOE_3; // VVT solenoid control
diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp
index 668fb311e0..8a889593af 100644
--- a/firmware/console/status_loop.cpp
+++ b/firmware/console/status_loop.cpp
@@ -129,30 +129,22 @@ static int logFileLineIndex = 0;
static void reportSensorF(Logging *log, const char *caption, const char *units, float value,
int precision) {
- bool isLogFileFormatting = true;
-
- if (!isLogFileFormatting) {
-#if EFI_PROD_CODE || EFI_SIMULATOR
- debugFloat(log, caption, value, precision);
-#endif /* EFI_PROD_CODE || EFI_SIMULATOR */
- } else {
#if EFI_FILE_LOGGING
- if (logFileLineIndex == 0) {
- append(log, caption);
- append(log, TAB);
- } else if (logFileLineIndex == 1) {
- append(log, units);
- append(log, TAB);
- } else {
- appendFloat(log, value, precision);
- append(log, TAB);
- }
-#else
- UNUSED(log);UNUSED(caption);UNUSED(units);UNUSED(value);
- UNUSED(precision);
-#endif /* EFI_FILE_LOGGING */
+ if (logFileLineIndex == 0) {
+ append(log, caption);
+ append(log, TAB);
+ } else if (logFileLineIndex == 1) {
+ append(log, units);
+ append(log, TAB);
+ } else {
+ appendFloat(log, value, precision);
+ append(log, TAB);
}
+#else
+ UNUSED(log);UNUSED(caption);UNUSED(units);UNUSED(value);
+ UNUSED(precision);
+#endif /* EFI_FILE_LOGGING */
}
static void reportSensorI(Logging *log, const char *caption, const char *units, int value) {
diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp
index 2088044c31..add0a33bcf 100644
--- a/firmware/controllers/algo/engine.cpp
+++ b/firmware/controllers/algo/engine.cpp
@@ -130,8 +130,6 @@ static void cylinderCleanupControl(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
#endif
}
-static efitick_t tle8888CrankingResetTime = 0;
-
void Engine::periodicSlowCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
ScopePerf perf(PE::EnginePeriodicSlowCallback);
@@ -152,6 +150,8 @@ void Engine::periodicSlowCallback(DECLARE_ENGINE_PARAMETER_SIGNATURE) {
standardAirCharge = getStandardAirCharge(PASS_ENGINE_PARAMETER_SIGNATURE);
#if (BOARD_TLE8888_COUNT > 0)
+ static efitick_t tle8888CrankingResetTime = 0;
+
if (CONFIG(useTLE8888_cranking_hack) && ENGINE(rpmCalculator).isCranking(PASS_ENGINE_PARAMETER_SIGNATURE)) {
efitick_t nowNt = getTimeNowNt();
if (nowNt - tle8888CrankingResetTime > MS2NT(300)) {
diff --git a/firmware/controllers/algo/obd_error_codes.h b/firmware/controllers/algo/obd_error_codes.h
index d6b5834356..70517a2e42 100644
--- a/firmware/controllers/algo/obd_error_codes.h
+++ b/firmware/controllers/algo/obd_error_codes.h
@@ -2083,7 +2083,7 @@ typedef enum {
CUSTOM_NO_ETB_FOR_IDLE = 6723,
CUSTOM_ERR_6724 = 6724,
CUSTOM_ERR_6725 = 6725,
- CUSTOM_ERR_6726 = 6726,
+ CUSTOM_ERR_VVT_OUT_OF_RANGE = 6726,
CUSTOM_ERR_6727 = 6727,
CUSTOM_ERR_6728 = 6728,
CUSTOM_ERR_6729 = 6729,
diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp
index 8c4b9de244..ef9aa53554 100644
--- a/firmware/controllers/engine_controller.cpp
+++ b/firmware/controllers/engine_controller.cpp
@@ -717,6 +717,6 @@ int getRusEfiVersion(void) {
if (initBootloader() != 0)
return 123;
#endif /* EFI_BOOTLOADER_INCLUDE_CODE */
- return 20200514;
+ return 20200515;
}
#endif /* EFI_UNIT_TEST */
diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h
index e7d5c4c437..a96f74e2ba 100644
--- a/firmware/controllers/generated/rusefi_generated.h
+++ b/firmware/controllers/generated/rusefi_generated.h
@@ -986,6 +986,7 @@
#define GAUGE_NAME_AFR "Air/Fuel Ratio"
#define GAUGE_NAME_AIR_FLOW "MAF air flow"
#define GAUGE_NAME_AIR_MASS "air mass"
+#define GAUGE_NAME_BARO_PRESSURE "Barometric pressure"
#define GAUGE_NAME_CPU_TEMP "CPU Temperature"
#define GAUGE_NAME_DEBUG_F1 "debug f1"
#define GAUGE_NAME_DEBUG_F2 "debug f2: iTerm"
@@ -2268,6 +2269,8 @@
#define ts_show_hip9011 true
#define ts_show_joystick true
#define ts_show_lcd true
+#define ts_show_main_relay true
+#define ts_show_main_relay_microRusEFI_message false
#define ts_show_sd_card true
#define ts_show_spi true
#define ts_show_trigger_comparator false
diff --git a/firmware/controllers/system/efi_gpio.cpp b/firmware/controllers/system/efi_gpio.cpp
index bbae5409c0..0a9a459f3c 100644
--- a/firmware/controllers/system/efi_gpio.cpp
+++ b/firmware/controllers/system/efi_gpio.cpp
@@ -255,12 +255,6 @@ void NamedOutputPin::setLow() {
// turn off the output
setValue(false);
-#if EFI_DEFAILED_LOGGING
-// systime_t after = getTimeNowUs();
-// debugInt(&signal->logging, "a_time", after - signal->hi_time);
-// scheduleLogging(&signal->logging);
-#endif /* EFI_DEFAILED_LOGGING */
-
#if EFI_ENGINE_SNIFFER
addEngineSnifferEvent(getShortName(), PROTOCOL_ES_DOWN);
#endif /* EFI_ENGINE_SNIFFER */
diff --git a/firmware/controllers/system/efi_gpio.h b/firmware/controllers/system/efi_gpio.h
index 44fc631412..b1250d7c42 100644
--- a/firmware/controllers/system/efi_gpio.h
+++ b/firmware/controllers/system/efi_gpio.h
@@ -32,7 +32,8 @@ public:
OutputPin();
/**
* initializes pin & registers it in pin repository
- * todo: add a comment explaining why outputMode POINTER not VALUE?
+ * outputMode being a pointer allow us to change configuration (for example invert logical pin) in configuration and get resuts applied
+ * away, or at least I hope that's why
*/
void initPin(const char *msg, brain_pin_e brainPin, const pin_output_mode_e *outputMode);
/**
diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp
index 3603f6b984..149a052436 100644
--- a/firmware/controllers/trigger/trigger_central.cpp
+++ b/firmware/controllers/trigger/trigger_central.cpp
@@ -41,16 +41,11 @@ WaveChart waveChart;
#endif /* EFI_ENGINE_SNIFFER */
trigger_central_s::trigger_central_s() : hwEventCounters() {
-
- static_assert(TRIGGER_TYPE_60_2 == TT_TOOTHED_WHEEL_60_2, "One we will have one source of this magic constant");
- static_assert(TRIGGER_TYPE_36_1 == TT_TOOTHED_WHEEL_36_1, "One we will have one source of this magic constant");
-
-
-
+ static_assert(TRIGGER_TYPE_60_2 == TT_TOOTHED_WHEEL_60_2, "One day we will have one source of this magic constant");
+ static_assert(TRIGGER_TYPE_36_1 == TT_TOOTHED_WHEEL_36_1, "One day we will have one source of this magic constant");
}
TriggerCentral::TriggerCentral() : trigger_central_s() {
-
clearCallbacks(&triggerListeneres);
triggerState.resetTriggerState();
noiseFilter.resetAccumSignalData();
@@ -105,6 +100,14 @@ void hwHandleVvtCamSignal(trigger_value_e front, efitick_t nowNt DECLARE_ENGINE_
if (!CONFIG(displayLogicLevelsInEngineSniffer)) {
addEngineSnifferEvent(PROTOCOL_VVT_NAME, front == TV_RISE ? PROTOCOL_ES_UP : PROTOCOL_ES_DOWN);
+
+#if EFI_TOOTH_LOGGER
+ if (front == TV_RISE) {
+ LogTriggerTooth(SHAFT_SECONDARY_RISING, nowNt PASS_ENGINE_PARAMETER_SUFFIX);
+ } else {
+ LogTriggerTooth(SHAFT_SECONDARY_FALLING, nowNt PASS_ENGINE_PARAMETER_SUFFIX);
+ }
+#endif /* EFI_TOOTH_LOGGER */
}
@@ -160,7 +163,9 @@ void hwHandleVvtCamSignal(trigger_value_e front, efitick_t nowNt DECLARE_ENGINE_
switch(engineConfiguration->vvtMode) {
case VVT_2JZ:
- if (currentPosition < engineConfiguration->fsio_setting[14] || currentPosition > engineConfiguration->fsio_setting[15]) {
+ // we do not know if we are in sync or out of sync, so we have to be looking for both possibilities
+ if ((currentPosition < engineConfiguration->fsio_setting[14] || currentPosition > engineConfiguration->fsio_setting[15]) &&
+ (currentPosition < engineConfiguration->fsio_setting[14] + 360 || currentPosition > engineConfiguration->fsio_setting[15] + 360)) {
// outside of the expected range
return;
}
@@ -203,7 +208,12 @@ void hwHandleVvtCamSignal(trigger_value_e front, efitick_t nowNt DECLARE_ENGINE_
tc->vvtSyncTimeNt = nowNt;
+ // we do NOT clamp VVT position into the [0, engineCycle) range - we expect vvtOffset to be configured so that
+ // it's not necessary
tc->vvtPosition = engineConfiguration->vvtOffset - currentPosition;
+ if (tc->vvtPosition < 0 || tc->vvtPosition > ENGINE(engineCycle)) {
+ warning(CUSTOM_ERR_VVT_OUT_OF_RANGE, "Please adjust vvtOffset since position %f", tc->vvtPosition);
+ }
switch (engineConfiguration->vvtMode) {
case VVT_FIRST_HALF:
diff --git a/firmware/hw_layer/adc_inputs.cpp b/firmware/hw_layer/adc_inputs.cpp
index 9ec5ba5580..795746dbc8 100644
--- a/firmware/hw_layer/adc_inputs.cpp
+++ b/firmware/hw_layer/adc_inputs.cpp
@@ -442,8 +442,6 @@ public:
}
};
-static char errorMsgBuff[_MAX_FILLER + 2];
-
void addChannel(const char *name, adc_channel_e setting, adc_channel_mode_e mode) {
if (setting == EFI_ADC_NONE) {
return;
diff --git a/firmware/hw_layer/drivers/gpio/tle6240.c b/firmware/hw_layer/drivers/gpio/tle6240.c
index 708a5a6c60..7822a0aabb 100644
--- a/firmware/hw_layer/drivers/gpio/tle6240.c
+++ b/firmware/hw_layer/drivers/gpio/tle6240.c
@@ -314,17 +314,18 @@ static int tle6240_wake_driver(struct tle6240_priv *chip)
{
(void)chip;
- if (isIsrContext()) {
- // this is for normal runtime
- int wasLocked = lockAnyContext();
- chSemSignalI(&tle6240_wake);
- if (!wasLocked) {
- unlockAnyContext();
- }
- } else {
- // this is for start-up to not hang up
- chSemSignal(&tle6240_wake);
+ /* Entering a reentrant critical zone.*/
+ syssts_t sts = chSysGetStatusAndLockX();
+ chSemSignalI(&tle6240_wake);
+ if (!port_is_isr_context()) {
+ /**
+ * chSemSignalI above requires rescheduling
+ * interrupt handlers have implicit rescheduling
+ */
+ chSchRescheduleS();
}
+ /* Leaving the critical zone.*/
+ chSysRestoreStatusX(sts);
return 0;
}
diff --git a/firmware/hw_layer/serial_over_usb/usbconsole.c b/firmware/hw_layer/serial_over_usb/usbconsole.c
index 456a5bb794..3e82a97a63 100644
--- a/firmware/hw_layer/serial_over_usb/usbconsole.c
+++ b/firmware/hw_layer/serial_over_usb/usbconsole.c
@@ -40,7 +40,6 @@ void usb_serial_start(void) {
usbConnectBus(serusbcfg.usbp);
#if HAL_USE_SERIAL
- efiSetPadMode("USB ID", EFI_USB_SERIAL_ID, PAL_MODE_ALTERNATE(EFI_USB_AF));
efiSetPadMode("USB DM", EFI_USB_SERIAL_DM, PAL_MODE_ALTERNATE(EFI_USB_AF));
efiSetPadMode("USB DP", EFI_USB_SERIAL_DP, PAL_MODE_ALTERNATE(EFI_USB_AF));
/*
diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt
index 33eabd4287..1ac86aa832 100644
--- a/firmware/integration/rusefi_config.txt
+++ b/firmware/integration/rusefi_config.txt
@@ -1431,6 +1431,8 @@ end_struct
#define GAUGE_NAME_ACCEL_Y "Acceleration: Y"
#define GAUGE_NAME_ACCEL_Z "Acceleration: Z"
+#define GAUGE_NAME_BARO_PRESSURE "Barometric pressure"
+
#define GAUGE_NAME_ECU_TEMPERATURE "ECU temperature"
@@ -1551,6 +1553,8 @@ end_struct
! some board files override this value using prepend file
#define ts_show_hip9011 true
+#define ts_show_main_relay true
+#define ts_show_main_relay_microRusEFI_message false
#define ts_show_cj125 true
#define ts_show_etb true
#define ts_show_etb_pins true
diff --git a/firmware/svnversion.h b/firmware/svnversion.h
index f257575487..2e6f79bb3e 100644
--- a/firmware/svnversion.h
+++ b/firmware/svnversion.h
@@ -1,12 +1,12 @@
// This file was generated by Version2Header
-// Fri Apr 24 12:30:26 EDT 2020
+// Sat May 16 01:51:18 EDT 2020
#ifndef GIT_HASH
-#define GIT_HASH "24ecb69e28eec77f5722fcafcf17b14464a10bca"
+#define GIT_HASH "c9409ce69379772e2b3cac3016518e56abf97851"
#endif
#ifndef VCS_VERSION
-#define VCS_VERSION "22343"
+#define VCS_VERSION "22876"
#endif
diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini
index 9a79ac44e8..5b96ccd4e0 100644
--- a/firmware/tunerstudio/rusefi.ini
+++ b/firmware/tunerstudio/rusefi.ini
@@ -89,7 +89,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
-; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Thu May 14 23:44:58 EDT 2020
+; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Fri May 15 16:34:17 EDT 2020
pageSize = 20000
page = 1
@@ -1651,19 +1651,19 @@ page = 1
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher ETB Autotune
- debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
- debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
- debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
- debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
- debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
- debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
- debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
+ debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
+ debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
+ debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
+ debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
+ debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
+ debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
+ debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
- debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
- debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
- debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
- debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
- debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
+ debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
+ debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
+ debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
+ debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
+ debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
@@ -2509,7 +2509,7 @@ menuDialog = main
subMenu = std_separator
# Digital outputs
- subMenu = mainRelay, "Main relay"
+ subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump & rail"
subMenu = fanSetting, "Fan"
@@ -3589,7 +3589,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
; Controller->Actuator Outputs
- dialog = mainRelay, "Main relay output"
+ dialog = mainRelayDialog, "Main relay output"
field = "Pin", mainRelayPin
field = "Pin mode", mainRelayPinMode
diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input
index 01b64aca28..c62afac7fd 100644
--- a/firmware/tunerstudio/rusefi.input
+++ b/firmware/tunerstudio/rusefi.input
@@ -391,19 +391,19 @@ enable2ndByteCanID = false
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher ETB Autotune
- debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
- debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
- debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
- debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
- debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
- debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
- debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
+ debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
+ debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
+ debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
+ debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
+ debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
+ debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
+ debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
- debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
- debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
- debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
- debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
- debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
+ debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
+ debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
+ debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
+ debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
+ debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
@@ -960,8 +960,8 @@ gaugeCategory = Sensors - Extra 1
VSSGauge = vehicleSpeedKph, "Vehicle speed", "kmh", 0, 200, 0, 1, 3, 4, 1, 1
accelerationXGauge = accelerationX, @@GAUGE_NAME_ACCEL_X@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
accelerationYGauge = accelerationY, @@GAUGE_NAME_ACCEL_Y@@, "acc", -11, 11, 1.0, 1.2, 100, 100, 3, 1
- atmPresCGauge = baroPressure, "Barometric pressure", "kPa", 0, 1024, 0, 0, 0, 0, 0, 0
- vvtPositionGauge = vvtPosition, "VVT position", "deg", 0, 100, 0, 0, 720, 720, 0, 0
+ atmPresCGauge = baroPressure, @@GAUGE_NAME_BARO_PRESSURE@@, "kPa", 0, 1024, 0, 0, 0, 0, 0, 0
+ vvtPositionGauge = vvtPosition, @@GAUGE_NAME_VVT@@, "deg", 0, 100, 0, 0, 720, 720, 0, 0
internalMcuTemperatureGauge = internalMcuTemperature, @@GAUGE_NAME_ECU_TEMPERATURE@@, "C", 0, 100, 0, 0, 75, 100, 0, 0
OilPressGauge = oilPressure, "Oil Pressure", "kPa", 0, 750, 35, 75, 550, 700, 0, 0
idleAirValvePositionGauge = idleAirValvePosition, "Idle position", "%", 0, 100, 0, 0, 100, 100, 1, 1
@@ -1249,7 +1249,7 @@ menuDialog = main
subMenu = std_separator
# Digital outputs
- subMenu = mainRelay, "Main relay"
+ subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump & rail"
subMenu = fanSetting, "Fan"
@@ -2319,9 +2319,10 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
; Controller->Actuator Outputs
- dialog = mainRelay, "Main relay output"
- field = "Pin", mainRelayPin
- field = "Pin mode", mainRelayPinMode
+ dialog = mainRelayDialog, "Main relay output"
+ field = "microRusEFI main relay control is hard wired on pin #29"@@if_ts_show_main_relay_microRusEFI_message
+ field = "Pin", mainRelayPin@@if_ts_show_main_relay
+ field = "Pin mode", mainRelayPinMode@@if_ts_show_main_relay
dialog = starterRelay, "Starter relay output"
field = "Pin", starterRelayDisablePin
diff --git a/firmware/tunerstudio/rusefi_frankenso.ini b/firmware/tunerstudio/rusefi_frankenso.ini
index 2d8c27f42a..b0f09a054f 100644
--- a/firmware/tunerstudio/rusefi_frankenso.ini
+++ b/firmware/tunerstudio/rusefi_frankenso.ini
@@ -89,7 +89,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
-; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Thu May 14 23:45:33 EDT 2020
+; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Fri May 15 16:34:25 EDT 2020
pageSize = 20000
page = 1
@@ -1651,19 +1651,19 @@ page = 1
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher ETB Autotune
- debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
- debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
- debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
- debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
- debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
- debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
- debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
+ debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
+ debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
+ debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
+ debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
+ debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
+ debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
+ debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
- debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
- debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
- debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
- debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
- debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
+ debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
+ debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
+ debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
+ debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
+ debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
@@ -2509,7 +2509,7 @@ menuDialog = main
subMenu = std_separator
# Digital outputs
- subMenu = mainRelay, "Main relay"
+ subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump & rail"
subMenu = fanSetting, "Fan"
@@ -3589,7 +3589,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
; Controller->Actuator Outputs
- dialog = mainRelay, "Main relay output"
+ dialog = mainRelayDialog, "Main relay output"
field = "Pin", mainRelayPin
field = "Pin mode", mainRelayPinMode
diff --git a/firmware/tunerstudio/rusefi_kinetis.ini b/firmware/tunerstudio/rusefi_kinetis.ini
index 915054ced3..0cf6d31629 100644
--- a/firmware/tunerstudio/rusefi_kinetis.ini
+++ b/firmware/tunerstudio/rusefi_kinetis.ini
@@ -89,7 +89,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
-; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Thu May 14 20:41:28 EDT 2020
+; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on kineris_gen_config.bat integration/rusefi_config.txt Fri May 15 21:04:28 EDT 2020
pageSize = 20000
page = 1
@@ -855,7 +855,7 @@ page = 1
storageMode = bits, U32, 2260, [0:7], "Auto", "Always", "Never"
narrowToWideOxygenBins = array, F32, 2264, [8], "V", 1, 0, -10.0, 10.0, 3
narrowToWideOxygen = array, F32, 2296, [8], "ratio", 1, 0, -40.0, 40.0, 2
- vvtMode = bits, U32, 2328, [0:7], "First half", "Second half", "2GZ", "Miata NB2", "mode4", "mode5", "mode6", "mode7"
+ vvtMode = bits, U32, 2328, [0:7], "Inactive", "Second half", "2GZ", "Miata NB2", "First half", "mode5", "mode6", "mode7"
;no TS info - skipping unusedOldBiquad offset 2332
cltTimingBins = array, F32, 2352, [8], "C", 1, 0, -100.0, 250.0, 1
cltTimingExtra = array, F32, 2384, [8], "degree", 1, 0, -400.0, 400.0, 0
@@ -1651,19 +1651,19 @@ page = 1
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher ETB Autotune
- debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
- debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
- debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
- debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
- debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
- debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
- debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
+ debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
+ debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
+ debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
+ debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
+ debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
+ debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
+ debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
- debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
- debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
- debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
- debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
- debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
+ debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
+ debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
+ debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
+ debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
+ debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
@@ -2509,7 +2509,7 @@ menuDialog = main
subMenu = std_separator
# Digital outputs
- subMenu = mainRelay, "Main relay"
+ subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump & rail"
subMenu = fanSetting, "Fan"
@@ -3590,7 +3590,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
; Controller->Actuator Outputs
- dialog = mainRelay, "Main relay output"
+ dialog = mainRelayDialog, "Main relay output"
field = "Pin", mainRelayPin
field = "Pin mode", mainRelayPinMode
diff --git a/firmware/tunerstudio/rusefi_microrusefi.ini b/firmware/tunerstudio/rusefi_microrusefi.ini
index 0dc594ca8f..6ec47d60e9 100644
--- a/firmware/tunerstudio/rusefi_microrusefi.ini
+++ b/firmware/tunerstudio/rusefi_microrusefi.ini
@@ -89,7 +89,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
-; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Thu May 14 23:04:50 EDT 2020
+; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Fri May 15 16:34:21 EDT 2020
pageSize = 20000
page = 1
@@ -1651,19 +1651,19 @@ page = 1
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher ETB Autotune
- debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
- debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
- debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
- debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
- debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
- debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
- debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
+ debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
+ debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
+ debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
+ debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
+ debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
+ debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
+ debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
- debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
- debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
- debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
- debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
- debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
+ debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
+ debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
+ debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
+ debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
+ debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
@@ -2509,7 +2509,7 @@ menuDialog = main
subMenu = std_separator
# Digital outputs
- subMenu = mainRelay, "Main relay"
+ subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump & rail"
subMenu = fanSetting, "Fan"
@@ -3569,9 +3569,8 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
; Controller->Actuator Outputs
- dialog = mainRelay, "Main relay output"
- field = "Pin", mainRelayPin
- field = "Pin mode", mainRelayPinMode
+ dialog = mainRelayDialog, "Main relay output"
+ field = "microRusEFI main relay control is hard wired on pin #29"
dialog = starterRelay, "Starter relay output"
field = "Pin", starterRelayDisablePin
diff --git a/firmware/tunerstudio/rusefi_prometheus.ini b/firmware/tunerstudio/rusefi_prometheus.ini
index 264511947e..785411f0d6 100644
--- a/firmware/tunerstudio/rusefi_prometheus.ini
+++ b/firmware/tunerstudio/rusefi_prometheus.ini
@@ -89,7 +89,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
-; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Thu May 14 23:45:56 EDT 2020
+; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Fri May 15 16:34:28 EDT 2020
pageSize = 20000
page = 1
@@ -1651,19 +1651,19 @@ page = 1
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher ETB Autotune
- debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
- debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
- debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
- debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
- debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
- debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
- debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
+ debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
+ debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
+ debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
+ debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
+ debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
+ debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
+ debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
- debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
- debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
- debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
- debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
- debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
+ debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
+ debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
+ debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
+ debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
+ debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
@@ -2509,7 +2509,7 @@ menuDialog = main
subMenu = std_separator
# Digital outputs
- subMenu = mainRelay, "Main relay"
+ subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump & rail"
subMenu = fanSetting, "Fan"
@@ -3585,7 +3585,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
; Controller->Actuator Outputs
- dialog = mainRelay, "Main relay output"
+ dialog = mainRelayDialog, "Main relay output"
field = "Pin", mainRelayPin
field = "Pin mode", mainRelayPinMode
diff --git a/firmware/tunerstudio/rusefi_proteus.ini b/firmware/tunerstudio/rusefi_proteus.ini
index cf7c328e40..e416b80e44 100644
--- a/firmware/tunerstudio/rusefi_proteus.ini
+++ b/firmware/tunerstudio/rusefi_proteus.ini
@@ -89,7 +89,7 @@ enable2ndByteCanID = false
; see PAGE_0_SIZE in C source code
; CONFIG_DEFINITION_START
-; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Thu May 14 23:46:05 EDT 2020
+; this section was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Fri May 15 16:34:31 EDT 2020
pageSize = 20000
page = 1
@@ -1651,19 +1651,19 @@ page = 1
; https://rusefi.com/wiki/index.php?title=Manual:Debug_fields
; 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
; Alternator TPS Acceleration Warmup-Pid Idle Engine Load Acc Trigger Counters VVT Cranking Ignition Timing ETB PID CJ125 CAN TLE8888 Boost Start Launcher ETB Autotune
- debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
- debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
- debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
- debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
- debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
- debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
- debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
+ debugFieldF1List = bits, U08, [0:7], "Controller Output", "From TPS", "", "Controller Output", "Idle output", "Channel 1 Rise Counter", "", "", "VVT Event Position","", "Ign IAT Corr", "", "", "", "", "", "", "ETB Controller Output", "", "", "df1", "df1", "22df1", "", "23:df1", "CJ125: output", "", "", "", "", "", "", "", "", "", "", "Boost Open Loop Duty", "S unused" "", "Osc Amplitude"
+ debugFieldF2List = bits, U08, [0:7], "I-Term", "To TPS", "", "I-Term", "Idle df2", "Channel 2 Rise Counter", "", "", "VVT Ratio", "", "Ign CLT Corr", "", "", "", "", "", "", "ETB I-Term", "", "", "df2", "df2", "22df2", "", "23:df2", "CJ125: i-term", "", "", "", "", "", "", "", "", "", "", "Boost Closed Loop Duty","S unused" "", "Duty Amplitude"
+ debugFieldF3List = bits, U08, [0:7], "Previous Error", "Current TPS<>TPS", "", "", "Idle df3", "ICU sum", "", "", "", "", "Ign FSIO Adj", "", "", "", "", "", "", "ETB err", "", "", "df3", "df3", "22df3", "", "23:df3", "CJ125: err", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Tu"
+ debugFieldF4List = bits, U08, [0:7], "I Gain", "Extra Fuel", "", "", "Idle df4", "VVT rise", "", "", "", "", "Ign PID Adj", "", "", "", "", "", "", "ETB I setting", "", "", "df4", "df4", "22df4", "", "23:df4", "CJ125: UA", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ku"
+ debugFieldF5List = bits, U08, [0:7], "D Gain", "df5", "df5", "df5", "Idle df5", "VVT fall", "df5", "", "", "", "", "", "", "", "", "", "", "ETB D setting", "df5", "df5", "df5", "df5", "22df5", "", "23:df5", "CJ125: UR", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kp"
+ debugFieldF6List = bits, U08, [0:7], "D Term", "", "", "", "Idle df6", "Current Gap", "", "", "", "", "", "", "", "", "", "", "", "ETB df6", "", "", "df6", "df6", "22df6", "", "23:df6", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Ki"
+ debugFieldF7List = bits, U08, [0:7], "Max-Value", "", "", "", "Idle df7", "", "", "", "", "", "", "", "", "", "", "", "", "ETB df7", "", "", "df7", "df7", "22df7", "", "23:df7", "cj: f7", "", "", "", "", "", "", "", "", "", "", "", "S unused" "", "Kd"
- debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
- debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
- debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
- debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
- debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
+ debugFieldI1List = bits, U08, [0:7], "P-Gain", "", "", "", "Idle di1", "Channel 1 Fall Counter", "", "", "VVT Sync Counter", "", "Multispark Count", "", "", "", "", "", "", "ETB P-Gain", "", "", "di1", "di1", "22di1", "", "23:di1", "CJ125: state", "read count","", "", "", "", "SPI Counter", "", "", "", "", "", "Start Count" "", ""
+ debugFieldI2List = bits, U08, [0:7], "Offset", "", "", "", "Idle di2", "Channel 2 Fall Counter", "", "", "", "", "", "", "", "", "", "", "", "ETB di2", "", "", "di2", "di2", "22di2", "", "23:di2", "", "", "", "", "", "", "Latest Transmit","", "", "", "", "", "S unused" "", ""
+ debugFieldI3List = bits, U08, [0:7], "", "", "", "", "Idle di3", "Cycle Index", "", "", "", "", "", "", "", "", "", "", "", "ETB di3", "", "", "di3", "di3", "22di3", "", "23:di3", "", "", "", "", "", "", "Latest Received","", "", "", "", "", "S unused" "", ""
+ debugFieldI4List = bits, U08, [0:7], "", "", "", "", "Idle di4", "Cycle Cnt 1", "", "", "", "", "", "", "", "", "", "", "", "ETB di4", "", "", "di4", "di4", "22di4", "", "23:di4", "", "", "", "", "", "", "Init Count", "", "", "", "", "", "S unused" "", ""
+ debugFieldI5List = bits, U08, [0:7], "", "", "", "", "Idle di5", "Cycle Cnt 2", "", "", "", "", "", "", "", "", "", "di5", "di5", "ETB di5", "di5", "di5", "di5", "di5", "22di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "di5", "S di5" "", ""
[ConstantsExtensions]
; defaultValue is used to provide TunerStudio with a value to use in the case of
@@ -2509,7 +2509,7 @@ menuDialog = main
subMenu = std_separator
# Digital outputs
- subMenu = mainRelay, "Main relay"
+ subMenu = mainRelayDialog, "Main relay"
subMenu = starterRelay, "Starter Disable relay"
subMenu = fuelPump, "Fuel pump & rail"
subMenu = fanSetting, "Fan"
@@ -3564,7 +3564,7 @@ cmd_set_engine_type_default = "w\x00\x31\x00\x00"
; Controller->Actuator Outputs
- dialog = mainRelay, "Main relay output"
+ dialog = mainRelayDialog, "Main relay output"
field = "Pin", mainRelayPin
field = "Pin mode", mainRelayPinMode
diff --git a/firmware/util/common.h b/firmware/util/common.h
new file mode 100644
index 0000000000..0ae45ad87d
--- /dev/null
+++ b/firmware/util/common.h
@@ -0,0 +1,35 @@
+/**
+ * @file common.h
+ * @brief Common macros definitions
+ *
+ * @date May, 2019
+ * @author Andrey Gusakov, (c) 2019
+ *
+ * This file is part of rusEfi - see http://rusefi.com
+ *
+ * rusEfi is free software; you can redistribute it and/or modify it under the terms of
+ * the GNU General Public License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * rusEfi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.
+ * If not, see .
+ */
+
+#ifndef COMMON_H_INCLUDED
+#define COMMON_H_INCLUDED
+
+#define MIN(a,b) (((a)<(b))?(a):(b))
+#define MAX(a,b) (((a)>(b))?(a):(b))
+
+#define CLAMP(x, low, high) ({\
+ __typeof__(x) __x = (x); \
+ __typeof__(low) __low = (low);\
+ __typeof__(high) __high = (high);\
+ (__x > __high) ? __high : ((__x < __low) ? __low : __x);\
+})
+
+#endif /* COMMON_H_INCLUDED */
diff --git a/firmware/util/datalogging.cpp b/firmware/util/datalogging.cpp
index 8e942bfff8..e7fdf7333c 100644
--- a/firmware/util/datalogging.cpp
+++ b/firmware/util/datalogging.cpp
@@ -153,12 +153,6 @@ int isInitialized(Logging *logging) {
return logging->isInitialized;
}
-void debugInt(Logging *logging, const char *caption, int value) {
- append(logging, caption);
- append(logging, DELIMETER);
- appendPrintf(logging, "%d%s", value, DELIMETER);
-}
-
void appendFloat(Logging *logging, float value, int precision) {
/**
* todo: #1 this implementation is less than perfect
@@ -190,14 +184,6 @@ void appendFloat(Logging *logging, float value, int precision) {
}
}
-void debugFloat(Logging *logging, const char *caption, float value, int precision) {
- append(logging, caption);
- append(logging, DELIMETER);
-
- appendFloat(logging, value, precision);
- append(logging, DELIMETER);
-}
-
static char header[16];
/**
diff --git a/firmware/util/datalogging.h b/firmware/util/datalogging.h
index ac200fe449..8765c93c19 100644
--- a/firmware/util/datalogging.h
+++ b/firmware/util/datalogging.h
@@ -51,9 +51,6 @@ int isInitialized(Logging *logging);
void initLoggingExt(Logging *logging, const char *name, char *buffer, int bufferSize);
-void debugInt(Logging *logging, const char *caption, int value);
-
-void debugFloat(Logging *logging, const char *text, float value, int precision);
void appendFloat(Logging *logging, float value, int precision);
void resetLogging(Logging *logging);
diff --git a/firmware/util/unaligned.c b/firmware/util/unaligned.c
new file mode 100644
index 0000000000..977abdcaf1
--- /dev/null
+++ b/firmware/util/unaligned.c
@@ -0,0 +1,113 @@
+/**
+ * @file unaligned.c
+ * @brief unaligned data access helpers
+ *
+ * @date May, 2019
+ * @author Andrey Gusakov, (c) 2019
+ *
+ * This file is part of rusEfi - see http://rusefi.com
+ *
+ * rusEfi is free software; you can redistribute it and/or modify it under the terms of
+ * the GNU General Public License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * rusEfi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.
+ * If not, see .
+ */
+
+#include "unaligned.h"
+#include "common.h"
+
+/* generate mask */
+static inline uint32_t bit_mask(unsigned int from, unsigned int to)
+{
+ uint32_t mask = 0;
+ uint32_t shift;
+
+ if (to < from)
+ return 0;
+
+ shift = to - from + 1U;
+
+ if ((shift > 0U) && (shift <= 32U) && (from <= 31U)) {
+ if (shift < 32U) {
+ mask = (uint32_t)((1UL << shift) - 1UL);
+ mask = mask << from;
+ } else {
+ mask = 0xFFFFFFFFUL;
+ }
+ }
+
+ return mask;
+}
+
+/* get upto 32 bits from char array p, from bit position pos, lenght len */
+uint32_t bits_get(uint8_t *p, unsigned int pos, int len)
+{
+ int i;
+ unsigned int offset = 0;
+ uint32_t res = 0;
+
+ i = (int)pos / 8;
+
+ while (len > 0) {
+ uint32_t tmp;
+ uint32_t mask;
+ int nbits = 8 - ((int)pos % 8);
+
+ /* get */
+ tmp = (uint32_t)p[i];
+ /* shift */
+ tmp = tmp >> (8U - (uint32_t)nbits);
+ /* mask */
+ mask = bit_mask(0, MIN((uint32_t)len - 1U, (uint32_t)nbits - 1U));
+ tmp = tmp & mask;
+ res = res | ((tmp) << offset);
+
+ /* adjust for the next iteration */
+ offset += (unsigned int)nbits;
+ len -= nbits;
+ pos += (unsigned int)nbits;
+ i++;
+ }
+ return res;
+}
+
+/* set upto 32 bits in char array p, from bit position pos, lenght len */
+void bits_set(uint8_t *p, unsigned int pos, int len, uint32_t val)
+{
+ int i;
+ unsigned int offset = 0;
+
+ i = (int)pos / 8;
+
+ while (len > 0) {
+ uint32_t tmp;
+ uint32_t mask;
+
+ /* get number of bits to shift to get to the target range */
+ int shift = (int)pos % 8;
+ /* get next byte */
+ tmp = (val >> offset) & 0xffU;
+ /* shift temporary value to the start of the target range */
+ tmp = tmp << (uint8_t)shift;
+ /* calculate mask */
+ mask = bit_mask((uint32_t)shift, MIN(8U - 1U, (unsigned int)shift + (unsigned int)len - 1U));
+ /* clean all bits outside of the target range */
+ tmp &= mask;
+ /* pre-clean all target bits */
+ p[i] = p[i] & ~((uint8_t)mask);
+ /* finally set active bits */
+ p[i] |= (uint8_t)tmp;
+
+ /* adjust for the next iteration */
+ offset += ((uint32_t)8U - (uint32_t)shift);
+ len -= (8 - shift);
+ pos += ((unsigned int)8U - (unsigned int)shift);
+ i++;
+ }
+}
diff --git a/firmware/util/unaligned.h b/firmware/util/unaligned.h
new file mode 100644
index 0000000000..2b1a11217f
--- /dev/null
+++ b/firmware/util/unaligned.h
@@ -0,0 +1,105 @@
+/**
+ * @file unaligned.h
+ * @brief unaligned data access helpers header file
+ *
+ * @date May, 2019
+ * @author Andrey Gusakov, (c) 2019
+ *
+ * This file is part of rusEfi - see http://rusefi.com
+ *
+ * rusEfi is free software; you can redistribute it and/or modify it under the terms of
+ * the GNU General Public License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * rusEfi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
+ * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with this program.
+ * If not, see .
+ */
+
+#ifndef UNALIGNED_H_INCLUDED
+#define UNALIGNED_H_INCLUDED
+
+#include
+
+/* bit operations */
+uint32_t bits_get(uint8_t *p, unsigned int pos, int len);
+void bits_set(uint8_t *p, unsigned int pos, int len, uint32_t val);
+#define bit_set(p, pos) do {(p)[(pos) / 8] |= (1 << ((pos) % 8));} while(0)
+#define bit_clr(p, pos) do {(p)[(pos) / 8] &= ~(1 << ((pos) % 8));} while(0)
+#define bit_get(p, pos) (!!((p)[(pos) / 8] & (1 << ((pos) % 8))))
+
+/* unaligned access */
+static inline void put_be8(uint8_t *p, uint8_t v)
+{
+ p[0] = v;
+}
+
+static inline void put_le8(uint8_t *p, uint8_t v)
+{
+ p[0] = v;
+}
+
+static inline void put_be16(uint8_t *p, uint16_t v)
+{
+ p[0] = (uint8_t)(v >> 8);
+ p[1] = (uint8_t)(v >> 0);
+}
+
+static inline void put_le16(uint8_t *p, uint16_t v)
+{
+ p[0] = (uint8_t)(v >> 0);
+ p[1] = (uint8_t)(v >> 8);
+}
+
+static inline void put_be32(uint8_t *p, uint32_t v)
+{
+ p[0] = (uint8_t)(v >> 24);
+ p[1] = (uint8_t)(v >> 16);
+ p[2] = (uint8_t)(v >> 8);
+ p[3] = (uint8_t)(v >> 0);
+}
+
+static inline void put_le32(uint8_t *p, uint32_t v)
+{
+ p[0] = (uint8_t)(v >> 0);
+ p[1] = (uint8_t)(v >> 8);
+ p[2] = (uint8_t)(v >> 16);
+ p[3] = (uint8_t)(v >> 24);
+}
+
+static inline uint8_t get_be8(uint8_t *p)
+{
+ return p[0];
+}
+
+static inline uint8_t get_le8(uint8_t *p)
+{
+ return p[0];
+}
+
+static inline uint16_t get_be16(uint8_t *p)
+{
+ return ((uint16_t)p[0] << 8) | p[1];
+}
+
+static inline uint16_t get_le16(uint8_t *p)
+{
+ return ((uint16_t)p[1] << 8) | p[0];
+}
+
+static inline uint32_t get_be32(uint8_t *p)
+{
+ return ((uint32_t)p[0] << 24) | ((uint32_t)p[1] << 16) |
+ ((uint32_t)p[2] << 8) | p[3];
+}
+
+static inline uint32_t get_le32(uint8_t *p)
+{
+ return ((uint32_t)p[3] << 24) | ((uint32_t)p[2] << 16) |
+ ((uint32_t)p[1] << 8) | p[0];
+}
+
+#endif /* UNALIGNED_H_INCLUDED */
diff --git a/firmware/util/util.mk b/firmware/util/util.mk
index d70103429d..9e75e589d7 100644
--- a/firmware/util/util.mk
+++ b/firmware/util/util.mk
@@ -4,7 +4,8 @@ UTILSRC = \
$(UTIL_DIR)/containers/data_buffer.c \
$(UTIL_DIR)/math/crc.c \
$(UTIL_DIR)/os_util.c \
- $(UTIL_DIR)/histogram.c
+ $(UTIL_DIR)/histogram.c \
+ $(UTIL_DIR)/unaligned.c
UTILSRC_CPP = \
$(UTIL_DIR)/containers/cyclic_buffer.cpp \
diff --git a/java_console/.idea/runConfigurations/Launcher_headless.xml b/java_console/.idea/runConfigurations/Launcher_headless.xml
new file mode 100644
index 0000000000..9e5dcefdae
--- /dev/null
+++ b/java_console/.idea/runConfigurations/Launcher_headless.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/java_console/autotest/src/com/rusefi/AutoTest.java b/java_console/autotest/src/com/rusefi/AutoTest.java
index 8c8d90837c..ed4443fda6 100644
--- a/java_console/autotest/src/com/rusefi/AutoTest.java
+++ b/java_console/autotest/src/com/rusefi/AutoTest.java
@@ -43,7 +43,7 @@ public class AutoTest {
}
});
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
// let's make sure 'burn' command works since sometimes it does not
bp.burn(Logger.CONSOLE);
diff --git a/java_console/autotest/src/com/rusefi/IoUtil.java b/java_console/autotest/src/com/rusefi/IoUtil.java
index 63d74cf380..5e7f2297b6 100644
--- a/java_console/autotest/src/com/rusefi/IoUtil.java
+++ b/java_console/autotest/src/com/rusefi/IoUtil.java
@@ -43,8 +43,6 @@ public class IoUtil {
static void sendCommand(String command, int retryTimeoutMs, int totalTimeoutSeconds) {
final CountDownLatch responseLatch = new CountDownLatch(1);
long time = System.currentTimeMillis();
- if (LinkManager.hasError())
- throw new IllegalStateException("IO error");
FileLog.MAIN.logLine("Sending command [" + command + "]");
final long begin = System.currentTimeMillis();
CommandQueue.getInstance().write(command, retryTimeoutMs, new InvocationConfirmationListener() {
@@ -57,8 +55,6 @@ public class IoUtil {
wait(responseLatch, totalTimeoutSeconds);
if (responseLatch.getCount() > 0)
FileLog.MAIN.logLine("No confirmation in " + retryTimeoutMs);
- if (LinkManager.hasError())
- throw new IllegalStateException("IO error");
FileLog.MAIN.logLine("Command [" + command + "] executed in " + (System.currentTimeMillis() - time));
}
diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java
index 4eb7a6e1bb..5d2de47a46 100644
--- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java
+++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java
@@ -27,6 +27,11 @@ import java.util.concurrent.TimeoutException;
import static com.rusefi.binaryprotocol.IoHelper.*;
/**
+ * This object represents logical state of physical connection.
+ *
+ * Instance is connected until we experience issues. Once we decide to close the connection there is no restart -
+ * new instance of this class would need to be created once we establish a new physical connection.
+ *
* (c) Andrey Belomutskiy
* 3/6/2015
* @see BinaryProtocolHolder
@@ -83,7 +88,7 @@ public class BinaryProtocol implements BinaryProtocolCommands {
CommunicationLoggingHolder.communicationLoggingListener.onPortHolderMessage(BinaryProtocol.class, "Sending [" + command + "]");
}
- Future f = LinkManager.COMMUNICATION_EXECUTOR.submit(new Runnable() {
+ Future f = LinkManager.submit(new Runnable() {
@Override
public void run() {
sendTextCommand(command);
@@ -134,7 +139,7 @@ public class BinaryProtocol implements BinaryProtocolCommands {
while (!isClosed) {
// FileLog.rlog("queue: " + LinkManager.COMMUNICATION_QUEUE.toString());
if (LinkManager.COMMUNICATION_QUEUE.isEmpty()) {
- LinkManager.COMMUNICATION_EXECUTOR.submit(new Runnable() {
+ LinkManager.submit(new Runnable() {
@Override
public void run() {
if (requestOutputChannels())
diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java
index f8cdbbcaf8..3c709c82bb 100644
--- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java
+++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java
@@ -2,28 +2,28 @@ package com.rusefi.binaryprotocol;
import com.opensr5.Logger;
import com.rusefi.io.IoStream;
+import com.rusefi.io.LinkManager;
/**
+ * At any given moment of time JVM manages one communication stream
+ *
+ * TODO: remove this dead class?
+ *
* (c) Andrey Belomutskiy
* 6/21/2017.
*/
public enum BinaryProtocolHolder {
INSTANCE;
- // todo: fix this? less horrible but still weird!
- private BinaryProtocol instance;
-
public static BinaryProtocolHolder getInstance() {
return INSTANCE;
}
- public BinaryProtocol get() {
- return instance;
+ public static BinaryProtocol create(final Logger logger, IoStream stream) {
+ return new BinaryProtocol(logger, stream);
}
- public static BinaryProtocol create(final Logger logger, IoStream stream) {
- BinaryProtocol result = new BinaryProtocol(logger, stream);
- getInstance().instance = result;
- return result;
+ public static BinaryProtocol getCurrentStreamState() {
+ return LinkManager.connector.getBinaryProtocol();
}
}
diff --git a/java_console/io/src/com/rusefi/io/LinkConnector.java b/java_console/io/src/com/rusefi/io/LinkConnector.java
index b151bdd7c9..82e068901c 100644
--- a/java_console/io/src/com/rusefi/io/LinkConnector.java
+++ b/java_console/io/src/com/rusefi/io/LinkConnector.java
@@ -1,5 +1,7 @@
package com.rusefi.io;
+import com.rusefi.binaryprotocol.BinaryProtocol;
+
/**
* @author Andrey Belomutskiy
* 3/3/14
@@ -11,7 +13,7 @@ public interface LinkConnector extends LinkDecoder {
}
@Override
- public void send(String command, boolean fireEvent) throws InterruptedException {
+ public void send(String command, boolean fireEvent) {
}
@Override
@@ -19,8 +21,8 @@ public interface LinkConnector extends LinkDecoder {
}
@Override
- public boolean hasError() {
- return false;
+ public BinaryProtocol getBinaryProtocol() {
+ return null;
}
@Override
@@ -35,5 +37,5 @@ public interface LinkConnector extends LinkDecoder {
void restart();
- boolean hasError();
+ BinaryProtocol getBinaryProtocol();
}
diff --git a/java_console/io/src/com/rusefi/io/LinkManager.java b/java_console/io/src/com/rusefi/io/LinkManager.java
index 873d53b08c..80bc4819d6 100644
--- a/java_console/io/src/com/rusefi/io/LinkManager.java
+++ b/java_console/io/src/com/rusefi/io/LinkManager.java
@@ -40,6 +40,14 @@ public class LinkManager {
return connected;
}
+ public static void execute(Runnable runnable) {
+ COMMUNICATION_EXECUTOR.execute(runnable);
+ }
+
+ public static Future submit(Runnable runnable) {
+ return COMMUNICATION_EXECUTOR.submit(runnable);
+ }
+
public enum LogLevel {
INFO,
DEBUG,
@@ -87,12 +95,23 @@ public class LinkManager {
private static Thread COMMUNICATION_THREAD;
static {
- COMMUNICATION_EXECUTOR.submit(new Runnable() {
+/*
+ Future future = submit(new Runnable() {
@Override
public void run() {
+ // WAT? this is hanging?!
COMMUNICATION_THREAD = Thread.currentThread();
+ System.out.println("Done");
}
});
+ try {
+ // let's wait for the above trivial task to finish
+ future.get();
+ System.out.println("Done2");
+ } catch (InterruptedException | ExecutionException e) {
+ throw new IllegalStateException(e);
+ }
+ */
}
public static void assertCommunicationThread() {
@@ -107,6 +126,7 @@ public class LinkManager {
ConnectionWatchdog.onDataArrived();
}
});
+
public static LinkConnector connector;
/**
@@ -162,10 +182,6 @@ public class LinkManager {
return connector.unpack(packet);
}
- public static boolean hasError() {
- return connector.hasError();
- }
-
public static String unpackConfirmation(String message) {
if (message.startsWith(CommandQueue.CONFIRMATION_PREFIX))
return message.substring(CommandQueue.CONFIRMATION_PREFIX.length());
diff --git a/java_console/io/src/com/rusefi/io/serial/BaudRateHolder.java b/java_console/io/src/com/rusefi/io/serial/BaudRateHolder.java
new file mode 100644
index 0000000000..9c89385ca5
--- /dev/null
+++ b/java_console/io/src/com/rusefi/io/serial/BaudRateHolder.java
@@ -0,0 +1,11 @@
+package com.rusefi.io.serial;
+
+public enum BaudRateHolder {
+ INSTANCE;
+
+ /**
+ * Nasty code: this field is not final, we have UI which overrides this default!
+ */
+ public int baudRate = 115200;
+
+}
diff --git a/java_console/io/src/com/rusefi/io/serial/PortHolder.java b/java_console/io/src/com/rusefi/io/serial/PortHolder.java
index 6e3819aec3..fc8525eaf0 100644
--- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java
+++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java
@@ -7,6 +7,7 @@ import com.rusefi.io.CommunicationLoggingHolder;
import com.rusefi.io.ConnectionStateListener;
import com.opensr5.io.DataListener;
import com.rusefi.io.IoStream;
+import com.rusefi.io.LinkManager;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
@@ -19,26 +20,32 @@ import java.awt.*;
* (c) Andrey Belomutskiy
*/
public class PortHolder {
- /**
- * Nasty code: this field is not final, we have UI which overrides this default!
- */
- public static int BAUD_RATE = 115200;
- private static PortHolder instance = new PortHolder();
+ private static final DataListener dataListener = freshData -> LinkManager.engineState.processNewData(new String(freshData), LinkManager.ENCODER);
+
+ public ConnectionStateListener listener;
private final Object portLock = new Object();
+ @Nullable
private BinaryProtocol bp;
- private PortHolder() {
+ protected PortHolder() {
}
- @Nullable
- private IoStream serialPort;
+ public String port;
- boolean openPort(String port, DataListener dataListener, ConnectionStateListener listener) {
- CommunicationLoggingHolder.communicationLoggingListener.onPortHolderMessage(SerialManager.class, "Opening port: " + port);
+ boolean connectAndReadConfiguration() {
if (port == null)
return false;
- boolean result = open(port, dataListener);
+
+ CommunicationLoggingHolder.communicationLoggingListener.onPortHolderMessage(getClass(), "Opening port: " + port);
+
+ IoStream stream = SerialIoStreamJSerialComm.openPort(port);
+ synchronized (portLock) {
+ bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream);
+ portLock.notifyAll();
+ }
+
+ boolean result = bp.connectAndReadConfiguration(dataListener);
if (listener != null) {
if (result) {
listener.onConnectionEstablished();
@@ -49,35 +56,12 @@ public class PortHolder {
return result;
}
- /**
- * @return true if everything fine
- */
- private boolean open(String port, final DataListener listener) {
- EstablishConnection establishConnection = new EstablishConnection(port).invoke();
- if (!establishConnection.isConnected())
- return false;
- synchronized (portLock) {
- PortHolder.this.serialPort = establishConnection.stream;
- portLock.notifyAll();
- }
- IoStream stream = establishConnection.getStream();
-
- bp = BinaryProtocolHolder.create(FileLog.LOGGER, stream);
-
- return bp.connectAndReadConfiguration(listener);
- }
-
- private static boolean isWindows10() {
- // todo: this code is fragile! What about Windows 11, 12 etc!? this is a problem for the later day :(
- return System.getProperty(FileLog.OS_VERSION).startsWith("10");
- }
-
public void close() {
synchronized (portLock) {
- if (serialPort != null) {
+ if (bp != null) {
try {
- serialPort.close();
- serialPort = null;
+ bp.close();
+ bp = null;
} finally {
portLock.notifyAll();
}
@@ -85,6 +69,11 @@ public class PortHolder {
}
}
+ @Nullable
+ public BinaryProtocol getBp() {
+ return bp;
+ }
+
/**
* this method blocks till a connection is available
*/
@@ -99,41 +88,4 @@ public class PortHolder {
bp.doSend(command, fireEvent);
}
-
- public static PortHolder getInstance() {
- return instance;
- }
-
- public static class EstablishConnection {
- private boolean isConnected;
- private String port;
- private IoStream stream;
-
- public EstablishConnection(String port) {
- this.port = port;
- }
-
- // todo: remove dead code - always true?
- public boolean isConnected() {
- return isConnected;
- }
-
- public IoStream getStream() {
- return stream;
- }
-
- public EstablishConnection invoke() {
- stream = SerialIoStreamJSerialComm.open(port, BAUD_RATE, FileLog.LOGGER);
-/*
-todo: remove dead code
- if (stream == null) {
- isConnected = false;
- return this;
- }
- */
-
- isConnected = true;
- return this;
- }
- }
}
diff --git a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java
index fea32ff62d..50eb01dc15 100644
--- a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java
+++ b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java
@@ -1,6 +1,7 @@
package com.rusefi.io.serial;
import com.rusefi.FileLog;
+import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.core.MessagesCentral;
import com.rusefi.io.ConnectionStateListener;
import com.rusefi.io.LinkConnector;
@@ -11,43 +12,44 @@ import com.rusefi.io.LinkManager;
* 3/3/14
*/
public class SerialConnector implements LinkConnector {
+
+ private final PortHolder portHolder = new PortHolder();
+
public SerialConnector(String serialPort) {
- SerialManager.port = serialPort;
+ portHolder.port = serialPort;
}
@Override
public void connect(ConnectionStateListener listener) {
FileLog.MAIN.logLine("SerialConnector: connecting");
- SerialManager.listener = listener;
+ portHolder.listener = listener;
FileLog.MAIN.logLine("scheduleOpening");
- LinkManager.COMMUNICATION_EXECUTOR.execute(new Runnable() {
+ LinkManager.execute(new Runnable() {
@Override
public void run() {
FileLog.MAIN.logLine("scheduleOpening>openPort");
- PortHolder.getInstance().openPort(SerialManager.port, SerialManager.dataListener, SerialManager.listener);
+ portHolder.connectAndReadConfiguration();
}
});
}
+ @Override
+ public BinaryProtocol getBinaryProtocol() {
+ return portHolder.getBp();
+ }
+
@Override
public void restart() {
- LinkManager.COMMUNICATION_EXECUTOR.execute(new Runnable() {
+ LinkManager.execute(new Runnable() {
@Override
public void run() {
- MessagesCentral.getInstance().postMessage(SerialManager.class, "Restarting serial IO");
-// if (closed)
-// return;
- PortHolder.getInstance().close();
- PortHolder.getInstance().openPort(SerialManager.port, SerialManager.dataListener, SerialManager.listener);
+ MessagesCentral.getInstance().postMessage(getClass(), "Restarting serial IO");
+ portHolder.close();
+ portHolder.connectAndReadConfiguration();
}
});
}
- @Override
- public boolean hasError() {
- return false;
- }
-
@Override
public String unpack(String packet) {
return packet;
@@ -55,6 +57,6 @@ public class SerialConnector implements LinkConnector {
@Override
public void send(String text, boolean fireEvent) throws InterruptedException {
- PortHolder.getInstance().packAndSend(text, fireEvent);
+ portHolder.packAndSend(text, fireEvent);
}
}
diff --git a/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSerialComm.java b/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSerialComm.java
index f322d9e9a1..da7a5a47d5 100644
--- a/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSerialComm.java
+++ b/java_console/io/src/com/rusefi/io/serial/SerialIoStreamJSerialComm.java
@@ -5,6 +5,7 @@ import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent;
import com.opensr5.Logger;
import com.opensr5.io.DataListener;
+import com.rusefi.FileLog;
import com.rusefi.io.IoStream;
import org.jetbrains.annotations.NotNull;
@@ -67,14 +68,16 @@ public class SerialIoStreamJSerialComm implements IoStream {
sp.writeBytes(bytes, bytes.length);
}
+ public static IoStream openPort(String port) {
+ return openPort(port, BaudRateHolder.INSTANCE.baudRate, FileLog.LOGGER);
+ }
+
@NotNull
- public static IoStream open(String port, int baudRate, Logger logger) {
+ private static IoStream openPort(String port, int baudRate, Logger logger) {
logger.info("[SerialIoStreamJSerialComm] " + port);
SerialPort sp = SerialPort.getCommPort(port);
sp.setBaudRate(baudRate);
sp.openPort();
-
-
return new SerialIoStreamJSerialComm(sp);
}
}
diff --git a/java_console/io/src/com/rusefi/io/serial/SerialManager.java b/java_console/io/src/com/rusefi/io/serial/SerialManager.java
deleted file mode 100644
index 7e5b99aa9b..0000000000
--- a/java_console/io/src/com/rusefi/io/serial/SerialManager.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.rusefi.io.serial;
-
-import com.rusefi.io.ConnectionStateListener;
-import com.opensr5.io.DataListener;
-import com.rusefi.io.LinkManager;
-
-/**
- * 7/9/13
- * (c) Andrey Belomutskiy
- */
-class SerialManager {
- public static String port;
-
-// private static boolean closed;
-
- static DataListener dataListener = new DataListener() {
- public void onDataArrived(byte freshData[]) {
- // jTextAreaIn.append(string);
- LinkManager.engineState.processNewData(new String(freshData), LinkManager.ENCODER);
- }
- };
- public static ConnectionStateListener listener;
-
- /*
- static String[] findSerialPorts() {
- List result = new ArrayList();
-
- Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
- while (portEnum.hasMoreElements()) {
- CommPortIdentifier portIdentifier = portEnum.nextElement();
- System.out.println(portIdentifier.getName() + " - " + getPortTypeName(portIdentifier.getPortType()));
- if (portIdentifier.getPortType() == CommPortIdentifier.PORT_SERIAL)
- result.add(portIdentifier.getName());
- }
- return result.toArray(new String[result.size()]);
- }
-
- static String getPortTypeName(int portType) {
- switch (portType) {
- case CommPortIdentifier.PORT_I2C:
- return "I2C";
- case CommPortIdentifier.PORT_PARALLEL:
- return "Parallel";
- case CommPortIdentifier.PORT_RAW:
- return "Raw";
- case CommPortIdentifier.PORT_RS485:
- return "RS485";
- case CommPortIdentifier.PORT_SERIAL:
- return "Serial";
- default:
- return "unknown type";
- }
- }
- */
- // public static void close() {
-// closed = true;
-// SerialIO.getInstance().stop();
-// }
-}
diff --git a/java_console/io/src/com/rusefi/io/tcp/BinaryProtocolServer.java b/java_console/io/src/com/rusefi/io/tcp/BinaryProtocolServer.java
index 708bae9713..1ebd660dfc 100644
--- a/java_console/io/src/com/rusefi/io/tcp/BinaryProtocolServer.java
+++ b/java_console/io/src/com/rusefi/io/tcp/BinaryProtocolServer.java
@@ -111,7 +111,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
short offset = dis.readShort();
short count = dis.readShort(); // no swap here? interesting!
System.out.println("CRC check " + page + "/" + offset + "/" + count);
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
int result = IoHelper.getCrc32(bp.getController().getContent(), offset, count);
ByteArrayOutputStream response = new ByteArrayOutputStream();
response.write(TS_OK.charAt(0));
@@ -127,7 +127,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
FileLog.MAIN.logLine("Error: negative read request " + offset + "/" + count);
} else {
System.out.println("read " + page + "/" + offset + "/" + count);
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
byte[] response = new byte[1 + count];
response[0] = (byte) TS_OK.charAt(0);
System.arraycopy(bp.getController().getContent(), offset, response, 1, count);
@@ -141,7 +141,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
byte[] response = new byte[1 + Fields.TS_OUTPUT_SIZE];
response[0] = (byte) TS_OK.charAt(0);
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
byte[] currentOutputs = bp.currentOutputs;
if (currentOutputs != null)
System.arraycopy(currentOutputs, 1, response, 1, Fields.TS_OUTPUT_SIZE);
diff --git a/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java b/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java
index 8756a27938..3735a690d1 100644
--- a/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java
+++ b/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java
@@ -37,6 +37,10 @@ public class TcpConnector implements LinkConnector {
}
}
+ public BinaryProtocol getBinaryProtocol() {
+ return bp;
+ }
+
public static boolean isTcpPort(String port) {
try {
getTcpPort(port);
@@ -118,7 +122,7 @@ public class TcpConnector implements LinkConnector {
};
// ioStream.setInputListener(listener1);
- bp = BinaryProtocolHolder.create(FileLog.LOGGER, new TcpIoStream(stream, os));
+ bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, new TcpIoStream(stream, os));
boolean result = bp.connectAndReadConfiguration(listener1);
if (result) {
@@ -130,18 +134,11 @@ public class TcpConnector implements LinkConnector {
@Override
public void restart() {
-// FileLog.rlog("Restarting on " + port);
- }
-
- @Override
- public boolean hasError() {
- return false;
}
@Override
public String unpack(String packet) {
return packet;
-// return EngineState.unpackString(packet);
}
@Override
@@ -152,15 +149,6 @@ public class TcpConnector implements LinkConnector {
}
bp.doSend(command, fireEvent);
-// String command = LinkManager.encodeCommand(text);
-// FileLog.MAIN.logLine("Writing " + command);
-// try {
-// ioStream.write((command + "\n").getBytes());
-// } catch (IOException e) {
-// withError = true;
-// System.err.println("err in send");
-// e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
-// }
}
public static Collection getAvailablePorts() {
diff --git a/java_console/io/src/com/rusefi/io/tcp/test/BinaryProtocolServerSandbox.java b/java_console/io/src/com/rusefi/io/tcp/test/BinaryProtocolServerSandbox.java
index ad4185cba9..a4756e8078 100644
--- a/java_console/io/src/com/rusefi/io/tcp/test/BinaryProtocolServerSandbox.java
+++ b/java_console/io/src/com/rusefi/io/tcp/test/BinaryProtocolServerSandbox.java
@@ -14,7 +14,7 @@ import java.io.ByteArrayOutputStream;
class BinaryProtocolServerSandbox {
public static void main(String[] args) {
TcpIoStream stream = new TcpIoStream(new ByteArrayInputStream(new byte[0]), new ByteArrayOutputStream());
- BinaryProtocol bp = BinaryProtocolHolder.create(FileLog.LOGGER, stream);
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream);
bp.setController(new ConfigurationImage(new byte[14008]));
bp.currentOutputs = new byte[1 + Fields.TS_OUTPUT_SIZE];
BinaryProtocolServer.start();
diff --git a/java_console/models/src/com/rusefi/config/generated/Fields.java b/java_console/models/src/com/rusefi/config/generated/Fields.java
index f34dca7af2..e02bd560f9 100644
--- a/java_console/models/src/com/rusefi/config/generated/Fields.java
+++ b/java_console/models/src/com/rusefi/config/generated/Fields.java
@@ -1,6 +1,6 @@
package com.rusefi.config.generated;
-// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Thu May 14 23:44:58 EDT 2020
+// this file was generated automatically by rusEfi tool ConfigDefinition.jar based on gen_config.bat integration\rusefi_config.txt Fri May 15 21:04:15 EDT 2020
// by class com.rusefi.output.FileJavaFieldsConsumer
import com.rusefi.config.*;
@@ -653,6 +653,7 @@ public class Fields {
public static final String GAUGE_NAME_AFR = "Air/Fuel Ratio";
public static final String GAUGE_NAME_AIR_FLOW = "MAF air flow";
public static final String GAUGE_NAME_AIR_MASS = "air mass";
+ public static final String GAUGE_NAME_BARO_PRESSURE = "Barometric pressure";
public static final String GAUGE_NAME_CPU_TEMP = "CPU Temperature";
public static final String GAUGE_NAME_DEBUG_F1 = "debug f1";
public static final String GAUGE_NAME_DEBUG_F2 = "debug f2: iTerm";
diff --git a/java_console/ui/src/com/rusefi/BenchTestPane.java b/java_console/ui/src/com/rusefi/BenchTestPane.java
index 325c0eba5b..373ecd2492 100644
--- a/java_console/ui/src/com/rusefi/BenchTestPane.java
+++ b/java_console/ui/src/com/rusefi/BenchTestPane.java
@@ -57,7 +57,7 @@ public class BenchTestPane {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- BinaryProtocol bp = BinaryProtocolHolder.INSTANCE.get();
+ BinaryProtocol bp = BinaryProtocolHolder.INSTANCE.getCurrentStreamState();
bp.executeCommand(new byte[]{'r'}, "begin trace", false);
try {
diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java
index d1e0203f43..fcf51c1757 100644
--- a/java_console/ui/src/com/rusefi/Launcher.java
+++ b/java_console/ui/src/com/rusefi/Launcher.java
@@ -8,8 +8,10 @@ import com.rusefi.core.MessagesCentral;
import com.rusefi.core.Sensor;
import com.rusefi.core.SensorCentral;
import com.rusefi.io.*;
-import com.rusefi.io.serial.PortHolder;
+import com.rusefi.io.serial.BaudRateHolder;
import com.rusefi.io.serial.SerialConnector;
+import com.rusefi.io.serial.SerialIoStreamJSerialComm;
+import com.rusefi.maintenance.ExecHelper;
import com.rusefi.maintenance.FirmwareFlasher;
import com.rusefi.maintenance.VersionChecker;
import com.rusefi.ui.*;
@@ -31,6 +33,7 @@ import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
+import java.util.TreeMap;
import java.util.concurrent.atomic.AtomicReference;
import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
@@ -46,7 +49,7 @@ import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
* @see EngineSnifferPanel
*/
public class Launcher {
- public static final int CONSOLE_VERSION = 20200515;
+ public static final int CONSOLE_VERSION = 20200516;
public static final String INI_FILE_PATH = System.getProperty("ini_file_path", "..");
public static final String INPUT_FILES_PATH = System.getProperty("input_files_path", "..");
public static final String TOOLS_PATH = System.getProperty("tools_path", ".");
@@ -54,15 +57,21 @@ public class Launcher {
protected static final String PORT_KEY = "port";
protected static final String SPEED_KEY = "speed";
- private static final String TOOL_NAME_COMPILE_FSIO_FILE = "compile_fsio_file";
- private static final String TOOL_NAME_REBOOT_ECU = "reboot_ecu";
- private static final String TOOL_NAME_FIRING_ORDER = "firing_order";
- private static final String TOOL_NAME_FUNCTIONAL_TEST = "functional_test";
- private static final String TOOL_NAME_PERF_ENUMS = "ptrace_enums";
- // todo: rename to something more FSIO-specific? would need to update documentation somewhere
- private static final String TOOL_NAME_COMPILE = "compile";
private static final int DEFAULT_TAB_INDEX = 0;
- private static final String TOOL_NAME_HEADLESS = "headless";
+
+ private static Map TOOLS = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
+
+ static {
+ TOOLS.put("help", args -> printTools());
+ TOOLS.put("headless", Launcher::runHeadless);
+ TOOLS.put("compile", Launcher::invokeCompileExpressionTool);
+ TOOLS.put("ptrace_enums", Launcher::runPerfTraceTool);
+ TOOLS.put("functional_test", Launcher::runFunctionalTest);
+ TOOLS.put("compile_fsio_file", Launcher::runCompileTool);
+ TOOLS.put("firing_order", Launcher::runFiringOrderTool);
+ TOOLS.put("reboot_ecu", args -> sendCommand(Fields.CMD_REBOOT));
+ TOOLS.put(Fields.CMD_REBOOT_DFU, args -> sendCommand(Fields.CMD_REBOOT_DFU));
+ }
public static String port;
public static EngineSnifferPanel engineSnifferPanel;
@@ -89,7 +98,7 @@ public class Launcher {
FileLog.MAIN.logLine("Hardware: " + FirmwareFlasher.getHardwareKind());
getConfig().getRoot().setProperty(PORT_KEY, port);
- getConfig().getRoot().setProperty(SPEED_KEY, PortHolder.BAUD_RATE);
+ getConfig().getRoot().setProperty(SPEED_KEY, BaudRateHolder.INSTANCE.baudRate);
LinkManager.start(port);
@@ -191,60 +200,26 @@ public class Launcher {
/**
* rusEfi console entry point
+ *
* @see StartupFrame if no parameters specified
*/
public static void main(final String[] args) throws Exception {
String toolName = args.length == 0 ? null : args[0];
- if (TOOL_NAME_HEADLESS.equalsIgnoreCase(toolName)) {
- runHeadless();
- return;
+ if (args.length > 0) {
+ ConsoleTool consoleTool = TOOLS.get(toolName);
+ if (consoleTool != null) {
+ consoleTool.runTool(args);
+ return;
+ }
}
- if (TOOL_NAME_FUNCTIONAL_TEST.equals(toolName)) {
- // passing port argument if it was specified
- String[] toolArgs = args.length == 1 ? new String[0] : new String[]{args[1]};
- RealHwTest.main(toolArgs);
- return;
- }
+ printTools();
- if (TOOL_NAME_COMPILE_FSIO_FILE.equalsIgnoreCase(toolName)) {
- int returnCode = invokeCompileFileTool(args);
- System.exit(returnCode);
- }
-
- if (TOOL_NAME_COMPILE.equals(toolName)) {
- invokeCompileExpressionTool(args);
- System.exit(0);
- }
-
- if (TOOL_NAME_FIRING_ORDER.equals(toolName)) {
- FiringOrderTSLogic.invoke(args[1]);
- System.exit(0);
- }
-
- if (TOOL_NAME_PERF_ENUMS.equals(toolName)) {
- PerfTraceTool.readPerfTrace(args[1], args[2], args[3], args[4]);
- System.exit(0);
- }
-
- System.out.println("Optional tools: " + Arrays.asList(TOOL_NAME_COMPILE_FSIO_FILE,
- TOOL_NAME_COMPILE,
- TOOL_NAME_REBOOT_ECU,
- TOOL_NAME_FIRING_ORDER));
System.out.println("Starting rusEfi UI console " + CONSOLE_VERSION);
FileLog.MAIN.start();
- if (TOOL_NAME_REBOOT_ECU.equalsIgnoreCase(toolName)) {
- sendCommand(Fields.CMD_REBOOT);
- return;
- }
- if (Fields.CMD_REBOOT_DFU.equalsIgnoreCase(toolName)) {
- sendCommand(Fields.CMD_REBOOT_DFU);
- return;
- }
-
getConfig().load();
FileLog.suspendLogging = getConfig().getRoot().getBoolProperty(GaugesPanel.DISABLE_LOGS);
@@ -257,7 +232,40 @@ public class Launcher {
});
}
- private static void runHeadless() {
+ private static void runPerfTraceTool(String[] args) throws IOException {
+ PerfTraceTool.readPerfTrace(args[1], args[2], args[3], args[4]);
+ }
+
+ private static void runFiringOrderTool(String[] args) throws IOException {
+ FiringOrderTSLogic.invoke(args[1]);
+ }
+
+ private static void runCompileTool(String[] args) throws IOException {
+ int returnCode = invokeCompileFileTool(args);
+ System.exit(returnCode);
+ }
+
+ private static void runFunctionalTest(String[] args) throws InterruptedException {
+ // passing port argument if it was specified
+ String[] toolArgs = args.length == 1 ? new String[0] : new String[]{args[1]};
+ RealHwTest.main(toolArgs);
+ }
+
+ private static void runHeadless(String[] args) {
+ String onConnectedCallback = args.length > 1 ? args[1] : null;
+ String onDisconnectedCallback = args.length > 2 ? args[2] : null;
+
+ ConnectionStatusLogic.INSTANCE.addListener(new ConnectionStatusLogic.Listener() {
+ @Override
+ public void onConnectionStatus(boolean isConnected) {
+ if (isConnected) {
+ invokeCallback(onConnectedCallback);
+ } else {
+ invokeCallback(onDisconnectedCallback);
+ }
+ }
+ });
+
String autoDetectedPort = PortDetector.autoDetectSerial();
if (autoDetectedPort == null) {
System.err.println("rusEFI not detected");
@@ -276,6 +284,21 @@ public class Launcher {
});
}
+ private static void invokeCallback(String callback) {
+ if (callback == null)
+ return;
+ ExecHelper.submitAction(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Runtime.getRuntime().exec(callback);
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ }, "callback");
+ }
+
private static int invokeCompileFileTool(String[] args) throws IOException {
/**
* re-packaging array which contains input and output file names
@@ -287,10 +310,7 @@ public class Launcher {
String autoDetectedPort = autoDetectPort();
if (autoDetectedPort == null)
return;
- PortHolder.EstablishConnection establishConnection = new PortHolder.EstablishConnection(autoDetectedPort).invoke();
- if (!establishConnection.isConnected())
- return;
- IoStream stream = establishConnection.getStream();
+ IoStream stream = SerialIoStreamJSerialComm.openPort(autoDetectedPort);
byte[] commandBytes = BinaryProtocol.getTextCommandBytes(command);
stream.sendPacket(commandBytes, FileLog.LOGGER);
}
@@ -341,7 +361,7 @@ public class Launcher {
boolean isPortDefined = args.length > 0;
boolean isBaudRateDefined = args.length > 1;
if (isBaudRateDefined)
- PortHolder.BAUD_RATE = Integer.parseInt(args[1]);
+ BaudRateHolder.INSTANCE.baudRate = Integer.parseInt(args[1]);
String port = null;
if (isPortDefined)
@@ -371,4 +391,14 @@ public class Launcher {
public static Frame getFrame() {
return staticFrame;
}
+
+ private static void printTools() {
+ for (String key : TOOLS.keySet()) {
+ System.out.println("Tool available: " + key);
+ }
+ }
+
+ interface ConsoleTool {
+ void runTool(String args[]) throws Exception;
+ }
}
diff --git a/java_console/ui/src/com/rusefi/SensorLogger.java b/java_console/ui/src/com/rusefi/SensorLogger.java
index bffb22310a..0c72edebda 100644
--- a/java_console/ui/src/com/rusefi/SensorLogger.java
+++ b/java_console/ui/src/com/rusefi/SensorLogger.java
@@ -149,7 +149,7 @@ public class SensorLogger {
logFile.write("Captured " + FileLog.getDate() + "\r\n");
int debugMode = -1;
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
if (bp != null) {
ConfigurationImage ci = bp.getController();
if (ci != null) {
diff --git a/java_console/ui/src/com/rusefi/StartupFrame.java b/java_console/ui/src/com/rusefi/StartupFrame.java
index f7cf5f5171..c7f00008af 100644
--- a/java_console/ui/src/com/rusefi/StartupFrame.java
+++ b/java_console/ui/src/com/rusefi/StartupFrame.java
@@ -2,6 +2,7 @@ package com.rusefi;
import com.rusefi.autodetect.PortDetector;
import com.rusefi.io.LinkManager;
+import com.rusefi.io.serial.BaudRateHolder;
import com.rusefi.io.serial.PortHolder;
import com.rusefi.maintenance.*;
import com.rusefi.ui.util.HorizontalLine;
@@ -112,7 +113,7 @@ public class StartupFrame {
connectButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- PortHolder.BAUD_RATE = Integer.parseInt((String) comboSpeeds.getSelectedItem());
+ BaudRateHolder.INSTANCE.baudRate = Integer.parseInt((String) comboSpeeds.getSelectedItem());
String selectedPort = comboPorts.getSelectedItem().toString();
if (SerialPortScanner.AUTO_SERIAL.equals(selectedPort)) {
String autoDetectedPort = PortDetector.autoDetectPort(StartupFrame.this.frame);
diff --git a/java_console/ui/src/com/rusefi/TableEditorPane.java b/java_console/ui/src/com/rusefi/TableEditorPane.java
index 9d13a31bff..cf0cec1553 100644
--- a/java_console/ui/src/com/rusefi/TableEditorPane.java
+++ b/java_console/ui/src/com/rusefi/TableEditorPane.java
@@ -32,7 +32,7 @@ public class TableEditorPane extends JPanel {
add(editor.getContent());
- BinaryProtocol instance = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol instance = BinaryProtocolHolder.getInstance().getCurrentStreamState();
if (instance == null)
throw new NullPointerException("instance");
ConfigurationImage image = instance.getController();
diff --git a/java_console/ui/src/com/rusefi/UploadChanges.java b/java_console/ui/src/com/rusefi/UploadChanges.java
index b320c48cd2..b767ef2f27 100644
--- a/java_console/ui/src/com/rusefi/UploadChanges.java
+++ b/java_console/ui/src/com/rusefi/UploadChanges.java
@@ -73,7 +73,7 @@ public class UploadChanges {
final ConfigurationImage ci2 = ConfigurationImageFile.readFromFile("rusefi_configuration.bin");
- final BinaryProtocol bp = BinaryProtocolHolder.create(logger, new SerialIoStreamJSSC(serialPort, logger));
+ final BinaryProtocol bp = BinaryProtocolHolder.getInstance().create(logger, new SerialIoStreamJSSC(serialPort, logger));
bp.setController(ci1);
scheduleUpload(ci2);
@@ -86,11 +86,11 @@ public class UploadChanges {
public static void scheduleUpload(final ConfigurationImage newVersion, final Runnable afterUpload) {
JFrame frame = wnd.getFrame();
frame.setVisible(true);
- LinkManager.COMMUNICATION_EXECUTOR.execute(new Runnable() {
+ LinkManager.execute(new Runnable() {
@Override
public void run() {
try {
- BinaryProtocolHolder.getInstance().get().uploadChanges(newVersion, logger);
+ BinaryProtocolHolder.getInstance().getCurrentStreamState().uploadChanges(newVersion, logger);
if (afterUpload != null)
afterUpload.run();
} catch (InterruptedException | EOFException | SerialPortException e) {
diff --git a/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java b/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java
index c675898b72..e8e0e6f5f4 100644
--- a/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java
+++ b/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java
@@ -6,7 +6,7 @@ import com.rusefi.binaryprotocol.BinaryProtocolCommands;
import com.rusefi.binaryprotocol.IncomingDataBuffer;
import com.rusefi.config.generated.Fields;
import com.rusefi.io.IoStream;
-import com.rusefi.io.serial.PortHolder;
+import com.rusefi.io.serial.SerialIoStreamJSerialComm;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
@@ -27,10 +27,7 @@ class SerialAutoChecker implements Runnable {
@Override
public void run() {
- PortHolder.EstablishConnection establishConnection = new PortHolder.EstablishConnection(serialPort).invoke();
- if (!establishConnection.isConnected())
- return;
- IoStream stream = establishConnection.getStream();
+ IoStream stream = SerialIoStreamJSerialComm.openPort(serialPort);
Logger logger = FileLog.LOGGER;
IncomingDataBuffer incomingData = new IncomingDataBuffer(logger);
stream.setInputListener(incomingData::addData);
diff --git a/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java b/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java
index 7434ea4ce2..d167b75cef 100644
--- a/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java
+++ b/java_console/ui/src/com/rusefi/binaryprotocol/BinaryProtocolCmdSandbox.java
@@ -32,7 +32,7 @@ public class BinaryProtocolCmdSandbox {
if (!opened) {
logger.error("failed to open " + port);
}
- BinaryProtocol bp = BinaryProtocolHolder.create(logger, new SerialIoStreamJSSC(serialPort, logger));
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().create(logger, new SerialIoStreamJSSC(serialPort, logger));
SerialIoStreamJSSC.setupPort(serialPort, 38400);
logger.info("Binary looks good!");
diff --git a/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java b/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java
index 686494d0b9..bdba87db5b 100644
--- a/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java
+++ b/java_console/ui/src/com/rusefi/maintenance/DfuFlasher.java
@@ -7,7 +7,7 @@ import com.rusefi.autodetect.PortDetector;
import com.rusefi.binaryprotocol.BinaryProtocol;
import com.rusefi.config.generated.Fields;
import com.rusefi.io.IoStream;
-import com.rusefi.io.serial.PortHolder;
+import com.rusefi.io.serial.BaudRateHolder;
import com.rusefi.io.serial.SerialIoStreamJSerialComm;
import com.rusefi.ui.StatusWindow;
import com.rusefi.ui.util.URLLabel;
@@ -50,7 +50,7 @@ public class DfuFlasher {
JOptionPane.showMessageDialog(Launcher.getFrame(), "rusEfi serial port not detected");
return;
}
- IoStream stream = SerialIoStreamJSerialComm.open(port, PortHolder.BAUD_RATE, FileLog.LOGGER);
+ IoStream stream = SerialIoStreamJSerialComm.openPort(port);
byte[] command = BinaryProtocol.getTextCommandBytes(Fields.CMD_REBOOT_DFU);
try {
stream.sendPacket(command, FileLog.LOGGER);
diff --git a/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java b/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java
index 9785930ee3..7abe861df1 100644
--- a/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java
+++ b/java_console/ui/src/com/rusefi/maintenance/ExecHelper.java
@@ -76,7 +76,7 @@ public class ExecHelper {
return error.toString();
}
- protected static void submitAction(Runnable runnable, String threadName) {
+ public static void submitAction(Runnable runnable, String threadName) {
Thread thread = new Thread(runnable, threadName);
thread.setDaemon(true);
thread.start();
diff --git a/java_console/ui/src/com/rusefi/ui/FormulasPane.java b/java_console/ui/src/com/rusefi/ui/FormulasPane.java
index b055ed01d1..6ab3e89a27 100644
--- a/java_console/ui/src/com/rusefi/ui/FormulasPane.java
+++ b/java_console/ui/src/com/rusefi/ui/FormulasPane.java
@@ -105,7 +105,7 @@ public class FormulasPane {
}
private void updateFormula() {
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
if (bp == null)
return;
ConfigurationImage ci = bp.getController();
diff --git a/java_console/ui/src/com/rusefi/ui/FuelTunePane.java b/java_console/ui/src/com/rusefi/ui/FuelTunePane.java
index 1abf38198c..9a125074c2 100644
--- a/java_console/ui/src/com/rusefi/ui/FuelTunePane.java
+++ b/java_console/ui/src/com/rusefi/ui/FuelTunePane.java
@@ -136,7 +136,7 @@ public class FuelTunePane {
private void uploadCurrentResult() {
byte[] newVeMap = FuelTunePane.this.newVeMap;
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
if (newVeMap == null || bp == null)
return;
ConfigurationImage ci = bp.getController().clone();
@@ -313,7 +313,7 @@ public class FuelTunePane {
}
private byte[] reloadVeTable() {
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
byte[] content = bp.getController().getContent();
loadData(veTable.getXAxis(), content, veRpmOffset);
@@ -329,7 +329,7 @@ public class FuelTunePane {
}
private void loadArray(double[] array, int offset) {
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
if (bp == null) {
FileLog.MAIN.logLine("bp not ready");
return;
diff --git a/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java b/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java
index ce0405c019..1a652d9144 100644
--- a/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java
+++ b/java_console/ui/src/com/rusefi/ui/config/BaseConfigField.java
@@ -28,7 +28,7 @@ public abstract class BaseConfigField {
}
private void processInitialValue(Field field) {
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
if (bp == null)
return;
ConfigurationImage ci = bp.getController();
diff --git a/java_console/ui/src/com/rusefi/ui/console/MainFrame.java b/java_console/ui/src/com/rusefi/ui/console/MainFrame.java
index a4885e2872..1c0ca03eee 100644
--- a/java_console/ui/src/com/rusefi/ui/console/MainFrame.java
+++ b/java_console/ui/src/com/rusefi/ui/console/MainFrame.java
@@ -111,7 +111,7 @@ public class MainFrame {
root.setProperty(Launcher.TAB_INDEX, tabbedPane.tabbedPane.getSelectedIndex());
GaugesPanel.DetachedRepository.INSTANCE.saveConfig();
getConfig().save();
- BinaryProtocol bp = BinaryProtocolHolder.getInstance().get();
+ BinaryProtocol bp = BinaryProtocolHolder.getInstance().getCurrentStreamState();
if (bp != null && !bp.isClosed)
bp.close(); // it could be that serial driver wants to be closed explicitly
System.exit(0);
diff --git a/unit_tests/tests/trigger/test_cam_vvt_input.cpp b/unit_tests/tests/trigger/test_cam_vvt_input.cpp
index 5e6588fa2f..dec3da07e2 100644
--- a/unit_tests/tests/trigger/test_cam_vvt_input.cpp
+++ b/unit_tests/tests/trigger/test_cam_vvt_input.cpp
@@ -83,6 +83,7 @@ TEST(sensors, testCamInput) {
setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR);
engineConfiguration->useOnlyRisingEdgeForTrigger = true;
engineConfiguration->vvtMode = VVT_FIRST_HALF;
+ engineConfiguration->vvtOffset = 720;
eth.setTriggerType(TT_ONE PASS_ENGINE_PARAMETER_SUFFIX);
engineConfiguration->camInputs[0] = GPIOA_10; // we just need to indicate that we have CAM
@@ -113,7 +114,7 @@ TEST(sensors, testCamInput) {
// asserting that error code has cleared
ASSERT_EQ(0, unitTestWarningCodeState.recentWarnings.getCount()) << "warningCounter#testCamInput #3";
- ASSERT_NEAR(-181, engine->triggerCentral.getVVTPosition(), EPS3D);
+ ASSERT_NEAR(720 - 181, engine->triggerCentral.getVVTPosition(), EPS3D);
}
TEST(sensors, testNB2CamInput) {