From 2be6a968d7b9268f3a4a15e3f7123a4c936b7dbf Mon Sep 17 00:00:00 2001 From: armink Date: Sun, 26 Nov 2017 10:19:51 +0800 Subject: [PATCH] [DeviceDriver][Serial] Fix serial open flag lost when device reopen. --- components/drivers/serial/serial.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/components/drivers/serial/serial.c b/components/drivers/serial/serial.c index 3aad9e4ab..645d08328 100644 --- a/components/drivers/serial/serial.c +++ b/components/drivers/serial/serial.c @@ -641,6 +641,13 @@ static rt_err_t rt_serial_open(struct rt_device *dev, rt_uint16_t oflag) serial->serial_rx = RT_NULL; } } + else + { + if (oflag & RT_DEVICE_FLAG_DMA_RX) + dev->open_flag |= RT_DEVICE_FLAG_DMA_RX; + else if (oflag & RT_DEVICE_FLAG_INT_RX) + dev->open_flag |= RT_DEVICE_FLAG_INT_RX; + } if (serial->serial_tx == RT_NULL) { @@ -676,6 +683,13 @@ static rt_err_t rt_serial_open(struct rt_device *dev, rt_uint16_t oflag) serial->serial_tx = RT_NULL; } } + else + { + if (oflag & RT_DEVICE_FLAG_DMA_TX) + dev->open_flag |= RT_DEVICE_FLAG_DMA_TX; + else if (oflag & RT_DEVICE_FLAG_INT_TX) + dev->open_flag |= RT_DEVICE_FLAG_INT_TX; + } /* set stream flag */ dev->open_flag |= stream_flag;