From e92073f86f6c6cb5002e235a4bc6f39b6609d177 Mon Sep 17 00:00:00 2001 From: Marti Bolivar Date: Wed, 14 Sep 2011 20:38:26 -0400 Subject: usart: Add usart_rx(). usart_rx() is a nonblocking USART receive. Add it for symmetry with usart_tx(). --- libmaple/usart.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libmaple/usart.c') diff --git a/libmaple/usart.c b/libmaple/usart.c index 998da17..0bdc37a 100644 --- a/libmaple/usart.c +++ b/libmaple/usart.c @@ -191,6 +191,22 @@ uint32 usart_tx(usart_dev *dev, const uint8 *buf, uint32 len) { return txed; } +/** + * @brief Nonblocking USART receive. + * @param dev Serial port to receive bytes from + * @param buf Buffer to store received bytes into + * @param len Maximum number of bytes to store + * @return Number of bytes received + */ +uint32 usart_rx(usart_dev *dev, uint8 *buf, uint32 len) { + uint32 rxed = 0; + while (usart_data_available(dev) && rxed < len) { + *buf++ = usart_getc(dev); + rxed++; + } + return rxed; +} + /** * @brief Transmit an unsigned integer to the specified serial port in * decimal format. -- cgit v1.2.3