diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index 660398d00..65dddb50d 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -75,7 +75,7 @@ void Mac::StartCsmaBackoff(void) Mac::Mac(ThreadNetif &aThreadNetif): mBeginTransmit(aThreadNetif.GetIp6().mTaskletScheduler, &Mac::HandleBeginTransmit, this), - mAckTimer(aThreadNetif.GetIp6().mTimerScheduler, &Mac::HandleAckTimer, this), + mMacTimer(aThreadNetif.GetIp6().mTimerScheduler, &Mac::HandleMacTimer, this), mBackoffTimer(aThreadNetif.GetIp6().mTimerScheduler, &Mac::HandleBeginTransmit, this), mReceiveTimer(aThreadNetif.GetIp6().mTimerScheduler, &Mac::HandleReceiveTimer, this), mKeyManager(aThreadNetif.GetKeyManager()), @@ -214,7 +214,7 @@ void Mac::StartEnergyScan(void) { mState = kStateEnergyScan; mEnergyScanCurrentMaxRssi = kInvalidRssiValue; - mAckTimer.Start(mScanDuration); + mMacTimer.Start(mScanDuration); mEnergyScanSampleRssiTask.Post(); NextOperation(); } @@ -610,6 +610,7 @@ void Mac::HandleBeginTransmit(void) switch (mState) { case kStateActiveScan: + otPlatRadioSetPanId(NULL, kPanIdBroadcast); sendFrame.SetChannel(mScanChannel); SendBeaconRequest(sendFrame); sendFrame.SetSequence(0); @@ -644,7 +645,7 @@ void Mac::HandleBeginTransmit(void) if (sendFrame.GetAckRequest() && !(otPlatRadioGetCaps(NULL) & kRadioCapsAckTimeout)) { - mAckTimer.Start(kAckTimeout); + mMacTimer.Start(kAckTimeout); otLogDebgMac("ack timer start\n"); } @@ -663,7 +664,7 @@ extern "C" void otPlatRadioTransmitDone(otInstance *, bool aRxPending, ThreadErr void Mac::TransmitDoneTask(bool aRxPending, ThreadError aError) { - mAckTimer.Stop(); + mMacTimer.Stop(); mCounters.mTxTotal++; @@ -708,13 +709,13 @@ exit: NextOperation(); } -void Mac::HandleAckTimer(void *aContext) +void Mac::HandleMacTimer(void *aContext) { Mac *obj = reinterpret_cast(aContext); - obj->HandleAckTimer(); + obj->HandleMacTimer(); } -void Mac::HandleAckTimer(void) +void Mac::HandleMacTimer(void) { otPlatRadioReceive(NULL, mChannel); @@ -728,6 +729,7 @@ void Mac::HandleAckTimer(void) if (mScanChannels == 0 || mScanChannel > kPhyMaxChannel) { + otPlatRadioSetPanId(NULL, mPanId); mActiveScanHandler(mScanContext, NULL); ScheduleNextTransmission(); ExitNow(); @@ -763,7 +765,7 @@ void Mac::HandleAckTimer(void) while ((mScanChannels & 1) == 0); mEnergyScanCurrentMaxRssi = kInvalidRssiValue; - mAckTimer.Start(mScanDuration); + mMacTimer.Start(mScanDuration); break; case kStateTransmitData: @@ -837,7 +839,7 @@ void Mac::SentFrame(bool aAcked) { case kStateActiveScan: mCounters.mTxBeaconRequest++; - mAckTimer.Start(mScanDuration); + mMacTimer.Start(mScanDuration); break; case kStateTransmitBeacon: diff --git a/src/core/mac/mac.hpp b/src/core/mac/mac.hpp index 4fa15efb6..865bea9a2 100644 --- a/src/core/mac/mac.hpp +++ b/src/core/mac/mac.hpp @@ -527,8 +527,8 @@ private: void StartEnergyScan(void); ThreadError HandleMacCommand(Frame &aFrame); - static void HandleAckTimer(void *aContext); - void HandleAckTimer(void); + static void HandleMacTimer(void *aContext); + void HandleMacTimer(void); static void HandleBeginTransmit(void *aContext); void HandleBeginTransmit(void); static void HandleReceiveTimer(void *aContext); @@ -540,7 +540,7 @@ private: ThreadError Scan(ScanType aType, uint32_t aScanChannels, uint16_t aScanDuration, void *aContext); Tasklet mBeginTransmit; - Timer mAckTimer; + Timer mMacTimer; Timer mBackoffTimer; Timer mReceiveTimer;