fome-fw/firmware/controllers/algo/engine_configuration.h

86 lines
3.5 KiB
C
Raw Normal View History

2015-07-10 06:01:56 -07:00
/**
* @file engine_configuration.h
* @brief Main engine configuration data structure.
*
* @date Oct 30, 2013
2020-01-07 21:02:40 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
2015-07-10 06:01:56 -07:00
*/
#pragma once
2015-07-10 06:01:56 -07:00
2020-02-26 22:32:26 -08:00
#include "persistent_configuration.h"
2015-07-10 06:01:56 -07:00
2018-12-24 19:17:13 -08:00
#ifndef DEFAULT_ENGINE_TYPE
#define DEFAULT_ENGINE_TYPE DEFAULT_FRANKENSO
2018-12-24 19:17:13 -08:00
#endif
2017-06-11 12:27:23 -07:00
#define CLT_MANUAL_IDLE_CORRECTION config->cltIdleCorrBins, config->cltIdleCorr, CLT_CURVE_SIZE
#define WARMUP_CLT_EXTRA_FUEL_CURVE config->cltFuelCorrBins, config->cltFuelCorr, CLT_CURVE_SIZE
#define IAT_FUEL_CORRECTION_CURVE config->iatFuelCorrBins, config->iatFuelCorr, IAT_CURVE_SIZE
#define INJECTOR_LAG_CURVE engineConfiguration->injector.battLagCorrBins, engineConfiguration->injector.battLagCorr, VBAT_INJECTOR_CURVE_SIZE
2015-07-10 06:01:56 -07:00
#define MOCK_UNDEFINED -1
float getRpmMultiplier(operation_mode_e mode);
void setOperationMode(engine_configuration_s *engineConfiguration, operation_mode_e mode);
void prepareVoidConfiguration(engine_configuration_s *activeConfiguration);
void setTargetRpmCurve(int rpm DECLARE_CONFIG_PARAMETER_SUFFIX);
void setLambdaMap(lambda_table_t table, float value);
2018-01-20 21:12:50 -08:00
/**
* See also setLinearCurve()
*/
2015-07-10 06:01:56 -07:00
void setMap(fuel_table_t table, float value);
void setWholeIgnitionIatCorr(float value DECLARE_CONFIG_PARAMETER_SUFFIX);
void setFuelTablesLoadBin(float minValue, float maxValue DECLARE_CONFIG_PARAMETER_SUFFIX);
void setWholeIatCorrTimingTable(float value DECLARE_CONFIG_PARAMETER_SUFFIX);
void setWholeTimingTable_d(angle_t value DECLARE_CONFIG_PARAMETER_SUFFIX);
#define setWholeTimingTable(x) setWholeTimingTable_d(x PASS_CONFIG_PARAMETER_SUFFIX);
void setConstantDwell(floatms_t dwellMs DECLARE_CONFIG_PARAMETER_SUFFIX);
2015-07-10 06:01:56 -07:00
// needed by bootloader
2019-04-28 20:42:49 -07:00
void setDefaultBasePins(DECLARE_CONFIG_PARAMETER_SIGNATURE);
2019-04-28 20:42:49 -07:00
void setDefaultSdCardParameters(DECLARE_CONFIG_PARAMETER_SIGNATURE);
2020-07-05 08:16:07 -07:00
void onBurnRequest(DECLARE_ENGINE_PARAMETER_SIGNATURE);
2020-07-05 11:09:43 -07:00
void wipeStrings(DECLARE_ENGINE_PARAMETER_SIGNATURE);
2018-03-04 18:32:48 -08:00
void rememberCurrentConfiguration(DECLARE_ENGINE_PARAMETER_SIGNATURE);
2017-05-15 20:33:22 -07:00
void incrementGlobalConfigurationVersion(DECLARE_ENGINE_PARAMETER_SIGNATURE);
2015-07-10 06:01:56 -07:00
void commonFrankensoAnalogInputs(engine_configuration_s *engineConfiguration);
void setFrankenso0_1_joystick(engine_configuration_s *engineConfiguration);
2015-07-10 06:01:56 -07:00
2020-07-29 19:48:41 -07:00
#define MEMCPY(dest, src) {memcpy(dest, src, sizeof(src));}
2019-08-08 19:12:51 -07:00
void emptyCallbackWithConfiguration(engine_configuration_s * engine);
void setDefaultFrankensoConfiguration(DECLARE_CONFIG_PARAMETER_SIGNATURE);
2019-08-08 19:12:51 -07:00
typedef void (*configuration_callback_t)(engine_configuration_s*);
#ifdef __cplusplus
// because of 'Logging' class parameter these functions are visible only to C++ code but C code
void resetConfigurationExt(Logging * logger, configuration_callback_t boardCallback, engine_type_e engineType DECLARE_ENGINE_PARAMETER_SUFFIX);
void resetConfigurationExt(Logging * logger, engine_type_e engineType DECLARE_ENGINE_PARAMETER_SUFFIX);
2019-08-08 19:12:51 -07:00
#endif /* __cplusplus */
struct ConfigOverrides {
// CAN pinout
brain_pin_e canTxPin;
brain_pin_e canRxPin;
};
const ConfigOverrides& getConfigOverrides();
// If the overide value is default initialized
// Use the value from config if not overriden
// Otherwise use the override
// the == decltype(CONFIG(__x__)){} part means
// - take the type of the corresponding config field
// - default construct (ie, 0) an object of the corresponding type
// - check if the override value matches that (GPIO_UNASSIGNED, SPI_NONE, etc)
// If it matches, that field hasn't been overridden, so read from the config.
#define CONFIG_OVERRIDE(__x__) ( \
(( getConfigOverrides().__x__ ) == decltype(CONFIG(__x__)){}) \
? (CONFIG( __x__ )) : ( getConfigOverrides().__x__ ))