mirror of
https://github.com/espressif/openthread.git
synced 2026-10-02 05:47:40 +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),
|
SuccessOrExit(error = mNetif.GetDtls().SetPsk(reinterpret_cast<const uint8_t *>(aPSKd),
|
||||||
static_cast<uint8_t>(strlen(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:
|
exit:
|
||||||
return error;
|
return error;
|
||||||
@@ -99,6 +99,7 @@ void Joiner::HandleDiscoverResult(otActiveScanResult *aResult)
|
|||||||
{
|
{
|
||||||
if (aResult != NULL)
|
if (aResult != NULL)
|
||||||
{
|
{
|
||||||
|
mJoinerRouterPanId = aResult->mPanId;
|
||||||
mJoinerRouterChannel = aResult->mChannel;
|
mJoinerRouterChannel = aResult->mChannel;
|
||||||
memcpy(&mJoinerRouter, &aResult->mExtAddress, sizeof(mJoinerRouter));
|
memcpy(&mJoinerRouter, &aResult->mExtAddress, sizeof(mJoinerRouter));
|
||||||
}
|
}
|
||||||
@@ -110,6 +111,7 @@ void Joiner::HandleDiscoverResult(otActiveScanResult *aResult)
|
|||||||
mSocket.Open(&HandleUdpReceive, this);
|
mSocket.Open(&HandleUdpReceive, this);
|
||||||
mSocket.Bind(sockaddr);
|
mSocket.Bind(sockaddr);
|
||||||
|
|
||||||
|
mNetif.GetMac().SetPanId(mJoinerRouterPanId);
|
||||||
mNetif.GetMac().SetChannel(mJoinerRouterChannel);
|
mNetif.GetMac().SetChannel(mJoinerRouterChannel);
|
||||||
mNetif.GetIp6Filter().AddUnsecurePort(sockaddr.mPort);
|
mNetif.GetIp6Filter().AddUnsecurePort(sockaddr.mPort);
|
||||||
|
|
||||||
|
|||||||
@@ -103,6 +103,7 @@ private:
|
|||||||
void SendJoinerFinalize(void);
|
void SendJoinerFinalize(void);
|
||||||
|
|
||||||
uint8_t mJoinerRouterChannel;
|
uint8_t mJoinerRouterChannel;
|
||||||
|
uint16_t mJoinerRouterPanId;
|
||||||
Mac::ExtAddress mJoinerRouter;
|
Mac::ExtAddress mJoinerRouter;
|
||||||
Message *mTransmitMessage;
|
Message *mTransmitMessage;
|
||||||
Ip6::UdpSocket mSocket;
|
Ip6::UdpSocket mSocket;
|
||||||
|
|||||||
Reference in New Issue
Block a user