#ifndef PIBOT_ENCODER_IMP_H_
#define PIBOT_ENCODER_IMP_H_

#include "encoder.h"

//编码器实现  编码器原理具体可以参考https://www.jianshu.com/p/068fb9882655
class EncoderImp : public Encoder
{
public:
	EncoderImp(unsigned char num, bool _reverse=0);

	//初始化
	virtual void init();

	//清除编码器
	virtual void clear();

	//获取累计编码器值
	virtual long get_total_count();

	//获取编码器变化值， 用于pid计算
	virtual long get_increment_count_for_dopid();

	//获取编码器变化值， 用于odom计算
	virtual long get_increment_count_for_odom();  

	unsigned char get_reverse(){return reverse;}
private:
	bool reverse;
	unsigned char num;
	long pid_pos, odom_pos;
	float total_count;
};

#endif
