// TMC_UART.c
#include "TMC_uart.h"


#define DEFAULT_UART_ID uart1
#define DEFAULT_BAUD_RATE 115200
#define DEFAULT_MOTOR_TX_PIN 4
#define DEFAULT_MOTOR_RX_PIN 5

TMC_UART* tmc_Uart_Init(TMC_UART* tmc_uart, uart_inst_t *UART_ID, int BAUD_RATE, int MOTOR_TX_PIN, int MOTOR_RX_PIN) {
    
    if (BAUD_RATE == -1) BAUD_RATE = DEFAULT_BAUD_RATE;
    if (MOTOR_TX_PIN == -1) MOTOR_TX_PIN = DEFAULT_MOTOR_TX_PIN;
    if (MOTOR_RX_PIN == -1) MOTOR_RX_PIN = DEFAULT_MOTOR_RX_PIN;

    uart_init(UART_ID, BAUD_RATE);
    gpio_set_function(MOTOR_TX_PIN, GPIO_FUNC_UART);
    gpio_set_function(MOTOR_RX_PIN, GPIO_FUNC_UART);
    uart_set_hw_flow(UART_ID, false, false);
    uart_set_format(UART_ID, 8, 1, UART_PARITY_NONE);
    uart_set_fifo_enabled(UART_ID, false);

    tmc_uart->UART_ID = UART_ID;
    tmc_uart->BAUD_RATE = BAUD_RATE;
    tmc_uart->MOTOR_TX_PIN = MOTOR_TX_PIN;
    tmc_uart->MOTOR_RX_PIN = MOTOR_RX_PIN;
    return tmc_uart;
}

void TMC_UART_Write(TMC_UART* tmc_uart, int data) {
    uart_putc(tmc_uart->UART_ID, data);
}

void TMC_UART_Destroy(TMC_UART* tmc_uart) {
    // Aucune opération nécessaire
}
