SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MSLink Class Reference

#include <MSLink.h>

Data Structures

struct  ApproachingVehicleInformation
 A structure holding the information about vehicles approaching a link. More...
 
class  vehicle_in_request_finder
 

Public Member Functions

void addBlockedLink (MSLink *link)
 
bool blockedAtTime (SUMOTime arrivalTime, SUMOTime leaveTime, SUMOReal speed) const
 Returns the information whether this link is blocked Valid after the vehicles have set their requests. More...
 
const std::vector
< ApproachingVehicleInformation > & 
getApproaching () const
 
LinkDirection getDirection () const
 Returns the direction the vehicle passing this link take. More...
 
MSLanegetLane () const
 Returns the connected lane. More...
 
SUMOReal getLength () const
 Returns the length of this link. More...
 
unsigned int getRespondIndex () const
 Returns the respond index (for visualization) More...
 
LinkState getState () const
 Returns the current state of the link. More...
 
MSLanegetViaLaneOrLane () const
 return the via lane if it exists and the lane otherwise More...
 
bool hasApproachingFoe (SUMOTime arrivalTime, SUMOTime leaveTime, SUMOReal speed) const
 Returns the information whether a vehicle is approaching on one of the link's foe streams. More...
 
bool havePriority () const
 Returns whether this link is a major link. More...
 
bool isBlockingAnyone () const
 
bool isCont () const
 
bool isCrossing () const
 Returns whether this link belongs to a junction where more than one edge is incoming. More...
 
 MSLink (MSLane *succLane, LinkDirection dir, LinkState state, SUMOReal length)
 Constructor for simulation not using internal lanes. More...
 
bool opened (SUMOTime arrivalTime, SUMOReal arrivalSpeed, SUMOReal leaveSpeed, SUMOReal vehicleLength) const
 Returns the information whether the link may be passed. More...
 
void removeApproaching (SUMOVehicle *veh)
 
void setApproaching (SUMOVehicle *approaching, SUMOTime arrivalTime, SUMOReal speed, bool setRequest)
 Sets the information about an approaching vehicle. More...
 
void setRequestInformation (unsigned int requestIdx, unsigned int respondIdx, bool isCrossing, bool isCont, const std::vector< MSLink * > &foeLinks, const std::vector< MSLane * > &foeLanes)
 Sets the request information. More...
 
void setTLState (LinkState state, SUMOTime t)
 Sets the current tl-state. More...
 
bool willHaveBlockedFoe () const
 
 ~MSLink ()
 Destructor. More...
 

Private Types

typedef std::vector
< ApproachingVehicleInformation
LinkApproachingVehicles
 

Private Member Functions

 MSLink (const MSLink &s)
 invalidated copy constructor More...
 
MSLinkoperator= (const MSLink &s)
 invalidated assignment operator More...
 

Static Private Member Functions

static SUMOTime safeHeadwayTime (SUMOReal leaderSpeed, SUMOReal followerSpeed)
 

Private Attributes

bool myAmCont
 
LinkApproachingVehicles myApproachingVehicles
 
std::set< MSLink * > myBlockedFoeLinks
 
LinkDirection myDirection
 An abstract (hopefully human readable) definition of the link's direction. More...
 
std::vector< MSLane * > myFoeLanes
 
std::vector< MSLink * > myFoeLinks
 
bool myIsCrossing
 Whether any foe links exist. More...
 
MSLanemyLane
 The lane approached by this link. More...
 
SUMOReal myLength
 The length of the link. More...
 
unsigned int myRequestIdx
 The position of the link within this request. More...
 
unsigned int myRespondIdx
 The position within this respond. More...
 
LinkState myState
 The state of the link. More...
 

Static Private Attributes

static SUMOTime myLookaheadTime = TIME2STEPS(1)
 

Detailed Description

Definition at line 71 of file MSLink.h.

Member Typedef Documentation

Definition at line 261 of file MSLink.h.

Constructor & Destructor Documentation

MSLink::MSLink ( MSLane succLane,
LinkDirection  dir,
LinkState  state,
SUMOReal  length 
)

Constructor for simulation not using internal lanes.

Parameters
[in]succLaneThe lane approached by this link
[in]dirThe direction of this link
[in]stateThe state of this link
[in]lengthThe length of this link

Definition at line 54 of file MSLink.cpp.

MSLink::~MSLink ( )

Destructor.

Definition at line 72 of file MSLink.cpp.

MSLink::MSLink ( const MSLink s)
private

invalidated copy constructor

Member Function Documentation

void MSLink::addBlockedLink ( MSLink link)

Definition at line 101 of file MSLink.cpp.

References myBlockedFoeLinks.

bool MSLink::blockedAtTime ( SUMOTime  arrivalTime,
SUMOTime  leaveTime,
SUMOReal  speed 
) const

Returns the information whether this link is blocked Valid after the vehicles have set their requests.

Parameters
[in]arrivalTimeThe arrivalTime of the vehicle who checks for an approaching foe
[in]leaveTimeThe leaveTime of the vehicle who checks for an approaching foe
[in]speedThe speed with which the checking vehicle plans to leave the link
Returns
Whether this link is blocked

Definition at line 158 of file MSLink.cpp.

References myApproachingVehicles, and safeHeadwayTime().

const std::vector<ApproachingVehicleInformation>& MSLink::getApproaching ( ) const
inline

Definition at line 142 of file MSLink.h.

References myApproachingVehicles.

LinkDirection MSLink::getDirection ( ) const

Returns the direction the vehicle passing this link take.

Returns
The direction of this link

Definition at line 225 of file MSLink.cpp.

References myDirection.

MSLane * MSLink::getLane ( ) const

Returns the connected lane.

Returns
The lane approached by this link

Definition at line 237 of file MSLink.cpp.

References myLane.

Referenced by MSVehicle::checkRewindLinkLanes(), Command_SaveTLSSwitches::execute(), MSLinkContHelper::getConnectingLink(), TraCIServerAPI_TLS::processGet(), and TraCIServerAPI_Lane::processGet().

SUMOReal MSLink::getLength ( ) const
inline

Returns the length of this link.

Returns
The length of this link

Definition at line 232 of file MSLink.h.

References myLength.

Referenced by opened(), TraCIServerAPI_Lane::processGet(), and setApproaching().

unsigned int MSLink::getRespondIndex ( ) const

Returns the respond index (for visualization)

Returns
The respond index for this link

Definition at line 265 of file MSLink.cpp.

References myRespondIdx.

LinkState MSLink::getState ( ) const
inline

Returns the current state of the link.

Returns
The current state of this link

Definition at line 187 of file MSLink.h.

References myState.

Referenced by Command_SaveTLCoupledLaneDet::execute(), MSVehicle::moveChecked(), and GUILaneWrapper::ROWdrawAction_drawLinkRules().

MSLane * MSLink::getViaLaneOrLane ( ) const

return the via lane if it exists and the lane otherwise

Definition at line 251 of file MSLink.cpp.

References myLane.

Referenced by GUIVehicle::drawGLAdditional(), and MSVehicle::moveChecked().

bool MSLink::hasApproachingFoe ( SUMOTime  arrivalTime,
SUMOTime  leaveTime,
SUMOReal  speed 
) const

Returns the information whether a vehicle is approaching on one of the link's foe streams.

Valid after the vehicles have set their requests

Parameters
[in]arrivalTimeThe arrivalTime of the vehicle who checks for an approaching foe
[in]leaveTimeThe leaveTime of the vehicle who checks for an approaching foe
[in]speedThe speed with which the checking vehicle plans to leave the link
Returns
Whether a foe of this link is approaching

Definition at line 209 of file MSLink.cpp.

References myFoeLanes, and myFoeLinks.

Referenced by TraCIServerAPI_Lane::processGet().

bool MSLink::havePriority ( ) const
inline

Returns whether this link is a major link.

Returns
Whether the link has a large priority

Definition at line 223 of file MSLink.h.

References myState.

Referenced by MSVehicle::checkRewindLinkLanes(), MSVehicle::moveChecked(), and TraCIServerAPI_Lane::processGet().

bool MSLink::isBlockingAnyone ( ) const
inline

Definition at line 164 of file MSLink.h.

References myApproachingVehicles.

bool MSLink::isCont ( ) const
inline

Definition at line 245 of file MSLink.h.

References myAmCont.

Referenced by MSVehicle::checkRewindLinkLanes(), MSVehicle::moveChecked(), and setRequestInformation().

bool MSLink::isCrossing ( ) const
inline

Returns whether this link belongs to a junction where more than one edge is incoming.

Returns
Whether any foe links exist

Definition at line 240 of file MSLink.h.

References myIsCrossing.

Referenced by MSVehicle::checkRewindLinkLanes(), and setRequestInformation().

bool MSLink::opened ( SUMOTime  arrivalTime,
SUMOReal  arrivalSpeed,
SUMOReal  leaveSpeed,
SUMOReal  vehicleLength 
) const

Returns the information whether the link may be passed.

Valid after the junctions have set their reponds

Returns
Whether this link may be passed.

Definition at line 128 of file MSLink.cpp.

References getLength(), MSGlobals::gUseMesoSim, LINKSTATE_TL_RED, myAmCont, myFoeLanes, myFoeLinks, myState, and TIME2STEPS.

Referenced by MSVehicle::checkRewindLinkLanes(), MSVehicle::moveChecked(), and TraCIServerAPI_Lane::processGet().

MSLink& MSLink::operator= ( const MSLink s)
private

invalidated assignment operator

void MSLink::removeApproaching ( SUMOVehicle veh)

Definition at line 119 of file MSLink.cpp.

References myApproachingVehicles.

Referenced by MSVehicle::moveChecked().

SUMOTime MSLink::safeHeadwayTime ( SUMOReal  leaderSpeed,
SUMOReal  followerSpeed 
)
staticprivate

Definition at line 183 of file MSLink.cpp.

References DEFAULT_VEH_DECEL, DEFAULT_VEH_MINGAP, SUMOReal, and TIME2STEPS.

Referenced by blockedAtTime().

void MSLink::setApproaching ( SUMOVehicle approaching,
SUMOTime  arrivalTime,
SUMOReal  speed,
bool  setRequest 
)

Sets the information about an approaching vehicle.

The information is stored in myApproachingVehicles.

Definition at line 89 of file MSLink.cpp.

References getLength(), MSVehicleType::getLengthWithGap(), SUMOVehicle::getVehicleType(), myApproachingVehicles, and TIME2STEPS.

void MSLink::setRequestInformation ( unsigned int  requestIdx,
unsigned int  respondIdx,
bool  isCrossing,
bool  isCont,
const std::vector< MSLink * > &  foeLinks,
const std::vector< MSLane * > &  foeLanes 
)

Sets the request information.

Because traffic lights and junction logics are loaded after links, we have to assign the information about the right-of-way requests and responses after the initialisation.

Todo:
Unsecure!

Definition at line 76 of file MSLink.cpp.

References isCont(), isCrossing(), myAmCont, myFoeLanes, myFoeLinks, myIsCrossing, myRequestIdx, and myRespondIdx.

void MSLink::setTLState ( LinkState  state,
SUMOTime  t 
)

Sets the current tl-state.

Parameters
[in]stateThe current state of the link

Definition at line 231 of file MSLink.cpp.

References myState.

Referenced by MSTrafficLightLogic::addLink().

bool MSLink::willHaveBlockedFoe ( ) const

Definition at line 108 of file MSLink.cpp.

References myBlockedFoeLinks.

Field Documentation

bool MSLink::myAmCont
private

Definition at line 304 of file MSLink.h.

Referenced by isCont(), opened(), and setRequestInformation().

LinkApproachingVehicles MSLink::myApproachingVehicles
private
std::set<MSLink*> MSLink::myBlockedFoeLinks
private

Definition at line 284 of file MSLink.h.

Referenced by addBlockedLink(), and willHaveBlockedFoe().

LinkDirection MSLink::myDirection
private

An abstract (hopefully human readable) definition of the link's direction.

Definition at line 296 of file MSLink.h.

Referenced by getDirection().

std::vector<MSLane*> MSLink::myFoeLanes
private

Definition at line 312 of file MSLink.h.

Referenced by hasApproachingFoe(), opened(), and setRequestInformation().

std::vector<MSLink*> MSLink::myFoeLinks
private

Definition at line 311 of file MSLink.h.

Referenced by hasApproachingFoe(), opened(), and setRequestInformation().

bool MSLink::myIsCrossing
private

Whether any foe links exist.

Definition at line 302 of file MSLink.h.

Referenced by isCrossing(), and setRequestInformation().

MSLane* MSLink::myLane
private

The lane approached by this link.

Definition at line 281 of file MSLink.h.

Referenced by getLane(), and getViaLaneOrLane().

SUMOReal MSLink::myLength
private

The length of the link.

Definition at line 299 of file MSLink.h.

Referenced by getLength().

SUMOTime MSLink::myLookaheadTime = TIME2STEPS(1)
staticprivate

Definition at line 313 of file MSLink.h.

unsigned int MSLink::myRequestIdx
private

The position of the link within this request.

Definition at line 287 of file MSLink.h.

Referenced by setRequestInformation().

unsigned int MSLink::myRespondIdx
private

The position within this respond.

Definition at line 290 of file MSLink.h.

Referenced by getRespondIndex(), and setRequestInformation().

LinkState MSLink::myState
private

The state of the link.

Definition at line 293 of file MSLink.h.

Referenced by getState(), havePriority(), opened(), and setTLState().


The documentation for this class was generated from the following files: