/* * Copyright (c) 2016-2017, The OpenThread Authors. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the copyright holder nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. *//* ... *//** * @file * This file includes definitions for Thread `Router` and `Parent`. *//* ... */#include"router.hpp"#include"instance/instance.hpp"namespaceot{voidRouter::Info::SetFrom(constRouter&aRouter){Clear();mRloc16=aRouter.GetRloc16();mRouterId=Mle::RouterIdFromRloc16(mRloc16);mExtAddress=aRouter.GetExtAddress();mAllocated=true;mNextHop=aRouter.GetNextHop();mLinkEstablished=aRouter.IsStateValid();mPathCost=aRouter.GetCost();mLinkQualityIn=aRouter.GetLinkQualityIn();mLinkQualityOut=aRouter.GetLinkQualityOut();mAge=static_cast<uint8_t>(Time::MsecToSec(TimerMilli::GetNow()-aRouter.GetLastHeard()));mVersion=ClampToUint8(aRouter.GetVersion());}{ ... }voidRouter::Info::SetFrom(constParent&aParent){SetFrom(static_cast<constRouter&>(aParent));#ifOPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLEmCslClockAccuracy=aParent.GetCslAccuracy().GetClockAccuracy();mCslUncertainty=aParent.GetCslAccuracy().GetUncertainty();/* ... */#endif}{ ... }voidRouter::Clear(void){Instance&instance=GetInstance();ClearAllBytes(*this);Init(instance);}{ ... }LinkQualityRouter::GetTwoWayLinkQuality(void)const{returnMin(GetLinkQualityIn(),GetLinkQualityOut());}voidRouter::SetFrom(constParent&aParent){// We use an intermediate pointer to copy `aParent` to silence// code checkers warning about object slicing (assigning a// sub-class to base class instance).constRouter*parentAsRouter=&aParent;*this=*parentAsRouter;}{ ... }voidParent::Clear(void){Instance&instance=GetInstance();ClearAllBytes(*this);Init(instance);}{ ... }boolRouter::SetNextHopAndCost(uint8_taNextHop,uint8_taCost){boolchanged=false;if(mNextHop!=aNextHop){mNextHop=aNextHop;changed=true;}{...}if(mCost!=aCost){mCost=aCost;changed=true;}{...}returnchanged;}{ ... }boolRouter::SetNextHopToInvalid(void){returnSetNextHopAndCost(Mle::kInvalidRouterId,0);}}{...}// namespace ot
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.