diff --git a/sw/airborne/arch/linux/mcu_periph/uart_arch.c b/sw/airborne/arch/linux/mcu_periph/uart_arch.c index 1b4787745ef..d1b1247fe7a 100644 --- a/sw/airborne/arch/linux/mcu_periph/uart_arch.c +++ b/sw/airborne/arch/linux/mcu_periph/uart_arch.c @@ -48,8 +48,8 @@ static void uart_receive_handler(struct uart_periph *periph); static void *uart_thread(void *data __attribute__((unused))); static pthread_mutex_t uart_mutex = PTHREAD_MUTEX_INITIALIZER; -//#define TRACE(fmt,args...) fprintf(stderr, fmt, args) -#define TRACE(fmt,args...) +#define TRACE(fmt,args...) fprintf(stderr, fmt, args) +//#define TRACE(fmt,args...) void uart_arch_init(void) { @@ -245,7 +245,11 @@ void uart_put_byte(struct uart_periph *periph, uint8_t data) /* write single byte to serial port */ struct SerialPort *port = (struct SerialPort *)(periph->reg_addr); - int ret = write((int)(port->fd), &data, 1); + + int ret = 0; + do{ + ret = write((int)(port->fd), &data, 1); + } while(ret < 1 && errno == EAGAIN); //FIXME: max retry if (ret < 1) { TRACE("uart_put_byte: write %d failed [%d: %s]\n", data, ret, strerror(errno)); @@ -273,7 +277,7 @@ static void uart_receive_handler(struct uart_periph *periph) periph->rx_insert_idx = temp; // update insert index } else { - TRACE("uart_receive_handler: rx_buf full! discarding received byte: %x %c", c, c); + TRACE("uart_receive_handler: rx_buf full! discarding received byte: %x %c\n", c, c); } } pthread_mutex_unlock(&uart_mutex); @@ -303,7 +307,7 @@ uint16_t uart_char_available(struct uart_periph *p) void uart0_init(void) { uart_periph_init(&uart0); - strncpy(uart0.dev, UART0_DEV, UART_DEV_NAME_SIZE); + strncpy(uart0.dev, STRINGIFY(UART0_DEV), UART_DEV_NAME_SIZE); uart_periph_set_baudrate(&uart0, UART0_BAUD); } #endif /* USE_UART0 */ @@ -312,7 +316,7 @@ void uart0_init(void) void uart1_init(void) { uart_periph_init(&uart1); - strncpy(uart1.dev, UART1_DEV, UART_DEV_NAME_SIZE); + strncpy(uart1.dev, STRINGIFY(UART1_DEV), UART_DEV_NAME_SIZE); uart_periph_set_baudrate(&uart1, UART1_BAUD); } #endif /* USE_UART1 */ @@ -321,7 +325,7 @@ void uart1_init(void) void uart2_init(void) { uart_periph_init(&uart2); - strncpy(uart2.dev, UART2_DEV, UART_DEV_NAME_SIZE); + strncpy(uart2.dev, STRINGIFY(UART2_DEV), UART_DEV_NAME_SIZE); uart_periph_set_baudrate(&uart2, UART2_BAUD); } #endif /* USE_UART2 */ @@ -330,7 +334,7 @@ void uart2_init(void) void uart3_init(void) { uart_periph_init(&uart3); - strncpy(uart3.dev, UART3_DEV, UART_DEV_NAME_SIZE); + strncpy(uart3.dev, STRINGIFY(UART3_DEV), UART_DEV_NAME_SIZE); uart_periph_set_baudrate(&uart3, UART3_BAUD); } #endif /* USE_UART3 */ @@ -339,7 +343,7 @@ void uart3_init(void) void uart4_init(void) { uart_periph_init(&uart4); - strncpy(uart4.dev, UART4_DEV, UART_DEV_NAME_SIZE); + strncpy(uart4.dev, STRINGIFY(UART4_DEV), UART_DEV_NAME_SIZE); uart_periph_set_baudrate(&uart4, UART4_BAUD); } #endif /* USE_UART4 */ @@ -348,7 +352,7 @@ void uart4_init(void) void uart5_init(void) { uart_periph_init(&uart5); - strncpy(uart5.dev, UART5_DEV, UART_DEV_NAME_SIZE); + strncpy(uart5.dev, STRINGIFY(UART5_DEV), UART_DEV_NAME_SIZE); uart_periph_set_baudrate(&uart5, UART5_BAUD); } #endif /* USE_UART5 */ @@ -357,7 +361,7 @@ void uart5_init(void) void uart6_init(void) { uart_periph_init(&uart6); - strncpy(uart6.dev, UART6_DEV, UART_DEV_NAME_SIZE); + strncpy(uart6.dev, STRINGIFY(UART6_DEV), UART_DEV_NAME_SIZE); uart_periph_set_baudrate(&uart6, UART6_BAUD); } #endif /* USE_UART6 */ diff --git a/sw/airborne/boards/ardrone2.h b/sw/airborne/boards/ardrone2.h index cbba10fa890..db17a0ac11b 100644 --- a/sw/airborne/boards/ardrone2.h +++ b/sw/airborne/boards/ardrone2.h @@ -4,7 +4,7 @@ #define BOARD_ARDRONE2 #ifndef UART1_DEV -#define UART1_DEV "/dev/ttyUSB0" +#define UART1_DEV /dev/ttyUSB0 #endif /* Default actuators driver */ diff --git a/sw/airborne/boards/bebop.h b/sw/airborne/boards/bebop.h index 45b72faf7ba..04158f6468b 100644 --- a/sw/airborne/boards/bebop.h +++ b/sw/airborne/boards/bebop.h @@ -26,7 +26,7 @@ #define BOARD_BEBOP /** uart connected to GPS internally */ -#define UART1_DEV "/dev/ttyPA1" +#define UART1_DEV /dev/ttyPA1 /* Default actuators driver */ #define DEFAULT_ACTUATORS "boards/bebop/actuators.h"