#include "main.h"
#include "buzzer.h"

unsigned int onTimeCounter;
unsigned int offTimeCounter;
unsigned int onTime;
unsigned int offTime;
unsigned int alarmMode;



void BUZZER_Exec(void)
{

  if (onTimeCounter > 0)
  {
    onTimeCounter--;
    if (onTimeCounter == 0)
    {
      HAL_GPIO_WritePin(GPIO_OUTPUT_BUZZER_GPIO_Port, GPIO_OUTPUT_BUZZER_Pin, GPIO_PIN_RESET);

      if (alarmMode == 1) offTimeCounter = offTime;
    }
  }

  if (offTimeCounter > 0)
  {
    offTimeCounter--;
    if (offTimeCounter == 0)
    {
      HAL_GPIO_WritePin(GPIO_OUTPUT_BUZZER_GPIO_Port, GPIO_OUTPUT_BUZZER_Pin, GPIO_PIN_SET);
      onTimeCounter = onTime;
    }
  }
}



void BUZZER_Beep(unsigned int time)
{
  HAL_GPIO_WritePin(GPIO_OUTPUT_BUZZER_GPIO_Port, GPIO_OUTPUT_BUZZER_Pin, GPIO_PIN_SET);
  onTimeCounter = time;

}

void BUZZER_Alarm_Start(unsigned int on, unsigned int off )
{
  onTime = on;
  offTime = off;
  alarmMode = 1;

  HAL_GPIO_WritePin(GPIO_OUTPUT_BUZZER_GPIO_Port, GPIO_OUTPUT_BUZZER_Pin, GPIO_PIN_SET);
  onTimeCounter = on;

}

void BUZZER_Alarm_Stop(void)
{
  HAL_GPIO_WritePin(GPIO_OUTPUT_BUZZER_GPIO_Port, GPIO_OUTPUT_BUZZER_Pin, GPIO_PIN_RESET);
  alarmMode = 0;
  offTimeCounter = 0;
  onTimeCounter = 0;

}