[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/mac/tkn154 AssociateP.nc, 1.6, 1.7 ScanP.nc, 1.9, 1.10

Jan-Hinrich Hauer janhauer at users.sourceforge.net
Wed May 20 08:15:47 PDT 2009


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

Modified Files:
	AssociateP.nc ScanP.nc 
Log Message:
Added security parameter check to AssociateP; fixed ScanP to signal beacon with non-empty payload to next higher layer during active/passive scan.

Index: AssociateP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/AssociateP.nc,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** AssociateP.nc	5 May 2009 16:56:12 -0000	1.6
--- AssociateP.nc	20 May 2009 15:15:44 -0000	1.7
***************
*** 239,243 ****
        if (m_payloadAssocResponse[i][0] == S_IDLE)
          break;    
!     if (i == MAX_PENDING_ASSOC_RESPONSES || !(txFrame = call TxFramePool.get()))
        txStatus = IEEE154_TRANSACTION_OVERFLOW;
      else if (!(txControl = call TxControlPool.get())) {
--- 239,245 ----
        if (m_payloadAssocResponse[i][0] == S_IDLE)
          break;    
!     if (security && security->SecurityLevel)
!       txStatus = IEEE154_UNSUPPORTED_SECURITY;
!     else if (i == MAX_PENDING_ASSOC_RESPONSES || !(txFrame = call TxFramePool.get()))
        txStatus = IEEE154_TRANSACTION_OVERFLOW;
      else if (!(txControl = call TxControlPool.get())) {

Index: ScanP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/mac/tkn154/ScanP.nc,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** ScanP.nc	30 Apr 2009 13:23:48 -0000	1.9
--- ScanP.nc	20 May 2009 15:15:44 -0000	1.10
***************
*** 346,349 ****
--- 346,350 ----
      if (!m_busy)
        return frame;
+ 
      if (m_scanType == ORPHAN_SCAN) {
        if (!m_resultIndex)
***************
*** 356,360 ****
          }
      } else if ((((ieee154_header_t*) frame->header)->mhr[0] & FC1_FRAMETYPE_MASK) == FC1_FRAMETYPE_BEACON) {
!       //  PASSIVE_SCAN / ACTIVE_SCAN
        if (!call MLME_GET.macAutoRequest())
          return signal MLME_BEACON_NOTIFY.indication (frame);
--- 357,368 ----
          }
      } else if ((((ieee154_header_t*) frame->header)->mhr[0] & FC1_FRAMETYPE_MASK) == FC1_FRAMETYPE_BEACON) {
! 
!       // PASSIVE_SCAN / ACTIVE_SCAN:
!       // A beacon frame containing a non-empty payload is always signalled
!       // to the next higher layer (regardless of the value of macAutoRequest),
!       // but it is unclear whether it should in addition be added to the 
!       // PAN Descriptor list when macAutoRequest is set to TRUE. This is,
!       // anyway, what the implementation currently does ... 
! 
        if (!call MLME_GET.macAutoRequest())
          return signal MLME_BEACON_NOTIFY.indication (frame);
***************
*** 368,372 ****
              &((ieee154_PANDescriptor_t*) m_resultList)[m_resultIndex]) == SUCCESS) {
  
!         // check uniqueness: both PAN ID and source address must not be in a previously received beacon
          uint8_t i;
          ieee154_PANDescriptor_t* descriptor = (ieee154_PANDescriptor_t*) m_resultList;
--- 376,381 ----
              &((ieee154_PANDescriptor_t*) m_resultList)[m_resultIndex]) == SUCCESS) {
  
!         // check uniqueness: PAN ID and source address must 
!         // not be found in a previously received beacon
          uint8_t i;
          ieee154_PANDescriptor_t* descriptor = (ieee154_PANDescriptor_t*) m_resultList;
***************
*** 374,390 ****
          dbg_serial("ScanP", "Received beacon, source: 0x%lx, channel: %lu.\n", 
              (uint32_t) descriptor[m_resultIndex].CoordAddress.shortAddress, (uint32_t) m_currentChannelNum);
!         if (m_resultIndex)
!           for (i=0; i<m_resultIndex; i++)
!             if (descriptor[i].CoordPANId == descriptor[m_resultIndex].CoordPANId &&
!                 descriptor[i].CoordAddrMode == descriptor[m_resultIndex].CoordAddrMode)
!               if ((descriptor[i].CoordAddrMode == ADDR_MODE_SHORT_ADDRESS &&
!                     descriptor[i].CoordAddress.shortAddress ==
!                     descriptor[m_resultIndex].CoordAddress.shortAddress) ||
!                   (descriptor[i].CoordAddrMode == ADDR_MODE_EXTENDED_ADDRESS &&
!                    descriptor[i].CoordAddress.extendedAddress ==
!                    descriptor[m_resultIndex].CoordAddress.extendedAddress))
!                 return frame; // not unique
!         m_resultIndex++; // was unique
        }
      } //  PASSIVE_SCAN / ACTIVE_SCAN
      return frame;
--- 383,401 ----
          dbg_serial("ScanP", "Received beacon, source: 0x%lx, channel: %lu.\n", 
              (uint32_t) descriptor[m_resultIndex].CoordAddress.shortAddress, (uint32_t) m_currentChannelNum);
!         for (i=0; i<m_resultIndex; i++)
!           if (descriptor[i].CoordPANId == descriptor[m_resultIndex].CoordPANId &&
!               descriptor[i].CoordAddrMode == descriptor[m_resultIndex].CoordAddrMode)
!             if ((descriptor[i].CoordAddrMode == ADDR_MODE_SHORT_ADDRESS &&
!                   descriptor[i].CoordAddress.shortAddress ==
!                   descriptor[m_resultIndex].CoordAddress.shortAddress) ||
!                 (descriptor[i].CoordAddrMode == ADDR_MODE_EXTENDED_ADDRESS &&
!                  descriptor[i].CoordAddress.extendedAddress ==
!                  descriptor[m_resultIndex].CoordAddress.extendedAddress))
!               break; // not unique
!         if (i == m_resultIndex)
!           m_resultIndex++; // was unique
        }
+       if (call BeaconFrame.getBeaconPayloadLength(frame) > 0)
+         return signal MLME_BEACON_NOTIFY.indication (frame);
      } //  PASSIVE_SCAN / ACTIVE_SCAN
      return frame;



More information about the Tinyos-2-commits mailing list