rusefi/firmware/hw_layer/adc/adc_subscription.h

32 lines
772 B
C++

/**
* @file adc_subscription.h
*/
#pragma once
#include "functional_sensor.h"
#include "global.h"
#include "biquad.h"
struct AdcSubscriptionEntry {
FunctionalSensor *Sensor;
float VoltsPerAdcVolt;
// raw voltage before we apply biquad filter
float sensorVolts;
Biquad Filter;
adc_channel_e Channel;
bool HasUpdated = false;
};
class AdcSubscription {
public:
static AdcSubscriptionEntry *SubscribeSensor(FunctionalSensor &sensor, adc_channel_e channel, float lowpassCutoffHZ, float voltsPerAdcVolt = 0.0f);
static void UnsubscribeSensor(FunctionalSensor& sensor);
static void UnsubscribeSensor(FunctionalSensor& sensor, adc_channel_e newChannel);
static void UpdateSubscribers(efitick_t nowNt);
static void ResetFilters();
static void PrintInfo();
};