From 5491669c2cf9745fe9fc448538fc76cf630c3b4c Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 12:05:09 -0400 Subject: [PATCH 01/25] nicer handling of main relay in MRE.ini file --- .../kinetis/config/controllers/algo/rusefi_generated.h | 2 ++ firmware/config/boards/microrusefi/prepend.txt | 2 ++ firmware/controllers/generated/rusefi_generated.h | 2 ++ firmware/integration/rusefi_config.txt | 2 ++ firmware/tunerstudio/rusefi.input | 9 +++++---- firmware/tunerstudio/rusefi_microrusefi.ini | 9 ++++----- 6 files changed, 17 insertions(+), 9 deletions(-) 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..b32f17f112 100644 --- a/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h +++ b/firmware/config/boards/kinetis/config/controllers/algo/rusefi_generated.h @@ -2268,6 +2268,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/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index e7d5c4c437..1dcd73dd81 100644 --- a/firmware/controllers/generated/rusefi_generated.h +++ b/firmware/controllers/generated/rusefi_generated.h @@ -2268,6 +2268,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/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index 33eabd4287..fa57ffb213 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -1551,6 +1551,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/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 01b64aca28..624c4f46dd 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -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_microrusefi.ini b/firmware/tunerstudio/rusefi_microrusefi.ini index 0dc594ca8f..22e223c243 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 12:04:24 EDT 2020 pageSize = 20000 page = 1 @@ -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 From 258d23bc315854ef7b642b874cd5fb85d8bad215 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 12:19:54 -0400 Subject: [PATCH 02/25] Fresh generated - auto --- firmware/tunerstudio/rusefi.ini | 6 +++--- firmware/tunerstudio/rusefi_frankenso.ini | 6 +++--- firmware/tunerstudio/rusefi_kinetis.ini | 8 ++++---- firmware/tunerstudio/rusefi_prometheus.ini | 6 +++--- firmware/tunerstudio/rusefi_proteus.ini | 6 +++--- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index 9a79ac44e8..2cbd600daf 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 12:12:30 EDT 2020 pageSize = 20000 page = 1 @@ -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_frankenso.ini b/firmware/tunerstudio/rusefi_frankenso.ini index 2d8c27f42a..f1ccbc2926 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 12:14:04 EDT 2020 pageSize = 20000 page = 1 @@ -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..0a1c0ca136 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 12:18:06 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 @@ -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_prometheus.ini b/firmware/tunerstudio/rusefi_prometheus.ini index 264511947e..ed8abda66b 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 12:15:04 EDT 2020 pageSize = 20000 page = 1 @@ -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..ee80269fa0 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 12:16:22 EDT 2020 pageSize = 20000 page = 1 @@ -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 From 7500e44c8cdb5e99113b5532ba93795177e78dba Mon Sep 17 00:00:00 2001 From: dron0gus Date: Fri, 15 May 2020 22:54:41 +0300 Subject: [PATCH 03/25] tle6240: fix crash in driver wake routine (#1435) --- firmware/hw_layer/drivers/gpio/tle6240.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) 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; } From e7991eacf8cf2a24e325b413cb23f66a0a17fae4 Mon Sep 17 00:00:00 2001 From: dron0gus Date: Fri, 15 May 2020 22:55:06 +0300 Subject: [PATCH 04/25] Some bit, unaligned and different endian access helpers (#1436) * util: add some common macros * util: add unaligned access helpers --- firmware/util/common.h | 35 ++++++++++++ firmware/util/unaligned.c | 113 ++++++++++++++++++++++++++++++++++++++ firmware/util/unaligned.h | 105 +++++++++++++++++++++++++++++++++++ firmware/util/util.mk | 3 +- 4 files changed, 255 insertions(+), 1 deletion(-) create mode 100644 firmware/util/common.h create mode 100644 firmware/util/unaligned.c create mode 100644 firmware/util/unaligned.h 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/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 \ From 18760bb6991d234ddebc192395b2514d8cbc053b Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 16:35:18 -0400 Subject: [PATCH 05/25] toyota 2jz progress --- firmware/config/engines/toyota_jzs147.cpp | 4 +-- firmware/controllers/engine_controller.cpp | 2 +- .../controllers/trigger/trigger_central.cpp | 21 +++++++++------ firmware/tunerstudio/rusefi.ini | 26 +++++++++---------- firmware/tunerstudio/rusefi.input | 24 ++++++++--------- firmware/tunerstudio/rusefi_frankenso.ini | 26 +++++++++---------- firmware/tunerstudio/rusefi_microrusefi.ini | 26 +++++++++---------- firmware/tunerstudio/rusefi_prometheus.ini | 26 +++++++++---------- firmware/tunerstudio/rusefi_proteus.ini | 26 +++++++++---------- 9 files changed, 93 insertions(+), 88 deletions(-) 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/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/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 3603f6b984..4280ab3ff5 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; } diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index 2cbd600daf..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 Fri May 15 12:12:30 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 diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 624c4f46dd..c85da61aef 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 diff --git a/firmware/tunerstudio/rusefi_frankenso.ini b/firmware/tunerstudio/rusefi_frankenso.ini index f1ccbc2926..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 Fri May 15 12:14:04 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 diff --git a/firmware/tunerstudio/rusefi_microrusefi.ini b/firmware/tunerstudio/rusefi_microrusefi.ini index 22e223c243..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 Fri May 15 12:04:24 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 diff --git a/firmware/tunerstudio/rusefi_prometheus.ini b/firmware/tunerstudio/rusefi_prometheus.ini index ed8abda66b..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 Fri May 15 12:15:04 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 diff --git a/firmware/tunerstudio/rusefi_proteus.ini b/firmware/tunerstudio/rusefi_proteus.ini index ee80269fa0..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 Fri May 15 12:16:22 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 From e3fd0a186a2c56fda1bbc89de0093286e8a5a907 Mon Sep 17 00:00:00 2001 From: dron0gus Date: Sat, 16 May 2020 01:03:18 +0300 Subject: [PATCH 06/25] Minor fixes (#1437) * cmpilation warning cleanup * exti trigger: mark pins used, handle errors --- firmware/controllers/algo/engine.cpp | 4 ++-- firmware/hw_layer/adc_inputs.cpp | 2 -- firmware/hw_layer/digital_input_exti.cpp | 10 ++++++---- firmware/hw_layer/digital_input_exti.h | 2 +- firmware/hw_layer/digital_input_icu.cpp | 1 - firmware/hw_layer/trigger_input.cpp | 3 +++ firmware/hw_layer/trigger_input_exti.cpp | 7 +++++-- 7 files changed, 17 insertions(+), 12 deletions(-) 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/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/digital_input_exti.cpp b/firmware/hw_layer/digital_input_exti.cpp index dfa9d71da7..6656f3b2bb 100644 --- a/firmware/hw_layer/digital_input_exti.cpp +++ b/firmware/hw_layer/digital_input_exti.cpp @@ -23,23 +23,23 @@ static ioportmask_t ext_used = 0; // EXT is not able to give you the front direction but you could read the pin in the callback. -void efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palcallback_t cb, void *cb_data) { +int efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palcallback_t cb, void *cb_data) { /* paranoid check, in case of GPIO_UNASSIGNED getHwPort will return NULL * and we will fail on next check */ if (brainPin == GPIO_UNASSIGNED) - return; + return -1; ioportid_t port = getHwPort(msg, brainPin); if (port == NULL) - return; + return -1; int index = getHwPin(msg, brainPin); /* is this index already used? */ if (ext_used & PAL_PORT_BIT(index)) { firmwareError(CUSTOM_ERR_PIN_ALREADY_USED_2, "%s: pin %d: exti index already used", msg, brainPin); - return; + return -1; } ioline_t line = PAL_LINE(port, index); @@ -48,6 +48,8 @@ void efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palc /* mark used */ ext_used |= PAL_PORT_BIT(index); + + return 0; } void efiExtiDisablePin(brain_pin_e brainPin) diff --git a/firmware/hw_layer/digital_input_exti.h b/firmware/hw_layer/digital_input_exti.h index 6d4ab49f07..cc4112928c 100644 --- a/firmware/hw_layer/digital_input_exti.h +++ b/firmware/hw_layer/digital_input_exti.h @@ -10,6 +10,6 @@ #include "digital_input.h" #if HAL_USE_PAL -void efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, palcallback_t cb, void *cb_data); +int efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, palcallback_t cb, void *cb_data); void efiExtiDisablePin(brain_pin_e brainPin); #endif /* HAL_USE_PAL */ diff --git a/firmware/hw_layer/digital_input_icu.cpp b/firmware/hw_layer/digital_input_icu.cpp index f21370088f..73fb062534 100644 --- a/firmware/hw_layer/digital_input_icu.cpp +++ b/firmware/hw_layer/digital_input_icu.cpp @@ -221,7 +221,6 @@ void stopDigitalCapture(const char *msg, brain_pin_e brainPin) { if (brainPin == GPIO_UNASSIGNED) { return; } - brain_pin_markUnused(brainPin); ICUDriver *driver = getInputCaptureDriver(msg, brainPin); if (driver == NULL) { diff --git a/firmware/hw_layer/trigger_input.cpp b/firmware/hw_layer/trigger_input.cpp index ac7efb9541..b209dfc7b8 100644 --- a/firmware/hw_layer/trigger_input.cpp +++ b/firmware/hw_layer/trigger_input.cpp @@ -82,6 +82,7 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft shaftTriggerType[index] = TRIGGER_ICU; else camTriggerType[index] = TRIGGER_ICU; + brain_pin_markUsed(brainPin, msg); return 0; } #endif @@ -92,6 +93,7 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft shaftTriggerType[index] = TRIGGER_EXTI; else camTriggerType[index] = TRIGGER_EXTI; + brain_pin_markUsed(brainPin, msg); return 0; } @@ -123,6 +125,7 @@ static void turnOffTriggerInputPin(int index, bool isTriggerShaft) { camTriggerType[index] = TRIGGER_NONE; } + brain_pin_markUnused(brainPin); } /*==========================================================================*/ diff --git a/firmware/hw_layer/trigger_input_exti.cpp b/firmware/hw_layer/trigger_input_exti.cpp index 981446029f..c36b6bc5c1 100644 --- a/firmware/hw_layer/trigger_input_exti.cpp +++ b/firmware/hw_layer/trigger_input_exti.cpp @@ -76,6 +76,7 @@ static void cam_callback(void *arg) { /*==========================================================================*/ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { + int ret; brain_pin_e brainPin = isTriggerShaft ? CONFIG(triggerInputPins)[index] : engineConfiguration->camInputs[index]; scheduleMsg(logger, "extiTriggerTurnOnInputPin %s %s", msg, hwPortname(brainPin)); @@ -83,8 +84,10 @@ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { /* TODO: * * do not set to both edges if we need only one * * simplify callback in case of one edge */ - ioline_t pal_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin)); - efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)pal_line); + ioline_t pal_line = PAL_LINE(getHwPort(msg, brainPin), getHwPin(msg, brainPin)); + ret = efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)pal_line); + if (ret) + return ret; return 0; } From 23c6ec59a3ff235dc7cd96394a6adcfc7ab0b3ef Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 18:08:11 -0400 Subject: [PATCH 07/25] docs --- firmware/controllers/system/efi_gpio.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); /** From 656acd1788fd2315aa5a3a30d1eb98e64a26bcfe Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 20:15:34 -0400 Subject: [PATCH 08/25] REVERT need to get master green --- firmware/hw_layer/digital_input_exti.cpp | 10 ++++------ firmware/hw_layer/digital_input_exti.h | 2 +- firmware/hw_layer/digital_input_icu.cpp | 1 + firmware/hw_layer/trigger_input.cpp | 3 --- firmware/hw_layer/trigger_input_exti.cpp | 7 ++----- 5 files changed, 8 insertions(+), 15 deletions(-) diff --git a/firmware/hw_layer/digital_input_exti.cpp b/firmware/hw_layer/digital_input_exti.cpp index 6656f3b2bb..dfa9d71da7 100644 --- a/firmware/hw_layer/digital_input_exti.cpp +++ b/firmware/hw_layer/digital_input_exti.cpp @@ -23,23 +23,23 @@ static ioportmask_t ext_used = 0; // EXT is not able to give you the front direction but you could read the pin in the callback. -int efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palcallback_t cb, void *cb_data) { +void efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palcallback_t cb, void *cb_data) { /* paranoid check, in case of GPIO_UNASSIGNED getHwPort will return NULL * and we will fail on next check */ if (brainPin == GPIO_UNASSIGNED) - return -1; + return; ioportid_t port = getHwPort(msg, brainPin); if (port == NULL) - return -1; + return; int index = getHwPin(msg, brainPin); /* is this index already used? */ if (ext_used & PAL_PORT_BIT(index)) { firmwareError(CUSTOM_ERR_PIN_ALREADY_USED_2, "%s: pin %d: exti index already used", msg, brainPin); - return -1; + return; } ioline_t line = PAL_LINE(port, index); @@ -48,8 +48,6 @@ int efiExtiEnablePin(const char *msg, brain_pin_e brainPin, uint32_t mode, palca /* mark used */ ext_used |= PAL_PORT_BIT(index); - - return 0; } void efiExtiDisablePin(brain_pin_e brainPin) diff --git a/firmware/hw_layer/digital_input_exti.h b/firmware/hw_layer/digital_input_exti.h index cc4112928c..6d4ab49f07 100644 --- a/firmware/hw_layer/digital_input_exti.h +++ b/firmware/hw_layer/digital_input_exti.h @@ -10,6 +10,6 @@ #include "digital_input.h" #if HAL_USE_PAL -int efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, palcallback_t cb, void *cb_data); +void efiExtiEnablePin(const char *msg, brain_pin_e pin, uint32_t mode, palcallback_t cb, void *cb_data); void efiExtiDisablePin(brain_pin_e brainPin); #endif /* HAL_USE_PAL */ diff --git a/firmware/hw_layer/digital_input_icu.cpp b/firmware/hw_layer/digital_input_icu.cpp index 73fb062534..f21370088f 100644 --- a/firmware/hw_layer/digital_input_icu.cpp +++ b/firmware/hw_layer/digital_input_icu.cpp @@ -221,6 +221,7 @@ void stopDigitalCapture(const char *msg, brain_pin_e brainPin) { if (brainPin == GPIO_UNASSIGNED) { return; } + brain_pin_markUnused(brainPin); ICUDriver *driver = getInputCaptureDriver(msg, brainPin); if (driver == NULL) { diff --git a/firmware/hw_layer/trigger_input.cpp b/firmware/hw_layer/trigger_input.cpp index b209dfc7b8..ac7efb9541 100644 --- a/firmware/hw_layer/trigger_input.cpp +++ b/firmware/hw_layer/trigger_input.cpp @@ -82,7 +82,6 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft shaftTriggerType[index] = TRIGGER_ICU; else camTriggerType[index] = TRIGGER_ICU; - brain_pin_markUsed(brainPin, msg); return 0; } #endif @@ -93,7 +92,6 @@ static int turnOnTriggerInputPin(const char *msg, int index, bool isTriggerShaft shaftTriggerType[index] = TRIGGER_EXTI; else camTriggerType[index] = TRIGGER_EXTI; - brain_pin_markUsed(brainPin, msg); return 0; } @@ -125,7 +123,6 @@ static void turnOffTriggerInputPin(int index, bool isTriggerShaft) { camTriggerType[index] = TRIGGER_NONE; } - brain_pin_markUnused(brainPin); } /*==========================================================================*/ diff --git a/firmware/hw_layer/trigger_input_exti.cpp b/firmware/hw_layer/trigger_input_exti.cpp index c36b6bc5c1..981446029f 100644 --- a/firmware/hw_layer/trigger_input_exti.cpp +++ b/firmware/hw_layer/trigger_input_exti.cpp @@ -76,7 +76,6 @@ static void cam_callback(void *arg) { /*==========================================================================*/ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { - int ret; brain_pin_e brainPin = isTriggerShaft ? CONFIG(triggerInputPins)[index] : engineConfiguration->camInputs[index]; scheduleMsg(logger, "extiTriggerTurnOnInputPin %s %s", msg, hwPortname(brainPin)); @@ -84,10 +83,8 @@ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) { /* TODO: * * do not set to both edges if we need only one * * simplify callback in case of one edge */ - ioline_t pal_line = PAL_LINE(getHwPort(msg, brainPin), getHwPin(msg, brainPin)); - ret = efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)pal_line); - if (ret) - return ret; + ioline_t pal_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin)); + efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)pal_line); return 0; } From 17dfcf4c627fb15c4246f3f30f53af458a8ac39f Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 20:26:48 -0400 Subject: [PATCH 09/25] refactoring --- java_console/ui/src/com/rusefi/Launcher.java | 31 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index d1e0203f43..895ce16eee 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -31,6 +31,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; @@ -62,7 +63,13 @@ public class Launcher { // 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 -> printToolsAndExit()); + TOOLS.put("headless", args -> runHeadless()); + } public static String port; public static EngineSnifferPanel engineSnifferPanel; @@ -196,8 +203,9 @@ public class Launcher { public static void main(final String[] args) throws Exception { String toolName = args.length == 0 ? null : args[0]; - if (TOOL_NAME_HEADLESS.equalsIgnoreCase(toolName)) { - runHeadless(); + ConsoleTool consoleTool = TOOLS.get(toolName); + if (consoleTool != null) { + consoleTool.runTool(args); return; } @@ -228,6 +236,8 @@ public class Launcher { System.exit(0); } + printTools(); + System.out.println("Optional tools: " + Arrays.asList(TOOL_NAME_COMPILE_FSIO_FILE, TOOL_NAME_COMPILE, TOOL_NAME_REBOOT_ECU, @@ -371,4 +381,19 @@ public class Launcher { public static Frame getFrame() { return staticFrame; } + + private static void printToolsAndExit() { + printTools(); + System.exit(0); + } + + private static void printTools() { + for (String key : TOOLS.keySet()) { + System.out.println("Tool available: " + key); + } + } + + interface ConsoleTool { + void runTool(String args[]); + } } From bbec7cd7943e65754c69026900baa75fa7135d11 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 20:49:32 -0400 Subject: [PATCH 10/25] all tools into help --- java_console/ui/src/com/rusefi/Launcher.java | 92 ++++++++------------ 1 file changed, 34 insertions(+), 58 deletions(-) diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index 895ce16eee..a5bd503d6b 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -55,20 +55,20 @@ 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 Map TOOLS = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); static { - TOOLS.put("help", args -> printToolsAndExit()); + TOOLS.put("help", args -> printTools()); TOOLS.put("headless", args -> runHeadless()); + TOOLS.put("compile", args -> invokeCompileExpressionTool(args)); + TOOLS.put("ptrace_enums", args -> runPerfTraceTool(args)); + TOOLS.put("functional_test", args -> runFunctionalTest(args)); + TOOLS.put("compile_fsio_file", args -> runCompileTool(args)); + TOOLS.put("firing_order", args -> runFiringOrderTool(args)); + 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; @@ -203,58 +203,20 @@ public class Launcher { public static void main(final String[] args) throws Exception { String toolName = args.length == 0 ? null : args[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; - } - - 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); + if (args.length > 0) { + ConsoleTool consoleTool = TOOLS.get(toolName); + if (consoleTool != null) { + consoleTool.runTool(args); + return; + } } printTools(); - 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); @@ -267,6 +229,25 @@ public class Launcher { }); } + 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 autoDetectedPort = PortDetector.autoDetectSerial(); if (autoDetectedPort == null) { @@ -382,11 +363,6 @@ public class Launcher { return staticFrame; } - private static void printToolsAndExit() { - printTools(); - System.exit(0); - } - private static void printTools() { for (String key : TOOLS.keySet()) { System.out.println("Tool available: " + key); @@ -394,6 +370,6 @@ public class Launcher { } interface ConsoleTool { - void runTool(String args[]); + void runTool(String args[]) throws Exception; } } From 194e85b855d5f52a598a2963c6f096b54bf04157 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 21:10:15 -0400 Subject: [PATCH 11/25] VVT progress --- .../controllers/algo/rusefi_generated.h | 1 + .../controllers/generated/rusefi_generated.h | 1 + .../controllers/trigger/trigger_central.cpp | 4 ++- firmware/integration/rusefi_config.txt | 2 ++ firmware/tunerstudio/rusefi.input | 4 +-- firmware/tunerstudio/rusefi_kinetis.ini | 26 +++++++++---------- .../com/rusefi/config/generated/Fields.java | 3 ++- java_console/ui/src/com/rusefi/Launcher.java | 10 +++---- 8 files changed, 29 insertions(+), 22 deletions(-) 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 b32f17f112..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" diff --git a/firmware/controllers/generated/rusefi_generated.h b/firmware/controllers/generated/rusefi_generated.h index 1dcd73dd81..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" diff --git a/firmware/controllers/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 4280ab3ff5..1a3650330f 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -208,7 +208,9 @@ void hwHandleVvtCamSignal(trigger_value_e front, efitick_t nowNt DECLARE_ENGINE_ tc->vvtSyncTimeNt = nowNt; - tc->vvtPosition = engineConfiguration->vvtOffset - currentPosition; + float vvtPosition = engineConfiguration->vvtOffset - currentPosition; + fixAngle(vvtPosition, "vvtPosition", CUSTOM_ERR_6556); + tc->vvtPosition = vvtPosition; switch (engineConfiguration->vvtMode) { case VVT_FIRST_HALF: diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index fa57ffb213..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" diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index c85da61aef..c62afac7fd 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -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 diff --git a/firmware/tunerstudio/rusefi_kinetis.ini b/firmware/tunerstudio/rusefi_kinetis.ini index 0a1c0ca136..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 Fri May 15 12:18:06 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 @@ -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 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/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index a5bd503d6b..147370f1c6 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -62,11 +62,11 @@ public class Launcher { static { TOOLS.put("help", args -> printTools()); TOOLS.put("headless", args -> runHeadless()); - TOOLS.put("compile", args -> invokeCompileExpressionTool(args)); - TOOLS.put("ptrace_enums", args -> runPerfTraceTool(args)); - TOOLS.put("functional_test", args -> runFunctionalTest(args)); - TOOLS.put("compile_fsio_file", args -> runCompileTool(args)); - TOOLS.put("firing_order", args -> runFiringOrderTool(args)); + 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)); } From afc763f06813b2aba99a2b6801c2ce763f77c14f Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 21:33:25 -0400 Subject: [PATCH 12/25] better VVT progress --- firmware/controllers/algo/obd_error_codes.h | 2 +- firmware/controllers/trigger/trigger_central.cpp | 9 ++++++--- unit_tests/tests/trigger/test_cam_vvt_input.cpp | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) 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/trigger/trigger_central.cpp b/firmware/controllers/trigger/trigger_central.cpp index 1a3650330f..149a052436 100644 --- a/firmware/controllers/trigger/trigger_central.cpp +++ b/firmware/controllers/trigger/trigger_central.cpp @@ -208,9 +208,12 @@ void hwHandleVvtCamSignal(trigger_value_e front, efitick_t nowNt DECLARE_ENGINE_ tc->vvtSyncTimeNt = nowNt; - float vvtPosition = engineConfiguration->vvtOffset - currentPosition; - fixAngle(vvtPosition, "vvtPosition", CUSTOM_ERR_6556); - tc->vvtPosition = vvtPosition; + // 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/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) { From 2dac2e6cd1951ed960aaf4967067b8716d7bca19 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 21:46:24 -0400 Subject: [PATCH 13/25] headless configuration --- .../.idea/runConfigurations/Launcher_headless.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 java_console/.idea/runConfigurations/Launcher_headless.xml 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 From c0a2dc99de0dd48c075cac4b7186399919f1a706 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 23:37:32 -0400 Subject: [PATCH 14/25] only better method names, no logic change --- .../autotest/src/com/rusefi/AutoTest.java | 2 +- .../binaryprotocol/BinaryProtocolHolder.java | 18 ++++++++++-------- .../src/com/rusefi/io/serial/PortHolder.java | 15 +-------------- .../rusefi/io/tcp/BinaryProtocolServer.java | 6 +++--- .../io/src/com/rusefi/io/tcp/TcpConnector.java | 13 +------------ .../tcp/test/BinaryProtocolServerSandbox.java | 2 +- .../ui/src/com/rusefi/BenchTestPane.java | 2 +- .../ui/src/com/rusefi/SensorLogger.java | 2 +- .../ui/src/com/rusefi/TableEditorPane.java | 2 +- .../ui/src/com/rusefi/UploadChanges.java | 4 ++-- .../BinaryProtocolCmdSandbox.java | 2 +- .../ui/src/com/rusefi/ui/FormulasPane.java | 2 +- .../ui/src/com/rusefi/ui/FuelTunePane.java | 6 +++--- .../com/rusefi/ui/config/BaseConfigField.java | 2 +- .../src/com/rusefi/ui/console/MainFrame.java | 2 +- 15 files changed, 29 insertions(+), 51 deletions(-) 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/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java index f8cdbbcaf8..bad8a45c3d 100644 --- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java +++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java @@ -4,26 +4,28 @@ import com.opensr5.Logger; import com.rusefi.io.IoStream; /** + * At any given moment of time JVM manages one communication stream + * + * * (c) Andrey Belomutskiy * 6/21/2017. */ public enum BinaryProtocolHolder { INSTANCE; - // todo: fix this? less horrible but still weird! - private BinaryProtocol instance; + private BinaryProtocol currentStream; public static BinaryProtocolHolder getInstance() { return INSTANCE; } - public BinaryProtocol get() { - return instance; - } - - public static BinaryProtocol create(final Logger logger, IoStream stream) { + public BinaryProtocol create(final Logger logger, IoStream stream) { BinaryProtocol result = new BinaryProtocol(logger, stream); - getInstance().instance = result; + currentStream = result; return result; } + + public BinaryProtocol getCurrentStreamState() { + return currentStream; + } } 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..b2ec43e5e8 100644 --- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java @@ -62,16 +62,11 @@ public class PortHolder { } IoStream stream = establishConnection.getStream(); - bp = BinaryProtocolHolder.create(FileLog.LOGGER, stream); + bp = BinaryProtocolHolder.getInstance().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) { @@ -124,14 +119,6 @@ public class PortHolder { 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/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..5d0c8f6be8 100644 --- a/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java +++ b/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java @@ -118,7 +118,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,7 +130,6 @@ public class TcpConnector implements LinkConnector { @Override public void restart() { -// FileLog.rlog("Restarting on " + port); } @Override @@ -141,7 +140,6 @@ public class TcpConnector implements LinkConnector { @Override public String unpack(String packet) { return packet; -// return EngineState.unpackString(packet); } @Override @@ -152,15 +150,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/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/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/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..ace061071c 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); @@ -90,7 +90,7 @@ public class UploadChanges { @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/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/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); From 372d3218786a63f77bdc9b77bc75e2e570fdd674 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 15 May 2020 23:56:50 -0400 Subject: [PATCH 15/25] removing a bit of dead code --- .../src/com/rusefi/io/serial/PortHolder.java | 30 +++---------------- java_console/ui/src/com/rusefi/Launcher.java | 5 +--- .../rusefi/autodetect/SerialAutoChecker.java | 5 +--- 3 files changed, 6 insertions(+), 34 deletions(-) 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 b2ec43e5e8..7d931062ed 100644 --- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java @@ -53,14 +53,11 @@ public class PortHolder { * @return true if everything fine */ private boolean open(String port, final DataListener listener) { - EstablishConnection establishConnection = new EstablishConnection(port).invoke(); - if (!establishConnection.isConnected()) - return false; + IoStream stream = EstablishConnection.create(port); synchronized (portLock) { - PortHolder.this.serialPort = establishConnection.stream; + PortHolder.this.serialPort = stream; portLock.notifyAll(); } - IoStream stream = establishConnection.getStream(); bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream); @@ -100,27 +97,8 @@ public class PortHolder { } 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); - isConnected = true; - return this; + public static IoStream create(String port) { + return SerialIoStreamJSerialComm.open(port, BAUD_RATE, FileLog.LOGGER); } } } diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index 147370f1c6..60e26290b1 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -278,10 +278,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 = PortHolder.EstablishConnection.create(autoDetectedPort); byte[] commandBytes = BinaryProtocol.getTextCommandBytes(command); stream.sendPacket(commandBytes, FileLog.LOGGER); } diff --git a/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java b/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java index c675898b72..66360934f6 100644 --- a/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java +++ b/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java @@ -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 = PortHolder.EstablishConnection.create(serialPort); Logger logger = FileLog.LOGGER; IncomingDataBuffer incomingData = new IncomingDataBuffer(logger); stream.setInputListener(incomingData::addData); From 445f1c28f44096140aa0a32abc8a04e5d6496c98 Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Fri, 15 May 2020 21:11:52 -0700 Subject: [PATCH 16/25] dead datalog code (#1439) Co-authored-by: Matthew Kennedy --- firmware/console/status_loop.cpp | 34 +++++++++--------------- firmware/controllers/system/efi_gpio.cpp | 6 ----- firmware/util/datalogging.cpp | 14 ---------- firmware/util/datalogging.h | 3 --- 4 files changed, 13 insertions(+), 44 deletions(-) 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/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/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); From 22041753f5ddfea393209e3802664bdc925bcbb9 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 00:20:54 -0400 Subject: [PATCH 17/25] reducing complexity --- .../rusefi/binaryprotocol/BinaryProtocol.java | 5 +++ .../com/rusefi/io/serial/BaudRateHolder.java | 11 +++++ .../src/com/rusefi/io/serial/PortHolder.java | 42 +++++++------------ .../com/rusefi/io/serial/SerialConnector.java | 6 +-- .../io/serial/SerialIoStreamJSerialComm.java | 9 ++-- .../com/rusefi/io/serial/SerialManager.java | 39 ----------------- java_console/ui/src/com/rusefi/Launcher.java | 9 ++-- .../ui/src/com/rusefi/StartupFrame.java | 3 +- .../rusefi/autodetect/SerialAutoChecker.java | 4 +- .../com/rusefi/maintenance/DfuFlasher.java | 4 +- 10 files changed, 50 insertions(+), 82 deletions(-) create mode 100644 java_console/io/src/com/rusefi/io/serial/BaudRateHolder.java diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java index 4eb7a6e1bb..33e6ed3233 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 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 7d931062ed..0c82297724 100644 --- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java @@ -19,10 +19,7 @@ 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; + public ConnectionStateListener listener; private static PortHolder instance = new PortHolder(); private final Object portLock = new Object(); @@ -34,11 +31,21 @@ public class PortHolder { @Nullable private IoStream serialPort; - boolean openPort(String port, DataListener dataListener, ConnectionStateListener listener) { - CommunicationLoggingHolder.communicationLoggingListener.onPortHolderMessage(SerialManager.class, "Opening port: " + port); + boolean connectAndReadConfiguration(String port, DataListener dataListener) { if (port == null) return false; - boolean result = open(port, dataListener); + + CommunicationLoggingHolder.communicationLoggingListener.onPortHolderMessage(SerialManager.class, "Opening port: " + port); + + IoStream stream = SerialIoStreamJSerialComm.openPort(port); + synchronized (portLock) { + this.serialPort = stream; + portLock.notifyAll(); + } + + bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream); + + boolean result = bp.connectAndReadConfiguration(dataListener); if (listener != null) { if (result) { listener.onConnectionEstablished(); @@ -49,21 +56,6 @@ public class PortHolder { return result; } - /** - * @return true if everything fine - */ - private boolean open(String port, final DataListener listener) { - IoStream stream = EstablishConnection.create(port); - synchronized (portLock) { - PortHolder.this.serialPort = stream; - portLock.notifyAll(); - } - - bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream); - - return bp.connectAndReadConfiguration(listener); - } - public void close() { synchronized (portLock) { if (serialPort != null) { @@ -95,10 +87,4 @@ public class PortHolder { public static PortHolder getInstance() { return instance; } - - public static class EstablishConnection { - public static IoStream create(String port) { - return SerialIoStreamJSerialComm.open(port, BAUD_RATE, FileLog.LOGGER); - } - } } 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..1d2062bf43 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java @@ -18,13 +18,13 @@ public class SerialConnector implements LinkConnector { @Override public void connect(ConnectionStateListener listener) { FileLog.MAIN.logLine("SerialConnector: connecting"); - SerialManager.listener = listener; + PortHolder.getInstance().listener = listener; FileLog.MAIN.logLine("scheduleOpening"); LinkManager.COMMUNICATION_EXECUTOR.execute(new Runnable() { @Override public void run() { FileLog.MAIN.logLine("scheduleOpening>openPort"); - PortHolder.getInstance().openPort(SerialManager.port, SerialManager.dataListener, SerialManager.listener); + PortHolder.getInstance().connectAndReadConfiguration(SerialManager.port, SerialManager.dataListener); } }); } @@ -38,7 +38,7 @@ public class SerialConnector implements LinkConnector { // if (closed) // return; PortHolder.getInstance().close(); - PortHolder.getInstance().openPort(SerialManager.port, SerialManager.dataListener, SerialManager.listener); + PortHolder.getInstance().connectAndReadConfiguration(SerialManager.port, SerialManager.dataListener); } }); } 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 index 7e5b99aa9b..65fc49b783 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialManager.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialManager.java @@ -11,49 +11,10 @@ import com.rusefi.io.LinkManager; 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/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index 60e26290b1..8e737c2107 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -8,8 +8,9 @@ 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.FirmwareFlasher; import com.rusefi.maintenance.VersionChecker; import com.rusefi.ui.*; @@ -96,7 +97,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); @@ -278,7 +279,7 @@ public class Launcher { String autoDetectedPort = autoDetectPort(); if (autoDetectedPort == null) return; - IoStream stream = PortHolder.EstablishConnection.create(autoDetectedPort); + IoStream stream = SerialIoStreamJSerialComm.openPort(autoDetectedPort); byte[] commandBytes = BinaryProtocol.getTextCommandBytes(command); stream.sendPacket(commandBytes, FileLog.LOGGER); } @@ -329,7 +330,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) 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/autodetect/SerialAutoChecker.java b/java_console/ui/src/com/rusefi/autodetect/SerialAutoChecker.java index 66360934f6..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,7 +27,7 @@ class SerialAutoChecker implements Runnable { @Override public void run() { - IoStream stream = PortHolder.EstablishConnection.create(serialPort); + 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/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); From 9dc2216bb2a133aa5a10c81ccc8e85454bd6b5aa Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 00:27:36 -0400 Subject: [PATCH 18/25] reducing complexity --- .../src/com/rusefi/io/serial/PortHolder.java | 9 +++++++-- .../com/rusefi/io/serial/SerialConnector.java | 9 +++++---- .../com/rusefi/io/serial/SerialManager.java | 20 ------------------- 3 files changed, 12 insertions(+), 26 deletions(-) delete mode 100644 java_console/io/src/com/rusefi/io/serial/SerialManager.java 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 0c82297724..a376b99838 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,6 +20,8 @@ import java.awt.*; * (c) Andrey Belomutskiy */ public class PortHolder { + private static final DataListener dataListener = freshData -> LinkManager.engineState.processNewData(new String(freshData), LinkManager.ENCODER); + public ConnectionStateListener listener; private static PortHolder instance = new PortHolder(); private final Object portLock = new Object(); @@ -31,11 +34,13 @@ public class PortHolder { @Nullable private IoStream serialPort; - boolean connectAndReadConfiguration(String port, DataListener dataListener) { + public String port; + + boolean connectAndReadConfiguration() { if (port == null) return false; - CommunicationLoggingHolder.communicationLoggingListener.onPortHolderMessage(SerialManager.class, "Opening port: " + port); + CommunicationLoggingHolder.communicationLoggingListener.onPortHolderMessage(getClass(), "Opening port: " + port); IoStream stream = SerialIoStreamJSerialComm.openPort(port); synchronized (portLock) { 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 1d2062bf43..db9d14f233 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java @@ -5,6 +5,7 @@ import com.rusefi.core.MessagesCentral; import com.rusefi.io.ConnectionStateListener; import com.rusefi.io.LinkConnector; import com.rusefi.io.LinkManager; +import com.sun.corba.se.spi.activation.ServerHolder; /** * @author Andrey Belomutskiy @@ -12,7 +13,7 @@ import com.rusefi.io.LinkManager; */ public class SerialConnector implements LinkConnector { public SerialConnector(String serialPort) { - SerialManager.port = serialPort; + PortHolder.getInstance().port = serialPort; } @Override @@ -24,7 +25,7 @@ public class SerialConnector implements LinkConnector { @Override public void run() { FileLog.MAIN.logLine("scheduleOpening>openPort"); - PortHolder.getInstance().connectAndReadConfiguration(SerialManager.port, SerialManager.dataListener); + PortHolder.getInstance().connectAndReadConfiguration(); } }); } @@ -34,11 +35,11 @@ public class SerialConnector implements LinkConnector { LinkManager.COMMUNICATION_EXECUTOR.execute(new Runnable() { @Override public void run() { - MessagesCentral.getInstance().postMessage(SerialManager.class, "Restarting serial IO"); + MessagesCentral.getInstance().postMessage(getClass(), "Restarting serial IO"); // if (closed) // return; PortHolder.getInstance().close(); - PortHolder.getInstance().connectAndReadConfiguration(SerialManager.port, SerialManager.dataListener); + PortHolder.getInstance().connectAndReadConfiguration(); } }); } 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 65fc49b783..0000000000 --- a/java_console/io/src/com/rusefi/io/serial/SerialManager.java +++ /dev/null @@ -1,20 +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; - - static DataListener dataListener = new DataListener() { - public void onDataArrived(byte freshData[]) { - LinkManager.engineState.processNewData(new String(freshData), LinkManager.ENCODER); - } - }; - -} From e3ee77b58af558303edc08620e6aa34972b8a65c Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 00:32:37 -0400 Subject: [PATCH 19/25] reducing complexity --- .../autotest/src/com/rusefi/IoUtil.java | 4 ---- .../io/src/com/rusefi/io/LinkConnector.java | 8 +------ .../io/src/com/rusefi/io/LinkManager.java | 4 ---- .../src/com/rusefi/io/serial/PortHolder.java | 7 +----- .../com/rusefi/io/serial/SerialConnector.java | 23 ++++++++----------- .../src/com/rusefi/io/tcp/TcpConnector.java | 5 ---- 6 files changed, 11 insertions(+), 40 deletions(-) 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/io/LinkConnector.java b/java_console/io/src/com/rusefi/io/LinkConnector.java index b151bdd7c9..bafce296b6 100644 --- a/java_console/io/src/com/rusefi/io/LinkConnector.java +++ b/java_console/io/src/com/rusefi/io/LinkConnector.java @@ -11,18 +11,13 @@ public interface LinkConnector extends LinkDecoder { } @Override - public void send(String command, boolean fireEvent) throws InterruptedException { + public void send(String command, boolean fireEvent) { } @Override public void restart() { } - @Override - public boolean hasError() { - return false; - } - @Override public String unpack(String packet) { return LinkDecoder.TEXT_PROTOCOL_DECODER.unpack(packet); @@ -35,5 +30,4 @@ public interface LinkConnector extends LinkDecoder { void restart(); - boolean hasError(); } diff --git a/java_console/io/src/com/rusefi/io/LinkManager.java b/java_console/io/src/com/rusefi/io/LinkManager.java index 873d53b08c..9dc375cf31 100644 --- a/java_console/io/src/com/rusefi/io/LinkManager.java +++ b/java_console/io/src/com/rusefi/io/LinkManager.java @@ -162,10 +162,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/PortHolder.java b/java_console/io/src/com/rusefi/io/serial/PortHolder.java index a376b99838..804b44d6e0 100644 --- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java @@ -23,12 +23,11 @@ public class PortHolder { private static final DataListener dataListener = freshData -> LinkManager.engineState.processNewData(new String(freshData), LinkManager.ENCODER); public ConnectionStateListener listener; - private static PortHolder instance = new PortHolder(); private final Object portLock = new Object(); private BinaryProtocol bp; - private PortHolder() { + protected PortHolder() { } @Nullable @@ -88,8 +87,4 @@ public class PortHolder { bp.doSend(command, fireEvent); } - - public static PortHolder getInstance() { - return instance; - } } 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 db9d14f233..0f3633f862 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java @@ -5,27 +5,29 @@ import com.rusefi.core.MessagesCentral; import com.rusefi.io.ConnectionStateListener; import com.rusefi.io.LinkConnector; import com.rusefi.io.LinkManager; -import com.sun.corba.se.spi.activation.ServerHolder; /** * @author Andrey Belomutskiy * 3/3/14 */ public class SerialConnector implements LinkConnector { + + private final PortHolder portHolder = new PortHolder(); + public SerialConnector(String serialPort) { - PortHolder.getInstance().port = serialPort; + portHolder.port = serialPort; } @Override public void connect(ConnectionStateListener listener) { FileLog.MAIN.logLine("SerialConnector: connecting"); - PortHolder.getInstance().listener = listener; + portHolder.listener = listener; FileLog.MAIN.logLine("scheduleOpening"); LinkManager.COMMUNICATION_EXECUTOR.execute(new Runnable() { @Override public void run() { FileLog.MAIN.logLine("scheduleOpening>openPort"); - PortHolder.getInstance().connectAndReadConfiguration(); + portHolder.connectAndReadConfiguration(); } }); } @@ -36,19 +38,12 @@ public class SerialConnector implements LinkConnector { @Override public void run() { MessagesCentral.getInstance().postMessage(getClass(), "Restarting serial IO"); -// if (closed) -// return; - PortHolder.getInstance().close(); - PortHolder.getInstance().connectAndReadConfiguration(); + portHolder.close(); + portHolder.connectAndReadConfiguration(); } }); } - @Override - public boolean hasError() { - return false; - } - @Override public String unpack(String packet) { return packet; @@ -56,6 +51,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/tcp/TcpConnector.java b/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java index 5d0c8f6be8..d8e8f7d972 100644 --- a/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java +++ b/java_console/io/src/com/rusefi/io/tcp/TcpConnector.java @@ -132,11 +132,6 @@ public class TcpConnector implements LinkConnector { public void restart() { } - @Override - public boolean hasError() { - return false; - } - @Override public String unpack(String packet) { return packet; From 0c142921d6bf8388c31522e2145a1b49589e288a Mon Sep 17 00:00:00 2001 From: Matthew Kennedy Date: Fri, 15 May 2020 21:33:47 -0700 Subject: [PATCH 20/25] don't register ID pin (#1438) --- firmware/config/boards/nucleo_f746/board.h | 1 - firmware/config/boards/nucleo_f767/board.h | 1 - firmware/config/boards/st_stm32f4/board.h | 1 - firmware/hw_layer/serial_over_usb/usbconsole.c | 1 - 4 files changed, 4 deletions(-) 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/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)); /* From b447e23f9722b2d2aee07dc67fb54607c86fc530 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 00:49:20 -0400 Subject: [PATCH 21/25] reducing complexity --- .../rusefi/binaryprotocol/BinaryProtocol.java | 4 ++-- .../io/src/com/rusefi/io/LinkManager.java | 21 ++++++++++++++++++- .../com/rusefi/io/serial/SerialConnector.java | 4 ++-- .../ui/src/com/rusefi/UploadChanges.java | 2 +- 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java index 33e6ed3233..5d2de47a46 100644 --- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java +++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocol.java @@ -88,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); @@ -139,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/io/LinkManager.java b/java_console/io/src/com/rusefi/io/LinkManager.java index 9dc375cf31..6e0bf3295b 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() { 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 0f3633f862..35505241cc 100644 --- a/java_console/io/src/com/rusefi/io/serial/SerialConnector.java +++ b/java_console/io/src/com/rusefi/io/serial/SerialConnector.java @@ -23,7 +23,7 @@ public class SerialConnector implements LinkConnector { FileLog.MAIN.logLine("SerialConnector: connecting"); 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"); @@ -34,7 +34,7 @@ public class SerialConnector implements LinkConnector { @Override public void restart() { - LinkManager.COMMUNICATION_EXECUTOR.execute(new Runnable() { + LinkManager.execute(new Runnable() { @Override public void run() { MessagesCentral.getInstance().postMessage(getClass(), "Restarting serial IO"); diff --git a/java_console/ui/src/com/rusefi/UploadChanges.java b/java_console/ui/src/com/rusefi/UploadChanges.java index ace061071c..b767ef2f27 100644 --- a/java_console/ui/src/com/rusefi/UploadChanges.java +++ b/java_console/ui/src/com/rusefi/UploadChanges.java @@ -86,7 +86,7 @@ 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 { From 0c0eefbb4fcdde833f10de6ebf82783a1de35cf6 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 01:04:52 -0400 Subject: [PATCH 22/25] new headless feature coming --- java_console/ui/src/com/rusefi/Launcher.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index 8e737c2107..f7ceab75fe 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -62,7 +62,7 @@ public class Launcher { static { TOOLS.put("help", args -> printTools()); - TOOLS.put("headless", args -> runHeadless()); + TOOLS.put("headless", Launcher::runHeadless); TOOLS.put("compile", Launcher::invokeCompileExpressionTool); TOOLS.put("ptrace_enums", Launcher::runPerfTraceTool); TOOLS.put("functional_test", Launcher::runFunctionalTest); @@ -249,7 +249,10 @@ public class Launcher { RealHwTest.main(toolArgs); } - private static void runHeadless() { + private static void runHeadless(String[] args) { + String onConnectedCallback = args.length > 1 ? args[1] : null; + String onDisconnectedCallback = args.length > 2 ? args[2] : null; + String autoDetectedPort = PortDetector.autoDetectSerial(); if (autoDetectedPort == null) { System.err.println("rusEFI not detected"); From a0a163b8e57ea22cc6e5fe9037a2da1b6b8838d2 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 01:05:35 -0400 Subject: [PATCH 23/25] reducing complexity --- .../binaryprotocol/BinaryProtocolHolder.java | 3 ++- .../io/src/com/rusefi/io/LinkConnector.java | 8 ++++++++ .../io/src/com/rusefi/io/LinkManager.java | 1 + .../src/com/rusefi/io/serial/PortHolder.java | 19 ++++++++++--------- .../com/rusefi/io/serial/SerialConnector.java | 6 ++++++ .../src/com/rusefi/io/tcp/TcpConnector.java | 4 ++++ 6 files changed, 31 insertions(+), 10 deletions(-) diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java index bad8a45c3d..7e88253fb8 100644 --- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java +++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java @@ -2,6 +2,7 @@ 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 @@ -26,6 +27,6 @@ public enum BinaryProtocolHolder { } public BinaryProtocol getCurrentStreamState() { - return currentStream; + 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 bafce296b6..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 @@ -18,6 +20,11 @@ public interface LinkConnector extends LinkDecoder { public void restart() { } + @Override + public BinaryProtocol getBinaryProtocol() { + return null; + } + @Override public String unpack(String packet) { return LinkDecoder.TEXT_PROTOCOL_DECODER.unpack(packet); @@ -30,4 +37,5 @@ public interface LinkConnector extends LinkDecoder { void restart(); + 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 6e0bf3295b..80bc4819d6 100644 --- a/java_console/io/src/com/rusefi/io/LinkManager.java +++ b/java_console/io/src/com/rusefi/io/LinkManager.java @@ -126,6 +126,7 @@ public class LinkManager { ConnectionWatchdog.onDataArrived(); } }); + public static LinkConnector connector; /** 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 804b44d6e0..fc8525eaf0 100644 --- a/java_console/io/src/com/rusefi/io/serial/PortHolder.java +++ b/java_console/io/src/com/rusefi/io/serial/PortHolder.java @@ -25,14 +25,12 @@ public class PortHolder { public ConnectionStateListener listener; private final Object portLock = new Object(); + @Nullable private BinaryProtocol bp; protected PortHolder() { } - @Nullable - private IoStream serialPort; - public String port; boolean connectAndReadConfiguration() { @@ -43,12 +41,10 @@ public class PortHolder { IoStream stream = SerialIoStreamJSerialComm.openPort(port); synchronized (portLock) { - this.serialPort = stream; + bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream); portLock.notifyAll(); } - bp = BinaryProtocolHolder.getInstance().create(FileLog.LOGGER, stream); - boolean result = bp.connectAndReadConfiguration(dataListener); if (listener != null) { if (result) { @@ -62,10 +58,10 @@ public class PortHolder { public void close() { synchronized (portLock) { - if (serialPort != null) { + if (bp != null) { try { - serialPort.close(); - serialPort = null; + bp.close(); + bp = null; } finally { portLock.notifyAll(); } @@ -73,6 +69,11 @@ public class PortHolder { } } + @Nullable + public BinaryProtocol getBp() { + return bp; + } + /** * this method blocks till a connection is available */ 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 35505241cc..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; @@ -32,6 +33,11 @@ public class SerialConnector implements LinkConnector { }); } + @Override + public BinaryProtocol getBinaryProtocol() { + return portHolder.getBp(); + } + @Override public void restart() { LinkManager.execute(new Runnable() { 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 d8e8f7d972..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); From c9409ce69379772e2b3cac3016518e56abf97851 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 01:14:44 -0400 Subject: [PATCH 24/25] new headless feature coming --- .../binaryprotocol/BinaryProtocolHolder.java | 11 +++---- java_console/ui/src/com/rusefi/Launcher.java | 30 ++++++++++++++++++- .../com/rusefi/maintenance/ExecHelper.java | 2 +- 3 files changed, 34 insertions(+), 9 deletions(-) diff --git a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java index 7e88253fb8..3c709c82bb 100644 --- a/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java +++ b/java_console/io/src/com/rusefi/binaryprotocol/BinaryProtocolHolder.java @@ -7,6 +7,7 @@ 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. @@ -14,19 +15,15 @@ import com.rusefi.io.LinkManager; public enum BinaryProtocolHolder { INSTANCE; - private BinaryProtocol currentStream; - public static BinaryProtocolHolder getInstance() { return INSTANCE; } - public BinaryProtocol create(final Logger logger, IoStream stream) { - BinaryProtocol result = new BinaryProtocol(logger, stream); - currentStream = result; - return result; + public static BinaryProtocol create(final Logger logger, IoStream stream) { + return new BinaryProtocol(logger, stream); } - public BinaryProtocol getCurrentStreamState() { + public static BinaryProtocol getCurrentStreamState() { return LinkManager.connector.getBinaryProtocol(); } } diff --git a/java_console/ui/src/com/rusefi/Launcher.java b/java_console/ui/src/com/rusefi/Launcher.java index f7ceab75fe..fcf51c1757 100644 --- a/java_console/ui/src/com/rusefi/Launcher.java +++ b/java_console/ui/src/com/rusefi/Launcher.java @@ -11,6 +11,7 @@ import com.rusefi.io.*; 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.*; @@ -48,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", "."); @@ -199,6 +200,7 @@ public class Launcher { /** * rusEfi console entry point + * * @see StartupFrame if no parameters specified */ public static void main(final String[] args) throws Exception { @@ -253,6 +255,17 @@ public class Launcher { 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"); @@ -271,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 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(); From 5d095998943bde0435d42bf437f0a8eb21e5dde8 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 16 May 2020 01:51:28 -0400 Subject: [PATCH 25/25] poke --- firmware/svnversion.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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