From ae7820f86368b0a6f6d7204c6b005be8ce02744e Mon Sep 17 00:00:00 2001 From: rusEfi Date: Fri, 31 Oct 2014 13:05:18 -0500 Subject: [PATCH] auto-sync --- firmware/config/engines/dodge_neon.cpp | 2 ++ firmware/controllers/algo/ec2.h | 2 ++ .../controllers/algo/engine_configuration.cpp | 6 ++++-- .../controllers/algo/engine_configuration.h | 7 ++++++- firmware/controllers/engine_controller.cpp | 19 +++++++++++-------- firmware/controllers/sensors/thermistors.cpp | 12 ++++++++---- firmware/rusefi.cpp | 2 +- 7 files changed, 34 insertions(+), 16 deletions(-) diff --git a/firmware/config/engines/dodge_neon.cpp b/firmware/config/engines/dodge_neon.cpp index f158caaf4a..6b5930c113 100644 --- a/firmware/config/engines/dodge_neon.cpp +++ b/firmware/config/engines/dodge_neon.cpp @@ -51,6 +51,8 @@ void setDodgeNeon1995EngineConfiguration(engine_configuration_s *engineConfigura engineConfiguration->algorithm = LM_ALPHA_N; + engineConfiguration->hasIatSensor = false; + // set_rpm_hard_limit 4000 engineConfiguration->rpmHardLimit = 4000; // yes, 4k. let's play it safe for now // set_cranking_rpm 550 diff --git a/firmware/controllers/algo/ec2.h b/firmware/controllers/algo/ec2.h index 5168114e12..648bd9345a 100644 --- a/firmware/controllers/algo/ec2.h +++ b/firmware/controllers/algo/ec2.h @@ -44,6 +44,8 @@ class engine_configuration2_s { public: engine_configuration2_s(); + engine_configuration_s *engineConfiguration; + Thermistor iat; Thermistor clt; diff --git a/firmware/controllers/algo/engine_configuration.cpp b/firmware/controllers/algo/engine_configuration.cpp index ea7ea42d5e..ee8e882161 100644 --- a/firmware/controllers/algo/engine_configuration.cpp +++ b/firmware/controllers/algo/engine_configuration.cpp @@ -240,8 +240,10 @@ void setDefaultConfiguration(engine_configuration_s *engineConfiguration, board_ engineConfiguration->diffLoadEnrichmentCoef = 1; - engineConfiguration->hasMapSensor = TRUE; - engineConfiguration->hasCltSensor = TRUE; + engineConfiguration->hasMapSensor = true; + engineConfiguration->hasAfrSensor = true; + engineConfiguration->hasCltSensor = true; + engineConfiguration->hasBaroSensor = false; boardConfiguration->idleSolenoidFrequency = 200; // engineConfiguration->idleMode = IM_AUTO; diff --git a/firmware/controllers/algo/engine_configuration.h b/firmware/controllers/algo/engine_configuration.h index 3ec6e5d019..8543a7e220 100644 --- a/firmware/controllers/algo/engine_configuration.h +++ b/firmware/controllers/algo/engine_configuration.h @@ -14,6 +14,7 @@ #include "sensor_types.h" #include "can_header.h" #include "rusefi_enums.h" +#include "global.h" #define MOCK_UNDEFINED -1 @@ -422,7 +423,11 @@ typedef struct { board_configuration_s bc; - int hasMapSensor; + bool_t hasMapSensor : 1; // bit 0 + bool_t hasIatSensor : 1; // bit 1 + bool_t hasBaroSensor : 1; // bit 1 + bool_t hasAfrSensor : 1; // bit 2 + // that's the next 32 bit field int hasCltSensor; idle_mode_e idleMode; diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index d8d5cf860c..1d000d7a32 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -189,11 +189,10 @@ static void cylinderCleanupControl(Engine *engine) { } static void handleGpio(Engine *engine, int index) { - if(boardConfiguration->gpioPins[index]==GPIO_NONE) + if (boardConfiguration->gpioPins[index] == GPIO_NONE) return; - io_pin_e pin = (io_pin_e)((int)GPIO_0 + index); - + io_pin_e pin = (io_pin_e) ((int) GPIO_0 + index); int value = calc.getValue2(fuelPumpLogic, engine); if (value != getOutputPinValue(pin)) { @@ -245,13 +244,13 @@ static void onEvenyGeneralMilliseconds(Engine *engine) { // schedule next invocation chVTSetAny(&everyMsTimer, boardConfiguration->generalPeriodicThreadPeriod * TICKS_IN_MS, - (vtfunc_t)&onEvenyGeneralMilliseconds, engine); + (vtfunc_t) &onEvenyGeneralMilliseconds, engine); } static void initPeriodicEvents(Engine *engine) { // schedule first invocation chVTSetAny(&everyMsTimer, boardConfiguration->generalPeriodicThreadPeriod * TICKS_IN_MS, - (vtfunc_t)&onEvenyGeneralMilliseconds, engine); + (vtfunc_t) &onEvenyGeneralMilliseconds, engine); } //static void fuelPumpOff(void *arg) { @@ -303,11 +302,15 @@ static void printAnalogChannelInfo(const char *name, adc_channel_e hwChannel) { static void printAnalogInfo(void) { printAnalogChannelInfo("TPS", engineConfiguration->tpsAdcChannel); printAnalogChannelInfo("CLT", engineConfiguration->cltAdcChannel); - printAnalogChannelInfo("IAT", engineConfiguration->iatAdcChannel); + if (engineConfiguration->hasIatSensor) { + printAnalogChannelInfo("IAT", engineConfiguration->iatAdcChannel); + } printAnalogChannelInfo("MAF", engineConfiguration->mafAdcChannel); printAnalogChannelInfo("AFR", engineConfiguration->afrSensor.afrAdcChannel); printAnalogChannelInfo("MAP", engineConfiguration->map.sensor.hwChannel); - printAnalogChannelInfo("BARO", engineConfiguration->baroSensor.hwChannel); + if (engineConfiguration->hasBaroSensor) { + printAnalogChannelInfo("BARO", engineConfiguration->baroSensor.hwChannel); + } printAnalogChannelInfoExt("Vbatt", engineConfiguration->vbattAdcChannel, getVBatt()); } @@ -421,7 +424,7 @@ void initEngineContoller(Engine *engine) { //mySetPadMode2("user-defined", boardConfiguration->gpioPins[i], PAL_STM32_MODE_OUTPUT); - io_pin_e pin = (io_pin_e)((int)GPIO_0 + i); + io_pin_e pin = (io_pin_e) ((int) GPIO_0 + i); outputPinRegisterExt2(getPinName(pin), pin, boardConfiguration->gpioPins[i], &d); } } diff --git a/firmware/controllers/sensors/thermistors.cpp b/firmware/controllers/sensors/thermistors.cpp index 7b588ef5d7..11ce32fba7 100644 --- a/firmware/controllers/sensors/thermistors.cpp +++ b/firmware/controllers/sensors/thermistors.cpp @@ -34,9 +34,9 @@ float getR1InVoltageDividor(float Vout, float Vin, float r2) { } float getR2InVoltageDividor(float Vout, float Vin, float r1) { - if (Vout == 0) { + if (Vout == 0) { return NAN; - } + } return r1 / (Vin / Vout - 1); } @@ -110,7 +110,9 @@ bool isValidIntakeAirTemperature(float temperature) { float getCoolantTemperature(engine_configuration2_s * engineConfiguration2) { float temperature = getTemperatureC(&engineConfiguration2->clt); if (!isValidCoolantTemperature(temperature)) { - warning(OBD_PCM_Processor_Fault, "unrealistic CLT %f", temperature); + if (engineConfiguration2->engineConfiguration->hasCltSensor) { + warning(OBD_PCM_Processor_Fault, "unrealistic CLT %f", temperature); + } return LIMPING_MODE_CLT_TEMPERATURE; } return temperature; @@ -155,7 +157,9 @@ void prepareThermistorCurve(ThermistorConf * config) { float getIntakeAirTemperature(engine_configuration2_s * engineConfiguration2) { float temperature = getTemperatureC(&engineConfiguration2->iat); if (!isValidIntakeAirTemperature(temperature)) { - warning(OBD_PCM_Processor_Fault, "unrealistic IAT %f", temperature); + if (engineConfiguration2->engineConfiguration->hasIatSensor) { + warning(OBD_PCM_Processor_Fault, "unrealistic IAT %f", temperature); + } return LIMPING_MODE_IAT_TEMPERATURE; } return temperature; diff --git a/firmware/rusefi.cpp b/firmware/rusefi.cpp index fa21d7eee4..c1ade0906e 100644 --- a/firmware/rusefi.cpp +++ b/firmware/rusefi.cpp @@ -143,7 +143,7 @@ void runRusEfi(void) { // that's dirty, this assignment should be nicer or in a better spot engine.engineConfiguration = engineConfiguration; engine.engineConfiguration2 = engineConfiguration2; - + engineConfiguration2->engineConfiguration = engineConfiguration; initErrorHandling();