mirror of
https://gitee.com/Vancouver2017/luban-lite.git
synced 2025-12-17 09:38:55 +00:00
v1.1.1
This commit is contained in:
@@ -305,6 +305,7 @@ rt_inline int _serial_int_rx(struct rt_serial_device *serial, rt_uint8_t *data,
|
||||
ch = rx_fifo->buffer[rx_fifo->get_index];
|
||||
rx_fifo->get_index += 1;
|
||||
|
||||
#ifdef RT_SERIAL_USING_FLOWCTRL
|
||||
if (serial->config.function == RT_SERIAL_RS232_UNAUTO_FLOW_CTRL ||
|
||||
serial->config.function == RT_SERIAL_RS232_SW_FLOW_CTRL ||
|
||||
serial->config.function == RT_SERIAL_RS232_SW_HW_FLOW_CTRL )
|
||||
@@ -314,9 +315,7 @@ rt_inline int _serial_int_rx(struct rt_serial_device *serial, rt_uint8_t *data,
|
||||
rt_flowctrl_low_detect(serial, 1, RT_SERIAL_INT_FCL_BUFFER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
if (rx_fifo->get_index >= serial->config.bufsz) rx_fifo->get_index = 0;
|
||||
|
||||
if (rx_fifo->is_full == RT_TRUE)
|
||||
@@ -411,6 +410,7 @@ static rt_size_t _serial_fifo_calc_recved_len(struct rt_serial_device *serial)
|
||||
}
|
||||
#endif /* RT_USING_POSIX_STDIO || RT_SERIAL_USING_DMA */
|
||||
|
||||
#ifdef RT_SERIAL_USING_FLOWCTRL
|
||||
/**
|
||||
* Flow control high level detect.
|
||||
*
|
||||
@@ -486,6 +486,7 @@ void rt_flowctrl_low_detect(struct rt_serial_device *serial, rt_size_t len, rt_s
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RT_SERIAL_USING_DMA
|
||||
/**
|
||||
@@ -624,7 +625,7 @@ rt_inline int _serial_dma_rx(struct rt_serial_device *serial, rt_uint8_t *data,
|
||||
rt_memcpy(data + serial->config.bufsz - rx_fifo->get_index, rx_fifo->buffer,
|
||||
recv_len + rx_fifo->get_index - serial->config.bufsz);
|
||||
}
|
||||
|
||||
#ifdef RT_SERIAL_USING_FLOWCTRL
|
||||
if (serial->config.function == RT_SERIAL_RS232_UNAUTO_FLOW_CTRL ||
|
||||
serial->config.function == RT_SERIAL_RS232_SW_FLOW_CTRL ||
|
||||
serial->config.function == RT_SERIAL_RS232_SW_HW_FLOW_CTRL)
|
||||
@@ -634,7 +635,7 @@ rt_inline int _serial_dma_rx(struct rt_serial_device *serial, rt_uint8_t *data,
|
||||
rt_flowctrl_low_detect(serial, recv_len, RT_SERIAL_DMA_FCL_BUFFER);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
rt_dma_recv_update_get_index(serial, recv_len);
|
||||
rt_hw_interrupt_enable(level);
|
||||
return recv_len;
|
||||
@@ -1444,6 +1445,7 @@ void rt_serial_rx_ind(struct rt_serial_device *serial)
|
||||
rx_fifo->put_index += 1;
|
||||
if (rx_fifo->put_index >= serial->config.bufsz) rx_fifo->put_index = 0;
|
||||
|
||||
#ifdef RT_SERIAL_USING_FLOWCTRL
|
||||
if ((serial->config.function == RT_SERIAL_RS232_UNAUTO_FLOW_CTRL ||
|
||||
serial->config.function == RT_SERIAL_RS232_SW_FLOW_CTRL ||
|
||||
serial->config.function == RT_SERIAL_RS232_SW_HW_FLOW_CTRL) &&
|
||||
@@ -1458,7 +1460,7 @@ void rt_serial_rx_ind(struct rt_serial_device *serial)
|
||||
{
|
||||
serial->ops->control(serial, RT_SERIAL_SW_RECEIVE_ON_OFF, &ch);
|
||||
}
|
||||
|
||||
#endif
|
||||
/* if the next position is read index, discard this 'read char' */
|
||||
if (rx_fifo->put_index == rx_fifo->get_index)
|
||||
{
|
||||
@@ -1562,7 +1564,7 @@ void rt_hw_serial_isr(struct rt_serial_device *serial, int event)
|
||||
{
|
||||
/* disable interrupt */
|
||||
level = rt_hw_interrupt_disable();
|
||||
|
||||
#ifdef RT_SERIAL_USING_FLOWCTRL
|
||||
/* flow control high level detect */
|
||||
if ((serial->config.function == RT_SERIAL_RS232_UNAUTO_FLOW_CTRL ||
|
||||
serial->config.function == RT_SERIAL_RS232_SW_FLOW_CTRL ||
|
||||
@@ -1571,6 +1573,7 @@ void rt_hw_serial_isr(struct rt_serial_device *serial, int event)
|
||||
{
|
||||
rt_flowctrl_high_detect(serial, length, RT_SERIAL_DMA_FCH_BUFFER);
|
||||
}
|
||||
#endif
|
||||
/* update fifo put index */
|
||||
rt_dma_recv_update_put_index(serial, length);
|
||||
/* calculate received total length */
|
||||
|
||||
Reference in New Issue
Block a user