From 8af9ba9fa97d28a72ef2fdbe2b3953ed1f5b5cb8 Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Tue, 18 Jul 2017 15:57:28 +0200 Subject: [PATCH] stm32f0: usart: set up array of consoles --- source/drivers/usart_console.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/source/drivers/usart_console.c b/source/drivers/usart_console.c index dc97179..020d828 100644 --- a/source/drivers/usart_console.c +++ b/source/drivers/usart_console.c @@ -23,7 +23,7 @@ struct usart_console { uint32_t dev; }; -struct usart_console *usart1 = NULL; +static struct usart_console *usart[4]; struct usart_console user_console; static void usart_isr(struct usart_console *console) @@ -42,17 +42,23 @@ static void usart_isr(struct usart_console *console) if (next != console->cur) console->next = next; - switch (console->recv_buf[idx]) { - case '\003': scb_reset_system(); - case '\r': console->process_line(); - default: break; + if (console->recv_buf[idx] == '\003') + scb_reset_system(); + + if (console->recv_buf[idx] == '\r' && console->process_line) { + console->process_line(); } } } void usart1_isr(void) { - usart_isr(usart1); + usart_isr(usart[0]); +} + +void usart2_isr(void) +{ + usart_isr(usart[1]); } static char usart_getc(struct usart_console *console, int block) @@ -180,7 +186,7 @@ void console_init(void) user_console.dev = USART1; user_console.cur = 0; user_console.next = 0; - usart1 = &user_console; + usart[0] = &user_console; usart_init(&user_console); stdin = fopencookie(&user_console, "r", console_in);