Optimize joiner's Pan ID usage (#613)

* use joiner's Pan ID as the destination Pan ID when sending discovery request, there are two cases:
      - Pan ID is not initialized, so the destination Pan ID is still broadcast(0xffff)
      - Pan ID is already initialized, so it can only join the specific network

  * set joiner's Pan ID to be the same with joiner router
This commit is contained in:
Shu Chen
2016-09-19 09:05:18 -07:00
committed by Jonathan Hui
parent a1b8dbee68
commit 85bd21825b
2 changed files with 4 additions and 1 deletions
+3 -1
View File
@@ -76,7 +76,7 @@ ThreadError Joiner::Start(const char *aPSKd)
SuccessOrExit(error = mNetif.GetDtls().SetPsk(reinterpret_cast<const uint8_t *>(aPSKd),
static_cast<uint8_t>(strlen(aPSKd))));
SuccessOrExit(error = mNetif.GetMle().Discover(0, 0, OT_PANID_BROADCAST, HandleDiscoverResult, this));
SuccessOrExit(error = mNetif.GetMle().Discover(0, 0, mNetif.GetMac().GetPanId(), HandleDiscoverResult, this));
exit:
return error;
@@ -99,6 +99,7 @@ void Joiner::HandleDiscoverResult(otActiveScanResult *aResult)
{
if (aResult != NULL)
{
mJoinerRouterPanId = aResult->mPanId;
mJoinerRouterChannel = aResult->mChannel;
memcpy(&mJoinerRouter, &aResult->mExtAddress, sizeof(mJoinerRouter));
}
@@ -110,6 +111,7 @@ void Joiner::HandleDiscoverResult(otActiveScanResult *aResult)
mSocket.Open(&HandleUdpReceive, this);
mSocket.Bind(sockaddr);
mNetif.GetMac().SetPanId(mJoinerRouterPanId);
mNetif.GetMac().SetChannel(mJoinerRouterChannel);
mNetif.GetIp6Filter().AddUnsecurePort(sockaddr.mPort);
+1
View File
@@ -103,6 +103,7 @@ private:
void SendJoinerFinalize(void);
uint8_t mJoinerRouterChannel;
uint16_t mJoinerRouterPanId;
Mac::ExtAddress mJoinerRouter;
Message *mTransmitMessage;
Ip6::UdpSocket mSocket;