Trouble with UART Rx

Hi.
I apologize for my silly questions, but I’m stuck again with the libDaisy UART driver. I was using the uart.PollTx, uart.Readable(), and uart.PopRx() from libDaisy 5.1.0 which was working very well. Recently I upgraded libDaisy’s to 7.0.1 (together with the new Daisy Examples folder), and I noticed that these UART functions are no longer included in libDaisy. Unfortunately none of the UART examples worked on my DaisySeed for receiving data (TX is ok) as expected, probably because I’m just missing something. All I’ve done so far was to change the “display” functions to “logger” in the examples under the uart folder. I’m trying to send and to receive data between DS and an ESP32. The ESP32 was tested in loopback and it is working well, but Seed can’t receive. Some weird things happen with received data, like receiving it twice or with wrong data size. Moreover, I didn’t manage to read just one byte, like PopRx(), so I could detect the ASCII terminator CR or LF. It seems that anytime data is ready for reading, the receiving buffer comes with no terminator at all, even considering that CR was sent by ESP32. The ESP32 sends its time at 1Hz in format:

Time: 515
Time: 516

When using DmaReceive(), Daisy Seed gets

Time: 444
8ime: 444
Time: 445
8ime: 445
Time: 446
8ime: 446
Time: 447
8ime: 447
Time: 448
8ime: 448

It seems that data was received twice and with wrong first character in the copy.
When using Fifo RX, with DmaListenStart(), it gets

Size = 14 : Time: 371307
Size = 14 : Time: 372308
Size = 14 : Time: 373309
Size = 14 : Time: 374310
Size = 0 :
Size = 10 : : 375311
Size = 14 : Time: 376312
Size = 14 : Time: 377313
Size = 14 : Time: 378314
Size = 12 : Time: 379314

in which Size means the data size that comes in the UART Callback function, and should be 10 instead of 14. In the printout shown above, the time sent by ESP32 was 371, 372 and so on. Below is the code I’m using with DmaReceive().

#include "daisy_seed.h"
using namespace daisy;

DaisySeed  hw;
UartHandler uart;

// USB-Serial
char        usb_buff[256];
uint32_t    usb_buf_ready = 0;

// Clock and Timer
uint32_t    tick, tick_0;
float       delt_ms, delt_time = 1000, time_ms = 0;

// rx / tx buffers
uint8_t DMA_BUFFER_MEM_SECTION rx_buff[32];
uint8_t DMA_BUFFER_MEM_SECTION tx_buff[10];
bool    available = false;

void RestartUartRx(void* state, UartHandler::Result res)
{
    available = true;
}

void RestartUartTx(void* state, UartHandler::Result res)
{
}

int main(void)
{

    hw.Init();
    hw.StartLog(false);

    // reset our dma buffers
    for(int i = 0; i < 10; i++)
    {
        tx_buff[i] = i+48;
    }
    tx_buff[5] = '\n';

    // UART config
    UartHandler::Config uart_conf;
    uart_conf.baudrate      = 115200;
    uart_conf.periph        = UartHandler::Config::Peripheral::USART_1;
    uart_conf.mode          = UartHandler::Config::Mode::TX_RX;
    uart_conf.pin_config.tx = Pin(PORTB, 6);
    uart_conf.pin_config.rx = Pin(PORTB, 7);

    uart.Init(uart_conf);
    uart.DmaReceive(rx_buff, 10, NULL, RestartUartRx, NULL);

    while(1)
    {
        // UART - RX
        if (available)
        {
            rx_buff[9]  = 0;
            hw.PrintLine("%s", rx_buff);
            uart.DmaReceive(rx_buff, 10, NULL, RestartUartRx, NULL);
            available = false;
        } 
 
        // UART TX
        tick        = System::GetTick();
        delt_ms     = (float)(tick - tick_0)/200000.f;
        
        if (delt_ms > delt_time)
        {
            tick_0     = tick;
            uart.DmaTransmit(tx_buff, 6, NULL, RestartUartTx, NULL);
        }
    }
}

and so… anyone guess what’s happening?