mirror of
https://github.com/espressif/openthread.git
synced 2026-09-01 14:59:54 +00:00
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:
@@ -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);
|
||||
|
||||
|
||||
@@ -103,6 +103,7 @@ private:
|
||||
void SendJoinerFinalize(void);
|
||||
|
||||
uint8_t mJoinerRouterChannel;
|
||||
uint16_t mJoinerRouterPanId;
|
||||
Mac::ExtAddress mJoinerRouter;
|
||||
Message *mTransmitMessage;
|
||||
Ip6::UdpSocket mSocket;
|
||||
|
||||
Reference in New Issue
Block a user