#include "rosa/agent/experimental/AverageValue.hpp"

#include <stdio.h>

AverageValue :: AverageValue() {
	resetAverageValue();
}

void AverageValue :: resetAverageValue() {
	avgValue = 0;
	injectedValuesCounter = 0;
}

void AverageValue ::injectAndCalculateAverageValue(float value) {
	if(injectedValuesCounter > 0) {
		avgValue = (avgValue*injectedValuesCounter + value) / (injectedValuesCounter + 1);
	}
	else {
		avgValue = value;
	}
	injectedValuesCounter++;
}

float AverageValue ::getAverageValue() {
	return avgValue;
}

unsigned int AverageValue :: getInjectedValuesCounter() {
	return injectedValuesCounter;
}

bool AverageValue::averageValueIsValid() {
	//printf(" ------------------- hier\n");
	if (injectedValuesCounter > 0) {
		//printf(" --- injVal %u\n", injectedValuesCounter);
		return true;
	}
	return false;
}