[DeviceDrivers] add warning about overflow by serial receiver
This commit is contained in:
parent
e1a01253fa
commit
f82d4f1f6f
|
@ -327,6 +327,18 @@ rt_inline int _serial_int_tx(struct rt_serial_device *serial, const rt_uint8_t *
|
||||||
return size - length;
|
return size - length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void _serial_check_buffer_size(void)
|
||||||
|
{
|
||||||
|
static rt_bool_t already_output = RT_FALSE;
|
||||||
|
|
||||||
|
if (already_output == RT_FALSE)
|
||||||
|
{
|
||||||
|
LOG_W("Warning: There is no enough buffer for saving data,"
|
||||||
|
" please increase the RT_SERIAL_RB_BUFSZ option.");
|
||||||
|
already_output = RT_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(RT_USING_POSIX) || defined(RT_SERIAL_USING_DMA)
|
#if defined(RT_USING_POSIX) || defined(RT_SERIAL_USING_DMA)
|
||||||
static rt_size_t _serial_fifo_calc_recved_len(struct rt_serial_device *serial)
|
static rt_size_t _serial_fifo_calc_recved_len(struct rt_serial_device *serial)
|
||||||
{
|
{
|
||||||
|
@ -430,6 +442,7 @@ static void rt_dma_recv_update_put_index(struct rt_serial_device *serial, rt_siz
|
||||||
|
|
||||||
if(rx_fifo->is_full == RT_TRUE)
|
if(rx_fifo->is_full == RT_TRUE)
|
||||||
{
|
{
|
||||||
|
_serial_check_buffer_size();
|
||||||
rx_fifo->get_index = rx_fifo->put_index;
|
rx_fifo->get_index = rx_fifo->put_index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1170,6 +1183,8 @@ void rt_hw_serial_isr(struct rt_serial_device *serial, int event)
|
||||||
rx_fifo->get_index += 1;
|
rx_fifo->get_index += 1;
|
||||||
rx_fifo->is_full = RT_TRUE;
|
rx_fifo->is_full = RT_TRUE;
|
||||||
if (rx_fifo->get_index >= serial->config.bufsz) rx_fifo->get_index = 0;
|
if (rx_fifo->get_index >= serial->config.bufsz) rx_fifo->get_index = 0;
|
||||||
|
|
||||||
|
_serial_check_buffer_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* enable interrupt */
|
/* enable interrupt */
|
||||||
|
|
Loading…
Reference in New Issue