From 23f4d7356f822692471f6341791940678a75d6d2 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 19 Jul 2013 12:05:25 +0700 Subject: [PATCH] change printf retarget to make \n to \r\n automatically --- demos/bsp/boards/printf_retarget.c | 21 ++++++++++++++++++++- demos/host/src/main.c | 12 ++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/demos/bsp/boards/printf_retarget.c b/demos/bsp/boards/printf_retarget.c index 56e59d80..49a2150e 100644 --- a/demos/bsp/boards/printf_retarget.c +++ b/demos/bsp/boards/printf_retarget.c @@ -51,7 +51,26 @@ int __sys_write (int iFileHandle, char *pcBuffer, int iLength) (void) iFileHandle; #if CFG_PRINTF_TARGET == PRINTF_TARGET_UART - return board_uart_send((uint8_t*)pcBuffer, iLength); + // following code to make \n --> \r\n + int length = iLength; + char* p_newline_pos = memchr(pcBuffer, '\n', length); + + while(p_newline_pos != NULL) + { + uint32_t chunk_len = p_newline_pos - pcBuffer; + + board_uart_send((uint8_t*)pcBuffer, chunk_len); + board_uart_send(&"\r\n", 2); + + pcBuffer += (chunk_len + 1); + length -= (chunk_len + 1); + p_newline_pos = memchr(pcBuffer, '\n', length); + } + + board_uart_send((uint8_t*)pcBuffer, length); + + return iLength; + #elif CFG_PRINTF_TARGET == PRINTF_TARGET_SWO uint32_t i; for (i = 0; i