stm32f0: usart: set up process line callback and pass the file pointer

tags/0.1.0
S.J.R. van Schaik 8 years ago
parent 40c0668d20
commit 30f878e562
  1. 4
      include/console.h
  2. 8
      source/drivers/usart_console.c

@ -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);

@ -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);

Loading…
Cancel
Save