#include "stm32f4xx_rcc.h"
#include "stm32f4xx_gpio.h"
#include "button.h"
#include "device.h"

void button_init(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure = {
        .GPIO_Pin = PIN_BUTTON,
        .GPIO_Mode = GPIO_Mode_IN,
        .GPIO_OType = GPIO_OType_PP,
        .GPIO_Speed = GPIO_Speed_2MHz,
        .GPIO_PuPd = GPIO_PuPd_UP,
    };

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    GPIO_Init(PORT_BUTTON, &GPIO_InitStructure);
}

int button_is_pressed(void)
{
    if (GPIO_ReadInputDataBit(PORT_BUTTON, PIN_BUTTON)) {
        return 0;
    } else {
        return 1;
    }
}

void button_loop(void)
{
    static uint32_t ms = 0;

    if (system_tick_cnt < (ms + 100)) {
        return;
    }
    ms = system_tick_cnt;

    device_data.button = button_is_pressed() ? 1 : 0;
}
