diff --git a/firmware/config/boards/hellen/hellen_common.cpp b/firmware/config/boards/hellen/hellen_common.cpp index 33edb2e787..46aa9aee37 100644 --- a/firmware/config/boards/hellen/hellen_common.cpp +++ b/firmware/config/boards/hellen/hellen_common.cpp @@ -1,5 +1,6 @@ #include "pch.h" #include "hellen_meta.h" +#include "adc_subscription.h" void hellenWbo() { engineConfiguration->enableAemXSeries = true; @@ -66,11 +67,13 @@ static bool hellenEnPinInitialized = false; void hellenEnableEn(const char *msg) { efiPrintf("Turning board ON [%s]", msg); megaEn.setValue(1, /*isForce*/ true); + AdcSubscription::ResetFilters(); } void hellenDisableEn(const char *msg) { efiPrintf("Turning board off [%s]", msg); megaEn.setValue(0, /*isForce*/ true); + AdcSubscription::ResetFilters(); } void setHellenEnPin(Gpio pin, bool enableBoardOnStartUp) { diff --git a/firmware/hw_layer/adc/adc_subscription.cpp b/firmware/hw_layer/adc/adc_subscription.cpp index 4eb1d01522..50145d13c6 100644 --- a/firmware/hw_layer/adc/adc_subscription.cpp +++ b/firmware/hw_layer/adc/adc_subscription.cpp @@ -125,6 +125,13 @@ TODO: this code is similar to initIfValid, what is the plan? shall we extract he } } +void AdcSubscription::ResetFilters() { + for (size_t i = 0; i < efi::size(s_entries); i++) { + auto &entry = s_entries[i]; + entry.HasUpdated = false; + } +} + void AdcSubscription::UpdateSubscribers(efitick_t nowNt) { ScopePerf perf(PE::AdcSubscriptionUpdateSubscribers); diff --git a/firmware/hw_layer/adc/adc_subscription.h b/firmware/hw_layer/adc/adc_subscription.h index 6fd587cc2a..d144dc5f38 100644 --- a/firmware/hw_layer/adc/adc_subscription.h +++ b/firmware/hw_layer/adc/adc_subscription.h @@ -25,5 +25,7 @@ public: static void UnsubscribeSensor(FunctionalSensor& sensor, adc_channel_e newChannel); static void UpdateSubscribers(efitick_t nowNt); + static void ResetFilters(); + static void PrintInfo(); };