Implement PAN ID Query/Conflict. (#556)

This commit is contained in:
Jonathan Hui
2016-09-13 09:18:05 -07:00
committed by GitHub
parent 6243511d61
commit c44c20ef66
17 changed files with 865 additions and 1 deletions
+31
View File
@@ -1860,11 +1860,42 @@ void Interpreter::ProcessCommissioner(int argc, char *argv[])
{
otCommissionerStop(mInstance);
}
else if (strcmp(argv[0], "panid") == 0)
{
long panid;
long mask;
otIp6Address address;
VerifyOrExit(argc > 3, error = kThreadError_Parse);
// panid
SuccessOrExit(error = ParseLong(argv[1], panid));
// mask
SuccessOrExit(error = ParseLong(argv[2], mask));
// destination
SuccessOrExit(error = otIp6AddressFromString(argv[3], &address));
SuccessOrExit(error = otCommissionerPanIdQuery(mInstance, static_cast<uint16_t>(panid),
static_cast<uint32_t>(mask),
&address, Interpreter::s_HandlePanIdConflict, this));
}
exit:
AppendResult(error);
}
void Interpreter::s_HandlePanIdConflict(uint16_t aPanId, uint32_t aChannelMask, void *aContext)
{
static_cast<Interpreter *>(aContext)->HandlePanIdConflict(aPanId, aChannelMask);
}
void Interpreter::HandlePanIdConflict(uint16_t aPanId, uint32_t aChannelMask)
{
sServer->OutputFormat("Conflict: %04x, %08x\r\n", aPanId, aChannelMask);
}
#endif // OPENTHREAD_ENABLE_COMMISSIONER
#if OPENTHREAD_ENABLE_JOINER