Merge pull request #65 from edmont/pr/upmerge-20220513
upmerge: merge up to commit `130afd9`
This commit is contained in:
commit
e2a765599a
|
@ -124,6 +124,11 @@ jobs:
|
|||
cert_scripts: ./tests/scripts/thread-cert/border_router/MATN/*.py
|
||||
packet_verification: 1
|
||||
description: "MATN"
|
||||
- otbr_mdns: "mDNSResponder"
|
||||
otbr_trel: 0
|
||||
cert_scripts: ./tests/scripts/thread-cert/border_router/LowPower/*.py
|
||||
packet_verification: 1
|
||||
description: "LowPower"
|
||||
- otbr_mdns: "avahi"
|
||||
otbr_trel: 0
|
||||
cert_scripts: ./tests/scripts/thread-cert/border_router/*.py
|
||||
|
|
|
@ -53,7 +53,7 @@ extern "C" {
|
|||
* @note This number versions both OpenThread platform and user APIs.
|
||||
*
|
||||
*/
|
||||
#define OPENTHREAD_API_VERSION (206)
|
||||
#define OPENTHREAD_API_VERSION (207)
|
||||
|
||||
/**
|
||||
* @addtogroup api-instance
|
||||
|
|
|
@ -1060,14 +1060,14 @@ void otPlatRadioUpdateCslSampleTime(otInstance *aInstance, uint32_t aCslSampleTi
|
|||
uint8_t otPlatRadioGetCslAccuracy(otInstance *aInstance);
|
||||
|
||||
/**
|
||||
* Get the current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
|
||||
* The fixed uncertainty of the Device for scheduling CSL Transmissions in units of 10 microseconds.
|
||||
*
|
||||
* @param[in] aInstance A pointer to an OpenThread instance.
|
||||
*
|
||||
* @returns The current CSL Clock Uncertainty in units of 10 us.
|
||||
* @returns The CSL Uncertainty in units of 10 us.
|
||||
*
|
||||
*/
|
||||
uint8_t otPlatRadioGetCslClockUncertainty(otInstance *aInstance);
|
||||
uint8_t otPlatRadioGetCslUncertainty(otInstance *aInstance);
|
||||
|
||||
/**
|
||||
* Set the max transmit power for a specific channel.
|
||||
|
|
|
@ -63,15 +63,11 @@ otError otThreadSetExtendedPanId(otInstance *aInstance, const otExtendedPanId *a
|
|||
Error error = kErrorNone;
|
||||
Instance & instance = AsCoreType(aInstance);
|
||||
const MeshCoP::ExtendedPanId &extPanId = AsCoreType(aExtendedPanId);
|
||||
Mle::MeshLocalPrefix prefix;
|
||||
|
||||
VerifyOrExit(instance.Get<Mle::MleRouter>().IsDisabled(), error = kErrorInvalidState);
|
||||
|
||||
instance.Get<MeshCoP::ExtendedPanIdManager>().SetExtPanId(extPanId);
|
||||
|
||||
prefix.SetFromExtendedPanId(extPanId);
|
||||
instance.Get<Mle::MleRouter>().SetMeshLocalPrefix(prefix);
|
||||
|
||||
instance.Get<MeshCoP::ActiveDatasetManager>().Clear();
|
||||
instance.Get<MeshCoP::PendingDatasetManager>().Clear();
|
||||
|
||||
|
|
|
@ -953,7 +953,8 @@ bool RoutingManager::IsValidBrUlaPrefix(const Ip6::Prefix &aBrUlaPrefix)
|
|||
|
||||
bool RoutingManager::IsValidOmrPrefix(const NetworkData::OnMeshPrefixConfig &aOnMeshPrefixConfig)
|
||||
{
|
||||
return IsValidOmrPrefix(aOnMeshPrefixConfig.GetPrefix()) && aOnMeshPrefixConfig.mSlaac && !aOnMeshPrefixConfig.mDp;
|
||||
return IsValidOmrPrefix(aOnMeshPrefixConfig.GetPrefix()) && aOnMeshPrefixConfig.mOnMesh &&
|
||||
aOnMeshPrefixConfig.mSlaac && aOnMeshPrefixConfig.mStable && !aOnMeshPrefixConfig.mDp;
|
||||
}
|
||||
|
||||
bool RoutingManager::IsValidOmrPrefix(const Ip6::Prefix &aOmrPrefix)
|
||||
|
|
|
@ -430,6 +430,11 @@ DefineCoreType(otBufferInfo, Instance::BufferInfo);
|
|||
|
||||
// Specializations of the `Get<Type>()` method.
|
||||
|
||||
template <> inline Instance &Instance::Get(void)
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <> inline Radio &Instance::Get(void)
|
||||
{
|
||||
return mRadio;
|
||||
|
|
|
@ -58,6 +58,38 @@ extern uint64_t gInstanceRaw[];
|
|||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* This template class implements `Get<Type>()` method for different `Type` objects belonging to the OpenThread
|
||||
* instance.
|
||||
*
|
||||
* Users of this class MUST follow CRTP-style inheritance, i.e., the class `Class` itself should publicly inherit
|
||||
* from `GetProvider<Class>`.
|
||||
*
|
||||
* @tparam InstanceGetProvider The template sub-lass used in CRTP style inheritance.
|
||||
* `InstanceGetProvider` MUST provide a method with the following signature:
|
||||
* `Instance &GetInstance(void) const`
|
||||
*
|
||||
*/
|
||||
template <class InstanceGetProvider> class GetProvider
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* This template method returns a reference to a given `Type` object belonging to the OpenThread instance.
|
||||
*
|
||||
* For example, `Get<MeshForwarder>()` returns a reference to the `MeshForwarder` object of the instance.
|
||||
*
|
||||
* Note that any `Type` for which the `Get<Type>` is defined MUST be uniquely accessible from the OpenThread
|
||||
* `Instance` through the member variable property hierarchy.
|
||||
*
|
||||
* @returns A reference to the `Type` object of the instance.
|
||||
*
|
||||
*/
|
||||
template <typename Type> inline Type &Get(void) const; // Implemented in `locator_getters.hpp`.
|
||||
|
||||
protected:
|
||||
GetProvider(void) = default;
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements a locator for an OpenThread Instance object.
|
||||
*
|
||||
|
@ -69,7 +101,7 @@ extern uint64_t gInstanceRaw[];
|
|||
* single-instance case, this class becomes an empty base class.
|
||||
*
|
||||
*/
|
||||
class InstanceLocator
|
||||
class InstanceLocator : public GetProvider<InstanceLocator>
|
||||
{
|
||||
friend class InstanceLocatorInit;
|
||||
|
||||
|
@ -86,19 +118,6 @@ public:
|
|||
Instance &GetInstance(void) const { return *reinterpret_cast<Instance *>(&gInstanceRaw); }
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This template method returns a reference to a given `Type` object belonging to the OpenThread instance.
|
||||
*
|
||||
* For example, `Get<MeshForwarder>()` returns a reference to the `MeshForwarder` object of the instance.
|
||||
*
|
||||
* Note that any `Type` for which the `Get<Type>` is defined MUST be uniquely accessible from the OpenThread
|
||||
* `Instance` through the member variable property hierarchy.
|
||||
*
|
||||
* @returns A reference to the `Type` object of the instance.
|
||||
*
|
||||
*/
|
||||
template <typename Type> inline Type &Get(void) const; // Implemented in `locator_getters.hpp`.
|
||||
|
||||
protected:
|
||||
/**
|
||||
* This constructor initializes the object.
|
||||
|
|
|
@ -42,25 +42,11 @@
|
|||
|
||||
namespace ot {
|
||||
|
||||
/**
|
||||
* This method returns a reference to the parent OpenThread Instance.
|
||||
*
|
||||
* This definition is a specialization of template `Get<Type>` for `Get<Instance>()`,
|
||||
*
|
||||
* @returns A reference to `Instance` object.
|
||||
*
|
||||
*/
|
||||
template <> inline Instance &InstanceLocator::Get(void) const
|
||||
template <typename InstanceGetProvider>
|
||||
template <typename Type>
|
||||
inline Type &GetProvider<InstanceGetProvider>::Get(void) const
|
||||
{
|
||||
return GetInstance();
|
||||
}
|
||||
|
||||
template <typename Type> inline Type &InstanceLocator::Get(void) const
|
||||
{
|
||||
// This method uses the `Instance` template method `Get<Type>`
|
||||
// to get to the given `Type` from the single OpenThread
|
||||
// instance.
|
||||
return GetInstance().Get<Type>();
|
||||
return static_cast<const InstanceGetProvider *>(this)->GetInstance().template Get<Type>();
|
||||
}
|
||||
|
||||
} // namespace ot
|
||||
|
|
|
@ -258,7 +258,7 @@ static_assert(sizeof(Buffer) >= kBufferSize, "Buffer size if not valid");
|
|||
* This class represents a message.
|
||||
*
|
||||
*/
|
||||
class Message : public otMessage, public Buffer
|
||||
class Message : public otMessage, public Buffer, public GetProvider<Message>
|
||||
{
|
||||
friend class Checksum;
|
||||
friend class Crypto::HmacSha256;
|
||||
|
@ -410,6 +410,14 @@ public:
|
|||
static const otMessageSettings kDefault;
|
||||
};
|
||||
|
||||
/**
|
||||
* This method returns a reference to the OpenThread Instance which owns the `Message`.
|
||||
*
|
||||
* @returns A reference to the `Instance`.
|
||||
*
|
||||
*/
|
||||
Instance &GetInstance(void) const;
|
||||
|
||||
/**
|
||||
* This method frees this message buffer.
|
||||
*
|
||||
|
@ -1663,6 +1671,11 @@ private:
|
|||
#endif
|
||||
};
|
||||
|
||||
inline Instance &Message::GetInstance(void) const
|
||||
{
|
||||
return GetMessagePool()->GetInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* @}
|
||||
*
|
||||
|
|
|
@ -144,6 +144,14 @@ public:
|
|||
return pointer;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method allows passing of the ownership to another `OwnedPtr` using move semantics.
|
||||
*
|
||||
* @returns An rvalue reference of the pointer to move from.
|
||||
*
|
||||
*/
|
||||
OwnedPtr &&PassOwnership(void) { return static_cast<OwnedPtr &&>(*this); }
|
||||
|
||||
/**
|
||||
* This method overload the assignment operator `=` to replace the object owned by the `OwnedPtr` with another one
|
||||
* using move semantics.
|
||||
|
|
|
@ -619,4 +619,8 @@
|
|||
"SRP host uses dynamic heap array to store addresses so no need for config on max number of addresses".
|
||||
#endif
|
||||
|
||||
#ifdef OPENTHREAD_CONFIG_PLATFORM_CSL_UNCERT
|
||||
#error "OPENTHREAD_CONFIG_PLATFORM_CSL_UNCERT was removed and no longer supported"
|
||||
#endif
|
||||
|
||||
#endif // OPENTHREAD_CORE_CONFIG_CHECK_H_
|
||||
|
|
|
@ -176,14 +176,4 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @def OPENTHREAD_CONFIG_PLATFORM_CSL_UNCERT
|
||||
*
|
||||
* The Uncertainty of the scheduling CSL of transmission by the parent, in ±10 us units.
|
||||
*
|
||||
*/
|
||||
#ifndef OPENTHREAD_CONFIG_PLATFORM_CSL_UNCERT
|
||||
#define OPENTHREAD_CONFIG_PLATFORM_CSL_UNCERT UINT8_MAX
|
||||
#endif
|
||||
|
||||
#endif // CONFIG_PLATFORM_H_
|
||||
|
|
|
@ -1165,18 +1165,19 @@ void SubMac::HandleCslTimer(void)
|
|||
}
|
||||
|
||||
Get<Radio>().UpdateCslSampleTime(mCslSampleTime.GetValue());
|
||||
if (mState == kStateCslSample)
|
||||
|
||||
if (RadioSupportsReceiveTiming())
|
||||
{
|
||||
if (RadioSupportsReceiveTiming())
|
||||
if (mState != kStateDisabled && mCslChannel)
|
||||
{
|
||||
IgnoreError(Get<Radio>().ReceiveAt(mCslChannel, mCslSampleTime.GetValue() - periodUs - timeAhead,
|
||||
timeAhead + timeAfter));
|
||||
}
|
||||
else
|
||||
{
|
||||
IgnoreError(Get<Radio>().Receive(mCslChannel));
|
||||
LogDebg("CSL sample %u, duration %u", mCslTimer.GetNow().GetValue(), timeAhead + timeAfter);
|
||||
}
|
||||
}
|
||||
else if (mState == kStateCslSample)
|
||||
{
|
||||
IgnoreError(Get<Radio>().Receive(mCslChannel));
|
||||
LogDebg("CSL sample %u, duration %u", mCslTimer.GetNow().GetValue(), timeAhead + timeAfter);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -370,7 +370,10 @@ public:
|
|||
* @returns The Mesh Local Prefix in the Dataset.
|
||||
*
|
||||
*/
|
||||
const Mle::MeshLocalPrefix &GetMeshLocalPrefix(void) const { return AsCoreType(&mMeshLocalPrefix); }
|
||||
const Ip6::NetworkPrefix &GetMeshLocalPrefix(void) const
|
||||
{
|
||||
return static_cast<const Ip6::NetworkPrefix &>(mMeshLocalPrefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method sets the Mesh Local Prefix in the Dataset.
|
||||
|
@ -378,7 +381,7 @@ public:
|
|||
* @param[in] aMeshLocalPrefix A Mesh Local Prefix.
|
||||
*
|
||||
*/
|
||||
void SetMeshLocalPrefix(const Mle::MeshLocalPrefix &aMeshLocalPrefix)
|
||||
void SetMeshLocalPrefix(const Ip6::NetworkPrefix &aMeshLocalPrefix)
|
||||
{
|
||||
mMeshLocalPrefix = aMeshLocalPrefix;
|
||||
mComponents.mIsMeshLocalPrefixPresent = true;
|
||||
|
|
|
@ -73,20 +73,20 @@ Error DatasetManager::AppendMleDatasetTlv(Message &aMessage) const
|
|||
|
||||
Error DatasetManager::HandleSet(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo)
|
||||
{
|
||||
Tlv tlv;
|
||||
uint16_t offset = aMessage.GetOffset();
|
||||
bool isUpdateFromCommissioner = false;
|
||||
bool doesAffectConnectivity = false;
|
||||
bool doesAffectNetworkKey = false;
|
||||
bool hasNetworkKey = false;
|
||||
StateTlv::State state = StateTlv::kReject;
|
||||
Dataset dataset;
|
||||
Timestamp activeTimestamp;
|
||||
ChannelTlv channel;
|
||||
uint16_t sessionId;
|
||||
Mle::MeshLocalPrefix meshLocalPrefix;
|
||||
NetworkKey networkKey;
|
||||
uint16_t panId;
|
||||
Tlv tlv;
|
||||
uint16_t offset = aMessage.GetOffset();
|
||||
bool isUpdateFromCommissioner = false;
|
||||
bool doesAffectConnectivity = false;
|
||||
bool doesAffectNetworkKey = false;
|
||||
bool hasNetworkKey = false;
|
||||
StateTlv::State state = StateTlv::kReject;
|
||||
Dataset dataset;
|
||||
Timestamp activeTimestamp;
|
||||
ChannelTlv channel;
|
||||
uint16_t sessionId;
|
||||
Ip6::NetworkPrefix meshLocalPrefix;
|
||||
NetworkKey networkKey;
|
||||
uint16_t panId;
|
||||
|
||||
VerifyOrExit(Get<Mle::MleRouter>().IsLeader());
|
||||
|
||||
|
|
|
@ -682,7 +682,7 @@ private:
|
|||
*
|
||||
*/
|
||||
OT_TOOL_PACKED_BEGIN
|
||||
class MeshLocalPrefixTlv : public Tlv, public SimpleTlvInfo<Tlv::kMeshLocalPrefix, Mle::MeshLocalPrefix>
|
||||
class MeshLocalPrefixTlv : public Tlv, public SimpleTlvInfo<Tlv::kMeshLocalPrefix, Ip6::NetworkPrefix>
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
@ -718,7 +718,7 @@ public:
|
|||
* @returns The Mesh Local Prefix value.
|
||||
*
|
||||
*/
|
||||
const Mle::MeshLocalPrefix &GetMeshLocalPrefix(void) const { return mMeshLocalPrefix; }
|
||||
const Ip6::NetworkPrefix &GetMeshLocalPrefix(void) const { return mMeshLocalPrefix; }
|
||||
|
||||
/**
|
||||
* This method sets the Mesh Local Prefix value.
|
||||
|
@ -726,10 +726,10 @@ public:
|
|||
* @param[in] aMeshLocalPrefix A pointer to the Mesh Local Prefix value.
|
||||
*
|
||||
*/
|
||||
void SetMeshLocalPrefix(const Mle::MeshLocalPrefix &aMeshLocalPrefix) { mMeshLocalPrefix = aMeshLocalPrefix; }
|
||||
void SetMeshLocalPrefix(const Ip6::NetworkPrefix &aMeshLocalPrefix) { mMeshLocalPrefix = aMeshLocalPrefix; }
|
||||
|
||||
private:
|
||||
Mle::MeshLocalPrefix mMeshLocalPrefix;
|
||||
Ip6::NetworkPrefix mMeshLocalPrefix;
|
||||
} OT_TOOL_PACKED_END;
|
||||
|
||||
class SteeringData;
|
||||
|
|
|
@ -167,7 +167,7 @@ private:
|
|||
* @param[in] aContextId The 6LoWPAN Context ID.
|
||||
*
|
||||
*/
|
||||
void Set(const Ip6::Prefix &aPrefix, const Mle::MeshLocalPrefix &aMeshLocalPrefix, uint8_t aContextId)
|
||||
void Set(const Ip6::Prefix &aPrefix, const Ip6::NetworkPrefix &aMeshLocalPrefix, uint8_t aContextId)
|
||||
{
|
||||
mPrefix = aPrefix;
|
||||
|
||||
|
|
|
@ -1009,6 +1009,7 @@ private:
|
|||
|
||||
} // namespace Ip6
|
||||
|
||||
DefineCoreType(otIp6NetworkPrefix, Ip6::NetworkPrefix);
|
||||
DefineCoreType(otIp6Prefix, Ip6::Prefix);
|
||||
DefineCoreType(otIp6InterfaceIdentifier, Ip6::InterfaceIdentifier);
|
||||
DefineCoreType(otIp6Address, Ip6::Address);
|
||||
|
|
|
@ -473,12 +473,12 @@ public:
|
|||
uint8_t GetCslAccuracy(void);
|
||||
|
||||
/**
|
||||
* Get the current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
|
||||
* Get the fixed uncertainty of the Device for scheduling CSL Transmissions in units of 10 microseconds.
|
||||
*
|
||||
* @returns The current CSL Clock Uncertainty in units of 10 us.
|
||||
* @returns The CSL Uncertainty in units of 10 us.
|
||||
*
|
||||
*/
|
||||
uint8_t GetCslClockUncertainty(void);
|
||||
uint8_t GetCslUncertainty(void);
|
||||
#endif // OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE || OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
|
||||
/**
|
||||
|
@ -809,10 +809,12 @@ inline uint8_t Radio::GetCslAccuracy(void)
|
|||
{
|
||||
return otPlatRadioGetCslAccuracy(GetInstancePtr());
|
||||
}
|
||||
#endif
|
||||
|
||||
inline uint8_t Radio::GetCslClockUncertainty(void)
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
inline uint8_t Radio::GetCslUncertainty(void)
|
||||
{
|
||||
return otPlatRadioGetCslClockUncertainty(GetInstancePtr());
|
||||
return otPlatRadioGetCslUncertainty(GetInstancePtr());
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -979,7 +981,7 @@ inline uint8_t Radio::GetCslAccuracy(void)
|
|||
return UINT8_MAX;
|
||||
}
|
||||
|
||||
inline uint8_t Radio::GetCslClockUncertainty(void)
|
||||
inline uint8_t Radio::GetCslUncertainty(void)
|
||||
{
|
||||
return UINT8_MAX;
|
||||
}
|
||||
|
|
|
@ -250,11 +250,11 @@ OT_TOOL_WEAK uint8_t otPlatRadioGetCslAccuracy(otInstance *aInstance)
|
|||
return UINT8_MAX;
|
||||
}
|
||||
|
||||
OT_TOOL_WEAK uint8_t otPlatRadioGetCslClockUncertainty(otInstance *aInstance)
|
||||
OT_TOOL_WEAK uint8_t otPlatRadioGetCslUncertainty(otInstance *aInstance)
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aInstance);
|
||||
|
||||
return OPENTHREAD_CONFIG_PLATFORM_CSL_UNCERT;
|
||||
return UINT8_MAX;
|
||||
}
|
||||
|
||||
OT_TOOL_WEAK otError otPlatRadioGetFemLnaGain(otInstance *aInstance, int8_t *aGain)
|
||||
|
|
|
@ -64,6 +64,10 @@ namespace Mle {
|
|||
|
||||
RegisterLogModule("Mle");
|
||||
|
||||
const otMeshLocalPrefix Mle::sMeshLocalPrefixInit = {
|
||||
{0xfd, 0xde, 0xad, 0x00, 0xbe, 0xef, 0x00, 0x00},
|
||||
};
|
||||
|
||||
Mle::Mle(Instance &aInstance)
|
||||
: InstanceLocator(aInstance)
|
||||
, mRetrieveNewNetworkData(false)
|
||||
|
@ -114,8 +118,6 @@ Mle::Mle(Instance &aInstance)
|
|||
, mParentResponseCb(nullptr)
|
||||
, mParentResponseCbContext(nullptr)
|
||||
{
|
||||
MeshLocalPrefix meshLocalPrefix;
|
||||
|
||||
mParent.Init(aInstance);
|
||||
mParentCandidate.Init(aInstance);
|
||||
|
||||
|
@ -130,8 +132,6 @@ Mle::Mle(Instance &aInstance)
|
|||
|
||||
mLeaderAloc.InitAsThreadOriginRealmLocalScope();
|
||||
|
||||
meshLocalPrefix.SetFromExtendedPanId(Get<MeshCoP::ExtendedPanIdManager>().GetExtPanId());
|
||||
|
||||
mMeshLocal64.InitAsThreadOriginRealmLocalScope();
|
||||
mMeshLocal64.GetAddress().GetIid().GenerateRandom();
|
||||
|
||||
|
@ -150,7 +150,7 @@ Mle::Mle(Instance &aInstance)
|
|||
mRealmLocalAllThreadNodes.GetAddress().mFields.m16[0] = HostSwap16(0xff33);
|
||||
mRealmLocalAllThreadNodes.GetAddress().mFields.m16[7] = HostSwap16(0x0001);
|
||||
|
||||
SetMeshLocalPrefix(meshLocalPrefix);
|
||||
SetMeshLocalPrefix(AsCoreType(&sMeshLocalPrefixInit));
|
||||
|
||||
// `SetMeshLocalPrefix()` also adds the Mesh-Local EID and subscribes
|
||||
// to the Link- and Realm-Local All Thread Nodes multicast addresses.
|
||||
|
@ -823,7 +823,7 @@ void Mle::UpdateLinkLocalAddress(void)
|
|||
Get<Notifier>().Signal(kEventThreadLinkLocalAddrChanged);
|
||||
}
|
||||
|
||||
void Mle::SetMeshLocalPrefix(const MeshLocalPrefix &aMeshLocalPrefix)
|
||||
void Mle::SetMeshLocalPrefix(const Ip6::NetworkPrefix &aMeshLocalPrefix)
|
||||
{
|
||||
VerifyOrExit(GetMeshLocalPrefix() != aMeshLocalPrefix,
|
||||
Get<Notifier>().SignalIfFirst(kEventThreadMeshLocalAddrChanged));
|
||||
|
@ -1556,7 +1556,7 @@ Error Mle::AppendCslClockAccuracy(Message &aMessage)
|
|||
cslClockAccuracy.Init();
|
||||
|
||||
cslClockAccuracy.SetCslClockAccuracy(Get<Radio>().GetCslAccuracy());
|
||||
cslClockAccuracy.SetCslUncertainty(Get<Radio>().GetCslClockUncertainty());
|
||||
cslClockAccuracy.SetCslUncertainty(Get<Radio>().GetCslUncertainty());
|
||||
|
||||
SuccessOrExit(error = aMessage.Append(cslClockAccuracy));
|
||||
|
||||
|
@ -3472,7 +3472,7 @@ bool Mle::IsBetterParent(uint16_t aRloc16,
|
|||
{
|
||||
cslMetric = CalcParentCslMetric(aCslClockAccuracy, aCslUncertainty);
|
||||
candidateCslMetric =
|
||||
CalcParentCslMetric(mParentCandidate.GetCslClockAccuracy(), mParentCandidate.GetCslClockUncertainty());
|
||||
CalcParentCslMetric(mParentCandidate.GetCslClockAccuracy(), mParentCandidate.GetCslUncertainty());
|
||||
if (candidateCslMetric != cslMetric)
|
||||
{
|
||||
ExitNow(rval = (cslMetric < candidateCslMetric));
|
||||
|
@ -3681,7 +3681,7 @@ void Mle::HandleParentResponse(RxInfo &aRxInfo)
|
|||
mParentCandidate.SetKeySequence(aRxInfo.mKeySequence);
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
|
||||
mParentCandidate.SetCslClockAccuracy(clockAccuracy.GetCslClockAccuracy());
|
||||
mParentCandidate.SetCslClockUncertainty(clockAccuracy.GetCslUncertainty());
|
||||
mParentCandidate.SetCslUncertainty(clockAccuracy.GetCslUncertainty());
|
||||
#endif
|
||||
|
||||
mParentPriority = connectivity.GetParentPriority();
|
||||
|
@ -3809,7 +3809,7 @@ void Mle::HandleChildIdResponse(RxInfo &aRxInfo)
|
|||
mParentCandidate.Clear();
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
|
||||
Get<Mac::Mac>().SetCslParentUncertainty(mParent.GetCslClockUncertainty());
|
||||
Get<Mac::Mac>().SetCslParentUncertainty(mParent.GetCslUncertainty());
|
||||
Get<Mac::Mac>().SetCslParentClockAccuracy(mParent.GetCslClockAccuracy());
|
||||
#endif
|
||||
|
||||
|
|
|
@ -327,10 +327,7 @@ public:
|
|||
* @returns A reference to the Mesh Local Prefix.
|
||||
*
|
||||
*/
|
||||
const MeshLocalPrefix &GetMeshLocalPrefix(void) const
|
||||
{
|
||||
return static_cast<const MeshLocalPrefix &>(mMeshLocal16.GetAddress().GetPrefix());
|
||||
}
|
||||
const Ip6::NetworkPrefix &GetMeshLocalPrefix(void) const { return mMeshLocal16.GetAddress().GetPrefix(); }
|
||||
|
||||
/**
|
||||
* This method sets the Mesh Local Prefix.
|
||||
|
@ -338,7 +335,7 @@ public:
|
|||
* @param[in] aMeshLocalPrefix A reference to the Mesh Local Prefix.
|
||||
*
|
||||
*/
|
||||
void SetMeshLocalPrefix(const MeshLocalPrefix &aMeshLocalPrefix);
|
||||
void SetMeshLocalPrefix(const Ip6::NetworkPrefix &aMeshLocalPrefix);
|
||||
|
||||
#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
|
||||
/**
|
||||
|
@ -1755,7 +1752,7 @@ private:
|
|||
void MarkAsNotInUse(void) { SetAloc16(kNotInUse); }
|
||||
uint16_t GetAloc16(void) const { return GetAddress().GetIid().GetLocator(); }
|
||||
void SetAloc16(uint16_t aAloc16) { GetAddress().GetIid().SetLocator(aAloc16); }
|
||||
void ApplyMeshLocalPrefix(const MeshLocalPrefix &aPrefix) { GetAddress().SetPrefix(aPrefix); }
|
||||
void ApplyMeshLocalPrefix(const Ip6::NetworkPrefix &aPrefix) { GetAddress().SetPrefix(aPrefix); }
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -1902,6 +1899,8 @@ private:
|
|||
|
||||
otMleCounters mCounters;
|
||||
|
||||
static const otMeshLocalPrefix sMeshLocalPrefixInit;
|
||||
|
||||
Ip6::Netif::UnicastAddress mLinkLocal64;
|
||||
Ip6::Netif::UnicastAddress mMeshLocal64;
|
||||
Ip6::Netif::UnicastAddress mMeshLocal16;
|
||||
|
|
|
@ -63,13 +63,5 @@ DeviceMode::InfoString DeviceMode::ToString(void) const
|
|||
return string;
|
||||
}
|
||||
|
||||
void MeshLocalPrefix::SetFromExtendedPanId(const MeshCoP::ExtendedPanId &aExtendedPanId)
|
||||
{
|
||||
m8[0] = 0xfd;
|
||||
memcpy(&m8[1], aExtendedPanId.m8, 5);
|
||||
m8[6] = 0x00;
|
||||
m8[7] = 0x00;
|
||||
}
|
||||
|
||||
} // namespace Mle
|
||||
} // namespace ot
|
||||
|
|
|
@ -415,24 +415,6 @@ private:
|
|||
uint8_t mMode;
|
||||
};
|
||||
|
||||
/**
|
||||
* This class represents a Mesh Local Prefix.
|
||||
*
|
||||
*/
|
||||
OT_TOOL_PACKED_BEGIN
|
||||
class MeshLocalPrefix : public Ip6::NetworkPrefix
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* This method derives and sets the Mesh Local Prefix from an Extended PAN ID.
|
||||
*
|
||||
* @param[in] aExtendedPanId An Extended PAN ID.
|
||||
*
|
||||
*/
|
||||
void SetFromExtendedPanId(const MeshCoP::ExtendedPanId &aExtendedPanId);
|
||||
|
||||
} OT_TOOL_PACKED_END;
|
||||
|
||||
/**
|
||||
* This class represents the Thread Leader Data.
|
||||
*
|
||||
|
@ -578,7 +560,6 @@ typedef Mac::Key Key;
|
|||
|
||||
} // namespace Mle
|
||||
|
||||
DefineCoreType(otMeshLocalPrefix, Mle::MeshLocalPrefix);
|
||||
DefineCoreType(otLeaderData, Mle::LeaderData);
|
||||
DefineMapEnum(otDeviceRole, Mle::DeviceRole);
|
||||
|
||||
|
|
|
@ -1365,7 +1365,7 @@ public:
|
|||
Neighbor::Init(aInstance);
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
|
||||
SetCslClockAccuracy(kCslWorstCrystalPpm);
|
||||
SetCslClockUncertainty(kCslWorstUncertainty);
|
||||
SetCslUncertainty(kCslWorstUncertainty);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -1446,15 +1446,15 @@ public:
|
|||
* @returns The CSL clock uncertainty of this router.
|
||||
*
|
||||
*/
|
||||
uint8_t GetCslClockUncertainty(void) const { return mCslClockUncertainty; }
|
||||
uint8_t GetCslUncertainty(void) const { return mCslUncertainty; }
|
||||
|
||||
/**
|
||||
* This method sets the CSL clock uncertainty of this router.
|
||||
*
|
||||
* @param[in] aCslClockUncertainty The CSL clock uncertainty of this router.
|
||||
* @param[in] aCslUncertainty The CSL clock uncertainty of this router.
|
||||
*
|
||||
*/
|
||||
void SetCslClockUncertainty(uint8_t aCslClockUncertainty) { mCslClockUncertainty = aCslClockUncertainty; }
|
||||
void SetCslUncertainty(uint8_t aCslUncertainty) { mCslUncertainty = aCslUncertainty; }
|
||||
#endif
|
||||
|
||||
private:
|
||||
|
@ -1467,8 +1467,8 @@ private:
|
|||
uint8_t mCost : 4; ///< The cost to this router via neighbor router
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE
|
||||
uint8_t mCslClockAccuracy; ///< Crystal accuracy, in units of ± ppm.
|
||||
uint8_t mCslClockUncertainty; ///< Scheduling uncertainty, in units of 10 us.
|
||||
uint8_t mCslClockAccuracy; ///< Crystal accuracy, in units of ± ppm.
|
||||
uint8_t mCslUncertainty; ///< Scheduling uncertainty, in units of 10 us.
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
@ -701,6 +701,28 @@ public:
|
|||
const otExtAddress & aExtAddress);
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE || OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
/**
|
||||
* Get the current accuracy, in units of ± ppm, of the clock used for scheduling CSL operations.
|
||||
*
|
||||
* @note Platforms may optimize this value based on operational conditions (i.e.: temperature).
|
||||
*
|
||||
* @retval The current CSL rx/tx scheduling drift, in units of ± ppm.
|
||||
*
|
||||
*/
|
||||
uint8_t GetCslAccuracy(void);
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
/**
|
||||
* Get the current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
|
||||
*
|
||||
* @retval The current CSL Clock Uncertainty in units of 10 us.
|
||||
*
|
||||
*/
|
||||
uint8_t GetCslUncertainty(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* This method checks whether the spinel interface is radio-only.
|
||||
*
|
||||
|
|
|
@ -2461,5 +2461,29 @@ otError RadioSpinel<InterfaceType, ProcessContextType>::ConfigureEnhAckProbing(o
|
|||
}
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE || OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
template <typename InterfaceType, typename ProcessContextType>
|
||||
uint8_t RadioSpinel<InterfaceType, ProcessContextType>::GetCslAccuracy(void)
|
||||
{
|
||||
uint8_t accuracy = UINT8_MAX;
|
||||
otError error = Get(SPINEL_PROP_RCP_CSL_ACCURACY, SPINEL_DATATYPE_UINT8_S, &accuracy);
|
||||
|
||||
LogIfFail("Get CSL Accuracy failed", error);
|
||||
return accuracy;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
template <typename InterfaceType, typename ProcessContextType>
|
||||
uint8_t RadioSpinel<InterfaceType, ProcessContextType>::GetCslUncertainty(void)
|
||||
{
|
||||
uint8_t uncertainty = UINT8_MAX;
|
||||
otError error = Get(SPINEL_PROP_RCP_CSL_UNCERTAINTY, SPINEL_DATATYPE_UINT8_S, &uncertainty);
|
||||
|
||||
LogIfFail("Get CSL Uncertainty failed", error);
|
||||
return uncertainty;
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace Spinel
|
||||
} // namespace ot
|
||||
|
|
|
@ -1401,6 +1401,8 @@ const char *spinel_prop_key_to_cstr(spinel_prop_key_t prop_key)
|
|||
{SPINEL_PROP_CHILD_SUPERVISION_CHECK_TIMEOUT, "CHILD_SUPERVISION_CHECK_TIMEOUT"},
|
||||
{SPINEL_PROP_RCP_VERSION, "RCP_VERSION"},
|
||||
{SPINEL_PROP_RCP_ENH_ACK_PROBING, "ENH_ACK_PROBING"},
|
||||
{SPINEL_PROP_RCP_CSL_ACCURACY, "CSL_ACCURACY"},
|
||||
{SPINEL_PROP_RCP_CSL_UNCERTAINTY, "CSL_UNCERTAINTY"},
|
||||
{SPINEL_PROP_PARENT_RESPONSE_INFO, "PARENT_RESPONSE_INFO"},
|
||||
{SPINEL_PROP_SLAAC_ENABLED, "SLAAC_ENABLED"},
|
||||
{SPINEL_PROP_SUPPORTED_RADIO_LINKS, "SUPPORTED_RADIO_LINKS"},
|
||||
|
|
|
@ -377,7 +377,7 @@
|
|||
* Please see section "Spinel definition compatibility guideline" for more details.
|
||||
*
|
||||
*/
|
||||
#define SPINEL_RCP_API_VERSION 5
|
||||
#define SPINEL_RCP_API_VERSION 6
|
||||
|
||||
/**
|
||||
* @def SPINEL_MIN_HOST_SUPPORTED_RCP_API_VERSION
|
||||
|
@ -4731,6 +4731,24 @@ enum
|
|||
*/
|
||||
SPINEL_PROP_RCP_ENH_ACK_PROBING = SPINEL_PROP_RCP_EXT__BEGIN + 3,
|
||||
|
||||
/// CSL Accuracy
|
||||
/** Format: `C`
|
||||
* Required capability: `SPINEL_CAP_NET_THREAD_1_2`
|
||||
*
|
||||
* The current CSL rx/tx scheduling drift, in units of ± ppm.
|
||||
*
|
||||
*/
|
||||
SPINEL_PROP_RCP_CSL_ACCURACY = SPINEL_PROP_RCP_EXT__BEGIN + 4,
|
||||
|
||||
/// CSL Uncertainty
|
||||
/** Format: `C`
|
||||
* Required capability: `SPINEL_CAP_NET_THREAD_1_2`
|
||||
*
|
||||
* The current uncertainty, in units of 10 us, of the clock used for scheduling CSL operations.
|
||||
*
|
||||
*/
|
||||
SPINEL_PROP_RCP_CSL_UNCERTAINTY = SPINEL_PROP_RCP_EXT__BEGIN + 5,
|
||||
|
||||
SPINEL_PROP_RCP_EXT__END = 0x900,
|
||||
|
||||
SPINEL_PROP_NEST__BEGIN = 0x3BC0,
|
||||
|
|
|
@ -1547,6 +1547,20 @@ exit:
|
|||
return error;
|
||||
}
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE || OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
template <> otError NcpBase::HandlePropertyGet<SPINEL_PROP_RCP_CSL_ACCURACY>(void)
|
||||
{
|
||||
return mEncoder.WriteUint8(otPlatRadioGetCslAccuracy(mInstance));
|
||||
}
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
template <> otError NcpBase::HandlePropertyGet<SPINEL_PROP_RCP_CSL_UNCERTAINTY>(void)
|
||||
{
|
||||
return mEncoder.WriteUint8(otPlatRadioGetCslUncertainty(mInstance));
|
||||
}
|
||||
#endif
|
||||
|
||||
otError NcpBase::EncodeChannelMask(uint32_t aChannelMask)
|
||||
{
|
||||
otError error = OT_ERROR_NONE;
|
||||
|
|
|
@ -210,6 +210,12 @@ NcpBase::PropertyHandler NcpBase::FindGetPropertyHandler(spinel_prop_key_t aKey)
|
|||
#if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE
|
||||
OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_RCP_TIMESTAMP),
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE || OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_RCP_CSL_ACCURACY),
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_RCP_CSL_UNCERTAINTY),
|
||||
#endif
|
||||
#if OPENTHREAD_MTD || OPENTHREAD_FTD
|
||||
OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_FILTER),
|
||||
OT_NCP_GET_HANDLER_ENTRY(SPINEL_PROP_UNSOL_UPDATE_LIST),
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include "common/code_utils.hpp"
|
||||
#include "common/new.hpp"
|
||||
#include "lib/spinel/radio_spinel.hpp"
|
||||
#include "posix/platform/radio.hpp"
|
||||
|
@ -603,12 +604,23 @@ uint32_t otPlatRadioGetBusSpeed(otInstance *aInstance)
|
|||
return sRadioSpinel.GetBusSpeed();
|
||||
}
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE || OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
uint8_t otPlatRadioGetCslAccuracy(otInstance *aInstance)
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aInstance);
|
||||
|
||||
return 0;
|
||||
return sRadioSpinel.GetCslAccuracy();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
|
||||
uint8_t otPlatRadioGetCslUncertainty(otInstance *aInstance)
|
||||
{
|
||||
OT_UNUSED_VARIABLE(aInstance);
|
||||
|
||||
return sRadioSpinel.GetCslUncertainty();
|
||||
}
|
||||
#endif
|
||||
|
||||
otError otPlatRadioSetChannelMaxTransmitPower(otInstance *aInstance, uint8_t aChannel, int8_t aMaxPower)
|
||||
{
|
||||
|
|
|
@ -79,7 +79,7 @@ class Cert_5_1_01_RouterAttach(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(7)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.collect_rloc16s()
|
||||
|
|
|
@ -97,7 +97,7 @@ class Cert_5_1_02_ChildAddressTimeout(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[MED].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import network_layer
|
||||
import thread_cert
|
||||
|
@ -84,11 +85,11 @@ class Cert_5_1_03_RouterAddressReallocation(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].set_network_id_timeout(110)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import network_layer
|
||||
import thread_cert
|
||||
|
@ -86,11 +87,11 @@ class Cert_5_1_04_RouterAddressReallocation(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].set_network_id_timeout(200)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import network_layer
|
||||
import thread_cert
|
||||
|
@ -82,7 +83,7 @@ class Cert_5_1_05_RouterAddressTimeout(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER1].reset()
|
||||
|
|
|
@ -79,7 +79,7 @@ class Cert_5_1_06_RemoveRouterId(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
rloc16 = self.nodes[ROUTER1].get_addr16()
|
||||
self.collect_rloc16s()
|
||||
|
|
|
@ -156,7 +156,7 @@ class Cert_5_1_07_MaxChildCount(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
for i in range(3, 13):
|
||||
|
|
|
@ -99,7 +99,7 @@ class Cert_5_1_08_RouterAttachConnectivity(thread_cert.TestCase):
|
|||
for i in range(2, 5):
|
||||
self.nodes[i].start()
|
||||
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
|
||||
for i in range(2, 5):
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
@ -107,7 +107,7 @@ class Cert_5_1_08_RouterAttachConnectivity(thread_cert.TestCase):
|
|||
self.simulator.go(config.MAX_ADVERTISEMENT_INTERVAL)
|
||||
|
||||
self.nodes[ROUTER4].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER4].get_state(), 'router')
|
||||
|
||||
def verify(self, pv):
|
||||
|
|
|
@ -101,7 +101,7 @@ class Cert_5_1_09_REEDAttachConnectivity(thread_cert.TestCase):
|
|||
for i in range(2, 5):
|
||||
self.nodes[i].start()
|
||||
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
self.assertEqual(self.nodes[REED1].get_state(), 'child')
|
||||
|
@ -110,7 +110,7 @@ class Cert_5_1_09_REEDAttachConnectivity(thread_cert.TestCase):
|
|||
self.simulator.go(config.MAX_ADVERTISEMENT_INTERVAL)
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(10)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
self.assertEqual(self.nodes[REED1].get_state(), 'router')
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_PARENT_REQUEST, MLE_PARENT_RESPONSE, MLE_CHILD_ID_REQUEST, SOURCE_ADDRESS_TLV, MODE_TLV, TIMEOUT_TLV, CHALLENGE_TLV, RESPONSE_TLV, LINK_LAYER_FRAME_COUNTER_TLV, ADDRESS16_TLV, LEADER_DATA_TLV, NETWORK_DATA_TLV, TLV_REQUEST_TLV, SCAN_MASK_TLV, CONNECTIVITY_TLV, LINK_MARGIN_TLV, VERSION_TLV, ADDRESS_REGISTRATION_TLV
|
||||
|
@ -90,15 +91,15 @@ class Cert_5_1_10_RouterAttachLinkQuality(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER3].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER3].get_state(), 'router')
|
||||
|
||||
def verify(self, pv):
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_PARENT_REQUEST, MLE_PARENT_RESPONSE, MLE_CHILD_ID_REQUEST, SOURCE_ADDRESS_TLV, MODE_TLV, TIMEOUT_TLV, CHALLENGE_TLV, RESPONSE_TLV, LINK_LAYER_FRAME_COUNTER_TLV, ADDRESS16_TLV, LEADER_DATA_TLV, NETWORK_DATA_TLV, TLV_REQUEST_TLV, SCAN_MASK_TLV, CONNECTIVITY_TLV, LINK_MARGIN_TLV, VERSION_TLV, ADDRESS_REGISTRATION_TLV
|
||||
|
@ -92,15 +93,15 @@ class Cert_5_1_11_REEDAttachLinkQuality(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[REED].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[REED].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(10)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
self.assertEqual(self.nodes[REED].get_state(), 'router')
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_PARENT_REQUEST, MLE_PARENT_RESPONSE, MLE_CHILD_UPDATE_RESPONSE, MLE_CHILD_ID_REQUEST, MLE_CHILD_ID_RESPONSE, MLE_LINK_REQUEST, MLE_LINK_ACCEPT, MLE_LINK_ACCEPT_AND_REQUEST, ADDR_SOL_URI, SOURCE_ADDRESS_TLV, MODE_TLV, TIMEOUT_TLV, CHALLENGE_TLV, RESPONSE_TLV, LINK_LAYER_FRAME_COUNTER_TLV, MLE_FRAME_COUNTER_TLV, ROUTE64_TLV, ADDRESS16_TLV, LEADER_DATA_TLV, NETWORK_DATA_TLV, TLV_REQUEST_TLV, SCAN_MASK_TLV, CONNECTIVITY_TLV, LINK_MARGIN_TLV, VERSION_TLV, ADDRESS_REGISTRATION_TLV, NL_MAC_EXTENDED_ADDRESS_TLV, NL_RLOC16_TLV, NL_STATUS_TLV, NL_ROUTER_MASK_TLV, COAP_CODE_ACK
|
||||
|
@ -81,11 +82,11 @@ class Cert_5_1_12_NewRouterSync(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.simulator.go(10)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_LINK_REQUEST, MLE_LINK_ACCEPT, MLE_LINK_ACCEPT_AND_REQUEST, SOURCE_ADDRESS_TLV, CHALLENGE_TLV, RESPONSE_TLV, LINK_LAYER_FRAME_COUNTER_TLV, ROUTE64_TLV, ADDRESS16_TLV, LEADER_DATA_TLV, TLV_REQUEST_TLV, VERSION_TLV, MLE_MAX_RESPONSE_DELAY
|
||||
|
@ -83,7 +84,7 @@ class Cert_5_1_13_RouterReset(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
self.collect_rloc16s()
|
||||
|
||||
|
@ -92,7 +93,7 @@ class Cert_5_1_13_RouterReset(thread_cert.TestCase):
|
|||
self.simulator.go(5)
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
def verify(self, pv):
|
||||
|
|
|
@ -96,11 +96,11 @@ class Cert_5_2_01_REEDAttach(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[DUT_ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[REED1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[REED1].get_state(), 'child')
|
||||
|
||||
self.nodes[MED1].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import mle
|
||||
import network_layer
|
||||
import thread_cert
|
||||
|
@ -315,16 +316,16 @@ class Cert_5_2_3_LeaderReject2Hops(thread_cert.TestCase):
|
|||
|
||||
for i in range(2, 32):
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
self.collect_rlocs()
|
||||
|
||||
self.nodes[ROUTER_31].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER_31].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER_32].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
|
||||
def verify(self, pv: PacketVerifier):
|
||||
pkts = pv.pkts
|
||||
|
|
|
@ -174,11 +174,11 @@ class Cert_5_2_4_REEDUpgrade(thread_cert.TestCase):
|
|||
|
||||
for i in range(2, 17):
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
||||
self.nodes[DUT_REED].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.simulator.go(ROUTER_SELECTION_JITTER)
|
||||
|
||||
self.collect_rloc16s()
|
||||
|
|
|
@ -184,7 +184,7 @@ class Cert_5_2_5_AddressQuery(thread_cert.TestCase):
|
|||
|
||||
# 2. BR: SLAAC Server for prefix 2002::/64.
|
||||
self.nodes[BR].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[BR].get_state(), 'router')
|
||||
self.nodes[BR].add_prefix('2002::/64', 'paros')
|
||||
self.nodes[BR].register_netdata()
|
||||
|
@ -194,7 +194,7 @@ class Cert_5_2_5_AddressQuery(thread_cert.TestCase):
|
|||
if i == BR:
|
||||
continue
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
||||
self.nodes[MED].start()
|
||||
|
@ -203,7 +203,7 @@ class Cert_5_2_5_AddressQuery(thread_cert.TestCase):
|
|||
|
||||
# 4. Bring up DUT_REED.
|
||||
self.nodes[DUT_REED].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.simulator.go(ROUTER_SELECTION_JITTER)
|
||||
|
||||
# 5. Enable a link between the DUT and BR to create a one-way link.
|
||||
|
|
|
@ -216,7 +216,7 @@ class Cert_5_2_06_RouterDowngrade(thread_cert.TestCase):
|
|||
|
||||
for i in range(2, 24):
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
self.collect_rloc16s()
|
||||
|
||||
|
@ -224,7 +224,7 @@ class Cert_5_2_06_RouterDowngrade(thread_cert.TestCase):
|
|||
# so we don't need to ensure ROUTER23 has a better link quality on
|
||||
# posix.
|
||||
self.nodes[ROUTER23].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER23].get_state(), 'router')
|
||||
|
||||
self.simulator.go(10)
|
||||
|
|
|
@ -151,7 +151,7 @@ class Cert_5_2_7_REEDSynchronization_Base(thread_cert.TestCase):
|
|||
|
||||
for i in range(2, 17):
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(10)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
|
||||
for i in range(2, 17):
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
|
|
@ -75,7 +75,7 @@ class Cert_5_3_1_LinkLocal(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[DUT_ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')
|
||||
|
||||
self.collect_rlocs()
|
||||
|
|
|
@ -93,11 +93,11 @@ class Cert_5_3_2_RealmLocal(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[DUT_ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[SED1].start()
|
||||
|
|
|
@ -103,7 +103,7 @@ class Cert_5_3_3_AddressQuery(thread_cert.TestCase):
|
|||
self.nodes[DUT_ROUTER2].start()
|
||||
self.nodes[ROUTER3].start()
|
||||
self.nodes[MED1].start()
|
||||
self.simulator.go(10)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
self.assertEqual(self.nodes[DUT_ROUTER2].get_state(), 'router')
|
||||
|
|
|
@ -117,7 +117,7 @@ class Cert_5_3_4_AddressMapCache(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[DUT_ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')
|
||||
|
||||
for i in MTDS:
|
||||
|
|
|
@ -91,7 +91,7 @@ class Cert_5_3_5_RoutingLinkQuality(thread_cert.TestCase):
|
|||
|
||||
for router in range(DUT_ROUTER1, ROUTER3 + 1):
|
||||
self.nodes[router].start()
|
||||
self.simulator.go(10)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
|
||||
for router in range(DUT_ROUTER1, ROUTER3 + 1):
|
||||
self.assertEqual(self.nodes[router].get_state(), 'router')
|
||||
|
|
|
@ -90,11 +90,11 @@ class Cert_5_3_6_RouterIdMask(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.collect_rloc16s()
|
||||
|
@ -114,7 +114,7 @@ class Cert_5_3_6_RouterIdMask(thread_cert.TestCase):
|
|||
# 5
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.simulator.go(config.MAX_ADVERTISEMENT_INTERVAL)
|
||||
|
|
|
@ -100,7 +100,7 @@ class Cert_5_3_8_ChildAddressSet(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[BR].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[BR].get_state(), 'router')
|
||||
|
||||
# 1 BR: Configure BR to be a DHCPv6 server
|
||||
|
|
|
@ -118,15 +118,15 @@ class Cert_5_3_09_AddressQuery(thread_cert.TestCase):
|
|||
self.nodes[LEADER].register_netdata()
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[DUT_ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER3].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER3].get_state(), 'router')
|
||||
|
||||
self.nodes[SED1].start()
|
||||
|
|
|
@ -113,7 +113,7 @@ class Cert_5_3_10_AddressQuery(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[BR].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[BR].get_state(), 'router')
|
||||
|
||||
# Configure two On-Mesh Prefixes on the BR
|
||||
|
@ -122,11 +122,11 @@ class Cert_5_3_10_AddressQuery(thread_cert.TestCase):
|
|||
self.nodes[BR].register_netdata()
|
||||
|
||||
self.nodes[DUT_ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[MED1].start()
|
||||
|
|
|
@ -89,7 +89,7 @@ class Cert_5_3_11_AddressQueryTimeoutIntervals(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[DUT_ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[MED1].start()
|
||||
|
|
|
@ -83,7 +83,7 @@ class Cert_5_5_1_LeaderReboot(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[DUT_ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')
|
||||
|
||||
leader_rloc = self.nodes[DUT_LEADER].get_ip6_address(config.ADDRESS_TYPE.RLOC)
|
||||
|
|
|
@ -71,7 +71,7 @@ class Cert_5_5_2_LeaderReboot(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED].start()
|
||||
|
@ -84,7 +84,7 @@ class Cert_5_5_2_LeaderReboot(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[ROUTER].get_state(), 'leader')
|
||||
|
||||
self.nodes[LEADER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[LEADER].get_state(), 'router')
|
||||
|
||||
addrs = self.nodes[ED].get_addrs()
|
||||
|
|
|
@ -89,11 +89,11 @@ class Cert_5_5_3_SplitMergeChildren(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ED2].start()
|
||||
|
@ -114,7 +114,7 @@ class Cert_5_5_3_SplitMergeChildren(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'leader')
|
||||
|
||||
self.nodes[LEADER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[LEADER].get_state(), 'router')
|
||||
|
||||
self.simulator.go(30)
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_PARENT_REQUEST, MLE_CHILD_ID_RESPONSE, SOURCE_ADDRESS_TLV, ROUTE64_TLV, LEADER_DATA_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -81,19 +82,19 @@ class Cert_5_5_4_SplitMergeRouters(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER3].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER3].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER4].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER4].get_state(), 'router')
|
||||
|
||||
self.nodes[LEADER].reset()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_LINK_REQUEST, MLE_PARENT_REQUEST, MLE_PARENT_RESPONSE, MLE_CHILD_ID_REQUEST, MLE_CHILD_ID_RESPONSE, ADDR_SOL_URI, VERSION_TLV, TLV_REQUEST_TLV, SOURCE_ADDRESS_TLV, LEADER_DATA_TLV, CHALLENGE_TLV, LINK_MARGIN_TLV, NL_MAC_EXTENDED_ADDRESS_TLV, NL_STATUS_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -125,11 +126,11 @@ class Cert_5_5_5_SplitMergeREED(thread_cert.TestCase):
|
|||
|
||||
for i in range(ROUTER2, ROUTER15 + 1):
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[REED1].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_PARENT_REQUEST, MLE_PARENT_RESPONSE, MLE_CHILD_ID_REQUEST, MLE_CHILD_ID_RESPONSE, SOURCE_ADDRESS_TLV, LEADER_DATA_TLV, ROUTE64_TLV, MODE_TLV, CHALLENGE_TLV, SCAN_MASK_TLV, VERSION_TLV, LINK_LAYER_FRAME_COUNTER_TLV, RESPONSE_TLV, LINK_MARGIN_TLV, CONNECTIVITY_TLV, TIMEOUT_TLV, TLV_REQUEST_TLV, ADDRESS16_TLV, NETWORK_DATA_TLV, ACTIVE_TIMESTAMP_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -76,15 +77,15 @@ class Cert_5_5_7_SplitMergeThreeWay(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER1].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER3].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER3].get_state(), 'router')
|
||||
|
||||
self.nodes[LEADER1].reset()
|
||||
|
|
|
@ -86,7 +86,7 @@ class Cert_5_6_1_NetworkDataLeaderAsBr(thread_cert.TestCase):
|
|||
self.simulator.go(5)
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED1].start()
|
||||
|
|
|
@ -76,7 +76,7 @@ class Cert_5_6_2_NetworkDataRouterAsBr(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001:2:0:1::/64', 'paros')
|
||||
|
|
|
@ -76,7 +76,7 @@ class Cert_5_6_3_NetworkDataRegisterAfterAttachLeader(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED1].start()
|
||||
|
|
|
@ -76,7 +76,7 @@ class Cert_5_6_4_NetworkDataRegisterAfterAttachRouter(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED1].start()
|
||||
|
|
|
@ -76,7 +76,7 @@ class Cert_5_6_5_NetworkDataRegisterAfterAttachRouter(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED1].start()
|
||||
|
|
|
@ -76,7 +76,7 @@ class Cert_5_6_6_NetworkDataExpiration(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED1].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_CHILD_ID_RESPONSE, MLE_DATA_REQUEST, MLE_DATA_RESPONSE, TLV_REQUEST_TLV, NETWORK_DATA_TLV, SOURCE_ADDRESS_TLV, LEADER_DATA_TLV, NWD_PREFIX_TLV, NWD_BORDER_ROUTER_TLV, NWD_6LOWPAN_ID_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -124,7 +125,7 @@ class Cert_5_6_7_NetworkDataRequestREED(thread_cert.TestCase):
|
|||
|
||||
for i in range(ROUTER1, ROUTER15 + 1):
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
||||
self.nodes[REED1].start()
|
||||
|
|
|
@ -82,11 +82,11 @@ class Cert_5_6_9_NetworkDataForwarding(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ED].start()
|
||||
|
|
|
@ -114,7 +114,7 @@ class Cert_5_7_01_CoapDiagCommands_Base(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
for i in range(3, 7):
|
||||
|
|
|
@ -164,7 +164,7 @@ class Cert_5_7_02_CoapDiagCommands(thread_cert.TestCase):
|
|||
|
||||
for i in range(2, 17):
|
||||
self.nodes[i].start()
|
||||
self.simulator.go(10)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
||||
self.nodes[REED].start()
|
||||
|
|
|
@ -108,7 +108,7 @@ class Cert_5_7_03_CoapDiagCommands_Base(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
for i in range(3, 6):
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_CHILD_ID_RESPONSE
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -59,7 +60,7 @@ class Cert_5_8_2_KeyIncrement(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), "leader")
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), "router")
|
||||
|
||||
self.collect_ipaddrs()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_CHILD_ID_RESPONSE
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -60,7 +61,7 @@ class Cert_5_8_3_KeyIncrementRollOver(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.collect_ipaddrs()
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
import unittest
|
||||
|
||||
from mesh_cop import TlvType
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_DATA_RESPONSE, MGMT_ACTIVE_SET_URI, MGMT_ACTIVE_GET_URI, LEADER_ALOC, NM_COMMISSIONER_SESSION_ID_TLV, NM_ACTIVE_TIMESTAMP_TLV, NM_SECURITY_POLICY_TLV, NM_NETWORK_KEY_TLV, MLE_DISCOVERY_RESPONSE
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -115,7 +116,7 @@ class Cert_5_8_04_SecurityPolicyTLV(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[COMMISSIONER_1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[COMMISSIONER_1].get_state(), 'router')
|
||||
|
||||
self.nodes[COMMISSIONER_1].commissioner_start()
|
||||
|
|
|
@ -79,7 +79,7 @@ class Cert_6_1_3_RouterAttachConnectivity(thread_cert.TestCase):
|
|||
for i in range(2, 5):
|
||||
self.nodes[i].start()
|
||||
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
|
||||
for i in range(2, 5):
|
||||
self.assertEqual(self.nodes[i].get_state(), 'router')
|
||||
|
|
|
@ -100,7 +100,7 @@ class Cert_6_1_4_REEDAttachConnectivity_Base(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
for i in (3, 4):
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_CHILD_ID_REQUEST, MLE_PARENT_REQUEST, MODE_TLV, CHALLENGE_TLV, SCAN_MASK_TLV, VERSION_TLV, RESPONSE_TLV, LINK_LAYER_FRAME_COUNTER_TLV, MLE_FRAME_COUNTER_TLV, TIMEOUT_TLV, ADDRESS_REGISTRATION_TLV, TLV_REQUEST_TLV, LINK_LOCAL_ALL_ROUTERS_MULTICAST_ADDRESS
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -78,7 +79,7 @@ class Cert_6_1_5_REEDAttachConnectivity(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[REED1].start()
|
||||
|
|
|
@ -99,7 +99,7 @@ class Cert_6_1_6_REEDAttachLinkQuality_Base(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[REED].get_state(), 'child')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[MTD].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_CHILD_ID_REQUEST, MLE_PARENT_REQUEST, MODE_TLV, CHALLENGE_TLV, SCAN_MASK_TLV, VERSION_TLV, RESPONSE_TLV, LINK_LAYER_FRAME_COUNTER_TLV, MLE_FRAME_COUNTER_TLV, TIMEOUT_TLV, ADDRESS_REGISTRATION_TLV, TLV_REQUEST_TLV, LINK_LOCAL_ALL_ROUTERS_MULTICAST_ADDRESS
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -70,11 +71,11 @@ class Cert_6_1_7_RouterAttachLinkQuality(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ED].start()
|
||||
|
|
|
@ -87,7 +87,7 @@ class Cert_6_2_1_NewPartition_Base(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[MTD].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_CHILD_ID_REQUEST, MLE_ADVERTISEMENT, MLE_CHILD_UPDATE_REQUEST, SOURCE_ADDRESS_TLV, MODE_TLV, LEADER_DATA_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -71,11 +72,11 @@ class Cert_6_2_2_NewPartition(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER1].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER1].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER2].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER2].get_state(), 'router')
|
||||
|
||||
self.nodes[ED].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_PARENT_REQUEST, MLE_CHILD_ID_REQUEST, MLE_CHILD_UPDATE_REQUEST, SOURCE_ADDRESS_TLV, LEADER_DATA_TLV, MODE_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
@ -65,7 +66,7 @@ class Cert_6_3_1_OrphanReattach(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_CHILD_ID_RESPONSE, MLE_DATA_REQUEST, MLE_CHILD_UPDATE_REQUEST, LEADER_DATA_TLV, ADDRESS_REGISTRATION_TLV, MODE_TLV, TIMEOUT_TLV, TLV_REQUEST_TLV, NETWORK_DATA_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
|
|
@ -84,7 +84,7 @@ class Cert_6_4_2_RealmLocal_Base(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[MTD].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_CHILD_ID_REQUEST, MLE_CHILD_UPDATE_REQUEST, RESPONSE_TLV, LINK_LAYER_FRAME_COUNTER_TLV, MLE_FRAME_COUNTER_TLV, MODE_TLV, TIMEOUT_TLV, VERSION_TLV, ADDRESS_REGISTRATION_TLV, TLV_REQUEST_TLV
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
|
|
@ -95,7 +95,7 @@ class Cert_6_5_2_ChildResetReattach_Base(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[MTD].start()
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_CHILD_ID_REQUEST
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
import unittest
|
||||
|
||||
import config
|
||||
import thread_cert
|
||||
from pktverify.consts import MLE_ADVERTISEMENT, MLE_CHILD_ID_REQUEST
|
||||
from pktverify.packet_verifier import PacketVerifier
|
||||
|
|
|
@ -106,7 +106,7 @@ class Cert_7_1_1_BorderRouterAsLeader(thread_cert.TestCase):
|
|||
self.nodes[LEADER].register_netdata()
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[SED1].start()
|
||||
|
|
|
@ -76,7 +76,7 @@ class Cert_7_1_2_BorderRouterAsRouter(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ROUTER].add_prefix('2001:2:0:1::/64', 'paros')
|
||||
|
|
|
@ -103,7 +103,7 @@ class Cert_7_1_3_BorderRouterAsLeader(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[SED1].start()
|
||||
|
|
|
@ -76,7 +76,7 @@ class Cert_7_1_4_BorderRouterAsRouter(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[ED2].start()
|
||||
|
|
|
@ -101,7 +101,7 @@ class Cert_7_1_5_BorderRouterAsRouter(thread_cert.TestCase):
|
|||
self.assertEqual(self.nodes[LEADER].get_state(), 'leader')
|
||||
|
||||
self.nodes[ROUTER].start()
|
||||
self.simulator.go(5)
|
||||
self.simulator.go(config.ROUTER_STARTUP_DELAY)
|
||||
self.assertEqual(self.nodes[ROUTER].get_state(), 'router')
|
||||
|
||||
self.nodes[MED].start()
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue