Reset CCA mode to default. Make sure that the radio gto switched on when reading RSSI; otherwise node will reboot because of watchdog

This commit is contained in:
adamdunkels 2010-03-09 13:18:16 +00:00
parent 52114b50e3
commit cc7d3ae142

View file

@ -28,7 +28,7 @@
* *
* This file is part of the Contiki operating system. * This file is part of the Contiki operating system.
* *
* @(#)$Id: cc2420.c,v 1.41 2010/02/25 16:06:44 adamdunkels Exp $ * @(#)$Id: cc2420.c,v 1.42 2010/03/09 13:18:16 adamdunkels Exp $
*/ */
/* /*
* This code is almost device independent and should be easy to port. * This code is almost device independent and should be easy to port.
@ -280,8 +280,6 @@ cc2420_init(void)
/* Turn on/off automatic packet acknowledgment and address decoding. */ /* Turn on/off automatic packet acknowledgment and address decoding. */
reg = getreg(CC2420_MDMCTRL0); reg = getreg(CC2420_MDMCTRL0);
reg |= 0x40; /* XXX CCA mode 1 */
#if CC2420_CONF_AUTOACK #if CC2420_CONF_AUTOACK
reg |= AUTOACK | ADR_DECODE; reg |= AUTOACK | ADR_DECODE;
#else #else
@ -370,7 +368,6 @@ cc2420_transmit(unsigned short payload_len)
accurate measurement of the transmission time.*/ accurate measurement of the transmission time.*/
while(status() & BV(CC2420_TX_ACTIVE)); while(status() & BV(CC2420_TX_ACTIVE));
#ifdef ENERGEST_CONF_LEVELDEVICE_LEVELS #ifdef ENERGEST_CONF_LEVELDEVICE_LEVELS
ENERGEST_OFF_LEVEL(ENERGEST_TYPE_TRANSMIT,cc2420_get_txpower()); ENERGEST_OFF_LEVEL(ENERGEST_TYPE_TRANSMIT,cc2420_get_txpower());
#endif #endif
@ -761,9 +758,12 @@ cc2420_cca(void)
if(!receive_on) { if(!receive_on) {
radio_was_off = 1; radio_was_off = 1;
cc2420_on(); cc2420_on();
} }
/* Make sure that the radio really got turned on. */
if(!receive_on) {
return 1;
}
while(!(status() & BV(CC2420_RSSI_VALID))) { while(!(status() & BV(CC2420_RSSI_VALID))) {
/* printf("cc2420_rssi: RSSI not valid.\n"); */ /* printf("cc2420_rssi: RSSI not valid.\n"); */