X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Fmac%2Ftkn154%2FScanP.nc;h=a92fc5ac9e42b99d9143b1bcfdbd84f939608508;hb=7e796f13f95812376e8f62fe68b53f826ea0199a;hp=366ccb7a92c0f2b63fdbc7d83f5c775ac88b3cc5;hpb=4a1b294340a6bb0173c5417327a890af68aad744;p=tinyos-2.x.git diff --git a/tos/lib/mac/tkn154/ScanP.nc b/tos/lib/mac/tkn154/ScanP.nc index 366ccb7a..a92fc5ac 100644 --- a/tos/lib/mac/tkn154/ScanP.nc +++ b/tos/lib/mac/tkn154/ScanP.nc @@ -132,26 +132,28 @@ implementation } else if (security && security->SecurityLevel) { status = IEEE154_UNSUPPORTED_SECURITY; } if ((ScanType > 3) || (ScanType < 3 && ScanDuration > 14) || - (ChannelPage != IEEE154_SUPPORTED_CHANNELPAGE) || - !(supportedChannels & ScanChannels) || - ((ScanType != ORPHAN_SCAN) && - ((EnergyDetectListNumEntries && PANDescriptorListNumEntries) || + (ChannelPage != IEEE154_SUPPORTED_CHANNELPAGE) || + !(supportedChannels & ScanChannels) || + ((ScanType != ORPHAN_SCAN) && + ((EnergyDetectListNumEntries && PANDescriptorListNumEntries) || (EnergyDetectList != NULL && PANDescriptorList != NULL) || (EnergyDetectListNumEntries && EnergyDetectList == NULL) || (PANDescriptorListNumEntries && PANDescriptorList == NULL)))) { status = IEEE154_INVALID_PARAMETER; - } else if (ScanType != ENERGY_DETECTION_SCAN && - !(m_txFrame = call TxFramePool.get())) { + } else if ((ScanType == ACTIVE_SCAN || ScanType == ORPHAN_SCAN) && + ((m_txFrame = call TxFramePool.get()) == NULL)) { status = IEEE154_TRANSACTION_OVERFLOW; - } else if (ScanType != ENERGY_DETECTION_SCAN && - !(txControl = call TxControlPool.get())) { + } else if ((ScanType == ACTIVE_SCAN || ScanType == ORPHAN_SCAN) && + ((txControl = call TxControlPool.get()) == NULL)) { call TxFramePool.put(m_txFrame); m_txFrame = NULL; status = IEEE154_TRANSACTION_OVERFLOW; } else { - m_txFrame->header = &txControl->header; - m_txFrame->payload = m_payload; - m_txFrame->metadata = &txControl->metadata; + if (m_txFrame != NULL){ + m_txFrame->header = &txControl->header; + m_txFrame->payload = m_payload; + m_txFrame->metadata = &txControl->metadata; + } m_busy = TRUE; m_scanType = ScanType; m_scanChannels = ScanChannels;