From 30f878e56255352a815a73c437307a395032e6ab Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Tue, 18 Jul 2017 16:18:59 +0200 Subject: [PATCH] stm32f0: usart: set up process line callback and pass the file pointer --- include/console.h | 4 +++- source/drivers/usart_console.c | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/console.h b/include/console.h index 7a589c9..37e1580 100644 --- a/include/console.h +++ b/include/console.h @@ -4,4 +4,6 @@ struct usart_console; -FILE *console_init(void); +typedef void (* process_line_func)(FILE *fp); + +FILE *console_init(process_line_func process_line); diff --git a/source/drivers/usart_console.c b/source/drivers/usart_console.c index ebca992..d97eaa8 100644 --- a/source/drivers/usart_console.c +++ b/source/drivers/usart_console.c @@ -19,7 +19,7 @@ struct usart_console { char recv_buf[RECV_BUF_LEN]; - void (* process_line)(void); + void (* process_line)(FILE *fp); FILE *fp; volatile size_t cur, next; uint32_t dev; @@ -47,7 +47,7 @@ static void usart_isr(struct usart_console *console) scb_reset_system(); if (console->recv_buf[idx] == '\r' && console->process_line) { - console->process_line(); + console->process_line(console->fp); } } } @@ -169,7 +169,7 @@ static int usart_init(struct usart_console *console) return 0; } -FILE *console_init(void) +FILE *console_init(void (* process_line)(FILE *fp)) { cookie_io_functions_t fops = { .read = usart_read, @@ -185,7 +185,7 @@ FILE *console_init(void) console->dev = USART1; console->cur = 0; console->next = 0; - console->process_line = NULL; + console->process_line = process_line; usart[0] = console; usart_init(console);