From 004143b6b896094d00df076bd61645657238b924 Mon Sep 17 00:00:00 2001 From: nvt-se Date: Mon, 17 Dec 2007 16:37:15 +0000 Subject: [PATCH] set rxlen to zero before enabling interrupts. --- platform/msb430/dev/cc1020.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/platform/msb430/dev/cc1020.c b/platform/msb430/dev/cc1020.c index 3658fd569..8710dd05f 100644 --- a/platform/msb430/dev/cc1020.c +++ b/platform/msb430/dev/cc1020.c @@ -291,17 +291,16 @@ cc1020_read(void *buf, unsigned short size) memcpy(buf, (char *)cc1020_rxbuf + HDRSIZE, len); RIMESTATS_ADD(llrx); + // reset receiver + cc1020_rxlen = 0; + CC1020_SET_OPSTATE(CC1020_RX | CC1020_RX_SEARCHING); - //cc1020_rxstate = CC1020_RX_SEARCHING; if ((cc1020_state & CC1020_TURN_OFF) && (cc1020_txlen == 0)) { cc1020_off(); } else { ENABLE_RX_IRQ(); } - // reset receiver - cc1020_rxlen = 0; - return len; } @@ -451,14 +450,12 @@ interrupt(UART0RX_VECTOR) cc1020_rxhandler(void) if (pktlen == 0 || pktlen > sizeof (cc1020_rxbuf)) { cc1020_rxlen = 0; CC1020_SET_OPSTATE(CC1020_RX | CC1020_RX_SEARCHING); - //cc1020_rxstate = CC1020_RX_SEARCHING; } } else if (cc1020_rxlen > HDRSIZE) { if (cc1020_rxlen == pktlen) { // disable receiver DISABLE_RX_IRQ(); - CC1020_SET_OPSTATE(CC1020_RX | CC1020_RX_PROCESSING); - //cc1020_rxstate = CC1020_RX_PROCESSING; + CC1020_SET_OPSTATE(CC1020_RX | CC1020_RX_PROCESSING); // call receiver to copy from buffer process_poll(&cc1020_receiver_process);