#ifndef SERVO_MOTOR_H
#define SERVO_MOTOR_H

#include "stm32f103xb.h"
#include "Timer.h"
#include "GPIO.h"

/**
	* @brief  Configure le servo moteur associé au timer donné
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
	*					int channel 			: Le channel utilisé par le servo moteur
	*					GPIO_TypeDef gpio : Le GPIO à utiliser pour la sortie de la PWM
	*					int pin     			: Le PIN associé au GPIO
  * @retval None
  */
void ServoMotor_conf(TIM_TypeDef * timer, int channel, GPIO_TypeDef * gpio, int pin);

/**
	* @brief  Démarre les servo moteurs associés au timer donné
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
  * @retval None
  */
void ServoMotor_start(TIM_TypeDef * timer);

/**
	* @brief  Modifie l'angle du servo moteur
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
	*					int channel 			: Le channel utilisé par le servo moteur
	*					float angle			 	: .En degrès (Valeur entre 0 et 359)
  * @retval None
  */
void ServoMotor_setAngle(TIM_TypeDef * timer, int channel, int angle);

/**
	* @brief  Récupère l'angle du servo moteur
  * @note   
	* @param  TIM_TypeDef Timer : indique le timer à utiliser : TIM1, TIM2, TIM3 ou TIM4
	*					int channel 			: Le channel utilisé par le servo moteur
  * @retval int angle
  */
int ServoMotor_getAngle(TIM_TypeDef * timer, int channel);

#endif
