Hello,
Currently I have implemented a UART callback using the CONFIG_UART_ASYNC_API setting as follows:
static char recv_buf[1024];
static bool InitializeUart (void)
{
uart_dev = device_get_binding("UART_0");
if (!uart_dev)
return false;
uart_callback_set(uart_dev, uart_callback, NULL);
uart_rx_enable(uart_dev, recv_buf, sizeof(recv_buf), 100);
return true;
}
static void uart_callback (struct uart_event *evt, void *user_data)
{
switch (evt->type)
{
case UART_RX_RDY:
{
printk("%s", recv_buf);
}
break;
case UART_RX_DISABLED:
{
uart_rx_enable(uart_dev, recv_buf, sizeof(recv_buf), 100);
}
break;
case UART_RX_STOPPED:
{
printk("RX has stopped due to external event.\n");
}
break;
default:
break;
}
}
However, all data that I receive is appended constantly, until the buffer is full.
I would like to empty the buffer every time UART_RX_RDY is received, but I cannot find a function to support this in the UART API documentation. Clearing the buffer myself does not work.
Any hints?