#include "stm32f0xx_hal.h"
#include "led.h"


//
void led_init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOF_CLK_ENABLE();
    
    // GPIO_PIN_0 - контроль напряжения АКБ
    // GPIO_PIN_1 - сигнализация нажатия курка 
    GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

    // GPIO_PIN_5 - инфракрасный LED
    GPIO_InitStruct.Pin = GPIO_PIN_5;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
    
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_0 | GPIO_PIN_1, GPIO_PIN_SET);
}


//
void led_togle(void)
{
    HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_1);
}


// Индикация нажатия курка
void led_signal_on(void)
{
    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_1, GPIO_PIN_RESET);
}


// Индикация нажатия курка
void led_signal_off(void)
{
    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_1, GPIO_PIN_SET);
}


// Инфракрасный диод
void led_inf_on(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
}


// Инфракрасный диод
void led_inf_off(void)
{
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
}


// Индикация напряжения АКБ
void led_but_on(void)
{
    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_0, GPIO_PIN_RESET);
}


// Индикация напряжения АКБ
void led_but_toggle(void)
{
    HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_0);
}

