[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/mac/tkn154 FrameDispatchP.nc, 1.2, 1.3 FrameDispatchQueueP.nc, NONE, 1.1 AssociateP.nc, 1.3, 1.4 BeaconSynchronizeP.nc, 1.6, 1.7 BeaconTransmitP.nc, 1.5, 1.6 DisassociateP.nc, 1.1, 1.2 IndirectTxP.nc, 1.2, 1.3 PollP.nc, 1.1, 1.2 PromiscuousModeP.nc, 1.1, 1.2 RadioControlImplP.nc, 1.1, 1.2 ScanP.nc, 1.1, 1.2 TKN154_DEBUG.h, 1.3, 1.4 TKN154_MAC.h, 1.2, 1.3 TKN154P.nc, 1.5, 1.6 CsmaP.nc, 1.3, NONE CsmaQueueP.nc, 1.1, NONE

Jan-Hinrich Hauer janhauer at users.sourceforge.net
Tue Nov 25 01:35:11 PST 2008


Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154
In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv21632/tos/lib/mac/tkn154

Modified Files:
	AssociateP.nc BeaconSynchronizeP.nc BeaconTransmitP.nc 
	DisassociateP.nc IndirectTxP.nc PollP.nc PromiscuousModeP.nc 
	RadioControlImplP.nc ScanP.nc TKN154_DEBUG.h TKN154_MAC.h 
	TKN154P.nc 
Added Files:
	FrameDispatchP.nc FrameDispatchQueueP.nc 
Removed Files:
	CsmaP.nc CsmaQueueP.nc 
Log Message:
+ modified radio driver (PHY) interfaces: CSMA-CA algorithm is now pushed to radio driver
+ adapted CC2420 driver
+ renamed CsmaP -> FrameDispatchP
+ provided workaround for a problem with virtualized alarms (sometimes they seem to fire 2s too late)
+ updated placeholder components
+ updated debug information


--- NEW FILE: FrameDispatchQueueP.nc ---
/*
 * Copyright (c) 2008, Technische Universitaet Berlin
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met:
 * - Redistributions of source code must retain the above copyright notice,
 *   this list of conditions and the following disclaimer.
 * - Redistributions in binary form must reproduce the above copyright 
 *   notice, this list of conditions and the following disclaimer in the 
 *   documentation and/or other materials provided with the distribution.
 * - Neither the name of the Technische Universitaet Berlin nor the names 
 *   of its contributors may be used to endorse or promote products derived
 *   from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 
 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * - Revision -------------------------------------------------------------
 * $Revision: 1.1 $
 * $Date: 2008/11/25 09:35:08 $
 * @author Jan Hauer <hauer at tkn.tu-berlin.de>
 * ========================================================================
 */
#include "TKN154_MAC.h"
generic module FrameDispatchQueueP() {
  provides
  {
    interface Init as Reset;
    interface FrameTx[uint8_t client];
    interface FrameRx as FrameExtracted[uint8_t client];
    interface Purge;
  } uses {
    interface Queue<ieee154_txframe_t*>;
    interface FrameTx as FrameTxCsma;
    interface FrameRx as SubFrameExtracted;
  }
}
implementation
{
  task void txTask();
  bool m_busy;
  uint8_t m_client;

  command error_t Reset.init()
  {
    while (call Queue.size()){
      ieee154_txframe_t *txFrame = call Queue.dequeue();
      signal FrameTx.transmitDone[txFrame->client](txFrame, IEEE154_TRANSACTION_OVERFLOW);
    }
    m_busy = FALSE;
    return SUCCESS;
  }

  command ieee154_status_t FrameTx.transmit[uint8_t client](ieee154_txframe_t *txFrame)
  {
    txFrame->client = client;
    if (call Queue.enqueue(txFrame) != SUCCESS)
      return IEEE154_TRANSACTION_OVERFLOW;
    else {
      post txTask();
      return IEEE154_SUCCESS;
    }
  }

  task void txTask()
  {
    if (!m_busy && call Queue.size()){
      ieee154_txframe_t *txFrame = call Queue.head();
      if (txFrame->headerLen == 0){ 
        // was purged
        call Queue.dequeue();
        signal Purge.purgeDone(txFrame, IEEE154_SUCCESS);
        post txTask();
      }
      m_client = txFrame->client;
      if (call FrameTxCsma.transmit(txFrame) == IEEE154_SUCCESS){
        m_busy = TRUE;
      }
    }
  }

  event void FrameTxCsma.transmitDone(ieee154_txframe_t *txFrame, ieee154_status_t status)
  {
    call Queue.dequeue();
    m_busy = FALSE;
    signal FrameTx.transmitDone[txFrame->client](txFrame, status);
    post txTask();
  }

  event message_t* SubFrameExtracted.received(message_t* frame)
  {
    // this event is signalled when a frame has been received
    // in response to a data request command frame. The transmitDone 
    // event will be signalled later
    return signal FrameExtracted.received[m_client](frame);
  }

  default event void FrameTx.transmitDone[uint8_t client](ieee154_txframe_t *txFrame, ieee154_status_t status){}

  command ieee154_status_t Purge.purge(uint8_t msduHandle)
  {
    uint8_t qSize = call Queue.size(), i;
    if (qSize > 1){
      for (i=0; i<qSize-1; i++){
        ieee154_txframe_t *txFrame = call Queue.element(i);
        if (((txFrame->header->mhr[MHR_INDEX_FC1] & FC1_FRAMETYPE_MASK) == FC1_FRAMETYPE_DATA) &&
          txFrame->handle == msduHandle){
          txFrame->headerLen = 0; // mark as invalid
          return IEEE154_SUCCESS;
        }
      }
    }
    return IEEE154_INVALID_HANDLE;
  }
  
  default event void Purge.purgeDone(ieee154_txframe_t *txFrame, ieee154_status_t status){}
}

Index: AssociateP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/AssociateP.nc,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** AssociateP.nc	21 Oct 2008 17:29:00 -0000	1.3
--- AssociateP.nc	25 Nov 2008 09:35:08 -0000	1.4
***************
*** 153,157 ****
        }
      }
!     call Debug.log(LEVEL_INFO, AssociateP_REQUEST, status, 0, 0);
      return status;
    }
--- 153,157 ----
        }
      }
!     call Debug.log(DEBUG_LEVEL_INFO, AssociateP_REQUEST, status, 0, 0);
      return status;
    }
***************
*** 166,173 ****
      } else {
        call ResponseTimeout.startOneShot(call MLME_GET.macResponseWaitTime()*IEEE154_aBaseSuperframeDuration);
!       call Debug.log(LEVEL_INFO, AssociateP_SETTIMER, 
            call MLME_GET.macResponseWaitTime()*IEEE154_aBaseSuperframeDuration, 0, 0);
      }
!     call Debug.log(LEVEL_INFO, AssociateP_TXDONE, status, 0, 0);
    }
    
--- 166,173 ----
      } else {
        call ResponseTimeout.startOneShot(call MLME_GET.macResponseWaitTime()*IEEE154_aBaseSuperframeDuration);
!       call Debug.log(DEBUG_LEVEL_INFO, AssociateP_SETTIMER, 
            call MLME_GET.macResponseWaitTime()*IEEE154_aBaseSuperframeDuration, 0, 0);
      }
!     call Debug.log(DEBUG_LEVEL_INFO, AssociateP_TXDONE, status, 0, 0);
    }
    
***************
*** 203,207 ****
    {
      if (m_associationOngoing){
!       call Debug.log(LEVEL_INFO, AssociateP_POLL_DONE, m_payloadAssocRequest[0], m_assocRespStatus, 0);
        call ResponseTimeout.stop();
        m_associationOngoing = FALSE;
--- 203,207 ----
    {
      if (m_associationOngoing){
!       call Debug.log(DEBUG_LEVEL_INFO, AssociateP_POLL_DONE, m_payloadAssocRequest[0], m_assocRespStatus, 0);
        call ResponseTimeout.stop();
        m_associationOngoing = FALSE;

Index: BeaconSynchronizeP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/BeaconSynchronizeP.nc,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** BeaconSynchronizeP.nc	23 Oct 2008 16:09:28 -0000	1.6
--- BeaconSynchronizeP.nc	25 Nov 2008 09:35:08 -0000	1.7
***************
*** 106,110 ****
  
    norace uint8_t m_numBeaconsLost;
-   uint8_t m_coordAddress[8];
    message_t m_beaconBuffer;
    norace message_t *m_beaconBufferPtr = &m_beaconBuffer;
--- 106,109 ----
***************
*** 162,166 ****
        return IEEE154_INVALID_PARAMETER;
  
!     call Debug.log(LEVEL_INFO,SyncP_REQUEST, logicalChannel, channelPage, trackBeacon);
      if (!trackBeacon && m_tracking){
        // stop tracking after next received beacon
--- 161,165 ----
        return IEEE154_INVALID_PARAMETER;
  
!     call Debug.log(DEBUG_LEVEL_INFO,0, logicalChannel, channelPage, trackBeacon);
      if (!trackBeacon && m_tracking){
        // stop tracking after next received beacon
***************
*** 172,176 ****
        m_internalRequest = FALSE;
        m_updatePending = TRUE;
!       call Debug.log(LEVEL_INFO,SyncP_RESOURCE_REQUEST, 0, 0, 0);
        atomic {
          // if we are tracking then we'll get the Token automatically,
--- 171,175 ----
        m_internalRequest = FALSE;
        m_updatePending = TRUE;
!       call Debug.log(DEBUG_LEVEL_INFO,1, 0, 0, 0);
        atomic {
          // if we are tracking then we'll get the Token automatically,
***************
*** 186,190 ****
    event void FindBeacon.notify( bool val )
    {
!     if (!m_tracking && !m_updatePending){
        // find a single beacon now (treat this like a user request)
        m_updateLogicalChannel = call MLME_GET.phyCurrentChannel();
--- 185,190 ----
    event void FindBeacon.notify( bool val )
    {
!     call Debug.log(DEBUG_LEVEL_IMPORTANT,20, m_tracking, m_updatePending, 0);
!     if (!m_tracking && !m_updatePending && !call Token.isOwner()){
        // find a single beacon now (treat this like a user request)
        m_updateLogicalChannel = call MLME_GET.phyCurrentChannel();
***************
*** 198,202 ****
    event void Token.granted()
    {
!     call Debug.log(LEVEL_INFO,SyncP_GOT_RESOURCE, m_lastBeaconRxTime+m_beaconInterval, 
          m_beaconInterval, (m_updatePending<<1)+m_tracking);
      if (m_updatePending){
--- 198,202 ----
    event void Token.granted()
    {
!     call Debug.log(DEBUG_LEVEL_INFO,2, m_lastBeaconRxTime+m_beaconInterval, 
          m_beaconInterval, (m_updatePending<<1)+m_tracking);
      if (m_updatePending){
***************
*** 211,215 ****
        m_dt = m_beaconInterval;
        m_numBeaconsLost = IEEE154_aMaxLostBeacons;  // will be reset when beacon is received
!       call Debug.log(LEVEL_INFO,SyncP_UPDATING, call MLME_GET.macCoordShortAddress(), 
            call MLME_GET.macPANId(), m_updateLogicalChannel);
      }
--- 211,215 ----
        m_dt = m_beaconInterval;
        m_numBeaconsLost = IEEE154_aMaxLostBeacons;  // will be reset when beacon is received
!       call Debug.log(DEBUG_LEVEL_INFO,3, call MLME_GET.macCoordShortAddress(), 
            call MLME_GET.macPANId(), m_updateLogicalChannel);
      }
***************
*** 226,230 ****
        if (!m_tracking){
          // nothing to do, just give up the token
!         call Debug.log(LEVEL_INFO,SyncP_RELEASE_RESOURCE, 0, 0, 0);
          call Token.release();
          return;
--- 226,230 ----
        if (!m_tracking){
          // nothing to do, just give up the token
!         call Debug.log(DEBUG_LEVEL_INFO,4, 0, 0, 0);
          call Token.release();
          return;
***************
*** 232,240 ****
        while (call TimeCalc.hasExpired(m_lastBeaconRxTime, m_dt)){ // missed a beacon!
          missed = TRUE;
!         call Debug.log(LEVEL_INFO,SyncP_BEACON_MISSED_1, m_lastBeaconRxTime, m_dt, missed);
          m_dt += m_beaconInterval;
          m_numBeaconsLost++;
        }
        if (m_numBeaconsLost >= IEEE154_aMaxLostBeacons){
          post processBeaconTask();
          return;
--- 232,241 ----
        while (call TimeCalc.hasExpired(m_lastBeaconRxTime, m_dt)){ // missed a beacon!
          missed = TRUE;
!         call Debug.log(DEBUG_LEVEL_IMPORTANT,5, m_lastBeaconRxTime, m_dt, missed);
          m_dt += m_beaconInterval;
          m_numBeaconsLost++;
        }
        if (m_numBeaconsLost >= IEEE154_aMaxLostBeacons){
+         call Debug.log(DEBUG_LEVEL_IMPORTANT,19, m_numBeaconsLost, m_dt, missed);
          post processBeaconTask();
          return;
***************
*** 242,246 ****
        if (missed){
          call Token.request();
!         call Debug.log(LEVEL_INFO,SyncP_RELEASE_RESOURCE, m_lastBeaconRxTime, m_dt, missed);
          call Token.release();
          return;
--- 243,247 ----
        if (missed){
          call Token.request();
!         call Debug.log(DEBUG_LEVEL_IMPORTANT,6, m_lastBeaconRxTime, m_dt, missed);
          call Token.release();
          return;
***************
*** 273,287 ****
    async event void TrackAlarm.fired()
    {
!     call Debug.log(LEVEL_IMPORTANT,SyncP_TRACK_ALARM, m_state,m_lastBeaconRxTime,m_dt);
!     atomic {
!       switch (m_state)
!       {
!         case S_PREPARE:
!           call BeaconRx.prepare();
!           break;
!         case S_RADIO_OFF: 
!           call RadioOff.off(); 
!           break;
!       }
      }
    }
--- 274,286 ----
    async event void TrackAlarm.fired()
    {
!     call Debug.log(DEBUG_LEVEL_INFO,7, m_state,m_lastBeaconRxTime,m_dt);
!     switch (m_state)
!     {
!       case S_PREPARE:
!         call BeaconRx.prepare();
!         break;
!       case S_RADIO_OFF: 
!         call RadioOff.off(); 
!         break;
      }
    }
***************
*** 300,306 ****
        m_state = S_RADIO_OFF;
        result = call BeaconRx.receive(&m_lastBeaconRxRefTime, m_dt-RX_LAG);
!       call Debug.log(LEVEL_IMPORTANT,SyncP_RX_ON, m_lastBeaconRxTime, call TrackAlarm.getNow(), m_dt+RX_DURATION);
        if (result != SUCCESS)
!         call Debug.log(LEVEL_IMPORTANT,SyncP_RADIO_BUSY, result, 0, 0);
        call TrackAlarm.startAt(m_lastBeaconRxTime, m_dt + RX_DURATION);
      }
--- 299,306 ----
        m_state = S_RADIO_OFF;
        result = call BeaconRx.receive(&m_lastBeaconRxRefTime, m_dt-RX_LAG);
!       //__nesc_enable_interrupt();
!       call Debug.log(DEBUG_LEVEL_INFO,8, m_lastBeaconRxTime, 0,(m_lastBeaconRxTime+m_dt) - call TrackAlarm.getNow());
        if (result != SUCCESS)
!         call Debug.log(DEBUG_LEVEL_CRITICAL,9, result, 0, 0);
        call TrackAlarm.startAt(m_lastBeaconRxTime, m_dt + RX_DURATION);
      }
***************
*** 310,327 ****
    {
      uint8_t *mhr = MHR(frame);
!     call Debug.log(LEVEL_INFO,SyncP_RX_PACKET,*((nxle_uint32_t*) &mhr[MHR_INDEX_ADDRESS]), 
          mhr[MHR_INDEX_FC1] & FC1_FRAMETYPE_MASK,mhr[MHR_INDEX_SEQNO]);
      if (!m_beaconSwapBufferReady || !call FrameUtility.isBeaconFromCoord(frame))
      {
!       call Debug.log(LEVEL_IMPORTANT,SyncP_RX_GARBAGE, m_beaconSwapBufferReady, 0, 0);
        return frame;
      } else {
        message_t *tmp = m_beaconBufferPtr;
        call TrackAlarm.stop();
        m_beaconSwapBufferReady = FALSE;
        m_beaconBufferPtr = frame;
!       if (timestamp != NULL)
          memcpy(&m_lastBeaconRxRefTime, timestamp, sizeof(ieee154_reftime_t));
!       call RadioOff.off();
        return tmp;
      }
--- 310,330 ----
    {
      uint8_t *mhr = MHR(frame);
!     call Debug.log(DEBUG_LEVEL_INFO,10,*((nxle_uint32_t*) &mhr[MHR_INDEX_ADDRESS]), 
          mhr[MHR_INDEX_FC1] & FC1_FRAMETYPE_MASK,mhr[MHR_INDEX_SEQNO]);
      if (!m_beaconSwapBufferReady || !call FrameUtility.isBeaconFromCoord(frame))
      {
!       call Debug.log(DEBUG_LEVEL_IMPORTANT,11, m_beaconSwapBufferReady, 0, 0);
        return frame;
      } else {
+       error_t resultOff;
        message_t *tmp = m_beaconBufferPtr;
        call TrackAlarm.stop();
        m_beaconSwapBufferReady = FALSE;
        m_beaconBufferPtr = frame;
!       resultOff = call RadioOff.off();
!       if (timestamp != NULL){
          memcpy(&m_lastBeaconRxRefTime, timestamp, sizeof(ieee154_reftime_t));
!         call Debug.log(DEBUG_LEVEL_INFO,23,0, 0, resultOff);
!       }
        return tmp;
      }
***************
*** 332,339 ****
      if (m_state == S_FIRST_SCAN)
        call BeaconRx.prepare();
!     else if (m_state == S_PREPARE)
!       call TrackAlarm.startAt(m_lastBeaconRxTime, m_dt - IEEE154_RADIO_RX_PREPARE_DELAY);
!     else
        post processBeaconTask();
    }
  
--- 335,346 ----
      if (m_state == S_FIRST_SCAN)
        call BeaconRx.prepare();
!     else if (m_state == S_PREPARE){
!       if (!call TimeCalc.hasExpired(m_lastBeaconRxTime, m_dt - IEEE154_RADIO_RX_PREPARE_DELAY))
!         call TrackAlarm.startAt(m_lastBeaconRxTime, m_dt - IEEE154_RADIO_RX_PREPARE_DELAY);
!       else
!         signal TrackAlarm.fired();
!     } else {
        post processBeaconTask();
+     }
    }
  
***************
*** 343,357 ****
      if (m_beaconSwapBufferReady || !call Frame.isTimestampValid(m_beaconBufferPtr)){
        // missed a beacon!
        m_sfSlotDuration = 0; // CAP len will be 0
        m_numBeaconsLost++;
        m_dt += m_beaconInterval;
!       call Debug.log(LEVEL_IMPORTANT, SyncP_BEACON_MISSED_3,m_numBeaconsLost,0,m_lastBeaconRxTime);
        if (m_numBeaconsLost >= IEEE154_aMaxLostBeacons){
          m_tracking = FALSE;
!         call Debug.log(LEVEL_IMPORTANT, SyncP_LOST_SYNC,0,0,0);
          call Leds.led2Off();
!         if (m_internalRequest)
            call TokenToCap.transfer();
!         else
            signal MLME_SYNC_LOSS.indication(
                IEEE154_BEACON_LOSS, 
--- 350,369 ----
      if (m_beaconSwapBufferReady || !call Frame.isTimestampValid(m_beaconBufferPtr)){
        // missed a beacon!
+       if (!m_beaconSwapBufferReady)
+         call Debug.log(DEBUG_LEVEL_IMPORTANT, 21,m_numBeaconsLost,m_beaconSwapBufferReady,m_lastBeaconRxTime);
+       else
+         call Debug.log(DEBUG_LEVEL_IMPORTANT, 12,m_numBeaconsLost,m_beaconSwapBufferReady,m_lastBeaconRxTime);
        m_sfSlotDuration = 0; // CAP len will be 0
        m_numBeaconsLost++;
        m_dt += m_beaconInterval;
!       m_beaconSwapBufferReady = TRUE;
        if (m_numBeaconsLost >= IEEE154_aMaxLostBeacons){
          m_tracking = FALSE;
!         call Debug.log(DEBUG_LEVEL_IMPORTANT, 13,m_internalRequest,0,0);
          call Leds.led2Off();
!         if (m_internalRequest){
            call TokenToCap.transfer();
!           return;
!         } else
            signal MLME_SYNC_LOSS.indication(
                IEEE154_BEACON_LOSS, 
***************
*** 363,367 ****
        } else
          call Token.request(); // make another request again (before giving the token up)
!       call Debug.log(LEVEL_INFO,SyncP_RELEASE_RESOURCE, 0, 0, 0);
        call Token.release();
      } else { 
--- 375,379 ----
        } else
          call Token.request(); // make another request again (before giving the token up)
!       call Debug.log(DEBUG_LEVEL_INFO,14, 0, 0, 0);
        call Token.release();
      } else { 
***************
*** 380,384 ****
        uint32_t timestamp = call Frame.getTimestamp(m_beaconBufferPtr);
  
!       call Debug.log(LEVEL_INFO, SyncP_BEACON_RX, m_lastBeaconRxTime, timestamp, mhr[2]);
        m_numGtsSlots = (payload[2] & 7);
        gtsFieldLength = 1 + ((m_numGtsSlots > 0) ? 1 + m_numGtsSlots * 3: 0);
--- 392,396 ----
        uint32_t timestamp = call Frame.getTimestamp(m_beaconBufferPtr);
  
!       call Debug.log(DEBUG_LEVEL_INFO, 15, m_lastBeaconRxTime, timestamp, mhr[2]);
        m_numGtsSlots = (payload[2] & 7);
        gtsFieldLength = 1 + ((m_numGtsSlots > 0) ? 1 + m_numGtsSlots * 3: 0);
***************
*** 396,400 ****
          else
            m_BLELen += call MLME_GET.macMinSIFSPeriod();
!         m_BLELen += call MLME_GET.macBattLifeExtPeriods();
        } else
          m_BLELen = 0;
--- 408,412 ----
          else
            m_BLELen += call MLME_GET.macMinSIFSPeriod();
!         m_BLELen = m_BLELen + call MLME_GET.macBattLifeExtPeriods() * 20;
        } else
          m_BLELen = 0;
***************
*** 404,413 ****
        if (m_stopTracking){
          m_tracking = FALSE;
!         call Debug.log(LEVEL_INFO,SyncP_RELEASE_RESOURCE, 0, 0, 0);
          if (m_updatePending) // there is already a new request pending...
            call Token.request();
          call Token.release();
        } else {
!         call Debug.log(LEVEL_INFO,SyncP_TRANSFER_RESOURCE, 0, 0, 0);
          call TokenToCap.transfer(); // borrow Token to CAP/CFP module, we'll get it back afterwards
        }
--- 416,425 ----
        if (m_stopTracking){
          m_tracking = FALSE;
!         call Debug.log(DEBUG_LEVEL_INFO,16, 0, 0, 0);
          if (m_updatePending) // there is already a new request pending...
            call Token.request();
          call Token.release();
        } else {
!         call Debug.log(DEBUG_LEVEL_INFO,17, 0, 0, 0);
          call TokenToCap.transfer(); // borrow Token to CAP/CFP module, we'll get it back afterwards
        }
***************
*** 436,440 ****
        }
        // Beacon Tracking: update state
!       call Debug.log(LEVEL_INFO, SyncP_NEXT_RX_TIME, 0, timestamp, m_beaconInterval);
        m_numBeaconsLost = 0;
        // TODO: check PAN ID conflict here?
--- 448,452 ----
        }
        // Beacon Tracking: update state
!       call Debug.log(DEBUG_LEVEL_INFO, 18, m_lastBeaconRxTime, m_beaconInterval, 0);
        m_numBeaconsLost = 0;
        // TODO: check PAN ID conflict here?

Index: BeaconTransmitP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/BeaconTransmitP.nc,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** BeaconTransmitP.nc	23 Oct 2008 16:09:28 -0000	1.5
--- BeaconTransmitP.nc	25 Nov 2008 09:35:08 -0000	1.6
***************
*** 239,243 ****
        if (panCoordinator)
          startTime = 0; // start immediately
!       call Debug.log(LEVEL_INFO, StartP_REQUEST, logicalChannel, beaconOrder, superframeOrder);
        if (beaconOrder == 15){
          // beaconless PAN
--- 239,243 ----
        if (panCoordinator)
          startTime = 0; // start immediately
!       call Debug.log(DEBUG_LEVEL_INFO, 0, logicalChannel, beaconOrder, superframeOrder);
        if (beaconOrder == 15){
          // beaconless PAN
***************
*** 395,399 ****
    {
      call Debug.flush();
!     call Debug.log(LEVEL_INFO, StartP_GOT_RESOURCE, m_lastBeaconTxTime, m_beaconInterval, m_requests);
      if (m_requests & REQUEST_REALIGNMENT_DONE_PENDING){
        // unlikely to occur: we have not yet received a done()
--- 395,399 ----
    {
      call Debug.flush();
!     call Debug.log(DEBUG_LEVEL_INFO, 1, m_lastBeaconTxTime, m_beaconInterval, m_requests);
      if (m_requests & REQUEST_REALIGNMENT_DONE_PENDING){
        // unlikely to occur: we have not yet received a done()
***************
*** 405,409 ****
        m_requests &= ~REQUEST_UPDATE_SF;
        continueStartRequest();
!       call Debug.log(LEVEL_INFO, StartP_UPDATE_STATE, 0, 0, 0);
      }
      if (call RadioOff.isOff())
--- 405,409 ----
        m_requests &= ~REQUEST_UPDATE_SF;
        continueStartRequest();
!       call Debug.log(DEBUG_LEVEL_INFO, 2, 0, 0, 0);
      }
      if (call RadioOff.isOff())
***************
*** 434,438 ****
        // have not had time to finish processing the last sent beacon
        post grantedTask();
!       call Debug.log(LEVEL_CRITICAL, StartP_OWNER_TOO_FAST, 0, 0, 0);
        return;
      } else if (m_beaconOrder == 15){
--- 434,438 ----
        // have not had time to finish processing the last sent beacon
        post grantedTask();
!       call Debug.log(DEBUG_LEVEL_IMPORTANT, 3, 0, 0, 0);
        return;
      } else if (m_beaconOrder == 15){
***************
*** 464,469 ****
            m_dt = m_beaconInterval;
          }
!         while (call TimeCalc.hasExpired(m_lastBeaconTxTime, m_dt)){ // missed sending a beacon
!           call Debug.log(LEVEL_INFO, StartP_SKIPPED_BEACON, m_lastBeaconTxTime, m_dt, 0);
            m_dt += m_beaconInterval;
          }
--- 464,469 ----
            m_dt = m_beaconInterval;
          }
!         while (call TimeCalc.hasExpired(m_lastBeaconTxTime, m_dt)){ // skipped a beacon
!           call Debug.log(DEBUG_LEVEL_IMPORTANT, 4, m_lastBeaconTxTime, m_dt, 0);
            m_dt += m_beaconInterval;
          }
***************
*** 490,499 ****
              m_beaconFrame.header->mhr[MHR_INDEX_FC1] &= ~FC1_FRAME_PENDING;
            m_beaconFrame.header->mhr[MHR_INDEX_SEQNO] = m_bsn; // update beacon seqno
!           call Debug.log(LEVEL_INFO, StartP_PREPARE_TX, 0, m_lastBeaconTxTime, 0);
            call BeaconTx.load(&m_beaconFrame); 
            break;
          case S_TX_LOCKED: 
!           call Debug.log(LEVEL_INFO, StartP_TRANSMIT, m_lastBeaconTxTime, m_dt, ((uint32_t)m_lastBeaconTxRefTime));
!           call BeaconTx.transmit(&m_lastBeaconTxRefTime, m_dt, 0, FALSE);
            break;
        }
--- 490,499 ----
              m_beaconFrame.header->mhr[MHR_INDEX_FC1] &= ~FC1_FRAME_PENDING;
            m_beaconFrame.header->mhr[MHR_INDEX_SEQNO] = m_bsn; // update beacon seqno
!           call Debug.log(DEBUG_LEVEL_INFO, 5, 0, m_lastBeaconTxTime, 0);
            call BeaconTx.load(&m_beaconFrame); 
            break;
          case S_TX_LOCKED: 
!           call Debug.log(DEBUG_LEVEL_INFO, 6, m_lastBeaconTxTime, m_dt, 0);
!           call BeaconTx.transmit(&m_lastBeaconTxRefTime, m_dt);
            break;
        }
***************
*** 504,518 ****
    {
      atomic {
!       call Debug.log(LEVEL_INFO, StartP_PREPARE_TXDONE, 0, m_lastBeaconTxTime, 0);
        if (m_txOneBeaconImmediately){
          m_txOneBeaconImmediately = FALSE;
!         call BeaconTx.transmit(0, 0, 0, FALSE); // now!
        } else 
          call BeaconTxAlarm.startAt(m_lastBeaconTxTime, m_dt - IEEE154_RADIO_TX_SEND_DELAY);
      }
    }
!     
!   async event void BeaconTx.transmitDone(ieee154_txframe_t *frame, 
!       ieee154_reftime_t *referenceTime, bool pendingFlag, error_t error)
    {
      // Coord CAP has just started...
--- 504,516 ----
    {
      atomic {
!       call Debug.log(DEBUG_LEVEL_INFO, 7, 0, m_lastBeaconTxTime, 0);
        if (m_txOneBeaconImmediately){
          m_txOneBeaconImmediately = FALSE;
!         call BeaconTx.transmit(NULL, 0); // now!
        } else 
          call BeaconTxAlarm.startAt(m_lastBeaconTxTime, m_dt - IEEE154_RADIO_TX_SEND_DELAY);
      }
    }
!   async event void BeaconTx.transmitDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime)
    {
      // Coord CAP has just started...
***************
*** 520,526 ****
      // Sec. 7.5.1.1: "start of slot 0 is defined as the point at which 
      // the first symbol of the beacon PPDU is transmitted" 
!     call Debug.log(LEVEL_INFO, StartP_BEACON_TRANSMITTED, frame->metadata->timestamp, m_lastBeaconTxTime, m_dt);
      m_lastBeaconTxTime = frame->metadata->timestamp;
!     memcpy(&m_lastBeaconTxRefTime, referenceTime, sizeof(ieee154_reftime_t));
      m_numGtsSlots = (frame->payload[2] & 0x07);
      gtsFieldLength = 1 + ((m_numGtsSlots > 0) ? 1 + m_numGtsSlots * 3: 0);
--- 518,524 ----
      // Sec. 7.5.1.1: "start of slot 0 is defined as the point at which 
      // the first symbol of the beacon PPDU is transmitted" 
!     call Debug.log(DEBUG_LEVEL_INFO, 8, frame->metadata->timestamp, m_lastBeaconTxTime, m_dt);
      m_lastBeaconTxTime = frame->metadata->timestamp;
!     memcpy(&m_lastBeaconTxRefTime, txTime, sizeof(ieee154_reftime_t));
      m_numGtsSlots = (frame->payload[2] & 0x07);
      gtsFieldLength = 1 + ((m_numGtsSlots > 0) ? 1 + m_numGtsSlots * 3: 0);
***************
*** 535,544 ****
        // BLE is active; calculate the time offset from slot0
        m_BLELen = IEEE154_SHR_DURATION + 
!         (frame->headerLen + frame->payloadLen) * IEEE154_SYMBOLS_PER_OCTET; 
!       if (frame->headerLen + frame->payloadLen > IEEE154_aMaxSIFSFrameSize)
          m_BLELen += IEEE154_MIN_LIFS_PERIOD;
        else
          m_BLELen += IEEE154_MIN_SIFS_PERIOD;
!       m_BLELen += m_battLifeExtPeriods;
      } else
        m_BLELen = 0;
--- 533,542 ----
        // BLE is active; calculate the time offset from slot0
        m_BLELen = IEEE154_SHR_DURATION + 
!         (frame->headerLen + frame->payloadLen + 2) * IEEE154_SYMBOLS_PER_OCTET; 
!       if (frame->headerLen + frame->payloadLen + 2 > IEEE154_aMaxSIFSFrameSize)
          m_BLELen += IEEE154_MIN_LIFS_PERIOD;
        else
          m_BLELen += IEEE154_MIN_SIFS_PERIOD;
!       m_BLELen = m_BLELen + m_battLifeExtPeriods * 20;
      } else
        m_BLELen = 0;
***************
*** 659,663 ****
        if (m_txState == S_TX_LOCKED) 
        {
!         call Debug.log(LEVEL_INFO, StartP_BEACON_UPDATE, 0, 0, m_txState);
          return; // too late !
        }
--- 657,661 ----
        if (m_txState == S_TX_LOCKED) 
        {
!         call Debug.log(DEBUG_LEVEL_IMPORTANT, 10, 0, 0, m_txState);
          return; // too late !
        }
***************
*** 697,701 ****
        if (m_txState == S_TX_LOCKED) 
        {
!         call Debug.log(LEVEL_INFO, StartP_BEACON_UPDATE_2, 0, 0, m_txState);
          return; // too late !
        }
--- 695,699 ----
        if (m_txState == S_TX_LOCKED) 
        {
!         call Debug.log(DEBUG_LEVEL_INFO, 11, 0, 0, m_txState);
          return; // too late !
        }
***************
*** 816,819 ****
--- 814,822 ----
    async command uint8_t FinalCapSlot.getNow() { return m_finalCAPSlot; }
    async command uint8_t NumGtsSlots.getNow() { return m_numGtsSlots; }
+   async event void BeaconTx.transmitUnslottedCsmaCaDone(ieee154_txframe_t *frame,
+       bool ackPendingFlag, ieee154_csma_t *csmaParams, error_t result){}
+   async event void BeaconTx.transmitSlottedCsmaCaDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime, 
+       bool ackPendingFlag, uint16_t remainingBackoff, ieee154_csma_t *csmaParams, error_t result){} 
+ 
  
    default event void MLME_START.confirm    (

Index: DisassociateP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/DisassociateP.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** DisassociateP.nc	21 Oct 2008 17:29:00 -0000	1.1
--- DisassociateP.nc	25 Nov 2008 09:35:08 -0000	1.2
***************
*** 143,147 ****
        }
      }
!     call Debug.log(LEVEL_INFO, DISSASSOCIATE_REQUEST, status, 0, 0);
      return status;
    }
--- 143,147 ----
        }
      }
!     call Debug.log(DEBUG_LEVEL_INFO, DISSASSOCIATE_REQUEST, status, 0, 0);
      return status;
    }
***************
*** 159,163 ****
      call TxControlPool.put((ieee154_txcontrol_t*) ((uint8_t*) data->header - offsetof(ieee154_txcontrol_t, header)));
      call TxFramePool.put(data);
!     call Debug.log(LEVEL_INFO, DISSASSOCIATE_TXDONE, status, 2, 0);
      m_disAssociationOngoing = FALSE;
      signal MLME_DISASSOCIATE.confirm(status, DeviceAddrMode, DevicePANID, DeviceAddress);
--- 159,163 ----
      call TxControlPool.put((ieee154_txcontrol_t*) ((uint8_t*) data->header - offsetof(ieee154_txcontrol_t, header)));
      call TxFramePool.put(data);
!     call Debug.log(DEBUG_LEVEL_INFO, DISSASSOCIATE_TXDONE, status, 2, 0);
      m_disAssociationOngoing = FALSE;
      signal MLME_DISASSOCIATE.confirm(status, DeviceAddrMode, DevicePANID, DeviceAddress);
***************
*** 177,184 ****
      ieee154_address_t DeviceAddress;
      call FrameUtility.convertToNative(&DeviceAddress.extendedAddress, &mhr[dstAddrOffset]);
!     call Debug.log(LEVEL_INFO, DISSASSOCIATE_TXDONE, status, 1, 0);
      call TxControlPool.put((ieee154_txcontrol_t*) ((uint8_t*) data->header - offsetof(ieee154_txcontrol_t, header)));
      call TxFramePool.put(data);
!     call Debug.log(LEVEL_INFO, DISSASSOCIATE_TXDONE, status, 2, 0);
      m_disAssociationOngoing = FALSE;
      signal MLME_DISASSOCIATE.confirm(status, DeviceAddrMode, DevicePANID, DeviceAddress);
--- 177,184 ----
      ieee154_address_t DeviceAddress;
      call FrameUtility.convertToNative(&DeviceAddress.extendedAddress, &mhr[dstAddrOffset]);
!     call Debug.log(DEBUG_LEVEL_INFO, DISSASSOCIATE_TXDONE, status, 1, 0);
      call TxControlPool.put((ieee154_txcontrol_t*) ((uint8_t*) data->header - offsetof(ieee154_txcontrol_t, header)));
      call TxFramePool.put(data);
!     call Debug.log(DEBUG_LEVEL_INFO, DISSASSOCIATE_TXDONE, status, 2, 0);
      m_disAssociationOngoing = FALSE;
      signal MLME_DISASSOCIATE.confirm(status, DeviceAddrMode, DevicePANID, DeviceAddress);
***************
*** 206,210 ****
      // received a disassociation notification from the device
      ieee154_address_t address;
!     call Debug.log(LEVEL_INFO, DISSASSOCIATE_RX, 0, 0, 0);
      if (call Frame.getSrcAddrMode(frame) == ADDR_MODE_EXTENDED_ADDRESS && 
          call Frame.getSrcAddr(frame, &address) == SUCCESS)
--- 206,210 ----
      // received a disassociation notification from the device
      ieee154_address_t address;
!     call Debug.log(DEBUG_LEVEL_INFO, DISSASSOCIATE_RX, 0, 0, 0);
      if (call Frame.getSrcAddrMode(frame) == ADDR_MODE_EXTENDED_ADDRESS && 
          call Frame.getSrcAddr(frame, &address) == SUCCESS)

Index: IndirectTxP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/IndirectTxP.nc,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** IndirectTxP.nc	25 Jun 2008 10:19:03 -0000	1.2
--- IndirectTxP.nc	25 Nov 2008 09:35:09 -0000	1.3
***************
*** 42,45 ****
--- 42,46 ----
      interface WriteBeaconField as PendingAddrWrite;
      interface Notify<bool> as PendingAddrSpecUpdated;
+     interface Get<ieee154_txframe_t*> as GetIndirectTxFrame; 
      interface Purge;
    }
***************
*** 130,134 ****
          pendingAddrField[1 + 2*m_numShortPending + i*8 + j] = longAdrPtr[i][j];
      pendingAddrField[0] = m_numShortPending | (m_numExtPending << 4);
!     call Debug.log(LEVEL_INFO, IndirectTxP_BEACON_ASSEMBLY, len,0,0);
      return len;
    }
--- 131,135 ----
          pendingAddrField[1 + 2*m_numShortPending + i*8 + j] = longAdrPtr[i][j];
      pendingAddrField[0] = m_numShortPending | (m_numExtPending << 4);
!     call Debug.log(DEBUG_LEVEL_INFO, IndirectTxP_BEACON_ASSEMBLY, len,0,0);
      return len;
    }
***************
*** 144,148 ****
      uint8_t i;
      if (m_numTableEntries >= NUM_MAX_PENDING){
!       call Debug.log(LEVEL_IMPORTANT, IndirectTxP_OVERFLOW, 0,0,0);
        return IEEE154_TRANSACTION_OVERFLOW;
      }
--- 145,149 ----
      uint8_t i;
      if (m_numTableEntries >= NUM_MAX_PENDING){
!       call Debug.log(DEBUG_LEVEL_IMPORTANT, IndirectTxP_OVERFLOW, 0,0,0);
        return IEEE154_TRANSACTION_OVERFLOW;
      }
***************
*** 160,164 ****
      if (!call IndirectTxTimeout.isRunning())
        call IndirectTxTimeout.startOneShot(getPersistenceTime());
!     call Debug.log(LEVEL_INFO, IndirectTxP_NOTIFIED, 0,0,0);
      signal PendingAddrSpecUpdated.notify(TRUE);
      return IEEE154_SUCCESS;
--- 161,165 ----
      if (!call IndirectTxTimeout.isRunning())
        call IndirectTxTimeout.startOneShot(getPersistenceTime());
!     call Debug.log(DEBUG_LEVEL_INFO, IndirectTxP_NOTIFIED, 0,0,0);
      signal PendingAddrSpecUpdated.notify(TRUE);
      return IEEE154_SUCCESS;
***************
*** 204,208 ****
        }
      }
!     call Debug.log(LEVEL_INFO, IndirectTxP_REQUESTED, NUM_MAX_PENDING-i,i,*src);
      if (i != NUM_MAX_PENDING){
        // found a matching frame, mark it for transmission
--- 205,209 ----
        }
      }
!     call Debug.log(DEBUG_LEVEL_INFO, IndirectTxP_REQUESTED, NUM_MAX_PENDING-i,i,*src);
      if (i != NUM_MAX_PENDING){
        // found a matching frame, mark it for transmission
***************
*** 220,224 ****
      // (if they are marked for transmission)
      uint8_t i;
!     if (!m_pendingTxFrame && m_numTableEntries){
        for (i=0; i<NUM_MAX_PENDING; i++)
          if (m_txFrameTable[i] && (m_txFrameTable[i]->client & SEND_THIS_FRAME)){
--- 221,225 ----
      // (if they are marked for transmission)
      uint8_t i;
!     if (m_pendingTxFrame == NULL && m_numTableEntries){
        for (i=0; i<NUM_MAX_PENDING; i++)
          if (m_txFrameTable[i] && (m_txFrameTable[i]->client & SEND_THIS_FRAME)){
***************
*** 227,233 ****
            m_client = m_txFrameTable[i]->client;
            if (call CoordCapTx.transmit(m_txFrameTable[i]) == IEEE154_SUCCESS){
!             call Debug.log(LEVEL_INFO, IndirectTxP_SEND_NOW, 0,0,0);
            } else {
!             m_pendingTxFrame = 0;
              post tryCoordCapTxTask();
            }
--- 228,234 ----
            m_client = m_txFrameTable[i]->client;
            if (call CoordCapTx.transmit(m_txFrameTable[i]) == IEEE154_SUCCESS){
!             call Debug.log(DEBUG_LEVEL_INFO, IndirectTxP_SEND_NOW, 0,0,0);
            } else {
!             m_pendingTxFrame = NULL;
              post tryCoordCapTxTask();
            }
***************
*** 276,280 ****
    {
      uint8_t i;
!     // TODO: if CSMA-CA algorithm failed, then frame shall remain in transaction queue
      for (i=0; i<NUM_MAX_PENDING; i++)
        if (m_txFrameTable[i] == txFrame){
--- 277,281 ----
    {
      uint8_t i;
!     // TODO: if CSMA-CA algorithm failed, then frame shall still remain in transaction queue
      for (i=0; i<NUM_MAX_PENDING; i++)
        if (m_txFrameTable[i] == txFrame){
***************
*** 293,299 ****
      signal FrameTx.transmitDone[txFrame->client](txFrame, status);
      post tryCoordCapTxTask();
!     call Debug.log(LEVEL_INFO, IndirectTxP_SEND_DONE, status,m_numTableEntries,0);
    }
  
    command error_t PendingAddrSpecUpdated.enable(){return FAIL;}
    command error_t PendingAddrSpecUpdated.disable(){return FAIL;}
--- 294,301 ----
      signal FrameTx.transmitDone[txFrame->client](txFrame, status);
      post tryCoordCapTxTask();
!     call Debug.log(DEBUG_LEVEL_INFO, IndirectTxP_SEND_DONE, status,m_numTableEntries,0);
    }
  
+   command ieee154_txframe_t* GetIndirectTxFrame.get(){ return m_pendingTxFrame;}
    command error_t PendingAddrSpecUpdated.enable(){return FAIL;}
    command error_t PendingAddrSpecUpdated.disable(){return FAIL;}

Index: PollP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/PollP.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** PollP.nc	16 Jun 2008 18:00:28 -0000	1.1
--- PollP.nc	25 Nov 2008 09:35:09 -0000	1.2
***************
*** 112,116 ****
          call TxFramePool.put(txFrame);
          call TxControlPool.put(txControl);
!         call Debug.log(LEVEL_IMPORTANT, PollP_ALLOC_FAIL1, 0, 0, 0);
        } else 
          m_numPending++;
--- 112,116 ----
          call TxFramePool.put(txFrame);
          call TxControlPool.put(txControl);
!         call Debug.log(DEBUG_LEVEL_IMPORTANT, PollP_ALLOC_FAIL1, 0, 0, 0);
        } else 
          m_numPending++;
***************
*** 125,130 ****
      ieee154_txcontrol_t *txControl;
      ieee154_status_t status = IEEE154_TRANSACTION_OVERFLOW;
!     call Debug.log(LEVEL_INFO, PollP_INTERNAL_POLL, CoordAddrMode, client, m_numPending);
!     if (client == SYNC_CLIENT && m_numPending != 0){
        // no point in auto-requesting if user request is pending
        signal DataRequest.pollDone[client]();
--- 125,130 ----
      ieee154_txcontrol_t *txControl;
      ieee154_status_t status = IEEE154_TRANSACTION_OVERFLOW;
!     call Debug.log(DEBUG_LEVEL_INFO, PollP_INTERNAL_POLL, CoordAddrMode, client, m_numPending);
!     if (client == SYNC_POLL_CLIENT && m_numPending != 0){
        // no point in auto-requesting if user request is pending
        signal DataRequest.pollDone[client]();
***************
*** 142,146 ****
            call TxControlPool.put(txControl);
            call TxFramePool.put(txFrame);
!           call Debug.log(LEVEL_IMPORTANT, PollP_ALLOC_FAIL2, 0, 0, 0);
          } else 
            m_numPending++;
--- 142,146 ----
            call TxControlPool.put(txControl);
            call TxFramePool.put(txFrame);
!           call Debug.log(DEBUG_LEVEL_IMPORTANT, PollP_ALLOC_FAIL2, 0, 0, 0);
          } else 
            m_numPending++;
***************
*** 189,196 ****
    {
      if (!txFrame){
!       call Debug.log(LEVEL_CRITICAL, PollP_INTERNAL_ERROR, 0, 0, 0);
        return frame;
      } else
!       call Debug.log(LEVEL_INFO, PollP_SUCCESS, 0, 0, 0);
      if (txFrame->handle == HANDLE_MLME_POLL_REQUEST)
        signal MLME_POLL.confirm(IEEE154_SUCCESS);
--- 189,196 ----
    {
      if (!txFrame){
!       call Debug.log(DEBUG_LEVEL_CRITICAL, PollP_INTERNAL_ERROR, 0, 0, 0);
        return frame;
      } else
!       call Debug.log(DEBUG_LEVEL_INFO, PollP_SUCCESS, 0, 0, 0);
      if (txFrame->handle == HANDLE_MLME_POLL_REQUEST)
        signal MLME_POLL.confirm(IEEE154_SUCCESS);
***************
*** 199,203 ****
      txFrame->handle = HANDLE_MLME_POLL_SUCCESS; // mark as processed
      // TODO: check if pending bit is set (then initiate another POLL)
!     call Debug.log(LEVEL_IMPORTANT, PollP_RX, txFrame->handle, 0, 0);
      return signal DataRx.received(frame);
    }
--- 199,203 ----
      txFrame->handle = HANDLE_MLME_POLL_SUCCESS; // mark as processed
      // TODO: check if pending bit is set (then initiate another POLL)
!     call Debug.log(DEBUG_LEVEL_IMPORTANT, PollP_RX, txFrame->handle, 0, 0);
      return signal DataRx.received(frame);
    }
***************
*** 205,209 ****
    event void PollTx.transmitDone(ieee154_txframe_t *txFrame, ieee154_status_t status)
    {
!     call Debug.log(LEVEL_IMPORTANT, PollP_TXDONE, status, txFrame->handle, 0);
      m_numPending--;
      if (txFrame->handle != HANDLE_MLME_POLL_SUCCESS){
--- 205,209 ----
    event void PollTx.transmitDone(ieee154_txframe_t *txFrame, ieee154_status_t status)
    {
!     call Debug.log(DEBUG_LEVEL_IMPORTANT, PollP_TXDONE, status, txFrame->handle, 0);
      m_numPending--;
      if (txFrame->handle != HANDLE_MLME_POLL_SUCCESS){

Index: PromiscuousModeP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/PromiscuousModeP.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** PromiscuousModeP.nc	21 Oct 2008 17:29:00 -0000	1.1
--- PromiscuousModeP.nc	25 Nov 2008 09:35:09 -0000	1.2
***************
*** 82,86 ****
      m_promiscuousState = S_STARTING;
      call Token.request();
!     call Debug.log(LEVEL_INFO, EnableRxP_PROMISCUOUS_REQUEST, m_promiscuousState, 0, 0);
      call Debug.flush();
      return SUCCESS;
--- 82,86 ----
      m_promiscuousState = S_STARTING;
      call Token.request();
!     call Debug.log(DEBUG_LEVEL_INFO, EnableRxP_PROMISCUOUS_REQUEST, m_promiscuousState, 0, 0);
      call Debug.flush();
      return SUCCESS;
***************
*** 97,101 ****
        m_promiscuousState = S_IDLE;
        call Token.release();
!       call Debug.log(LEVEL_IMPORTANT, EnableRxP_RADIORX_ERROR, 0, 0, 0);
        signal PromiscuousMode.startDone(FAIL);
      }
--- 97,101 ----
        m_promiscuousState = S_IDLE;
        call Token.release();
!       call Debug.log(DEBUG_LEVEL_IMPORTANT, EnableRxP_RADIORX_ERROR, 0, 0, 0);
        signal PromiscuousMode.startDone(FAIL);
      }
***************
*** 116,120 ****
      call PromiscuousRx.receive(NULL, 0);
      signal PromiscuousMode.startDone(SUCCESS);
!     call Debug.log(LEVEL_INFO, EnableRxP_PROMISCUOUS_ON, m_promiscuousState, 0, 0);
    }
  
--- 116,120 ----
      call PromiscuousRx.receive(NULL, 0);
      signal PromiscuousMode.startDone(SUCCESS);
!     call Debug.log(DEBUG_LEVEL_INFO, EnableRxP_PROMISCUOUS_ON, m_promiscuousState, 0, 0);
    }
  
***************
*** 152,156 ****
      call Token.release();
      signal PromiscuousMode.stopDone(SUCCESS);
!     call Debug.log(LEVEL_INFO, EnableRxP_PROMISCUOUS_OFF, m_promiscuousState, 0, 0);
    }
  
--- 152,156 ----
      call Token.release();
      signal PromiscuousMode.stopDone(SUCCESS);
!     call Debug.log(DEBUG_LEVEL_INFO, EnableRxP_PROMISCUOUS_OFF, m_promiscuousState, 0, 0);
    }
  

Index: RadioControlImplP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/RadioControlImplP.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** RadioControlImplP.nc	2 Aug 2008 16:56:21 -0000	1.1
--- RadioControlImplP.nc	25 Nov 2008 09:35:09 -0000	1.2
***************
*** 143,152 ****
    }
  
  
!   async command error_t MacTx.transmit[uint8_t client](ieee154_reftime_t *referenceTime, 
!       uint32_t timeOffset, uint8_t numCCA, bool ackRequest)
    {
      if (client == call ArbiterInfo.userId()) 
!       return call PhyTx.transmit(referenceTime, timeOffset, numCCA, ackRequest);
      else {
        call Leds.led0On();
--- 143,165 ----
    }
  
+   async command error_t MacTx.transmit[uint8_t client](ieee154_reftime_t *t0, uint32_t dt)
+   {
+     if (client == call ArbiterInfo.userId()) 
+       return call PhyTx.transmit(t0, dt);
+     else {
+       call Leds.led0On();
+       return IEEE154_TRANSACTION_OVERFLOW;
+     }
+   }
+   
+   async event void PhyTx.transmitDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime)
+   {
+     signal MacTx.transmitDone[call ArbiterInfo.userId()](frame, txTime);
+   }
  
!   async command error_t MacTx.transmitUnslottedCsmaCa[uint8_t client](ieee154_csma_t *csmaParams)
    {
      if (client == call ArbiterInfo.userId()) 
!       return call PhyTx.transmitUnslottedCsmaCa(csmaParams);
      else {
        call Leds.led0On();
***************
*** 155,162 ****
    }
  
!   async event void PhyTx.transmitDone(ieee154_txframe_t *frame, 
!       ieee154_reftime_t *referenceTime, bool ackPendingFlag, error_t error)   
    {
!     signal MacTx.transmitDone[call ArbiterInfo.userId()](frame, referenceTime, ackPendingFlag, error);
    }
  
--- 168,194 ----
    }
  
!   async event void PhyTx.transmitUnslottedCsmaCaDone(ieee154_txframe_t *frame,
!       bool ackPendingFlag, ieee154_csma_t *csmaParams, error_t result)
    {
!     signal MacTx.transmitUnslottedCsmaCaDone[call ArbiterInfo.userId()](
!         frame, ackPendingFlag, csmaParams, result);
!   }
! 
!   async command error_t MacTx.transmitSlottedCsmaCa[uint8_t client](ieee154_reftime_t *slot0Time, uint32_t dtMax, 
!       bool resume, uint16_t remainingBackoff, ieee154_csma_t *csmaParams)
!   {
!     if (client == call ArbiterInfo.userId()) 
!       return call PhyTx.transmitSlottedCsmaCa(slot0Time, dtMax, resume, remainingBackoff, csmaParams);
!     else {
!       call Leds.led0On();
!       return IEEE154_TRANSACTION_OVERFLOW;
!     }
!   }
! 
!   async event void PhyTx.transmitSlottedCsmaCaDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime, 
!       bool ackPendingFlag, uint16_t remainingBackoff, ieee154_csma_t *csmaParams, error_t result)
!   {
!     signal MacTx.transmitSlottedCsmaCaDone[call ArbiterInfo.userId()](
!         frame, txTime, ackPendingFlag, remainingBackoff, csmaParams, result);
    }
  
***************
*** 191,213 ****
    default async event void MacTx.loadDone[uint8_t client]()
    {
!     call Debug.log(LEVEL_CRITICAL, RadioRxTxP_DEFAULT_PREPARE_TX_DONE, 0, 0, 0);
    }
!   default async event void MacTx.transmitDone[uint8_t client](ieee154_txframe_t *frame, 
!       ieee154_reftime_t *referenceTime, bool ackPendingFlag, error_t error) 
    {
!     call Debug.log(LEVEL_CRITICAL, RadioRxTxP_DEFAULT_TX_DONE, 0, 0, 0);
    }
    default async event void MacRx.prepareDone[uint8_t client]()
    {
!     call Debug.log(LEVEL_CRITICAL, RadioRxTxP_DEFAULT_PREPARE_RX_DONE, 0, 0, 0);
    }
    default event message_t* MacRx.received[uint8_t client](message_t *frame, ieee154_reftime_t *timestamp)
    {
!     call Debug.log(LEVEL_INFO, RadioRxTxP_DEFAULT_RECEIVED, client, call ArbiterInfo.userId(), 0xff);
      return frame;
    }
    default async event void MacRadioOff.offDone[uint8_t client]()
    {
!     call Debug.log(LEVEL_CRITICAL, RadioRxTxP_DEFAULT_OFFDONE, 0, 0, 0);
    }
  }
--- 223,255 ----
    default async event void MacTx.loadDone[uint8_t client]()
    {
!     call Debug.log(DEBUG_LEVEL_CRITICAL, 0, 0, 0, 0);
    }
!   default async event void MacTx.transmitDone[uint8_t client](ieee154_txframe_t *frame, ieee154_reftime_t *txTime) 
    {
!     call Debug.log(DEBUG_LEVEL_CRITICAL, 1, 0, 0, 0);
    }
    default async event void MacRx.prepareDone[uint8_t client]()
    {
!     call Debug.log(DEBUG_LEVEL_CRITICAL, 2, 0, 0, 0);
    }
    default event message_t* MacRx.received[uint8_t client](message_t *frame, ieee154_reftime_t *timestamp)
    {
!     call Debug.log(DEBUG_LEVEL_IMPORTANT, 3, client, call ArbiterInfo.userId(), 0xff);
      return frame;
    }
    default async event void MacRadioOff.offDone[uint8_t client]()
    {
!     call Debug.log(DEBUG_LEVEL_CRITICAL, 4, 0, 0, 0);
!   }
!   default async event void MacTx.transmitUnslottedCsmaCaDone[uint8_t client](ieee154_txframe_t *frame,
!       bool ackPendingFlag, ieee154_csma_t *csmaParams, error_t result)
!   {
!     call Debug.log(DEBUG_LEVEL_CRITICAL, 5, 0, 0, 0);
!   }
!   default async event void MacTx.transmitSlottedCsmaCaDone[uint8_t client](ieee154_txframe_t *frame, 
!       ieee154_reftime_t *txTime, bool ackPendingFlag, uint16_t remainingBackoff, 
!       ieee154_csma_t *csmaParams, error_t result)
!   {
!     call Debug.log(DEBUG_LEVEL_CRITICAL, 6, 0, 0, 0);
    }
  }

Index: ScanP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/ScanP.nc,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** ScanP.nc	16 Jun 2008 18:00:29 -0000	1.1
--- ScanP.nc	25 Nov 2008 09:35:09 -0000	1.2
***************
*** 298,306 ****
    async event void RadioTx.loadDone()
    {
!     call RadioTx.transmit(0, 0, 0, FALSE);
    }
    
!   async event void RadioTx.transmitDone(ieee154_txframe_t *frame, 
!       ieee154_reftime_t *referenceTime, bool ackPendingFlag, error_t error)
    {
      if (call RadioRx.prepare() != SUCCESS) // must succeed
--- 298,305 ----
    async event void RadioTx.loadDone()
    {
!     call RadioTx.transmit(NULL, 0); // transmit immediately
    }
    
!   async event void RadioTx.transmitDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime)
    {
      if (call RadioRx.prepare() != SUCCESS) // must succeed
***************
*** 389,392 ****
--- 388,397 ----
    }
  
+   async event void RadioTx.transmitUnslottedCsmaCaDone(ieee154_txframe_t *frame,
+       bool ackPendingFlag, ieee154_csma_t *csmaParams, error_t result){}
+ 
+   async event void RadioTx.transmitSlottedCsmaCaDone(ieee154_txframe_t *frame, ieee154_reftime_t *txTime, 
+       bool ackPendingFlag, uint16_t remainingBackoff, ieee154_csma_t *csmaParams, error_t result){}  
+ 
    default event message_t* MLME_BEACON_NOTIFY.indication ( message_t *beaconFrame ){return beaconFrame;}
    default event void MLME_SCAN.confirm    (

Index: TKN154_DEBUG.h
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/TKN154_DEBUG.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** TKN154_DEBUG.h	23 Oct 2008 16:09:28 -0000	1.3
--- TKN154_DEBUG.h	25 Nov 2008 09:35:09 -0000	1.4
***************
*** 37,100 ****
  #define __TKN154_DEBUG_H
  
- #define LEVEL_INFO 0
- #define LEVEL_IMPORTANT 50
- #define LEVEL_CRITICAL 100
- 
- #define RadioRxTxP_ACQUIRED         0
- #define RadioRxTxP_NOT_ACQUIRED     1
- #define RadioRxTxP_TRANSFERRED      2
- #define RadioRxTxP_NOT_TRANSFERRED  3
- #define RadioRxTxP_RELEASED         4
- #define RadioRxTxP_NOT_RELEASED     5
- #define RadioRxTxP_TRANSFER_REQUEST 6
- #define RadioRxTxP_DEFAULT_PREPARE_TX_DONE 7
- #define RadioRxTxP_DEFAULT_TX_DONE         8
- #define RadioRxTxP_DEFAULT_PREPARE_RX_DONE 9
- #define RadioRxTxP_DEFAULT_RECEIVED        10
- #define RadioRxTxP_DEFAULT_OFFDONE         11
- #define RadioRxTxP_DEFAULT_TRANSFERRED     12 
- #define RadioRxTxP_DEFAULT_TRANSFERREQUEST 13
- #define RadioRxTxP_ASK_ISOWNER             14
- #define RadioRxTxP_RX_NOOWNER              15
- #define RadioRxTxP_DEFAULT_CANCEL_TX_DONE  16
- #define RadioRxTxP_DEFAULT_CANCEL_RX_DONE  17
- 
- #define SyncP_BEACON_MISSED_1 0
- #define SyncP_BEACON_MISSED_2 1
- #define SyncP_BEACON_MISSED_3 2
- #define SyncP_TRACK_ALARM     3
- #define SyncP_INVALID_PARAM   4
- #define SyncP_RX_ON           5
- #define SyncP_INTERNAL_ERROR  6
- #define SyncP_BEACON_RX       7
- #define SyncP_RADIO_BUSY      8
- #define SyncP_LOST_SYNC       9
- #define SyncP_RX_PACKET       10
- #define SyncP_NEXT_RX_TIME    11
- #define SyncP_SWITCHOFF       12
- #define SyncP_RX_GARBAGE      13
- #define SyncP_GOT_RESOURCE    14
- #define SyncP_RELEASE_RESOURCE 15
- #define SyncP_RESOURCE_REQUEST  16
- #define SyncP_TRANSFER_RESOURCE 17
- #define SyncP_PREPARE_RX      18
- #define SyncP_REQUEST  19
- #define SyncP_UPDATING  20
- #define SyncP_PREPARE_RX_DONE     21
- #define SyncP_INVALID_TIMESTAMP     22
- #define SyncP_RX_BEACON       SyncP_RX_PACKET
- 
- #define StartP_BEACON_TRANSMITTED 0
- #define StartP_UPDATE_STATE   1
- #define StartP_REQUEST        2
- #define StartP_OWNER_TOO_FAST 3
- #define StartP_BEACON_UPDATE  4
- #define StartP_BEACON_UPDATE_2 5
- #define StartP_PREPARE_TX     6
- #define StartP_PREPARE_TXDONE 7
- #define StartP_SKIPPED_BEACON    8
- #define StartP_GOT_RESOURCE    9
- #define StartP_TRANSMIT    10
- 
  #define PollP_ALLOC_FAIL1     0
  #define PollP_ALLOC_FAIL2     1
--- 37,40 ----
***************
*** 163,181 ****
  #define CoordCapTransmitP_RADIO_RX           6
  
- #define Phy_RX_CANCEL      0
- #define Phy_RX_NOW         1
- #define Phy_LOAD_TX_FIFO   2
- #define Phy_LOAD_TX_FIFO_DONE 3
- #define Phy_LOAD_TX_CANCEL 4
- #define Phy_LOAD_TX_NOW 5
- #define Phy_LOAD_TX_RX_NOW 6
- #define Phy_SEND_DONE 7
- #define Phy_SPI_GRANTED 8
- #define Phy_RADIO_OFF 9
- #define Phy_RADIO_OFF_DONE 10
- #define Phy_RADIO_PREPARE_RX 11
- #define Phy_RADIO_PREPARE_TX 12
- #define Phy_RADIO_TX_DONE 13
- #define Phy_RADIO_RECEIVED 14
  
  #define PhyRx_START 0
--- 103,106 ----
***************
*** 184,213 ****
  #define PhyRx_RXON 3
  
  enum {
    // IDs assigned for debugging
!   START_CLIENT = 0,
!   COORD_CAP_CLIENT = 1,
!   COORD_CFP_CLIENT = 2,
  
!   SYNC_CLIENT = 3,
!   DEVICE_CAP_CLIENT = 4,
!   DEVICE_CFP_CLIENT = 5,
  
!   SCAN_CLIENT = 6,
  
!   RADIORXTX_CLIENT = 7,
!   PIBDATABASE_CLIENT = 8,
!   ASSOCIATE_CLIENT = 9,
!   DISASSOCIATE_CLIENT = 10,
!   DEVICECAPQUEUE_CLIENT = 11,
!   INDIRECTTX_DEBUG_CLIENT = 12,
!   DATA_CLIENT = 13,
!   POLL_CLIENT = 14,
!   RXENABLE_CLIENT = 15,
!   PROMISCUOUS_MODE_CLIENT = 16,
  
-   PHY_CLIENT = 17,
-   PHY_TXCLIENT = 18,
-   PHY_RXCLIENT = 19,
  };
  
--- 109,141 ----
  #define PhyRx_RXON 3
  
+ 
  enum {
+   DEBUG_LEVEL_INFO = 0,
+   DEBUG_LEVEL_IMPORTANT = 1,
+   DEBUG_LEVEL_CRITICAL = 2,
+ 
    // IDs assigned for debugging
!   DEBUG_BEACON_TRANSMIT_ID = 0,
!   DEBUG_FRAME_DISPATCH_COORD_ID = 1,
!   DEBUG_COORD_CFP_ID = 2,
  
!   DEBUG_BEACON_SYNCHRONIZE_ID = 3,
!   DEBUG_FRAME_DISPATCH_DEVICE_ID = 4,
!   DEBUG_DEVICE_CFP_ID = 5,
  
!   DEBUG_SCAN_ID = 6,
  
!   DEBUG_RADIOCONTROL_ID = 7,
!   DEBUG_PIB_ID = 8,
!   DEBUG_ASSOCIATE_ID = 9,
!   DEBUG_DISASSOCIATE_ID = 10,
!   DEBUG_FRAMEDISPATCHQUEUE_ID = 11,
!   DEBUG_INDIRECTTX_ID = 12,
!   DEBUG_DATA_ID = 13,
!   DEBUG_POLL_ID = 14,
!   DEBUG_RXENABLE_ID = 15,
!   DEBUG_PROMISCUOUSMODE_ID = 16,
!   DEBUG_RADIO_DRIVER_ID = 17,
  
  };
  
***************
*** 224,228 ****
  
  #ifndef SERIAL_DBG_MSGBUF_SIZE
! #define SERIAL_DBG_MSGBUF_SIZE 25
  #endif
  
--- 152,156 ----
  
  #ifndef SERIAL_DBG_MSGBUF_SIZE
! #define SERIAL_DBG_MSGBUF_SIZE  150
  #endif
  

Index: TKN154_MAC.h
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/TKN154_MAC.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** TKN154_MAC.h	25 Jun 2008 10:19:03 -0000	1.2
--- TKN154_MAC.h	25 Nov 2008 09:35:09 -0000	1.3
***************
*** 129,132 ****
--- 129,134 ----
  };
  
+ #define SYNC_POLL_CLIENT unique("PollP.client")
+ #define ASSOCIATE_POLL_CLIENT unique("PollP.client")
  #define CAP_TX_CLIENT "CapQueueP.FrameTx.client"
  #define INDIRECT_TX_CLIENT "IndirectTx.client"
***************
*** 165,178 ****
    ieee154_metadata_t metadata;
  } ieee154_txcontrol_t;
  
  typedef struct {
    ieee154_txframe_t *frame;
!   ieee154_macMaxBE_t BE;
!   ieee154_macMaxCSMABackoffs_t allowedBackoffs;
!   ieee154_macMaxBE_t macMaxBE;
!   ieee154_macMinBE_t macMinBE;
!   uint8_t NB;
!   uint16_t backoff;
!   uint16_t backoffElapsed;
    uint32_t transactionTime;
  } ieee154_cap_frame_backup_t;
--- 167,181 ----
    ieee154_metadata_t metadata;
  } ieee154_txcontrol_t;
+       
+ typedef struct ieee154_csma {
+   uint8_t BE;                 // initial backoff exponent
+   uint8_t macMaxBE;           // maximum backoff exponent
+   uint8_t macMaxCsmaBackoffs; // maximum number of allowed backoffs
+   uint8_t NB;                 // number of backoff during current transmission
+ } ieee154_csma_t;
  
  typedef struct {
    ieee154_txframe_t *frame;
!   ieee154_csma_t csmaParams;
    uint32_t transactionTime;
  } ieee154_cap_frame_backup_t;

Index: TKN154P.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/TKN154P.nc,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TKN154P.nc	23 Oct 2008 16:09:28 -0000	1.5
--- TKN154P.nc	25 Nov 2008 09:35:09 -0000	1.6
***************
*** 136,145 ****
  #ifndef IEEE154_BEACON_SYNC_DISABLED
               BeaconSynchronizeP,
!              new CsmaQueueP() as DeviceCapQueue,
!              new CsmaP(INCOMING_SUPERFRAME) as DeviceCap,
  #else
               NoBeaconSynchronizeP as BeaconSynchronizeP,
!              new NoCsmaQueueP() as DeviceCapQueue,
!              new NoCsmaP() as DeviceCap,
  #endif
               NoDeviceCfpP as DeviceCfp,
--- 136,145 ----
  #ifndef IEEE154_BEACON_SYNC_DISABLED
               BeaconSynchronizeP,
!              new FrameDispatchQueueP() as DeviceCapQueue,
!              new FrameDispatchP(INCOMING_SUPERFRAME) as DeviceCap,
  #else
               NoBeaconSynchronizeP as BeaconSynchronizeP,
!              new NoFrameDispatchQueueP() as DeviceCapQueue,
!              new NoFrameDispatchP(INCOMING_SUPERFRAME) as DeviceCap,
  #endif
               NoDeviceCfpP as DeviceCfp,
***************
*** 147,156 ****
  #ifndef IEEE154_BEACON_TX_DISABLED
               BeaconTransmitP,
!              new CsmaQueueP() as CoordCapQueue,
!              new CsmaP(OUTGOING_SUPERFRAME) as CoordCap,
  #else
               NoBeaconTransmitP as BeaconTransmitP,
!              new NoCsmaQueueP() as CoordCapQueue,
!              new NoCsmaP() as CoordCap,
  #endif
               NoCoordCfpP as CoordCfp,
--- 147,156 ----
  #ifndef IEEE154_BEACON_TX_DISABLED
               BeaconTransmitP,
!              new FrameDispatchQueueP() as CoordCapQueue,
!              new FrameDispatchP(OUTGOING_SUPERFRAME) as CoordCap,
  #else
               NoBeaconTransmitP as BeaconTransmitP,
!              new NoFrameDispatchQueueP() as CoordCapQueue,
!              new NoFrameDispatchP(OUTGOING_SUPERFRAME) as CoordCap,
  #endif
               NoCoordCfpP as CoordCfp,
***************
*** 273,277 ****
    BeaconTransmitP.TimeCalc -> PibP;
    BeaconTransmitP.Leds = Leds;
!   BeaconTransmitP.Debug = Ieee802154Debug[START_CLIENT];
    BeaconTxRadioClient.TransferTo -> CoordBroadcastRadioClient.TransferFrom;
  
--- 273,277 ----
    BeaconTransmitP.TimeCalc -> PibP;
    BeaconTransmitP.Leds = Leds;
!   BeaconTransmitP.Debug = Ieee802154Debug[DEBUG_BEACON_TRANSMIT_ID];
    BeaconTxRadioClient.TransferTo -> CoordBroadcastRadioClient.TransferFrom;
  
***************
*** 291,295 ****
    BeaconSynchronizeP.RadioOff -> SyncRadioClient;
    BeaconSynchronizeP.IsBeaconEnabledPAN -> PibP.IsBeaconEnabledPAN;
!   BeaconSynchronizeP.DataRequest -> PollP.DataRequest[SYNC_CLIENT];
    BeaconSynchronizeP.Token -> SyncRadioClient;
    BeaconSynchronizeP.IsTokenRequested -> SyncRadioClient;
--- 291,295 ----
    BeaconSynchronizeP.RadioOff -> SyncRadioClient;
    BeaconSynchronizeP.IsBeaconEnabledPAN -> PibP.IsBeaconEnabledPAN;
!   BeaconSynchronizeP.DataRequest -> PollP.DataRequest[SYNC_POLL_CLIENT];
    BeaconSynchronizeP.Token -> SyncRadioClient;
    BeaconSynchronizeP.IsTokenRequested -> SyncRadioClient;
***************
*** 299,303 ****
    BeaconSynchronizeP.CoordRealignmentRx -> DeviceCap.FrameRx[FC1_FRAMETYPE_CMD + CMD_FRAME_COORDINATOR_REALIGNMENT];
    BeaconSynchronizeP.Leds = Leds;
!   BeaconSynchronizeP.Debug = Ieee802154Debug[SYNC_CLIENT];
    SyncRadioClient.TransferTo -> DeviceCapRadioClient.TransferFrom;
  
--- 299,303 ----
    BeaconSynchronizeP.CoordRealignmentRx -> DeviceCap.FrameRx[FC1_FRAMETYPE_CMD + CMD_FRAME_COORDINATOR_REALIGNMENT];
    BeaconSynchronizeP.Leds = Leds;
!   BeaconSynchronizeP.Debug = Ieee802154Debug[DEBUG_BEACON_SYNCHRONIZE_ID];
    SyncRadioClient.TransferTo -> DeviceCapRadioClient.TransferFrom;
  
***************
*** 309,313 ****
    AssociateP.AssociationResponseExtracted -> DeviceCap.FrameExtracted[FC1_FRAMETYPE_CMD + CMD_FRAME_ASSOCIATION_RESPONSE];
    AssociateP.AssociationResponseTx -> IndirectTxP.FrameTx[unique(INDIRECT_TX_CLIENT)];
!   AssociateP.DataRequest -> PollP.DataRequest[ASSOCIATE_CLIENT];
    AssociateP.ResponseTimeout = Timer3;
    AssociateP.TxFramePool -> TxFramePoolP;
--- 309,313 ----
    AssociateP.AssociationResponseExtracted -> DeviceCap.FrameExtracted[FC1_FRAMETYPE_CMD + CMD_FRAME_ASSOCIATION_RESPONSE];
    AssociateP.AssociationResponseTx -> IndirectTxP.FrameTx[unique(INDIRECT_TX_CLIENT)];
!   AssociateP.DataRequest -> PollP.DataRequest[ASSOCIATE_POLL_CLIENT];
    AssociateP.ResponseTimeout = Timer3;
    AssociateP.TxFramePool -> TxFramePoolP;
***************
*** 318,322 ****
    AssociateP.Frame -> PibP;
    AssociateP.LocalExtendedAddress -> PibP.GetLocalExtendedAddress;
!   AssociateP.Debug = Ieee802154Debug[ASSOCIATE_CLIENT];
  
  /* --------------- Disassociation (MLME-DISASSOCIATE) --------------- */
--- 318,322 ----
    AssociateP.Frame -> PibP;
    AssociateP.LocalExtendedAddress -> PibP.GetLocalExtendedAddress;
!   AssociateP.Debug = Ieee802154Debug[DEBUG_ASSOCIATE_ID];
  
  /* --------------- Disassociation (MLME-DISASSOCIATE) --------------- */
***************
*** 338,342 ****
    DisassociateP.Frame -> PibP;
    DisassociateP.LocalExtendedAddress -> PibP.GetLocalExtendedAddress;
!   DisassociateP.Debug = Ieee802154Debug[DISASSOCIATE_CLIENT];
  
  /* ------------------ Data Transmission (MCPS-DATA) ------------------- */
--- 338,342 ----
    DisassociateP.Frame -> PibP;
    DisassociateP.LocalExtendedAddress -> PibP.GetLocalExtendedAddress;
!   DisassociateP.Debug = Ieee802154Debug[DEBUG_DISASSOCIATE_ID];
  
  /* ------------------ Data Transmission (MCPS-DATA) ------------------- */
***************
*** 373,377 ****
    PollP.TxFramePool -> TxFramePoolP;
    PollP.TxControlPool -> TxControlPoolP;
!   PollP.Debug = Ieee802154Debug[POLL_CLIENT];
    PollP.MLME_GET -> PibP;
    PollP.LocalExtendedAddress -> PibP.GetLocalExtendedAddress;
--- 373,377 ----
    PollP.TxFramePool -> TxFramePoolP;
    PollP.TxControlPool -> TxControlPoolP;
!   PollP.Debug = Ieee802154Debug[DEBUG_POLL_ID];
    PollP.MLME_GET -> PibP;
    PollP.LocalExtendedAddress -> PibP.GetLocalExtendedAddress;
***************
*** 387,391 ****
    IndirectTxP.TimeCalc -> PibP;
    IndirectTxP.Leds = Leds;
!   IndirectTxP.Debug = Ieee802154Debug[INDIRECTTX_DEBUG_CLIENT];
  
  /* ---------------------------- Realignment --------------------------- */
--- 387,391 ----
    IndirectTxP.TimeCalc -> PibP;
    IndirectTxP.Leds = Leds;
!   IndirectTxP.Debug = Ieee802154Debug[DEBUG_INDIRECTTX_ID];
  
  /* ---------------------------- Realignment --------------------------- */
***************
*** 425,429 ****
    components new RadioClientC() as DeviceCapRadioClient;
    PibP.CapReset -> DeviceCap;
-   DeviceCap.Random = Random;
    DeviceCap.CapEndAlarm = Alarm3;
    DeviceCap.BLEAlarm = Alarm4;
--- 425,428 ----
***************
*** 441,444 ****
--- 440,444 ----
    DeviceCap.IsRxBroadcastPending -> BeaconSynchronizeP.IsRxBroadcastPending;
    DeviceCap.IsRxEnableActive -> RxEnableP.IsRxEnableActive;
+   DeviceCap.GetIndirectTxFrame -> IndirectTxP;
    DeviceCap.RxEnableStateChange -> RxEnableP.RxEnableStateChange;  
    DeviceCap.IsTrackingBeacons -> BeaconSynchronizeP.IsTrackingBeacons;  
***************
*** 450,454 ****
    DeviceCap.MLME_GET -> PibP;
    DeviceCap.MLME_SET -> PibP.MLME_SET;
!   DeviceCap.Debug = Ieee802154Debug[DEVICE_CAP_CLIENT];
    DeviceCap.TimeCalc -> PibP;
    DeviceCap.Leds = Leds;
--- 450,454 ----
    DeviceCap.MLME_GET -> PibP;
    DeviceCap.MLME_SET -> PibP.MLME_SET;
!   DeviceCap.Debug = Ieee802154Debug[DEBUG_FRAME_DISPATCH_DEVICE_ID];
    DeviceCap.TimeCalc -> PibP;
    DeviceCap.Leds = Leds;
***************
*** 460,464 ****
               new BackupP(ieee154_cap_frame_backup_t);
    PibP.CapReset -> CoordCap;
-   CoordCap.Random = Random;
    CoordCap.CapEndAlarm = Alarm7;
    CoordCap.BLEAlarm = Alarm8;
--- 460,463 ----
***************
*** 473,476 ****
--- 472,476 ----
    CoordCap.BLELen -> BeaconTransmitP.BLELen;
    CoordCap.IsRxEnableActive -> RxEnableP.IsRxEnableActive;
+   CoordCap.GetIndirectTxFrame -> IndirectTxP;
    CoordCap.RxEnableStateChange -> RxEnableP.RxEnableStateChange;  
    CoordCap.IsTrackingBeacons -> BeaconSynchronizeP.IsTrackingBeacons;  
***************
*** 482,486 ****
    CoordCap.MLME_GET -> PibP;
    CoordCap.MLME_SET -> PibP.MLME_SET;
!   CoordCap.Debug = Ieee802154Debug[COORD_CAP_CLIENT];
    CoordCap.TimeCalc -> PibP;
    CoordCap.Leds = Leds;
--- 482,486 ----
    CoordCap.MLME_GET -> PibP;
    CoordCap.MLME_SET -> PibP.MLME_SET;
!   CoordCap.Debug = Ieee802154Debug[DEBUG_FRAME_DISPATCH_COORD_ID];
    CoordCap.TimeCalc -> PibP;
    CoordCap.Leds = Leds;
***************
*** 541,545 ****
    PromiscuousModeP.RadioOff -> PromiscuousModeRadioClient;
    PromiscuousModeP.RadioPromiscuousMode = RadioPromiscuousMode;
!   PromiscuousModeP.Debug = Ieee802154Debug[PROMISCUOUS_MODE_CLIENT];
  
  /* --------------------------- MLME-RX-ENABLE  ------------------------ */
--- 541,545 ----
    PromiscuousModeP.RadioOff -> PromiscuousModeRadioClient;
    PromiscuousModeP.RadioPromiscuousMode = RadioPromiscuousMode;
!   PromiscuousModeP.Debug = Ieee802154Debug[DEBUG_PROMISCUOUSMODE_ID];
  
  /* --------------------------- MLME-RX-ENABLE  ------------------------ */
***************
*** 558,562 ****
    RxEnableP.WasRxEnabled -> CoordCap.WasRxEnabled;
    RxEnableP.RxEnableTimer = Timer5;
!   RxEnableP.Debug = Ieee802154Debug[RXENABLE_CLIENT];
  
  /* ------------------------------- PIB -------------------------------- */
--- 558,562 ----
    RxEnableP.WasRxEnabled -> CoordCap.WasRxEnabled;
    RxEnableP.RxEnableTimer = Timer5;
!   RxEnableP.Debug = Ieee802154Debug[DEBUG_RXENABLE_ID];
  
  /* ------------------------------- PIB -------------------------------- */
***************
*** 579,582 ****
    RadioControlP.RadioPromiscuousMode -> PromiscuousModeP;
    RadioControlP.Leds = Leds;
!   RadioControlP.Debug = Ieee802154Debug[RADIORXTX_CLIENT];
  }
--- 579,582 ----
    RadioControlP.RadioPromiscuousMode -> PromiscuousModeP;
    RadioControlP.Leds = Leds;
!   RadioControlP.Debug = Ieee802154Debug[DEBUG_RADIOCONTROL_ID];
  }

--- CsmaP.nc DELETED ---

--- CsmaQueueP.nc DELETED ---



More information about the Tinyos-2-commits mailing list