rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
init_vbatt.cpp
Go to the documentation of this file.
1#include "pch.h"
2
3#include "init.h"
4#include "adc_subscription.h"
5#include "functional_sensor.h"
6#include "linear_func.h"
7
8static FunctionalSensor vbattSensor(SensorType::BatteryVoltage, /* timeout = */ MS2NT(100));
9static FunctionalSensor ignBattSensor(SensorType::IgnKeyVoltage, /* timeout = */ MS2NT(100));
10
11void initVbatt() {
12 {
13 static LinearFunc vbattFunc; // static with scoped visibility just to reduce change of code defect
14 vbattFunc.configure(0, 0, 1, engineConfiguration->vbattDividerCoeff, 0, 50);
15 vbattSensor.setFunction(vbattFunc);
16 }
17
19 static LinearFunc ignBattFunc; // static with scoped visibility just to reduce change of code defect
20 ignBattFunc.configure(0, 0, 1, engineConfiguration->ignKeyAdcDivider, 0, 50);
21 ignBattSensor.setFunction(ignBattFunc);
22 }
23
25 // adcVoltsPerVolt is set to 1.0 because vbatt doesn't go thru the analog input divider
26 AdcSubscription::SubscribeSensor(vbattSensor, engineConfiguration->vbattAdcChannel, /* filter HZ = */ 20, /* adcVoltsPerVolt = */ 1.0f);
28 }
29
31 AdcSubscription::SubscribeSensor(ignBattSensor, engineConfiguration->ignKeyAdcChannel, /* filter HZ = */ 20, /* adcVoltsPerVolt = */ 1.0f);
33 }
34}
35
bool isAdcChannelValid(adc_channel_e hwChannel)
Definition adc_inputs.h:23
static AdcSubscriptionEntry * SubscribeSensor(FunctionalSensorBase &sensor, adc_channel_e channel, float lowpassCutoffHZ, float voltsPerAdcVolt=0.0f)
static void UnsubscribeSensor(FunctionalSensorBase &sensor)
Class for sensors that convert from some raw floating point value (ex: voltage, frequency,...
void setFunction(ConverterType &func)
void configure(float in1, float out1, float in2, float out2, float minOutput, float maxOutput)
bool Register()
Definition sensor.cpp:131
static constexpr engine_configuration_s * engineConfiguration
static FunctionalSensor ignBattSensor(SensorType::IgnKeyVoltage, MS2NT(100))
static FunctionalSensor vbattSensor(SensorType::BatteryVoltage, MS2NT(100))
void initVbatt()
void deinitVbatt()