summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorWillianChan <[email protected]>2020-09-14 15:25:33 +0800
committerWillianChan <[email protected]>2020-09-14 15:27:06 +0800
commit183f8b94029b3ba361daeabde03241b5947f29b9 (patch)
treeee5f9522b7f06f45d95d35fcc30a4138d6909e2d /components
parent90e8b3664d76ed699220c24a2a3e21a933dad219 (diff)
[drivers/serial]add a line feed to the carriage return character when using interrupt tx
Signed-off-by: WillianChan <[email protected]>
Diffstat (limited to 'components')
-rw-r--r--components/drivers/serial/serial.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/components/drivers/serial/serial.c b/components/drivers/serial/serial.c
index d1c04dec6f..19c499258a 100644
--- a/components/drivers/serial/serial.c
+++ b/components/drivers/serial/serial.c
@@ -22,6 +22,8 @@
* 2017-11-15 JasonJia fix poll rx issue when data is full.
* add TCFLSH and FIONREAD support.
* 2018-12-08 Ernest Chen add DMA choice
+ * 2020-09-14 WillianChan add a line feed to the carriage return character
+ when using interrupt tx
*/
#include <rthw.h>
@@ -315,6 +317,18 @@ rt_inline int _serial_int_tx(struct rt_serial_device *serial, const rt_uint8_t *
while (length)
{
+ /*
+ * to be polite with serial console add a line feed
+ * to the carriage return character
+ */
+ if (*data == '\n' && (serial->parent.open_flag & RT_DEVICE_FLAG_STREAM))
+ {
+ if (serial->ops->putc(serial, '\r') == -1)
+ {
+ rt_completion_wait(&(tx->completion), RT_WAITING_FOREVER);
+ continue;
+ }
+
if (serial->ops->putc(serial, *(char*)data) == -1)
{
rt_completion_wait(&(tx->completion), RT_WAITING_FOREVER);