#ifndef INC_ENCODER_H
#define INC_ENCODER_H

#include "stm32f103xb.h"

/**
	* @brief  Configure le codeur incrémental associé au timer donné
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
  * @retval None
  */
void IncrementalEncoder_conf(TIM_TypeDef * timer, GPIO_TypeDef * gpio, int pin);

/**
	* @brief  Démarre le codeur incrémental associé au timer donné
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
  * @retval None
  */
void IncrementalEncoder_start(TIM_TypeDef * timer);

/**
	* @brief  Récupère l'angle du codeur incrémental associé au timer donné
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
  * @retval int angle
  */
int IncrementalEncoder_getAngle(TIM_TypeDef * timer);

/**
	* @brief  Récupère la direction du codeur incrémental associé au timer donné
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
  * @retval int dir
  */
enum CounterDirection IncrementalEncoder_getDirection(TIM_TypeDef * timer);

#endif
