From b4f3ab5af74544bbfc01cf907008ad216bcaa361 Mon Sep 17 00:00:00 2001 From: nvt-se Date: Thu, 6 Sep 2007 11:45:08 +0000 Subject: [PATCH] Added support for configurable callbacks of uart1 input. --- cpu/msp430/dev/uart1.c | 18 ++++++++++++++---- cpu/msp430/dev/uart1.h | 3 ++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/cpu/msp430/dev/uart1.c b/cpu/msp430/dev/uart1.c index 7c0d6f987..fab432013 100644 --- a/cpu/msp430/dev/uart1.c +++ b/cpu/msp430/dev/uart1.c @@ -26,19 +26,28 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)$Id: uart1.c,v 1.2 2007/05/22 21:01:51 adamdunkels Exp $ + * @(#)$Id: uart1.c,v 1.3 2007/09/06 11:45:08 nvt-se Exp $ */ /* * Machine dependent MSP430 UART1 code. */ +#include #include #include #include "lib/energest.h" #include "dev/uart1.h" +static void (*uart1_input_handler)(unsigned char c); + +/*---------------------------------------------------------------------------*/ +void +uart1_set_input(void (*input)(unsigned char c)) +{ + uart1_input_handler = input; +} /*---------------------------------------------------------------------------*/ void uart1_writeb(unsigned char c) @@ -117,9 +126,10 @@ uart1_interrupt(void) volatile unsigned dummy; dummy = RXBUF1; /* Clear error flags by forcing a dummy read. */ } else { - /* if(slip_input_byte(RXBUF1)) { - LPM4_EXIT; - }*/ + if (uart1_input_handler != NULL) { + uart1_input_handler(RXBUF1); + LPM4_EXIT; + } } ENERGEST_OFF(ENERGEST_TYPE_IRQ); } diff --git a/cpu/msp430/dev/uart1.h b/cpu/msp430/dev/uart1.h index 7b03f3620..eb38c2b44 100644 --- a/cpu/msp430/dev/uart1.h +++ b/cpu/msp430/dev/uart1.h @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * $Id: uart1.h,v 1.1 2007/03/15 21:37:19 adamdunkels Exp $ + * $Id: uart1.h,v 1.2 2007/09/06 11:45:08 nvt-se Exp $ */ /** @@ -45,6 +45,7 @@ #define UART1_BAUD2UBR(baud) ((MSP430_CPU_SPEED)/(baud)) +void uart1_set_input(void (*input)(unsigned char c)); void uart1_writeb(unsigned char c); void uart1_init(unsigned long ubr);