Hi, everyone.
I am testing reading/writing data between n52840 and n9160 through UART with buf_len=1(byte by byte) based on Zephyr's UART_ASYNC_API provided in ncs v2.6.1.
When the data length is small, everything works as expected, which is great.
However, when I'm trying to read a large amount of data from the n9160, such as 512 bytes (ends with "\r\n") * 100, I can only successfully read the first 512 bytes. After that, I cannot read the second 512 bytes no matter how long the timeout is set. I also tried slicing the data into 2048 bytes* 25, and the first 2048 bytes can still be received completely, but similarly, no matter how long I wait, I cannot read the second 2048 bytes.
The testing code is like:
First enable the Uart Rx by:
static uint8_t uart_rx_buf[1]; uart_rx_enable(nrf_uart, &uart_rx_buf[0], 1, 0);
Then, async reads byte by byte every time Uart gets one byte until met an "\r\n"
if(evt->data.rx.len) { buf[*p_rcv_len] = evt->data.rx.buf[0]; *p_rcv_len += 1; if((*p_rcv_len >= 2) && (buf[*p_rcv_len-2] == '\r') && ((buf[*p_rcv_len-1] == '\n'))) { return RCV_OK; } }
I can get the first RCV_OK for both 512-bytes-len RX and 2048-bytes-len RX and blocked at waiting for the second one.