/**
 * @file pid.h
 *
 * @date Sep 16, 2014
 * @author Andrey Belomutskiy, (c) 2012-2015
 */

#ifndef PID_H_
#define PID_H_

class Pid {

public:
	Pid(float pFactor, float iFactor, float dFactor, float minResult, float maxResult);
	float getValue(float target, float input, float dTime);
	void updateFactors(float pFactor, float iFactor, float dFactor);
	void reset(void);
	float getP(void);
	float getI(void);
	float getIntegration(void);
	float getD(void);
private:
	float pFactor;
	float iFactor;
	float dFactor;
	float minResult;
	float maxResult;

	float iTerm;
	float prevError;

};

#endif /* PID_H_ */
