[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


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)
  



More information about the Tinyos-2-commits mailing list