altos: flush stdout when fifo from arduino serial port is empty
authorKeith Packard <keithp@keithp.com>
Wed, 4 Jan 2012 04:46:25 +0000 (20:46 -0800)
committerKeith Packard <keithp@keithp.com>
Wed, 4 Jan 2012 04:46:25 +0000 (20:46 -0800)
This avoids leaving bytes pending inside altos

Signed-off-by: Keith Packard <keithp@keithp.com>
src/core/ao.h
src/teleshield-v0.1/ao_ardu_serial.c

index 494993f12992b8f7b5e71bd190da155bc3068dc6..8c5335c4bd73a86d9e9edb30a848f0cd18caa1e7 100644 (file)
@@ -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);
 
index 7d4dc0db83756f14dd0d7b8945b0792fced0b49c..7ff859af879dd5063c19760a556ee0d145161ce8 100644 (file)
@@ -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);
        }