rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
init_sensors.cpp
Go to the documentation of this file.
1/**
2 * @file init_sensorss.cpp
3 */
4
5#include "pch.h"
6
7#include "init.h"
8#include "cli_registry.h"
9#include "io_pins.h"
10#include "lua_hooks.h"
11
12static void initSensorCli();
13
14void initIfValid(const char* msg, adc_channel_e channel) {
16 return;
17 }
18
19#if EFI_PROD_CODE && HAL_USE_ADC
20/**
21TODO: this code is similar to AdcSubscription::SubscribeSensor, what is the plan? shall we extract helper method or else?
22 */
23
25 if (pin == Gpio::Invalid) {
26 // todo: external muxes for internal ADC #3350
27 return;
28 }
29 efiSetPadMode(msg, pin, PAL_MODE_INPUT_ANALOG);
30#endif // EFI_PROD_CODE && HAL_USE_ADC
31}
32
33void deInitIfValid(const char* msg, adc_channel_e channel) {
35 return;
36 }
37
38#if EFI_PROD_CODE && HAL_USE_ADC
41#endif // EFI_PROD_CODE && HAL_USE_ADC
42}
43
44static void initOldAnalogInputs() {
46 criticalError("Please pick either analog AFR or CAN AFR input not both.");
47 }
50}
51
56
57static void initAuxDigital() {
58#if EFI_PROD_CODE
59 for (size_t i = 0;i<efi::size(engineConfiguration->luaDigitalInputPins);i++) {
61 }
62#endif // EFI_PROD_CODE
63}
64
66#if EFI_PROD_CODE
67 for (size_t i = 0;i<efi::size(engineConfiguration->luaDigitalInputPins);i++) {
69 }
70#endif // EFI_PROD_CODE
71}
72
73static void deInitAuxDigital() {
74 for (size_t i = 0;i<efi::size(activeConfiguration.luaDigitalInputPins);i++) {
76 }
77}
78
83
90
91// todo: closer alignment with 'stopSensors'
92static void sensorStartUpOrReconfiguration(bool isFirstTime) {
93 initVbatt();
94 initMap();
95 initTps();
103#if EFI_TCU
105#endif
106 initFlexSensor(isFirstTime);
107}
108
109
110// one-time start-up
111// see also 'reconfigureSensors'
113#if EFI_PROD_CODE && EFI_CAN_SUPPORT
115#endif
116
118
120 // todo:
121 initLambda();
122 // todo: 'isFirstTime' approach for initEgt vs startEgt
123 initEgt();
124 initBaro();
125
127 initMaf();
128
131
132 // Init CLI functionality for sensors (mocking)
134
135#if defined(HARDWARE_CI) && !defined(HW_PROTEUS)
136 chThdSleepMilliseconds(100);
137
139 // Fake that we have battery voltage, some tests rely on it
141 }
142#endif
143
144#if EFI_SIMULATOR
145 // Simulator gets battery voltage so it detects ignition-on
147#endif // EFI_SIMULATOR
148}
149
167
174
175// Mocking/testing helpers
176static void initSensorCli() {
177 using namespace rusefi::stringutil;
178
179 addConsoleActionSS("set_sensor_mock", [](const char* typeName, const char* valueStr) {
180 SensorType type = findSensorTypeByName(typeName);
181
182 if (type == SensorType::Invalid) {
183 efiPrintf("Invalid sensor type specified: %s", typeName);
184 return;
185 }
186
187 float value = atoff(valueStr);
188
189 Sensor::setMockValue(type, value);
190 });
191
192 addConsoleAction("reset_sensor_mocks", Sensor::resetAllMocks);
194 addConsoleActionI("show_sensor",
195 [](int idx) {
196 Sensor::showInfo(static_cast<SensorType>(idx));
197 });
198}
bool isAdcChannelValid(adc_channel_e hwChannel)
Definition adc_inputs.h:23
uint16_t channel
Definition adc_inputs.h:104
void efiSetPadMode(const char *msg, brain_pin_e brainPin, iomode_t mode)
SimpleSwitchedState luaDigitalInputState[LUA_DIGITAL_INPUT_COUNT]
Definition engine.h:217
static void setMockValue(SensorType type, float value, bool mockRedundant=false)
Definition sensor.cpp:203
bool Register()
Definition sensor.cpp:131
static void showAllSensorInfo()
Definition sensor.cpp:237
virtual void showInfo(const char *sensorName) const =0
static float getOrZero(SensorType type)
Definition sensor.h:83
static void resetAllMocks()
Definition sensor.cpp:219
bool update(bool newState)
Definition efi_output.cpp:9
void addConsoleAction(const char *token, Void callback)
Register console action without parameters.
void addConsoleActionSS(const char *token, VoidCharPtrCharPtr callback)
void addConsoleActionI(const char *token, VoidInt callback)
Register a console command with one Integer parameter.
Command-line interface commands registry.
@ Invalid
brain_pin_e getAdcChannelBrainPin(const char *msg, adc_channel_e hwChannel)
static EngineAccessor engine
Definition engine.h:413
engine_configuration_s & activeConfiguration
static constexpr engine_configuration_s * engineConfiguration
void deInitVehicleSpeedSensor()
void initTps()
Definition init_tps.cpp:206
void initTurbochargerSpeedSensor()
void initThermistors()
void initBaro()
Definition init_baro.cpp:7
void initFluidPressure()
void initEgt()
Definition init_egt.cpp:16
void initLambda()
void deinitTurbochargerSpeedSensor()
void initRangeSensors()
void stopEgt()
Definition init_egt.cpp:40
void initFlexSensor(bool isFirstTime)
Definition init_flex.cpp:64
void initMap()
Definition init_map.cpp:105
void deInitFlexSensor()
Definition init_flex.cpp:98
void deinitAuxSensors()
Definition init_aux.cpp:58
void deinitTps()
Definition init_tps.cpp:278
void initAuxSensors()
Definition init_aux.cpp:36
void initCanSensors()
void deinitInputShaftSpeedSensor()
void startEgt()
Definition init_egt.cpp:47
void initVbatt()
void deinitFluidPressure()
void deinitAuxSpeedSensors()
void deinitThermistors()
void initFuelLevel()
void initMaf()
Definition init_maf.cpp:92
void deinitVbatt()
void initInputShaftSpeedSensor()
void deinitMap()
Definition init_map.cpp:144
void initVehicleSpeedSensor()
void initAuxSpeedSensors()
void initNewSensors()
void deInitIfValid(const char *msg, adc_channel_e channel)
static LuaOverrideSensor overrideBatteryVoltage(SensorType::DashOverrideBatteryVoltage, SensorType::BatteryVoltage)
void initIfValid(const char *msg, adc_channel_e channel)
static void sensorStartUpOrReconfiguration(bool isFirstTime)
void reconfigureSensors()
void stopSensors()
void initOverrideSensors()
static void deInitAuxDigital()
static void deInitOldAnalogInputs()
static void initOldAnalogInputs()
static void initSensorCli()
static void initAuxDigital()
static LuaOverrideSensor overrideVehicleSpeed(SensorType::DashOverrideVehicleSpeed, SensorType::VehicleSpeed)
void pokeAuxDigital()
static LuaOverrideSensor overrideClt(SensorType::DashOverrideClt, SensorType::Clt)
static LuaOverrideSensor overrideRpm(SensorType::DashOverrideRpm, SensorType::Rpm)
void efiSetPadUnused(brain_pin_e brainPin)
Definition io_pins.cpp:20
this file is about general input/output utility methods, not much EFI-specifics
bool getAuxDigital(int index)
void brain_pin_markUnused(brain_pin_e brainPin)
SensorType findSensorTypeByName(const char *name)
Definition sensor.cpp:259
SensorType
Definition sensor_type.h:18
@ DashOverrideBatteryVoltage
@ DashOverrideVehicleSpeed
brain_pin_e pin
Definition stm32_adc.cpp:15
SwitchedState state
Definition efi_output.h:36
switch_input_pin_e luaDigitalInputPins[LUA_DIGITAL_INPUT_COUNT]
pin_input_mode_e luaDigitalInputPinModes[LUA_DIGITAL_INPUT_COUNT]