#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
#include "hardware/gpio.h"

#define UART0_TX_PIN 0
#define UART0_RX_PIN 1
#define UART1_TX_PIN 8
#define UART1_RX_PIN 9
// Função para limpar o buffer de transmissão da UART
void uart_flush_tx(uart_inst_t *uart) {
    while (!uart_is_writable(uart)) {
        tight_loop_contents();
    }
}

int main() {
    // Inicializa a stdio para usar o console
    stdio_init_all();
    // Inicializa a UART0
    uart_init(uart0, 115200);
    gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART);
    gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART);

    // Inicializa a UART1
    uart_init(uart1, 115200);
    gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART);
    gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART);
    
    while (true) {
        char received_char;
        // Lê um caractere do console
        printf("Digite um caractere: ");
        uart_flush_tx(uart0);
        // Limpa o buffer de transmissão da UART0 após o printf
                
        scanf("%c", &received_char); // REcebe o valor da consola 

        uart_putc(uart0, received_char);
        // Transmite o caractere da UART0 para a UART1
        char echoed_char = uart_getc(uart1);

        // Exibe o caractere recebido no console
        printf("Caractere recebido: %c\n", echoed_char);

        //}
    }

    return 0;
}