[commissioner] use c++11 range-based for and explicitly typed enum (#5137)

This commit is contained in:
Abtin Keshavarzian
2020-06-26 16:02:09 -07:00
committed by Jonathan Hui
parent a7415b53a4
commit 9e291e62ed
2 changed files with 43 additions and 49 deletions
+42 -48
View File
@@ -161,29 +161,27 @@ void Commissioner::HandleCoapsConnected(bool aConnected)
Commissioner::Joiner *Commissioner::GetUnusedJoinerEntry(void)
{
Joiner *joiner;
Joiner *rval = nullptr;
for (joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (Joiner &joiner : mJoiners)
{
if (joiner->mType == Joiner::kTypeUnused)
if (joiner.mType == Joiner::kTypeUnused)
{
ExitNow();
rval = &joiner;
break;
}
}
joiner = nullptr;
exit:
return joiner;
return rval;
}
Commissioner::Joiner *Commissioner::FindJoinerEntry(const Mac::ExtAddress *aEui64)
{
Joiner *joiner;
Joiner *rval = nullptr;
for (joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (Joiner &joiner : mJoiners)
{
switch (joiner->mType)
switch (joiner.mType)
{
case Joiner::kTypeUnused:
case Joiner::kTypeDiscerner:
@@ -192,41 +190,37 @@ Commissioner::Joiner *Commissioner::FindJoinerEntry(const Mac::ExtAddress *aEui6
case Joiner::kTypeAny:
if (aEui64 == nullptr)
{
ExitNow();
ExitNow(rval = &joiner);
}
break;
case Joiner::kTypeEui64:
if ((aEui64 != nullptr) && (joiner->mSharedId.mEui64 == *aEui64))
if ((aEui64 != nullptr) && (joiner.mSharedId.mEui64 == *aEui64))
{
ExitNow();
ExitNow(rval = &joiner);
}
break;
}
}
joiner = nullptr;
exit:
return joiner;
return rval;
}
Commissioner::Joiner *Commissioner::FindJoinerEntry(const JoinerDiscerner &aDiscerner)
{
Joiner *joiner;
Joiner *rval = nullptr;
for (joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (Joiner &joiner : mJoiners)
{
if ((joiner->mType == Joiner::kTypeDiscerner) && (aDiscerner == joiner->mSharedId.mDiscerner))
if ((joiner.mType == Joiner::kTypeDiscerner) && (aDiscerner == joiner.mSharedId.mDiscerner))
{
ExitNow();
rval = &joiner;
break;
}
}
joiner = nullptr;
exit:
return joiner;
return rval;
}
Commissioner::Joiner *Commissioner::FindBestMatchingJoinerEntry(const Mac::ExtAddress &aReceivedJoinerId)
@@ -237,9 +231,9 @@ Commissioner::Joiner *Commissioner::FindBestMatchingJoinerEntry(const Mac::ExtAd
// Prefer a full Joiner ID match, if not found use the entry
// accepting any joiner.
for (Joiner *joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (Joiner &joiner : mJoiners)
{
switch (joiner->mType)
switch (joiner.mType)
{
case Joiner::kTypeUnused:
break;
@@ -247,26 +241,26 @@ Commissioner::Joiner *Commissioner::FindBestMatchingJoinerEntry(const Mac::ExtAd
case Joiner::kTypeAny:
if (best == nullptr)
{
best = joiner;
best = &joiner;
}
break;
case Joiner::kTypeEui64:
ComputeJoinerId(joiner->mSharedId.mEui64, joinerId);
ComputeJoinerId(joiner.mSharedId.mEui64, joinerId);
if (joinerId == aReceivedJoinerId)
{
ExitNow(best = joiner);
ExitNow(best = &joiner);
}
break;
case Joiner::kTypeDiscerner:
if (joiner->mSharedId.mDiscerner.Matches(aReceivedJoinerId))
if (joiner.mSharedId.mDiscerner.Matches(aReceivedJoinerId))
{
if ((best == nullptr) ||
((best->mType == Joiner::kTypeDiscerner) &&
(best->mSharedId.mDiscerner.GetLength() < joiner->mSharedId.mDiscerner.GetLength())))
(best->mSharedId.mDiscerner.GetLength() < joiner.mSharedId.mDiscerner.GetLength())))
{
best = joiner;
best = &joiner;
}
}
break;
@@ -383,20 +377,20 @@ void Commissioner::ComputeBloomFilter(SteeringData &aSteeringData) const
aSteeringData.Init();
for (const Joiner *joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (const Joiner &joiner : mJoiners)
{
switch (joiner->mType)
switch (joiner.mType)
{
case Joiner::kTypeUnused:
break;
case Joiner::kTypeEui64:
ComputeJoinerId(joiner->mSharedId.mEui64, joinerId);
ComputeJoinerId(joiner.mSharedId.mEui64, joinerId);
aSteeringData.UpdateBloomFilter(joinerId);
break;
case Joiner::kTypeDiscerner:
aSteeringData.UpdateBloomFilter(joiner->mSharedId.mDiscerner);
aSteeringData.UpdateBloomFilter(joiner.mSharedId.mDiscerner);
break;
case Joiner::kTypeAny:
@@ -435,9 +429,9 @@ exit:
void Commissioner::ClearJoiners(void)
{
for (Joiner *joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (Joiner &joiner : mJoiners)
{
joiner->mType = Joiner::kTypeUnused;
joiner.mType = Joiner::kTypeUnused;
}
SendCommissionerSet();
@@ -647,17 +641,17 @@ void Commissioner::HandleJoinerExpirationTimer(void)
{
TimeMilli now = TimerMilli::GetNow();
for (Joiner *joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (Joiner &joiner : mJoiners)
{
if (joiner->mType == Joiner::kTypeUnused)
if (joiner.mType == Joiner::kTypeUnused)
{
continue;
}
if (joiner->mExpirationTime <= now)
if (joiner.mExpirationTime <= now)
{
otLogDebgMeshCoP("removing joiner due to timeout or successfully joined");
RemoveJoinerEntry(*joiner);
RemoveJoinerEntry(joiner);
}
}
@@ -669,20 +663,20 @@ void Commissioner::UpdateJoinerExpirationTimer(void)
TimeMilli now = TimerMilli::GetNow();
TimeMilli next = now.GetDistantFuture();
for (Joiner *joiner = &mJoiners[0]; joiner < OT_ARRAY_END(mJoiners); joiner++)
for (Joiner &joiner : mJoiners)
{
if (joiner->mType == Joiner::kTypeUnused)
if (joiner.mType == Joiner::kTypeUnused)
{
continue;
}
if (joiner->mExpirationTime <= now)
if (joiner.mExpirationTime <= now)
{
next = now;
}
else if (joiner->mExpirationTime < next)
else if (joiner.mExpirationTime < next)
{
next = joiner->mExpirationTime;
next = joiner.mExpirationTime;
}
}
+1 -1
View File
@@ -329,7 +329,7 @@ private:
struct Joiner
{
enum Type
enum Type : uint8_t
{
kTypeUnused = 0, // Need to be 0 to ensure `memset()` clears all `Joiners`
kTypeAny,