diff --git a/firmware/config/boards/hellen/small-can-board/board.mk b/firmware/config/boards/hellen/small-can-board/board.mk index d74665879a..67e84b1e30 100644 --- a/firmware/config/boards/hellen/small-can-board/board.mk +++ b/firmware/config/boards/hellen/small-can-board/board.mk @@ -17,11 +17,12 @@ DDEFS += -DEFI_SHAFT_POSITION_INPUT=FALSE DDEFS += -DEFI_ALTERNATOR_CONTROL=FALSE DDEFS += -DEFI_VVT_PID=FALSE DDEFS += -DEFI_EMULATE_POSITION_SENSORS=FALSE -DDEFS += -DEFI_MAP_AVERAGING=FALSE DDEFS += -DEFI_HPFP=FALSE DDEFS += -DEFI_TOOTH_LOGGER=FALSE DDEFS += -DRAM_UNUSED_SIZE=100 +NO_MAP_AVERAGING = yes + DDEFS += -DHW_SMALL_CAN_BOARD=1 #Mass Storage diff --git a/firmware/config/stm32f4ems/efifeatures.h b/firmware/config/stm32f4ems/efifeatures.h index 243b6ac985..421b684b94 100644 --- a/firmware/config/stm32f4ems/efifeatures.h +++ b/firmware/config/stm32f4ems/efifeatures.h @@ -302,10 +302,6 @@ //#define EFI_MALFUNCTION_INDICATOR FALSE #endif -#ifndef EFI_MAP_AVERAGING -#define EFI_MAP_AVERAGING TRUE -#endif - // todo: most of this should become configurable // todo: switch to continuous ADC conversion for fast ADC? diff --git a/firmware/controllers/engine_controller.cpp b/firmware/controllers/engine_controller.cpp index 19805bf271..068ad14386 100644 --- a/firmware/controllers/engine_controller.cpp +++ b/firmware/controllers/engine_controller.cpp @@ -513,9 +513,9 @@ void commonInitEngineController() { initElectronicThrottle(); #endif /* EFI_ELECTRONIC_THROTTLE_BODY */ -#if EFI_MAP_AVERAGING +#ifdef MODULE_MAP_AVERAGING initMapAveraging(); -#endif /* EFI_MAP_AVERAGING */ +#endif /* MODULE_MAP_AVERAGING */ #if EFI_BOOST_CONTROL initBoostCtrl(); diff --git a/firmware/controllers/modules/map_averaging/map_averaging.cpp b/firmware/controllers/modules/map_averaging/map_averaging.cpp index edf088534d..8236ae511d 100644 --- a/firmware/controllers/modules/map_averaging/map_averaging.cpp +++ b/firmware/controllers/modules/map_averaging/map_averaging.cpp @@ -23,8 +23,6 @@ #include "pch.h" -#if EFI_MAP_AVERAGING - #include "trigger_central.h" #if EFI_SENSOR_CHART @@ -78,6 +76,11 @@ static void startAveraging(sampler* s) { { endAveraging, &averager }); } +void MapAverager::showInfo(const char* sensorName) const { + const auto value = get(); + efiPrintf("Sensor \"%s\" is MAP averager: valid: %s value: %.2f averaged sample count: %d", sensorName, boolToString(value.Valid), value.Value, m_lastCounter); +} + void MapAverager::start(uint8_t cylinderIndex) { chibios_rt::CriticalSectionLocker csl; @@ -245,5 +248,3 @@ void MapAveragingModule::onConfigurationChange(engine_configuration_s const * pr void initMapAveraging() { applyMapMinBufferLength(); } - -#endif /* EFI_MAP_AVERAGING */ diff --git a/firmware/controllers/modules/map_averaging/map_averaging.h b/firmware/controllers/modules/map_averaging/map_averaging.h index f0e63195ac..862bf5108c 100644 --- a/firmware/controllers/modules/map_averaging/map_averaging.h +++ b/firmware/controllers/modules/map_averaging/map_averaging.h @@ -9,15 +9,11 @@ #include "sensor_converter_func.h" -#if EFI_MAP_AVERAGING - void initMapAveraging(); // allow smoothing up to number of cylinders #define MAX_MAP_BUFFER_LENGTH (MAX_CYLINDER_COUNT) -#endif /* EFI_MAP_AVERAGING */ - class MapAverager : public StoredValueSensor { public: MapAverager(SensorType type, efidur_t timeout) @@ -50,7 +46,6 @@ MapAverager& getMapAvg(size_t idx); class MapAveragingModule : public EngineModule { public: -#if EFI_MAP_AVERAGING void onConfigurationChange(engine_configuration_s const * previousConfig); void onFastCallback() override; @@ -60,5 +55,4 @@ public: float nextPhase) override; void submitSample(float volts); -#endif // EFI_MAP_AVERAGING }; diff --git a/firmware/controllers/modules/modules.mk b/firmware/controllers/modules/modules.mk index c149ca5d9f..e9097266c6 100644 --- a/firmware/controllers/modules/modules.mk +++ b/firmware/controllers/modules/modules.mk @@ -1,5 +1,8 @@ include $(PROJECT_DIR)/controllers/modules/fan/fan.mk include $(PROJECT_DIR)/controllers/modules/fuel_pump/fuel_pump.mk include $(PROJECT_DIR)/controllers/modules/gear_detector/gear_detector.mk -include $(PROJECT_DIR)/controllers/modules/map_averaging/map_averaging.mk include $(PROJECT_DIR)/controllers/modules/trip_odometer/trip_odometer.mk + +ifeq ($(NO_MAP_AVERAGING),) + include $(PROJECT_DIR)/controllers/modules/map_averaging/map_averaging.mk +endif diff --git a/firmware/controllers/sensors/impl/map.cpp b/firmware/controllers/sensors/impl/map.cpp index 91369f2999..3c28bfe25a 100644 --- a/firmware/controllers/sensors/impl/map.cpp +++ b/firmware/controllers/sensors/impl/map.cpp @@ -31,12 +31,12 @@ static void printMAPInfo() { #if EFI_ANALOG_SENSORS efiPrintf("instant value=%.2fkPa", Sensor::getOrZero(SensorType::Map)); -#if EFI_MAP_AVERAGING +#ifdef MODULE_MAP_AVERAGING efiPrintf("map type=%d/%s MAP=%.2fkPa mapMinBufferLength=%d", engineConfiguration->map.sensor.type, getAir_pressure_sensor_type_e(engineConfiguration->map.sensor.type), Sensor::getOrZero(SensorType::Map), mapMinBufferLength); -#endif // EFI_MAP_AVERAGING +#endif // MODULE_MAP_AVERAGING adc_channel_e mapAdc = engineConfiguration->map.sensor.hwChannel; char pinNameBuffer[16]; diff --git a/firmware/controllers/sensors/sensor_info_printing.cpp b/firmware/controllers/sensors/sensor_info_printing.cpp index 4fe617d5a4..fdd3cbb3ab 100644 --- a/firmware/controllers/sensors/sensor_info_printing.cpp +++ b/firmware/controllers/sensors/sensor_info_printing.cpp @@ -68,11 +68,6 @@ void Lps25Sensor::showInfo(const char* sensorName) const { efiPrintf("%s: LPS25 baro %.2f kPa", sensorName, get().Value); } -void MapAverager::showInfo(const char* sensorName) const { - const auto value = get(); - efiPrintf("Sensor \"%s\" is MAP averager: valid: %s value: %.2f averaged sample count: %d", sensorName, boolToString(value.Valid), value.Value, m_lastCounter); -} - void LinearFunc::showInfo(float testRawValue) const { efiPrintf(" Linear function slope: %.2f offset: %.2f min: %.1f max: %.1f", m_a, m_b, m_minOutput, m_maxOutput); const auto value = convert(testRawValue); diff --git a/firmware/init/sensor/init_map.cpp b/firmware/init/sensor/init_map.cpp index f41fe5ea2f..5cf5070457 100644 --- a/firmware/init/sensor/init_map.cpp +++ b/firmware/init/sensor/init_map.cpp @@ -16,6 +16,7 @@ static FunctionalSensor slowMapSensor2(SensorType::MapSlow2, MS2NT(50)); static FunctionalSensor compressorDischargePress(SensorType::CompressorDischargePressure, MS2NT(50)); static FunctionalSensor throttleInletPress(SensorType::ThrottleInletPressure, MS2NT(50)); +#ifdef MODULE_MAP_AVERAGING // lowest reasonable idle is maybe 600 rpm // one sample per cycle (1 cylinder, or "sample one cyl" mode) gives a period of 100ms // add some margin -> 200ms timeout for fast MAP sampling @@ -25,6 +26,7 @@ MapAverager fastMapSensor2(SensorType::MapFast2, MS2NT(200)); MapAverager& getMapAvg(size_t idx) { return idx == 0 ? fastMapSensor : fastMapSensor2; } +#endif // MODULE_MAP_AVERAGING // Combine MAP sensors: prefer fast sensor, but use slow if fast is unavailable. static FallbackSensor mapCombiner(SensorType::Map, SensorType::MapFast, SensorType::MapSlow); @@ -102,8 +104,10 @@ void initMap() { slowMapSensor.setFunction(mapConverter); slowMapSensor2.setFunction(mapConverter); +#ifdef MODULE_MAP_AVERAGING fastMapSensor.setFunction(mapConverter); fastMapSensor2.setFunction(mapConverter); +#endif // MODULE_MAP_AVERAGING compressorDischargePress.setFunction(mapConverter); throttleInletPress.setFunction(mapConverter); @@ -111,8 +115,10 @@ void initMap() { if (isAdcChannelValid(mapChannel)) { slowMapSensor.Register(); slowMapSensor2.Register(); +#ifdef MODULE_MAP_AVERAGING fastMapSensor.Register(); fastMapSensor2.Register(); +#endif // MODULE_MAP_AVERAGING mapCombiner.Register(); mapCombiner2.Register(); diff --git a/simulator/simulator/efifeatures.h b/simulator/simulator/efifeatures.h index a1dcdbf34b..2842419837 100644 --- a/simulator/simulator/efifeatures.h +++ b/simulator/simulator/efifeatures.h @@ -67,7 +67,6 @@ #define EFI_USE_UART_DMA FALSE -#define EFI_MAP_AVERAGING TRUE #define EFI_ALTERNATOR_CONTROL TRUE #define EFI_ENGINE_AUDI_AAN FALSE diff --git a/unit_tests/efifeatures.h b/unit_tests/efifeatures.h index c4fd5a0442..7637dbf147 100644 --- a/unit_tests/efifeatures.h +++ b/unit_tests/efifeatures.h @@ -68,8 +68,6 @@ #define EFI_BOARD_TEST FALSE -#define EFI_MAP_AVERAGING TRUE - #define EFI_LUA TRUE #define EFI_HPFP TRUE