From 7a42f2e0f145d2d520aed8e241fa39f7cb62b19f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 3 Jan 2012 20:41:15 -0800 Subject: altos: Add support for UART0 in async mode And copy bytes from it to stdout. Signed-off-by: Keith Packard --- src/core/ao.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/core') diff --git a/src/core/ao.h b/src/core/ao.h index 1fbcf7df..494993f1 100644 --- a/src/core/ao.h +++ b/src/core/ao.h @@ -938,6 +938,35 @@ void ao_serial_init(void); #endif +#ifndef HAS_SERIAL_0 +#define HAS_SERIAL_0 0 +#endif + +#if HAS_SERIAL_0 +void +ao_serial0_rx0_isr(void) ao_arch_interrupt(2); + +void +ao_serial0_tx0_isr(void) ao_arch_interrupt(7); + +char +ao_serial0_getchar(void) __critical; + +void +ao_serial0_putchar(char c) __critical; + +void +ao_serial0_drain(void) __critical; + +void +ao_serial0_set_speed(uint8_t speed); + +void +ao_serial0_init(void); + +#endif + + /* * ao_spi.c */ -- cgit v1.2.3 From c6821ae734a7efaf2e069f6c5edf9605a9dbe125 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 3 Jan 2012 20:46:25 -0800 Subject: altos: flush stdout when fifo from arduino serial port is empty This avoids leaving bytes pending inside altos Signed-off-by: Keith Packard --- src/core/ao.h | 4 ++++ src/teleshield-v0.1/ao_ardu_serial.c | 2 ++ 2 files changed, 6 insertions(+) (limited to 'src/core') diff --git a/src/core/ao.h b/src/core/ao.h index 494993f1..8c5335c4 100644 --- a/src/core/ao.h +++ b/src/core/ao.h @@ -943,6 +943,10 @@ ao_serial_init(void); #endif #if HAS_SERIAL_0 + +extern volatile __xdata struct ao_fifo ao_usart0_rx_fifo; +extern volatile __xdata struct ao_fifo ao_usart0_tx_fifo; + void ao_serial0_rx0_isr(void) ao_arch_interrupt(2); diff --git a/src/teleshield-v0.1/ao_ardu_serial.c b/src/teleshield-v0.1/ao_ardu_serial.c index 7d4dc0db..7ff859af 100644 --- a/src/teleshield-v0.1/ao_ardu_serial.c +++ b/src/teleshield-v0.1/ao_ardu_serial.c @@ -23,6 +23,8 @@ ao_ardu_serial_recv(void) char c; for (;;) { + if (ao_fifo_empty(ao_usart0_rx_fifo)) + flush(); c = ao_serial0_getchar(); putchar (c); } -- cgit v1.2.3