From 9cc57c43242e74eecd3c466e49ab2d90d617b674 Mon Sep 17 00:00:00 2001 From: fros4943 Date: Fri, 13 Nov 2009 10:07:53 +0000 Subject: [PATCH] generic radio return values + minor bug fix: SFD may go high without transmission starting (very seldom) --- core/dev/cc2420.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/dev/cc2420.c b/core/dev/cc2420.c index ccd61a7ca..ecc6df063 100644 --- a/core/dev/cc2420.c +++ b/core/dev/cc2420.c @@ -28,7 +28,7 @@ * * This file is part of the Contiki operating system. * - * @(#)$Id: cc2420.c,v 1.34 2009/09/09 21:07:42 adamdunkels Exp $ + * @(#)$Id: cc2420.c,v 1.35 2009/11/13 10:07:53 fros4943 Exp $ */ /* * This code is almost device independent and should be easy to port. @@ -387,6 +387,12 @@ cc2420_send(const void *payload, unsigned short payload_len) for(i = LOOP_20_SYMBOLS; i > 0; i--) { if(SFD_IS_1) { + if(!(status() & BV(CC2420_TX_ACTIVE))) { + /* SFD went high yet we are not transmitting! + * => We started receiving a packet right now */ + return RADIO_TX_ERR; + } + #if CC2420_CONF_TIMESTAMPS rtimer_clock_t txtime = timesynch_time(); #endif /* CC2420_CONF_TIMESTAMPS */ @@ -429,7 +435,7 @@ cc2420_send(const void *payload, unsigned short payload_len) } RELEASE_LOCK(); - return 0; + return RADIO_TX_OK; } } @@ -444,7 +450,7 @@ cc2420_send(const void *payload, unsigned short payload_len) } RELEASE_LOCK(); - return -3; /* Transmission never started! */ + return RADIO_TX_ERR; /* Transmission never started! */ } /*---------------------------------------------------------------------------*/ int