Set PAN ID to 0xffff when performing an active scan. (#630)

This commit is contained in:
Jonathan Hui
2016-09-19 15:11:45 -07:00
committed by GitHub
parent 78b2d7d13e
commit ff8f8b8f62
2 changed files with 14 additions and 12 deletions
+11 -9
View File
@@ -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<Mac *>(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:
+3 -3
View File
@@ -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;