#include "functional_sensor.h"

void FunctionalSensor::postRawValue(float inputValue, efitick_t timestamp) {
	// If no function is set, this sensor isn't valid.
	if (!m_function) {
		invalidate();
		return;
	}

	m_rawValue = inputValue;

	auto r = m_function->convert(inputValue);

	// This has to happen so that we set the valid bit after
	// the value is stored, to prevent the data race of reading
	// an old invalid value
	if (r.Valid) {
		setValidValue(r.Value, timestamp);
	} else {
		invalidate();
	}
}