mirror of
https://github.com/espressif/openthread.git
synced 2026-08-26 04:09:52 +00:00
Set PAN ID to 0xffff when performing an active scan. (#630)
This commit is contained in:
+11
-9
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user