From 3958c255017fe12f8d4882489d49702b43c6c0ca Mon Sep 17 00:00:00 2001 From: Andrei Date: Mon, 1 May 2017 22:09:35 +0300 Subject: [PATCH 01/27] STM32F407xx-define (and small clean-up) pull request --- firmware/compile_and_program.bat | 4 ++-- firmware/config/boards/ST_STM32F4/board.mk | 3 +++ firmware/controllers/algo/engine_configuration.cpp | 4 ---- firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c | 2 -- firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c | 2 -- 5 files changed, 5 insertions(+), 10 deletions(-) diff --git a/firmware/compile_and_program.bat b/firmware/compile_and_program.bat index 1d954020f5..c8481be98a 100644 --- a/firmware/compile_and_program.bat +++ b/firmware/compile_and_program.bat @@ -13,8 +13,8 @@ rem magic once needed call update_version.bat echo Starting compilation -rem the important piece -make +rem the important piece (pass external args if needed) +make %1 %2 %3 rem cd build rem if not exist rusefi.hex echo "compilation failed" diff --git a/firmware/config/boards/ST_STM32F4/board.mk b/firmware/config/boards/ST_STM32F4/board.mk index 25db37f4ac..e3be9cd995 100644 --- a/firmware/config/boards/ST_STM32F4/board.mk +++ b/firmware/config/boards/ST_STM32F4/board.mk @@ -3,3 +3,6 @@ BOARDSRC = $(PROJECT_DIR)/config/boards/ST_STM32F4/board.c # Required include directories BOARDINC = $(PROJECT_DIR)/config/boards/ST_STM32F4 + +# MCU defines +DDEFS += -DSTM32F407xx -DSTM32F40_41xxx diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index 9db0fb827a..a584a1b51a 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -263,10 +263,6 @@ void prepareVoidConfiguration(engine_configuration_s *activeConfiguration) { engineConfiguration->cj125ua = EFI_ADC_NONE; engineConfiguration->cj125ur = EFI_ADC_NONE; - boardConfiguration->idle.stepperDirectionPin = GPIO_UNASSIGNED; - boardConfiguration->idle.stepperStepPin = GPIO_UNASSIGNED; - engineConfiguration->stepperEnablePin = GPIO_UNASSIGNED; - boardConfiguration->idle.stepperDirectionPin = GPIO_UNASSIGNED; boardConfiguration->idle.stepperStepPin = GPIO_UNASSIGNED; engineConfiguration->stepperEnablePin = GPIO_UNASSIGNED; diff --git a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c index cbf1661834..a58a7d7353 100644 --- a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c +++ b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c @@ -93,8 +93,6 @@ */ /* Includes ------------------------------------------------------------------*/ -#define STM32F407xx -#define STM32F40_41xxx #define assert_param(expr) ((void)0) //#include "stm32f4xx_hal.h" diff --git a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c index 5857b76f68..f95e561152 100644 --- a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c +++ b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c @@ -80,8 +80,6 @@ /* Includes ------------------------------------------------------------------*/ -#define STM32F407xx -#define STM32F40_41xxx #define assert_param(expr) ((void)0) #define HAL_FLASH_MODULE_ENABLED From ca301b15138900ff8f332023f3eb2b183ee79b7e Mon Sep 17 00:00:00 2001 From: Andrei Date: Mon, 1 May 2017 22:24:19 +0300 Subject: [PATCH 02/27] STM32F407xx-define (and small clean-up) pull request --- firmware/config/boards/ST_STM32F4/board.h | 2 ++ firmware/config/boards/ST_STM32F4/board.mk | 2 +- firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c | 3 +++ firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c | 3 +++ firmware/svnversion.h | 4 ++-- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/firmware/config/boards/ST_STM32F4/board.h b/firmware/config/boards/ST_STM32F4/board.h index abff6dfcad..96b9532001 100644 --- a/firmware/config/boards/ST_STM32F4/board.h +++ b/firmware/config/boards/ST_STM32F4/board.h @@ -57,7 +57,9 @@ * * See also STM32F4xx_MCUCONF is defined in mcuconf.h */ +#ifndef STM32F407xx #define STM32F407xx +#endif /* * IO pins assignments. diff --git a/firmware/config/boards/ST_STM32F4/board.mk b/firmware/config/boards/ST_STM32F4/board.mk index e3be9cd995..3f6f71c3a6 100644 --- a/firmware/config/boards/ST_STM32F4/board.mk +++ b/firmware/config/boards/ST_STM32F4/board.mk @@ -5,4 +5,4 @@ BOARDSRC = $(PROJECT_DIR)/config/boards/ST_STM32F4/board.c BOARDINC = $(PROJECT_DIR)/config/boards/ST_STM32F4 # MCU defines -DDEFS += -DSTM32F407xx -DSTM32F40_41xxx +DDEFS += -DSTM32F407xx diff --git a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c index a58a7d7353..bd2b159f58 100644 --- a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c +++ b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash.c @@ -93,6 +93,9 @@ */ /* Includes ------------------------------------------------------------------*/ +#ifdef STM32F407xx +#define STM32F40_41xxx +#endif #define assert_param(expr) ((void)0) //#include "stm32f4xx_hal.h" diff --git a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c index f95e561152..9a53d9324d 100644 --- a/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c +++ b/firmware/hw_layer/stm32f4/stm32f4xx_hal_flash_ex.c @@ -80,6 +80,9 @@ /* Includes ------------------------------------------------------------------*/ +#ifdef STM32F407xx +#define STM32F40_41xxx +#endif #define assert_param(expr) ((void)0) #define HAL_FLASH_MODULE_ENABLED diff --git a/firmware/svnversion.h b/firmware/svnversion.h index 9d3c30f097..15c0cd07a5 100644 --- a/firmware/svnversion.h +++ b/firmware/svnversion.h @@ -1,5 +1,5 @@ // This file was generated by Version2Header -// Sat Apr 22 01:25:51 EEST 2017 +// Mon May 01 22:16:55 EEST 2017 #ifndef VCS_VERSION -#define VCS_VERSION "13886" +#define VCS_VERSION "13950" #endif From 1b0ae3d4cb250495b9fb887e9e41ac7fc52cc95b Mon Sep 17 00:00:00 2001 From: rusefi Date: Mon, 1 May 2017 22:33:20 -0400 Subject: [PATCH 03/27] telemetry dreams --- firmware/controllers/algo/engine.cpp | 1 + firmware/controllers/algo/engine.h | 8 ++++++++ firmware/controllers/injector_central.cpp | 1 + firmware/tunerstudio/rusefi.input | 7 +++++++ 4 files changed, 17 insertions(+) diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 01d43c2d14..69c069fb22 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -106,6 +106,7 @@ void Engine::reset() { sensorChartMode = SC_OFF; actualLastInjection = 0; isAlternatorControlEnabled = false; + callFromPitEndTime = 0; wallFuelCorrection = 0; /** * it's important for fixAngle() that engineCycle field never has zero diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 25b2011aa9..8bd98a6c4d 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -274,6 +274,14 @@ public: */ bool isAlternatorControlEnabled; + +// floatms_t callToPitEndTime; + + /** + * remote telemetry: if not zero, time to stop flashing 'CALL FROM PIT' light + */ + floatms_t callFromPitEndTime; + /** * This flag indicated a big enough problem that engine control would be * prohibited if this flag is set to true. diff --git a/firmware/controllers/injector_central.cpp b/firmware/controllers/injector_central.cpp index 392a64fed8..1ab40cc700 100644 --- a/firmware/controllers/injector_central.cpp +++ b/firmware/controllers/injector_central.cpp @@ -296,6 +296,7 @@ void runIoTest(int subsystem, int index) { } else if (subsystem == 0x16) { milBench(); } else if (subsystem == 0x17) { + } else if (subsystem == 0x20 && index == 0x3456) { } } diff --git a/firmware/tunerstudio/rusefi.input b/firmware/tunerstudio/rusefi.input index 3152733aaf..0a3188b458 100644 --- a/firmware/tunerstudio/rusefi.input +++ b/firmware/tunerstudio/rusefi.input @@ -764,6 +764,10 @@ fileVersion = { 20161225 } ; and may create error messages. ; It is expected that these commands would not typically alter any ram mapped to a Constant. +; +; see TS_IO_TEST_COMMAND in firmware code +; + cmd_test_spk1 = "w\x00\x12\x00\x01" cmd_test_spk2 = "w\x00\x12\x00\x02" cmd_test_spk3 = "w\x00\x12\x00\x03" @@ -803,6 +807,7 @@ cmd_test_fuel_pump = "w\x00\x14\x00\x01" cmd_test_radiator_fan = "w\x00\x15\x00\x01" cmd_test_check_engine_light = "w\x00\x16\x00\x01" cmd_test_idle_valve = "w\x00\x17\x00\x01" +cmd_call_from_pit = "w\x00\x20\x34\x56" [UserDefined] @@ -1601,11 +1606,13 @@ cmd_test_idle_valve = "w\x00\x17\x00\x01" commandButton = "Injector #8", cmd_test_inj8 dialog = testMisc, "Misc" + commandButton = "Come To Pit", cmd_call_from_pit commandButton = "Fuel Pump", cmd_test_fuel_pump commandButton = "Radiator Fan", cmd_test_radiator_fan commandButton = "Check Engine", cmd_test_check_engine_light commandButton = "Idle Air Valve", cmd_test_idle_valve + ; bench test dialog = ioTest, "I-O Test", border panel = testSpark, West panel = testInjectors, Center From db216adf4c9f31f0c2138def5a924d6bbaa9e0f7 Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 2 May 2017 11:49:35 -0400 Subject: [PATCH 04/27] VSS / CAN integration reducing complexity --- firmware/hw_layer/can_hw.cpp | 2 -- firmware/hw_layer/vehicle_speed.cpp | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/firmware/hw_layer/can_hw.cpp b/firmware/hw_layer/can_hw.cpp index ac3be61804..e54c502685 100644 --- a/firmware/hw_layer/can_hw.cpp +++ b/firmware/hw_layer/can_hw.cpp @@ -131,7 +131,6 @@ static void canMazdaRX8(void) { commonTxInit(CAN_MAZDA_RX_RPM_SPEED); -#if EFI_VEHICLE_SPEED || defined(__DOXYGEN__) float kph = getVehicleSpeed(); setShortValue(&txmsg, SWAP_UINT16(getRpmE(engine) * 4), 0); @@ -139,7 +138,6 @@ static void canMazdaRX8(void) { setShortValue(&txmsg, SWAP_UINT16((int )(100 * kph + 10000)), 4); setShortValue(&txmsg, 0, 6); sendMessage(); -#endif /* EFI_VEHICLE_SPEED */ commonTxInit(CAN_MAZDA_RX_STATUS_2); txmsg.data8[0] = 0xFE; //Unknown diff --git a/firmware/hw_layer/vehicle_speed.cpp b/firmware/hw_layer/vehicle_speed.cpp index 03fd1f3bec..2ca9218814 100644 --- a/firmware/hw_layer/vehicle_speed.cpp +++ b/firmware/hw_layer/vehicle_speed.cpp @@ -85,5 +85,10 @@ void initVehicleSpeed(Logging *l) { vehicleSpeedInput->widthListeners.registerCallback((VoidInt) vsAnaWidthCallback, NULL); } +#else /* EFI_VEHICLE_SPEED */ +float getVehicleSpeed(void) { + // no VSS support + return 0; +} #endif /* EFI_VEHICLE_SPEED */ From 9c0d7cc66722af3e290d78e3263ad9d1f3cbe43e Mon Sep 17 00:00:00 2001 From: Andrei Date: Tue, 2 May 2017 20:34:01 +0300 Subject: [PATCH 05/27] BOARDSRC_CPP (and compatibility issues) pull request --- firmware/Makefile | 1 + firmware/config/boards/ST_STM32F4/board.mk | 1 + firmware/config/stm32f0egt/efifeatures.h | 2 ++ firmware/config/stm32f4ems/efifeatures.h | 4 ++++ firmware/console/binary/tunerstudio_io.cpp | 14 ++++++++++---- firmware/hw_layer/joystick.cpp | 2 ++ firmware/hw_layer/rtc_helper.cpp | 2 ++ 7 files changed, 22 insertions(+), 4 deletions(-) diff --git a/firmware/Makefile b/firmware/Makefile index 1a8ec69c54..5b220d9ad7 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -176,6 +176,7 @@ CPPSRC = $(CHCPPSRC) \ $(DEV_SRC_CPP) \ $(CONTROLLERS_ALGO_SRC_CPP) \ $(SYSTEMSRC_CPP) \ + $(BOARDSRC_CPP) \ $(ENGINES_SRC_CPP) \ $(HW_LAYER_EMS_CPP) \ $(HW_SENSORS_SRC) \ diff --git a/firmware/config/boards/ST_STM32F4/board.mk b/firmware/config/boards/ST_STM32F4/board.mk index 3f6f71c3a6..cd52bf6250 100644 --- a/firmware/config/boards/ST_STM32F4/board.mk +++ b/firmware/config/boards/ST_STM32F4/board.mk @@ -1,5 +1,6 @@ # List of all the board related files. BOARDSRC = $(PROJECT_DIR)/config/boards/ST_STM32F4/board.c +BOARDSRC_CPP = # Required include directories BOARDINC = $(PROJECT_DIR)/config/boards/ST_STM32F4 diff --git a/firmware/config/stm32f0egt/efifeatures.h b/firmware/config/stm32f0egt/efifeatures.h index 2d927ff73d..67feff44f0 100644 --- a/firmware/config/stm32f0egt/efifeatures.h +++ b/firmware/config/stm32f0egt/efifeatures.h @@ -18,6 +18,8 @@ #define EFI_CONSOLE_UART_DEVICE (&SD1) +#define TS_SERIAL_UART_DEVICE (&SD3) + #define EFI_CONSOLE_TX_PORT GPIOC #define EFI_CONSOLE_TX_PIN 10 #define EFI_CONSOLE_RX_PORT GPIOC diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index de0b8e5777..59af3a0736 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -243,6 +243,10 @@ #define EFI_CONSOLE_UART_DEVICE (&SD3) #endif +#ifndef TS_SERIAL_UART_DEVICE +#define TS_SERIAL_UART_DEVICE (&SD3) +#endif + // todo: start using consoleSerialTxPin? Not sure #ifndef EFI_CONSOLE_TX_PORT #define EFI_CONSOLE_TX_PORT GPIOC diff --git a/firmware/console/binary/tunerstudio_io.cpp b/firmware/console/binary/tunerstudio_io.cpp index 380305f87a..de76cf5678 100644 --- a/firmware/console/binary/tunerstudio_io.cpp +++ b/firmware/console/binary/tunerstudio_io.cpp @@ -21,10 +21,13 @@ extern LoggingWithStorage tsLogger; #include "pin_repository.h" #include "usbconsole.h" #include "map_averaging.h" + +#if HAL_USE_SERIAL_USB || defined(__DOXYGEN__) extern SerialUSBDriver SDU1; #define CONSOLE_DEVICE &SDU1 - -#define TS_SERIAL_UART_DEVICE &SD3 +#else +#define CONSOLE_DEVICE TS_SERIAL_UART_DEVICE +#endif static SerialConfig tsSerialConfig = { 0, 0, USART_CR2_STOP1_BITS | USART_CR2_LINEN, 0 }; @@ -56,10 +59,13 @@ void startTsPort(void) { BaseChannel * getTsSerialDevice(void) { #if EFI_PROD_CODE || defined(__DOXYGEN__) +#if EFI_USB_SERIAL || defined(__DOXYGEN__) if (isCommandLineConsoleOverTTL()) { // if console uses UART then TS uses USB - return (BaseChannel *) &SDU1; - } else { + return (BaseChannel *) CONSOLE_DEVICE; + } else +#endif + { return (BaseChannel *) TS_SERIAL_UART_DEVICE; } #else diff --git a/firmware/hw_layer/joystick.cpp b/firmware/hw_layer/joystick.cpp index ab9322ac5c..352b7a1445 100644 --- a/firmware/hw_layer/joystick.cpp +++ b/firmware/hw_layer/joystick.cpp @@ -58,6 +58,8 @@ static void extCallback(EXTDriver *extp, expchannel_t channel) { } #if EFI_HD44780_LCD || defined(__DOXYGEN__) onJoystick(button); +#else + UNUSED(button); #endif } diff --git a/firmware/hw_layer/rtc_helper.cpp b/firmware/hw_layer/rtc_helper.cpp index 87355e5679..99a0839ad6 100644 --- a/firmware/hw_layer/rtc_helper.cpp +++ b/firmware/hw_layer/rtc_helper.cpp @@ -41,6 +41,8 @@ static time_t GetTimeUnixSec(void) { rtcGetTime(&RTCD1, ×pec); rtcConvertDateTimeToStructTm(×pec, &tim, NULL); return mktime(&tim); +#else + return (time_t)0; #endif } From 5ed35f88cd2beedb1fc6ae198a78253d28ebded3 Mon Sep 17 00:00:00 2001 From: rediskin Date: Tue, 2 May 2017 20:47:11 +0300 Subject: [PATCH 06/27] Improved RX8 cluster operation - clt needle, battery and clt lamps --- firmware/hw_layer/can_hw.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/firmware/hw_layer/can_hw.cpp b/firmware/hw_layer/can_hw.cpp index e54c502685..f915e25441 100644 --- a/firmware/hw_layer/can_hw.cpp +++ b/firmware/hw_layer/can_hw.cpp @@ -150,13 +150,16 @@ static void canMazdaRX8(void) { txmsg.data8[7] = 0x00; // Unused commonTxInit(CAN_MAZDA_RX_STATUS_2); - txmsg.data8[0] = 0x98; //temp gauge //~170 is red, ~165 last bar, 152 centre, 90 first bar, 92 second bar + txmsg.data8[0] = (char)(engine->sensors.clt + 62); //temp gauge //~170 is red, ~165 last bar, 152 centre, 90 first bar, 92 second bar txmsg.data8[1] = 0x00; // something to do with trip meter 0x10, 0x11, 0x17 increments by 0.1 miles txmsg.data8[2] = 0x00; // unknown txmsg.data8[3] = 0x00; //unknown txmsg.data8[4] = 0x01; //Oil Pressure (not really a gauge) txmsg.data8[5] = 0x00; //check engine light txmsg.data8[6] = 0x00; //Coolant, oil and battery + if ((getRpmE(engine)>0) && (engine->sensors.vBatt<13)) setTxBit(6, 6); + if (txmsg.data8[0]>165) setTxBit(6, 1); + //oil pressure warning lamp bit is 7 txmsg.data8[7] = 0x00; //unused sendMessage(); } From 302ef2b3454e903446ec8bca00ed6aa92df40a4e Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 2 May 2017 14:06:36 -0400 Subject: [PATCH 07/27] comments & code style --- firmware/hw_layer/can_hw.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/firmware/hw_layer/can_hw.cpp b/firmware/hw_layer/can_hw.cpp index f915e25441..1511893767 100644 --- a/firmware/hw_layer/can_hw.cpp +++ b/firmware/hw_layer/can_hw.cpp @@ -157,8 +157,12 @@ static void canMazdaRX8(void) { txmsg.data8[4] = 0x01; //Oil Pressure (not really a gauge) txmsg.data8[5] = 0x00; //check engine light txmsg.data8[6] = 0x00; //Coolant, oil and battery - if ((getRpmE(engine)>0) && (engine->sensors.vBatt<13)) setTxBit(6, 6); - if (txmsg.data8[0]>165) setTxBit(6, 1); + if ((getRpmE(engine)>0) && (engine->sensors.vBatt<13)) { + setTxBit(6, 6); // battery light + } + if (engine->sensors.clt > 98) { + setTxBit(6, 1); // coolant light + } //oil pressure warning lamp bit is 7 txmsg.data8[7] = 0x00; //unused sendMessage(); From 3a0dc9c7845d77bbe12f2df71fd768a050cba6b6 Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 2 May 2017 18:05:29 -0400 Subject: [PATCH 08/27] AUX pid stop pin --- firmware/controllers/algo/aux_pid.cpp | 17 ++++++++++++++--- firmware/controllers/algo/aux_pid.h | 2 ++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/firmware/controllers/algo/aux_pid.cpp b/firmware/controllers/algo/aux_pid.cpp index 4e17b9301e..eabb9426c2 100644 --- a/firmware/controllers/algo/aux_pid.cpp +++ b/firmware/controllers/algo/aux_pid.cpp @@ -16,6 +16,7 @@ #include "tunerstudio_configuration.h" #include "fsio_impl.h" #include "engine_math.h" +#include "pin_repository.h" EXTERN_ENGINE ; @@ -119,15 +120,25 @@ static void turnAuxPidOn(int index) { engineConfiguration->auxPidFrequency[index], 0.1, applyPinState); } +void startAuxPins(void) { + for (int i = 0;i Date: Tue, 2 May 2017 18:15:19 -0400 Subject: [PATCH 09/27] better field name --- firmware/console/status_loop.cpp | 2 +- firmware/controllers/algo/engine.cpp | 2 +- firmware/controllers/algo/engine.h | 2 +- firmware/hw_layer/vehicle_speed.cpp | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index 8d144015c0..c34db45de7 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -748,7 +748,7 @@ void updateTunerStudioState(TunerStudioOutputChannels *tsOutputChannels DECLARE_ tsOutputChannels->debugFloatField1 = getVoltage("fsio", engineConfiguration->fsioAdc[0]); } } else if (engineConfiguration->debugMode == DBG_VEHICLE_SPEED_SENSOR) { - tsOutputChannels->debugIntField1 = engine->engineState.vssCounter; + tsOutputChannels->debugIntField1 = engine->engineState.vssDebugEventCounter; } else if (engineConfiguration->debugMode == DBG_SD_CARD) { tsOutputChannels->debugIntField1 = engine->engineState.totalLoggedBytes; } else if (engineConfiguration->debugMode == DBG_CRANKING_DETAILS) { diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index 69c069fb22..ba63937a80 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -146,7 +146,7 @@ EngineState::EngineState() { lastErrorCode = 0; crankingTime = 0; timeSinceCranking = 0; - vssCounter = 0; + vssDebugEventCounter = 0; targetAFR = 0; tpsAccelEnrich = 0; tChargeK = 0; diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 8bd98a6c4d..3b640aa3fd 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -158,7 +158,7 @@ public: float currentVE; float targetAFR; - int vssCounter; + int vssDebugEventCounter; int totalLoggedBytes; diff --git a/firmware/hw_layer/vehicle_speed.cpp b/firmware/hw_layer/vehicle_speed.cpp index 2ca9218814..6869540fcb 100644 --- a/firmware/hw_layer/vehicle_speed.cpp +++ b/firmware/hw_layer/vehicle_speed.cpp @@ -44,7 +44,7 @@ float getVehicleSpeed(void) { } static void vsAnaWidthCallback(void) { - engine->engineState.vssCounter++; + engine->engineState.vssDebugEventCounter++; efitick_t nowNt = getTimeNowNt(); vssDiff = nowNt - lastSignalTimeNt; lastSignalTimeNt = nowNt; @@ -56,7 +56,7 @@ static void speedInfo(void) { scheduleMsg(logger, "c=%f eventCounter=%d speed=%f", engineConfiguration->vehicleSpeedCoef, - engine->engineState.vssCounter, + engine->engineState.vssDebugEventCounter, getVehicleSpeed()); scheduleMsg(logger, "vss diff %d", vssDiff); From 17f671d18cf033de89953b2158614e2b15fc30f8 Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 2 May 2017 18:40:33 -0400 Subject: [PATCH 10/27] stopping AUX pins --- firmware/hw_layer/hardware.cpp | 5 ++++- firmware/rusefi.cpp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index 93a1221097..eeac4920bc 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -40,7 +40,8 @@ #include "svnversion.h" #include "engine_configuration.h" #include "CJ125.h" -#endif +#include "aux_pid.h" +#endif /* EFI_PROD_CODE */ #if EFI_SPEED_DENSITY #include "map_averaging.h" @@ -230,6 +231,7 @@ void applyNewHardwareSettings(void) { stopCanPins(); stopETBPins(); stopVSSPins(); + stopAuxPins(); if (engineConfiguration->bc.is_enabled_spi_1 != activeConfiguration.bc.is_enabled_spi_1) stopSpi(SPI_DEVICE_1); @@ -288,6 +290,7 @@ void applyNewHardwareSettings(void) { startCanPins(); startETBPins(); startVSSPins(); + startAuxPins(); adcConfigListener(engine); } diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index c7db2863fb..52cbb7f6c8 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -251,5 +251,5 @@ int getRusEfiVersion(void) { return 123; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE[0] * 0 != 0) return 3211; // this is here to make the compiler happy about the unused array - return 20170501; + return 20170502; } From ef90ec86ab5f3f1df9a6968d72e6ee9fc195c91f Mon Sep 17 00:00:00 2001 From: rusefi Date: Tue, 2 May 2017 18:40:49 -0400 Subject: [PATCH 11/27] fixing roverV8 config --- firmware/config/engines/rover_v8.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/firmware/config/engines/rover_v8.cpp b/firmware/config/engines/rover_v8.cpp index a3f378e4ec..293db230da 100644 --- a/firmware/config/engines/rover_v8.cpp +++ b/firmware/config/engines/rover_v8.cpp @@ -33,6 +33,8 @@ void setRoverv8(DECLARE_ENGINE_PARAMETER_F) { setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); engineConfiguration->trigger.type = TT_TOOTHED_WHEEL_36_1; + boardConfiguration->is_enabled_spi_2 = false; + boardConfiguration->isHip9011Enabled = false; setFrankenstein_01_LCD(boardConfiguration); engineConfiguration->specs.displacement = 3.528; @@ -114,12 +116,12 @@ void setRoverv8(DECLARE_ENGINE_PARAMETER_F) { /* Stepper logic: boardConfiguration->idle.stepperDirectionPin = GPIOE_10; - boardConfiguration->idle.stepperStepPin = GPIOE_12; - engineConfiguration->stepperEnablePin = GPIOE_14; + boardConfiguration->idle.stepperStepPin = GPIOE_12; // todo: set pin which would not conflict with coils + engineConfiguration->stepperEnablePin = GPIOE_14; // todo: set pin which would not conflict with coils engineConfiguration->idleStepperReactionTime = 10; engineConfiguration->idleStepperTotalSteps = 150; */ - boardConfiguration->useStepperIdle = true; + boardConfiguration->useStepperIdle = false; // set injection_pin_mode 0 boardConfiguration->injectionPinMode = OM_DEFAULT; From 6f31eed86a6560bfb82988aef3bbac3c8e7c7ca8 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 3 May 2017 11:56:59 -0400 Subject: [PATCH 12/27] progress --- misc/git_cheat_sheet.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/misc/git_cheat_sheet.txt b/misc/git_cheat_sheet.txt index 080d1c7807..903304d627 100644 --- a/misc/git_cheat_sheet.txt +++ b/misc/git_cheat_sheet.txt @@ -21,3 +21,22 @@ git submodule update --init Refresh submodules: git submodule update --recursive --remote + +========================================= + +Generate diff of specific commit + + git diff COMMIT^ COMMIT +(this generates diff between previous to COMMIT and COMMIT) +========================================= + +https://help.github.com/articles/configuring-a-remote-for-a-fork/ + +git remote -v +git remote add upstream https://github.com/ChibiOS/ChibiOS.git +git remote -v + +========================================= +https://help.github.com/articles/syncing-a-fork/ + + From cd35084feef95767420efcc8f47e96d9ffce6752 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 3 May 2017 14:53:03 -0400 Subject: [PATCH 13/27] fresh ChibiOS --- firmware/ChibiOS-Contrib | 2 +- firmware/ChibiOS3 | 2 +- firmware/config/stm32f4ems/halconf_community.h | 2 -- java_console/autotest/src/com/rusefi/AutoTest.java | 5 +++++ 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/firmware/ChibiOS-Contrib b/firmware/ChibiOS-Contrib index 97aaabeedd..fa9b5ac5ae 160000 --- a/firmware/ChibiOS-Contrib +++ b/firmware/ChibiOS-Contrib @@ -1 +1 @@ -Subproject commit 97aaabeedd53ec16147696f8b44b16ee43d86a99 +Subproject commit fa9b5ac5ae2f6df6b0b861547260fddde3b37830 diff --git a/firmware/ChibiOS3 b/firmware/ChibiOS3 index a7e847a894..0f416078cc 160000 --- a/firmware/ChibiOS3 +++ b/firmware/ChibiOS3 @@ -1 +1 @@ -Subproject commit a7e847a894dbc8d15e178d63cba1e71d043c3fdf +Subproject commit 0f416078cc00c1bb1be55453adc8dcdc9bb1baf4 diff --git a/firmware/config/stm32f4ems/halconf_community.h b/firmware/config/stm32f4ems/halconf_community.h index 723221ac20..3180c6dcbf 100644 --- a/firmware/config/stm32f4ems/halconf_community.h +++ b/firmware/config/stm32f4ems/halconf_community.h @@ -130,8 +130,6 @@ #define EEPROM_USE_EE25XX TRUE -#define rccEnableCRC(lp) rccEnableAHB(RCC_AHBENR_CRCEN, lp) -#define rccDisableCRC(lp) rccDisableAHB(RCC_AHBENR_CRCEN, lp) /*===========================================================================*/ /* CRC driver settings. */ diff --git a/java_console/autotest/src/com/rusefi/AutoTest.java b/java_console/autotest/src/com/rusefi/AutoTest.java index 83a9e37fcd..da59348a53 100644 --- a/java_console/autotest/src/com/rusefi/AutoTest.java +++ b/java_console/autotest/src/com/rusefi/AutoTest.java @@ -47,6 +47,7 @@ public class AutoTest { // todo? sleep(10); // time to reboot testBmwE34(); testSachs(); + testRoverV8(); testMitsu(); testCamaro(); testCitroenBerlingo(); @@ -266,6 +267,10 @@ public class AutoTest { assertWaveFall(msg, chart, EngineChart.INJECTOR_4, 0.493, x + 540); } + private static void testRoverV8() { + setEngineType(10); + } + private static void testFordFiesta() { setEngineType(4); EngineChart chart; From 8c7f8cf311a1cd451f9ecbd82e53c90d57891c60 Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 3 May 2017 18:08:04 -0400 Subject: [PATCH 14/27] better state validation --- README.md | 1 + firmware/controllers/trigger/trigger_structure.cpp | 2 ++ 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index 036f88fd58..32327d5b6a 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ current binaries are always available at http://rusefi.com/build_server/ | Release date | Revision | Details | | ------------ | --------- | ------- | +| 05/03/2017 | r13967 | improvement: ChibiOS 3.2 | | 04/06/2017 | r13759 | major improvement #72: ChibiOS 3.1 | | 03/26/2017 | r13330 | super annoying bug #336 fixed | | 03/20/2017 | r13233 | improvements #375 & #376: hard FPU mode & migrating to fresh version of arm gcc | diff --git a/firmware/controllers/trigger/trigger_structure.cpp b/firmware/controllers/trigger/trigger_structure.cpp index fc28b49e67..952915ae06 100644 --- a/firmware/controllers/trigger/trigger_structure.cpp +++ b/firmware/controllers/trigger/trigger_structure.cpp @@ -53,6 +53,7 @@ void TriggerShape::calculateTriggerSynchPoint(TriggerState *state DECLARE_ENGINE engine->engineCycleEventCount = getLength(); float firstAngle = getAngle(triggerShapeSynchPointIndex); + assertAngleRange(triggerShapeSynchPointIndex, "firstAngle"); int frontOnlyIndex = 0; @@ -64,6 +65,7 @@ void TriggerShape::calculateTriggerSynchPoint(TriggerState *state DECLARE_ENGINE eventAngles[1] = 0; frontOnlyIndexes[0] = 0; } else { + assertAngleRange(triggerShapeSynchPointIndex, "triggerShapeSynchPointIndex"); int triggerDefinitionCoordinate = (triggerShapeSynchPointIndex + eventIndex) % engine->engineCycleEventCount; efiAssertVoid(engine->engineCycleEventCount != 0, "zero engineCycleEventCount"); int triggerDefinitionIndex = triggerDefinitionCoordinate >= size ? triggerDefinitionCoordinate - size : triggerDefinitionCoordinate; From 31d838132d3324531c0f4e29aa3f46ea1b8198ba Mon Sep 17 00:00:00 2001 From: rusEfi Date: Wed, 3 May 2017 21:24:18 -0400 Subject: [PATCH 15/27] fixed #401 --- firmware/console/status_loop.cpp | 3 ++- firmware/development/sensor_chart.cpp | 2 +- firmware/global.h | 9 +++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/firmware/console/status_loop.cpp b/firmware/console/status_loop.cpp index c34db45de7..2ee685b6ee 100644 --- a/firmware/console/status_loop.cpp +++ b/firmware/console/status_loop.cpp @@ -97,7 +97,8 @@ static void setWarningEnabled(int value) { } #if EFI_FILE_LOGGING || defined(__DOXYGEN__) -static char FILE_LOGGER[1000] CCM_OPTIONAL; +// this one needs to be in main ram so that SD card SPI DMA works fine +static char FILE_LOGGER[1000] MAIN_RAM; static Logging fileLogger("file logger", FILE_LOGGER, sizeof(FILE_LOGGER)); #endif /* EFI_FILE_LOGGING */ diff --git a/firmware/development/sensor_chart.cpp b/firmware/development/sensor_chart.cpp index 33a43ee480..310902f0a4 100644 --- a/firmware/development/sensor_chart.cpp +++ b/firmware/development/sensor_chart.cpp @@ -13,7 +13,7 @@ #if EFI_SENSOR_CHART || defined(__DOXYGEN__) #include "status_loop.h" -static char LOGGING_BUFFER[5000]; +static char LOGGING_BUFFER[5000] CCM_OPTIONAL; static Logging logging("analog chart", LOGGING_BUFFER, sizeof(LOGGING_BUFFER)); static int pendingData = false; diff --git a/firmware/global.h b/firmware/global.h index ef43013675..edfbb5b31a 100644 --- a/firmware/global.h +++ b/firmware/global.h @@ -57,6 +57,15 @@ typedef unsigned int time_t; #define EFI_ERROR_CODE 0xffffffff +#if EFI_USE_CCM && defined __GNUC__ +#define MAIN_RAM __attribute__((section(".ram0"))) +#elif defined __GNUC__ +#define MAIN_RAM +#else +#define MAIN_RAM @ ".ram0" +#endif + + #if EFI_USE_CCM && defined __GNUC__ #define CCM_OPTIONAL __attribute__((section(".ram4"))) #elif defined __GNUC__ From a97994cdb668a2c95c7cde5b62eaacb84e9531d5 Mon Sep 17 00:00:00 2001 From: rusefi Date: Thu, 4 May 2017 17:03:23 -0400 Subject: [PATCH 16/27] telemetry dreams --- firmware/controllers/algo/engine.cpp | 2 +- firmware/controllers/algo/engine.h | 4 ++-- firmware/controllers/settings.cpp | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/firmware/controllers/algo/engine.cpp b/firmware/controllers/algo/engine.cpp index ba63937a80..0ccde37c9d 100644 --- a/firmware/controllers/algo/engine.cpp +++ b/firmware/controllers/algo/engine.cpp @@ -106,7 +106,7 @@ void Engine::reset() { sensorChartMode = SC_OFF; actualLastInjection = 0; isAlternatorControlEnabled = false; - callFromPitEndTime = 0; + callFromPitStopEndTime = 0; wallFuelCorrection = 0; /** * it's important for fixAngle() that engineCycle field never has zero diff --git a/firmware/controllers/algo/engine.h b/firmware/controllers/algo/engine.h index 3b640aa3fd..654596f378 100644 --- a/firmware/controllers/algo/engine.h +++ b/firmware/controllers/algo/engine.h @@ -278,9 +278,9 @@ public: // floatms_t callToPitEndTime; /** - * remote telemetry: if not zero, time to stop flashing 'CALL FROM PIT' light + * remote telemetry: if not zero, time to stop flashing 'CALL FROM PIT STOP' light */ - floatms_t callFromPitEndTime; + floatms_t callFromPitStopEndTime; /** * This flag indicated a big enough problem that engine control would be diff --git a/firmware/controllers/settings.cpp b/firmware/controllers/settings.cpp index 047f0fdce6..77c5f042fe 100644 --- a/firmware/controllers/settings.cpp +++ b/firmware/controllers/settings.cpp @@ -438,6 +438,10 @@ static void printTemperatureInfo(void) { #endif /* EFI_ANALOG_SENSORS */ } +static void setCallFromPitStop(int durationMs) { + engine->callFromPitStopEndTime = currentTimeMillis() + durationMs; +} + static void setCrankingRpm(int value) { engineConfiguration->cranking.rpm = value; doPrintConfiguration(engine); @@ -1024,6 +1028,7 @@ static void setTpsErrorDetectionTooHigh(int v) { } command_i_s commandsI[] = {{"ignition_mode", setIgnitionMode}, + {"call_from_pitstop", setCallFromPitStop}, {"cranking_rpm", setCrankingRpm}, {"cranking_injection_mode", setCrankingInjectionMode}, {"injection_mode", setInjectionMode}, From 5f4d3b789b730a20a660d284a5146a0bdae6eeba Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 12:11:18 -0400 Subject: [PATCH 17/27] #404 --- firmware/config/engines/rover_v8.cpp | 1 + firmware/controllers/trigger/trigger_structure.cpp | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/firmware/config/engines/rover_v8.cpp b/firmware/config/engines/rover_v8.cpp index 293db230da..e6fbcc5782 100644 --- a/firmware/config/engines/rover_v8.cpp +++ b/firmware/config/engines/rover_v8.cpp @@ -31,6 +31,7 @@ EXTERN_ENGINE; void setRoverv8(DECLARE_ENGINE_PARAMETER_F) { setOperationMode(engineConfiguration, FOUR_STROKE_CRANK_SENSOR); + // set trigger_type 9 engineConfiguration->trigger.type = TT_TOOTHED_WHEEL_36_1; boardConfiguration->is_enabled_spi_2 = false; diff --git a/firmware/controllers/trigger/trigger_structure.cpp b/firmware/controllers/trigger/trigger_structure.cpp index 952915ae06..f3b1a5f6f3 100644 --- a/firmware/controllers/trigger/trigger_structure.cpp +++ b/firmware/controllers/trigger/trigger_structure.cpp @@ -51,6 +51,7 @@ void TriggerShape::calculateTriggerSynchPoint(TriggerState *state DECLARE_ENGINE triggerShapeSynchPointIndex = findTriggerZeroEventIndex(state, this, triggerConfig PASS_ENGINE_PARAMETER); engine->engineCycleEventCount = getLength(); + efiAssertVoid(engine->engineCycleEventCount > 0, "shapeLength=0"); float firstAngle = getAngle(triggerShapeSynchPointIndex); assertAngleRange(triggerShapeSynchPointIndex, "firstAngle"); @@ -262,7 +263,7 @@ angle_t TriggerShape::getAngle(int index) const { * See also trigger_central.cpp * See also getEngineCycleEventCount() */ - + efiAssert(size != 0, "shapeSize=0", NAN); int crankCycle = index / size; int remainder = index % size; From 5e0fb8c5672e12bec90b8340bb858ccf494f2323 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 15:57:15 -0400 Subject: [PATCH 18/27] fix #404 --- firmware/controllers/algo/obd_error_codes.h | 4 ++-- firmware/controllers/trigger/trigger_structure.cpp | 12 +++++++++--- firmware/rusefi.cpp | 2 +- firmware/util/cli_registry.cpp | 2 +- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/firmware/controllers/algo/obd_error_codes.h b/firmware/controllers/algo/obd_error_codes.h index b8125fc129..a09b02e331 100644 --- a/firmware/controllers/algo/obd_error_codes.h +++ b/firmware/controllers/algo/obd_error_codes.h @@ -1838,11 +1838,11 @@ typedef enum { CUSTOM_ERR_PIN_ALREADY_USED_2 = 6134, CUSTOM_ERR_ICU_STATE = 6135, CUSTOM_ERR_TCHARGE_NOT_READY = 6136, - CUSTOM_ERR_6137 = 6137, + CUSTOM_ERR_TRIGGER_SHAPE_TOO_LONG = 6137, CUSTOM_ERR_FUEL_TABLE_NOT_READY = 6138, CUSTOM_ERR_TCHARGE_NOT_READY2 = 6139, - CUSTOM_ERR_6140 = 6140, + CUSTOM_ERR_COMMAND_LOWER_CASE_EXPECTED = 6140, CUSTOM_ERR_FLASH_CRC_FAILED = 6141, CUSTOM_ERR_NOT_INPUT_PIN = 6142, CUSTOM_ERR_SKIPPED_TOOTH_SHAPE = 6143, diff --git a/firmware/controllers/trigger/trigger_structure.cpp b/firmware/controllers/trigger/trigger_structure.cpp index f3b1a5f6f3..39113a1242 100644 --- a/firmware/controllers/trigger/trigger_structure.cpp +++ b/firmware/controllers/trigger/trigger_structure.cpp @@ -50,15 +50,21 @@ void TriggerShape::calculateTriggerSynchPoint(TriggerState *state DECLARE_ENGINE triggerShapeSynchPointIndex = findTriggerZeroEventIndex(state, this, triggerConfig PASS_ENGINE_PARAMETER); - engine->engineCycleEventCount = getLength(); - efiAssertVoid(engine->engineCycleEventCount > 0, "shapeLength=0"); + int length = getLength(); + engine->engineCycleEventCount = length; + efiAssertVoid(length > 0, "shapeLength=0"); + if (length >= PWM_PHASE_MAX_COUNT) { + warning(CUSTOM_ERR_TRIGGER_SHAPE_TOO_LONG, "Count above %d", length); + shapeDefinitionError = true; + return; + } float firstAngle = getAngle(triggerShapeSynchPointIndex); assertAngleRange(triggerShapeSynchPointIndex, "firstAngle"); int frontOnlyIndex = 0; - for (int eventIndex = 0; eventIndex < engine->engineCycleEventCount; eventIndex++) { + for (int eventIndex = 0; eventIndex < length; eventIndex++) { if (eventIndex == 0) { // explicit check for zero to avoid issues where logical zero is not exactly zero due to float nature eventAngles[0] = 0; diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index 52cbb7f6c8..d52ee26e26 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -251,5 +251,5 @@ int getRusEfiVersion(void) { return 123; // this is here to make the compiler happy about the unused array if (UNUSED_CCM_SIZE[0] * 0 != 0) return 3211; // this is here to make the compiler happy about the unused array - return 20170502; + return 20170505; } diff --git a/firmware/util/cli_registry.cpp b/firmware/util/cli_registry.cpp index afd6ea8c2f..222615ebde 100644 --- a/firmware/util/cli_registry.cpp +++ b/firmware/util/cli_registry.cpp @@ -50,7 +50,7 @@ static void doAddAction(const char *token, action_type_e type, Void callback, vo for (int i = 0; i< efiStrlen(token);i++) { char ch = token[i]; if (ch != mytolower(ch)) { - firmwareError(CUSTOM_ERR_6140, "lowerCase expected [%s]", token); + firmwareError(CUSTOM_ERR_COMMAND_LOWER_CASE_EXPECTED, "lowerCase expected [%s]", token); } } current->token = token; From 4241ce2ad34dae4ce46c4902022f22a83747bfff Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 16:00:40 -0400 Subject: [PATCH 19/27] readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 32327d5b6a..236519e21d 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ current binaries are always available at http://rusefi.com/build_server/ | Release date | Revision | Details | | ------------ | --------- | ------- | +| 05/05/2017 | r13974 | bugfix #404: 36/1 FATAL error: angle range trgSync | | 05/03/2017 | r13967 | improvement: ChibiOS 3.2 | | 04/06/2017 | r13759 | major improvement #72: ChibiOS 3.1 | | 03/26/2017 | r13330 | super annoying bug #336 fixed | From 4d92b23b8df02415f5a06167ec1202571434523c Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 16:40:12 -0400 Subject: [PATCH 20/27] donate button to GH homepage --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 236519e21d..384848b73d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ current binaries are always available at http://rusefi.com/build_server/ - +[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YSSN35GWYS3A) #Releases From c81e4647e6b6961287494369c62f7d2e71f3da15 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 16:42:13 -0400 Subject: [PATCH 21/27] adding store link --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 384848b73d..1166f48420 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,9 @@ current binaries are always available at http://rusefi.com/build_server/ [![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=6YSSN35GWYS3A) + +[![Tindie](http://rusefi.com/wiki/images/1/1c/Tindie-smalls.png)](https://www.tindie.com/stores/russian/) + #Releases | Release date | Revision | Details | From 1e1eebff88d8f315f1ce8a0b082f6b760ae76df0 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 19:14:24 -0400 Subject: [PATCH 22/27] #401 --- firmware/config/engines/mazda_miata_vvt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/config/engines/mazda_miata_vvt.cpp b/firmware/config/engines/mazda_miata_vvt.cpp index e6329d3004..8e4673dbf1 100644 --- a/firmware/config/engines/mazda_miata_vvt.cpp +++ b/firmware/config/engines/mazda_miata_vvt.cpp @@ -180,7 +180,7 @@ void setMazdaMiata2003EngineConfiguration(DECLARE_ENGINE_PARAMETER_F) { boardConfiguration->alternatorControlPin = GPIOE_10; boardConfiguration->alternatorControlPinMode = OM_OPENDRAIN; -// boardConfiguration->vehicleSpeedSensorInputPin = GPIOA_8; // https://github.com/rusefi/rusefi/issues/401 + boardConfiguration->vehicleSpeedSensorInputPin = GPIOA_8; // enable altdebug engineConfiguration->targetVBatt = 13.8; From b8a881855463c2f4f0c87240425536654c7d9aba Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 21:05:59 -0400 Subject: [PATCH 23/27] digital input stop --- firmware/hw_layer/digital_input_hw.cpp | 23 +++++++++++++++++++++++ firmware/hw_layer/digital_input_hw.h | 1 + firmware/hw_layer/vehicle_speed.cpp | 3 +-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/firmware/hw_layer/digital_input_hw.cpp b/firmware/hw_layer/digital_input_hw.cpp index bd0b2ed4f2..e8d6ab675c 100644 --- a/firmware/hw_layer/digital_input_hw.cpp +++ b/firmware/hw_layer/digital_input_hw.cpp @@ -189,12 +189,35 @@ digital_input_s * initWaveAnalyzerDriver(const char *msg, brain_pin_e brainPin) digital_input_s *hw = registeredIcus.add(); hw->widthListeners.clear(); hw->periodListeners.clear(); + hw->started = false; hw->brainPin = brainPin; hw->driver = driver; turnOnCapturePin(msg, brainPin); return hw; } +void stopWaveAnalyzerDriver(const char *msg, brain_pin_e brainPin) { + if (brainPin == GPIO_UNASSIGNED) { + return; + } + unmarkPin(brainPin); + + ICUDriver *driver = getInputCaptureDriver(msg, brainPin); + if (driver == NULL) { + return; + } + int regSize = registeredIcus.size; + for (int i = 0; i < regSize; i++) { + if (registeredIcus.elements[i].driver == driver) { + // removing from driver from the list of used drivers + memcpy(®isteredIcus.elements[i], ®isteredIcus.elements[regSize - 1], + sizeof(digital_input_s)); + registeredIcus.size--; + return; + } + } +} + void startInputDriver(digital_input_s *hw, bool isActiveHigh) { hw->isActiveHigh = isActiveHigh; if (hw->isActiveHigh) { diff --git a/firmware/hw_layer/digital_input_hw.h b/firmware/hw_layer/digital_input_hw.h index 6411ac8ad6..af70656293 100644 --- a/firmware/hw_layer/digital_input_hw.h +++ b/firmware/hw_layer/digital_input_hw.h @@ -28,6 +28,7 @@ digital_input_s *initWaveAnalyzerDriver(const char *msg, brain_pin_e brainPin); void startInputDriver(digital_input_s *hw, bool isActiveHigh); ICUDriver * getInputCaptureDriver(const char *msg, brain_pin_e hwPin); icuchannel_t getInputCaptureChannel(brain_pin_e hwPin); +void stopWaveAnalyzerDriver(const char *msg, brain_pin_e brainPin); #endif diff --git a/firmware/hw_layer/vehicle_speed.cpp b/firmware/hw_layer/vehicle_speed.cpp index 6869540fcb..813a75894a 100644 --- a/firmware/hw_layer/vehicle_speed.cpp +++ b/firmware/hw_layer/vehicle_speed.cpp @@ -67,8 +67,7 @@ bool hasVehicleSpeedSensor() { } void stopVSSPins(void) { - unmarkPin(activeConfiguration.bc.vehicleSpeedSensorInputPin); - // todo: remove driver from registeredIcus + stopWaveAnalyzerDriver("VSS", activeConfiguration.bc.vehicleSpeedSensorInputPin); } void startVSSPins(void) { From a2d082eeea43ecff19ebb69df10b7d9a42d39da5 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 21:50:22 -0400 Subject: [PATCH 24/27] better pin stop? --- firmware/hw_layer/digital_input_hw.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/firmware/hw_layer/digital_input_hw.cpp b/firmware/hw_layer/digital_input_hw.cpp index e8d6ab675c..e611c2a4f0 100644 --- a/firmware/hw_layer/digital_input_hw.cpp +++ b/firmware/hw_layer/digital_input_hw.cpp @@ -213,6 +213,8 @@ void stopWaveAnalyzerDriver(const char *msg, brain_pin_e brainPin) { memcpy(®isteredIcus.elements[i], ®isteredIcus.elements[regSize - 1], sizeof(digital_input_s)); registeredIcus.size--; + icuDisableNotificationsI(driver); + icuStop(driver); return; } } From 9ba57478407beec9d0d8a5ee6c9e7eacd9b17376 Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 5 May 2017 22:18:51 -0400 Subject: [PATCH 25/27] poke --- firmware/svnversion.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firmware/svnversion.h b/firmware/svnversion.h index 15c0cd07a5..713e6dff4f 100644 --- a/firmware/svnversion.h +++ b/firmware/svnversion.h @@ -1,5 +1,5 @@ // This file was generated by Version2Header -// Mon May 01 22:16:55 EEST 2017 +// Fri May 05 22:18:39 EDT 2017 #ifndef VCS_VERSION -#define VCS_VERSION "13950" +#define VCS_VERSION "13988" #endif From 5ff4875aea8d4289f6ddaea54b8c0a2ba1e35887 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 6 May 2017 08:17:57 -0400 Subject: [PATCH 26/27] poke --- firmware/svnversion.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firmware/svnversion.h b/firmware/svnversion.h index 713e6dff4f..6e9abd8caa 100644 --- a/firmware/svnversion.h +++ b/firmware/svnversion.h @@ -1,5 +1,5 @@ // This file was generated by Version2Header -// Fri May 05 22:18:39 EDT 2017 +// Sat May 06 08:17:42 EDT 2017 #ifndef VCS_VERSION -#define VCS_VERSION "13988" +#define VCS_VERSION "13989" #endif From 12ab5e69b3b0556761133fa8547800ec94d582f4 Mon Sep 17 00:00:00 2001 From: Andrei Date: Sat, 6 May 2017 21:54:47 +0300 Subject: [PATCH 27/27] boardTestModeJumperPin unassigned fix pull request --- firmware/hw_layer/hardware.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/firmware/hw_layer/hardware.cpp b/firmware/hw_layer/hardware.cpp index eeac4920bc..e75a28ddb3 100644 --- a/firmware/hw_layer/hardware.cpp +++ b/firmware/hw_layer/hardware.cpp @@ -374,14 +374,17 @@ void initHardware(Logging *l) { initTriggerDecoder(); #endif - mySetPadMode2("board test", boardConfiguration->boardTestModeJumperPin, - PAL_MODE_INPUT_PULLUP); - bool isBoardTestMode_b = (!palReadPad(getHwPort(boardConfiguration->boardTestModeJumperPin), getHwPin(boardConfiguration->boardTestModeJumperPin))); - - // we can now relese this pin, it is actually used as output sometimes - unmarkPin(boardConfiguration->boardTestModeJumperPin); - + bool isBoardTestMode_b; + if (boardConfiguration->boardTestModeJumperPin != GPIO_UNASSIGNED) { + mySetPadMode2("board test", boardConfiguration->boardTestModeJumperPin, + PAL_MODE_INPUT_PULLUP); + isBoardTestMode_b = (!palReadPad(getHwPort(boardConfiguration->boardTestModeJumperPin), getHwPin(boardConfiguration->boardTestModeJumperPin))); + // we can now relese this pin, it is actually used as output sometimes + unmarkPin(boardConfiguration->boardTestModeJumperPin); + } else { + isBoardTestMode_b = false; + } #if HAL_USE_ADC || defined(__DOXYGEN__) initAdcInputs(isBoardTestMode_b);