#pragma once

#include "stm32h563xx.h"
#include "tim.h"

#include "./Helper/gpio_helper.hpp"

struct Config {
    Config()                         = delete;
    Config(const Config&)            = delete;
    Config& operator=(const Config&) = delete;

    static inline struct {
        GpioHelper::Gpio trigger;
        TIM_HandleTypeDef* timer;
        uint32_t channel;
    } kCaptureConfig = {{GPIOA, GPIO_PIN_0}, &htim7, TIM_CHANNEL_1};

    static inline UART_HandleTypeDef* kDebugUart = &hcom_uart[COM1];

    static inline UART_HandleTypeDef* kDfPlayerUart = &hcom_uart[COM1];

    static inline UART_HandleTypeDef* kCanMvUart = &hcom_uart[COM1];

    static inline UART_HandleTypeDef* kHc05Uart = &hcom_uart[COM1];

    static inline GpioHelper::Gpio kLed = {GPIOB, GPIO_PIN_0};
};
