[Tinyos-2-commits] CVS: tinyos-2.x/apps/BaseStationCC2420
CC2420ControlP.nc, 1.5, 1.6 Makefile, 1.2, 1.3
dmm
rincon at users.sourceforge.net
Thu Apr 12 10:12:28 PDT 2007
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/tos/interfaces
LowPowerListening.nc, NONE, 1.1
- Next message: [Tinyos-2-commits]
CVS: tinyos-2.x/apps/tests/cc2420/LplBroadcastCountToLeds
Makefile, NONE, 1.1 README.txt, NONE, 1.1 RadioCountMsg.java,
NONE, 1.1 RadioCountToLeds.h, NONE,
1.1 RadioCountToLedsAppC.nc, NONE, 1.1 RadioCountToLedsC.nc,
NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/tinyos/tinyos-2.x/apps/BaseStationCC2420
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv19360
Modified Files:
CC2420ControlP.nc Makefile
Log Message:
Updated to be compatible with the latest CC2420 stack
Index: CC2420ControlP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/apps/BaseStationCC2420/CC2420ControlP.nc,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** CC2420ControlP.nc 8 Feb 2007 00:49:54 -0000 1.5
--- CC2420ControlP.nc 12 Apr 2007 17:12:26 -0000 1.6
***************
*** 31,40 ****
/**
- * Slightly modified version of CC2420 stack that does not do address
- * decoding so a base station can receive packets addressed to other
- * nodes.
- *
* @author Jonathan Hui <jhui at archrock.com>
! * @author Philip Levis
* @version $Revision$ $Date$
*/
--- 31,36 ----
/**
* @author Jonathan Hui <jhui at archrock.com>
! * @author Urs Hunkeler (ReadRssi implementation)
* @version $Revision$ $Date$
*/
***************
*** 48,51 ****
--- 44,48 ----
provides interface CC2420Config;
provides interface CC2420Power;
+ provides interface Read<uint16_t> as ReadRssi;
uses interface Alarm<T32khz,uint32_t> as StartupTimer;
***************
*** 55,59 ****
uses interface GpioInterrupt as InterruptCCA;
- uses interface Resource as SpiResource;
uses interface CC2420Ram as PANID;
uses interface CC2420Register as FSCTRL;
--- 52,55 ----
***************
*** 63,66 ****
--- 59,63 ----
uses interface CC2420Register as MDMCTRL1;
uses interface CC2420Register as RXCTRL1;
+ uses interface CC2420Register as RSSI;
uses interface CC2420Strobe as SRXON;
uses interface CC2420Strobe as SRFOFF;
***************
*** 68,72 ****
uses interface CC2420Strobe as SXOSCON;
uses interface AMPacket;
!
uses interface Resource as SyncResource;
--- 65,71 ----
uses interface CC2420Strobe as SXOSCON;
uses interface AMPacket;
!
! uses interface Resource as SpiResource;
! uses interface Resource as RssiResource;
uses interface Resource as SyncResource;
***************
*** 86,97 ****
uint8_t m_channel = CC2420_DEF_CHANNEL;
uint8_t m_tx_power = CC2420_DEF_RFPOWER;
uint16_t m_pan = TOS_AM_GROUP;
uint16_t m_short_addr;
bool m_sync_busy;
! task void syncDone_task();
!
norace cc2420_control_state_t m_state = S_VREG_STOPPED;
command error_t Init.init() {
call CSN.makeOutput();
--- 85,103 ----
uint8_t m_channel = CC2420_DEF_CHANNEL;
+
uint8_t m_tx_power = CC2420_DEF_RFPOWER;
+
uint16_t m_pan = TOS_AM_GROUP;
+
uint16_t m_short_addr;
+
bool m_sync_busy;
!
norace cc2420_control_state_t m_state = S_VREG_STOPPED;
+
+ /***************** Prototypes ****************/
+ task void syncDone_task();
+ /***************** Init Commands ****************/
command error_t Init.init() {
call CSN.makeOutput();
***************
*** 102,109 ****
}
async command error_t Resource.immediateRequest() {
error_t error = call SpiResource.immediateRequest();
! if ( error == SUCCESS )
call CSN.clr();
return error;
}
--- 108,117 ----
}
+ /***************** Resource Commands ****************/
async command error_t Resource.immediateRequest() {
error_t error = call SpiResource.immediateRequest();
! if ( error == SUCCESS ) {
call CSN.clr();
+ }
return error;
}
***************
*** 124,136 ****
}
! event void SpiResource.granted() {
! call CSN.clr();
! signal Resource.granted();
! }
!
async command error_t CC2420Power.startVReg() {
atomic {
! if ( m_state != S_VREG_STOPPED )
! return FAIL;
m_state = S_VREG_STARTING;
}
--- 132,141 ----
}
! /***************** CC2420Power Commands ****************/
async command error_t CC2420Power.startVReg() {
atomic {
! if ( m_state != S_VREG_STOPPED ) {
! return FAIL;
! }
m_state = S_VREG_STARTING;
}
***************
*** 140,152 ****
}
- async event void StartupTimer.fired() {
- if ( m_state == S_VREG_STARTING ) {
- m_state = S_VREG_STARTED;
- call RSTN.clr();
- call RSTN.set();
- signal CC2420Power.startVRegDone();
- }
- }
-
async command error_t CC2420Power.stopVReg() {
m_state = S_VREG_STOPPED;
--- 145,148 ----
***************
*** 159,180 ****
async command error_t CC2420Power.startOscillator() {
atomic {
! if ( m_state != S_VREG_STARTED )
! return FAIL;
!
m_state = S_XOSC_STARTING;
call IOCFG1.write( CC2420_SFDMUX_XOSC16M_STABLE <<
! CC2420_IOCFG1_CCAMUX );
call InterruptCCA.enableRisingEdge();
call SXOSCON.strobe();
call IOCFG0.write( ( 1 << CC2420_IOCFG0_FIFOP_POLARITY ) |
! ( 127 << CC2420_IOCFG0_FIFOP_THR ) );
call FSCTRL.write( ( 1 << CC2420_FSCTRL_LOCK_THR ) |
! ( ( (m_channel - 11)*5+357 )
! << CC2420_FSCTRL_FREQ ) );
call MDMCTRL0.write( ( 1 << CC2420_MDMCTRL0_RESERVED_FRAME_MODE ) |
! ( 2 << CC2420_MDMCTRL0_CCA_HYST ) |
! ( 3 << CC2420_MDMCTRL0_CCA_MOD ) |
! ( 1 << CC2420_MDMCTRL0_AUTOCRC ) |
! ( 2 << CC2420_MDMCTRL0_PREAMBLE_LENGTH ) );
call RXCTRL1.write( ( 1 << CC2420_RXCTRL1_RXBPF_LOCUR ) |
( 1 << CC2420_RXCTRL1_LOW_LOWGAIN ) |
--- 155,184 ----
async command error_t CC2420Power.startOscillator() {
atomic {
! if ( m_state != S_VREG_STARTED ) {
! return FAIL;
! }
!
m_state = S_XOSC_STARTING;
call IOCFG1.write( CC2420_SFDMUX_XOSC16M_STABLE <<
! CC2420_IOCFG1_CCAMUX );
!
call InterruptCCA.enableRisingEdge();
call SXOSCON.strobe();
+
call IOCFG0.write( ( 1 << CC2420_IOCFG0_FIFOP_POLARITY ) |
! ( 127 << CC2420_IOCFG0_FIFOP_THR ) );
!
call FSCTRL.write( ( 1 << CC2420_FSCTRL_LOCK_THR ) |
! ( ( (m_channel - 11)*5+357 )
! << CC2420_FSCTRL_FREQ ) );
!
call MDMCTRL0.write( ( 1 << CC2420_MDMCTRL0_RESERVED_FRAME_MODE ) |
! ( 0 << CC2420_MDMCTRL0_ADR_DECODE ) |
! ( 2 << CC2420_MDMCTRL0_CCA_HYST ) |
! ( 3 << CC2420_MDMCTRL0_CCA_MOD ) |
! ( 1 << CC2420_MDMCTRL0_AUTOCRC ) |
! ( 0 << CC2420_MDMCTRL0_AUTOACK ) | // we now SACK
! ( 2 << CC2420_MDMCTRL0_PREAMBLE_LENGTH ) );
!
call RXCTRL1.write( ( 1 << CC2420_RXCTRL1_RXBPF_LOCUR ) |
( 1 << CC2420_RXCTRL1_LOW_LOWGAIN ) |
***************
*** 188,208 ****
}
- async event void InterruptCCA.fired() {
- nxle_uint16_t id[ 2 ];
- m_state = S_XOSC_STARTED;
- id[ 0 ] = m_pan;
- id[ 1 ] = m_short_addr;
- call InterruptCCA.disable();
- call IOCFG1.write( 0 );
- call PANID.write( 0, (uint8_t*)&id, 4 );
- call CSN.set();
- call CSN.clr();
- signal CC2420Power.startOscillatorDone();
- }
async command error_t CC2420Power.stopOscillator() {
atomic {
! if ( m_state != S_XOSC_STARTED )
! return FAIL;
m_state = S_VREG_STARTED;
call SXOSCOFF.strobe();
--- 192,201 ----
}
async command error_t CC2420Power.stopOscillator() {
atomic {
! if ( m_state != S_XOSC_STARTED ) {
! return FAIL;
! }
m_state = S_VREG_STARTED;
call SXOSCOFF.strobe();
***************
*** 213,218 ****
async command error_t CC2420Power.rxOn() {
atomic {
! if ( m_state != S_XOSC_STARTED )
! return FAIL;
call SRXON.strobe();
}
--- 206,212 ----
async command error_t CC2420Power.rxOn() {
atomic {
! if ( m_state != S_XOSC_STARTED ) {
! return FAIL;
! }
call SRXON.strobe();
}
***************
*** 222,227 ****
async command error_t CC2420Power.rfOff() {
atomic {
! if ( m_state != S_XOSC_STARTED )
! return FAIL;
call SRFOFF.strobe();
}
--- 216,222 ----
async command error_t CC2420Power.rfOff() {
atomic {
! if ( m_state != S_XOSC_STARTED ) {
! return FAIL;
! }
call SRFOFF.strobe();
}
***************
*** 229,232 ****
--- 224,229 ----
}
+
+ /***************** CC2420Config Commands ****************/
command uint8_t CC2420Config.getChannel() {
atomic return m_channel;
***************
*** 255,269 ****
command error_t CC2420Config.sync() {
atomic {
! if ( m_sync_busy )
return FAIL;
m_sync_busy = TRUE;
! if ( m_state == S_XOSC_STARTED )
call SyncResource.request();
! else
post syncDone_task();
}
return SUCCESS;
}
event void SyncResource.granted() {
--- 252,275 ----
command error_t CC2420Config.sync() {
atomic {
! if ( m_sync_busy ) {
return FAIL;
+ }
+
m_sync_busy = TRUE;
! if ( m_state == S_XOSC_STARTED ) {
call SyncResource.request();
! } else {
post syncDone_task();
+ }
}
return SUCCESS;
}
+ /***************** ReadRssi Commands ****************/
+ command error_t ReadRssi.read() {
+ return call RssiResource.request();
+ }
+
+ /***************** Spi Resources Events ****************/
event void SyncResource.granted() {
***************
*** 280,284 ****
call SRFOFF.strobe();
call FSCTRL.write( ( 1 << CC2420_FSCTRL_LOCK_THR ) |
! ( ( (channel - 11)*5+357 ) << CC2420_FSCTRL_FREQ ) );
call PANID.write( 0, (uint8_t*)id, sizeof( id ) );
call CSN.set();
--- 286,290 ----
call SRFOFF.strobe();
call FSCTRL.write( ( 1 << CC2420_FSCTRL_LOCK_THR ) |
! ( ( (channel - 11)*5+357 ) << CC2420_FSCTRL_FREQ ) );
call PANID.write( 0, (uint8_t*)id, sizeof( id ) );
call CSN.set();
***************
*** 292,295 ****
--- 298,343 ----
}
+ event void SpiResource.granted() {
+ call CSN.clr();
+ signal Resource.granted();
+ }
+
+ event void RssiResource.granted() {
+ uint16_t data;
+ call CSN.clr();
+ call RSSI.read(&data);
+ call CSN.set();
+
+ call RssiResource.release();
+ data += 0x7f;
+ data &= 0x00ff;
+ signal ReadRssi.readDone(SUCCESS, data);
+ }
+
+ /***************** StartupTimer Events ****************/
+ async event void StartupTimer.fired() {
+ if ( m_state == S_VREG_STARTING ) {
+ m_state = S_VREG_STARTED;
+ call RSTN.clr();
+ call RSTN.set();
+ signal CC2420Power.startVRegDone();
+ }
+ }
+
+ /***************** InterruptCCA Events ****************/
+ async event void InterruptCCA.fired() {
+ nxle_uint16_t id[ 2 ];
+ m_state = S_XOSC_STARTED;
+ id[ 0 ] = m_pan;
+ id[ 1 ] = m_short_addr;
+ call InterruptCCA.disable();
+ call IOCFG1.write( 0 );
+ call PANID.write( 0, (uint8_t*)&id, 4 );
+ call CSN.set();
+ call CSN.clr();
+ signal CC2420Power.startOscillatorDone();
+ }
+
+ /***************** Tasks ****************/
task void syncDone_task() {
atomic m_sync_busy = FALSE;
***************
*** 297,301 ****
}
! default event void CC2420Config.syncDone( error_t error ) {}
}
--- 345,354 ----
}
! /***************** Defaults ****************/
! default event void CC2420Config.syncDone( error_t error ) {
! }
+ default event void ReadRssi.readDone(error_t error, uint16_t data) {
+ }
+
}
Index: Makefile
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/apps/BaseStationCC2420/Makefile,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Makefile 6 Nov 2006 11:56:46 -0000 1.2
--- Makefile 12 Apr 2007 17:12:26 -0000 1.3
***************
*** 1,3 ****
--- 1,4 ----
COMPONENT=BaseStationC
+ CFLAGS += -DCC2420_NO_ACKNOWLEDGEMENTS
include $(MAKERULES)
- Previous message: [Tinyos-2-commits] CVS: tinyos-2.x/tos/interfaces
LowPowerListening.nc, NONE, 1.1
- Next message: [Tinyos-2-commits]
CVS: tinyos-2.x/apps/tests/cc2420/LplBroadcastCountToLeds
Makefile, NONE, 1.1 README.txt, NONE, 1.1 RadioCountMsg.java,
NONE, 1.1 RadioCountToLeds.h, NONE,
1.1 RadioCountToLedsAppC.nc, NONE, 1.1 RadioCountToLedsC.nc,
NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Tinyos-2-commits
mailing list