aboutsummaryrefslogtreecommitdiffstats
path: root/firmware/microblaze/lib/hal_uart.c
diff options
context:
space:
mode:
authorNick Foster <nick@nerdnetworks.org>2010-08-13 12:09:28 -0700
committerNick Foster <nick@nerdnetworks.org>2010-08-13 12:09:28 -0700
commit6bde8e29eb28b746109531553d38fec91a89dc73 (patch)
tree6139aa459f519d6ffebdee858c8c8162be1526be /firmware/microblaze/lib/hal_uart.c
parentf09d9820ed40371f552d3a910bc2d8170d290653 (diff)
downloaduhd-6bde8e29eb28b746109531553d38fec91a89dc73.tar.gz
uhd-6bde8e29eb28b746109531553d38fec91a89dc73.tar.bz2
uhd-6bde8e29eb28b746109531553d38fec91a89dc73.zip
Added timeout functionality for UART gets() calls. use fngets_timeout(). timeout defined in hal_uart.h.
Diffstat (limited to 'firmware/microblaze/lib/hal_uart.c')
-rw-r--r--firmware/microblaze/lib/hal_uart.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/firmware/microblaze/lib/hal_uart.c b/firmware/microblaze/lib/hal_uart.c
index 8f7f83a68..4d754d5e5 100644
--- a/firmware/microblaze/lib/hal_uart.c
+++ b/firmware/microblaze/lib/hal_uart.c
@@ -19,6 +19,7 @@
#include "memory_map.h"
#include "hal_uart.h"
#include "hal_io.h"
+#include "mdelay.h"
//just to save you from going insane, note that firmware/FPGA UARTs [0-2] correspond to serial ports [1-3].
//so in software, we refer to UART_DEBUG as UART0, but it transmits on pin TXD<1>. see the UART assignments in hal_uart.h.
@@ -101,6 +102,16 @@ hal_uart_getc(hal_uart_name_t u)
return uart_regs[u].rxchar;
}
+int
+hal_uart_getc_timeout(hal_uart_name_t u)
+{
+ int timeout = 0;
+ while (((uart_regs[u].rxlevel) == 0) && (timeout++ < HAL_UART_TIMEOUT_MS))
+ mdelay(1);
+
+ return (uart_regs[u].rxlevel == 0) ? 0 : uart_regs[u].rxchar;
+}
+
int hal_uart_rx_flush(hal_uart_name_t u)
{
char x;