Eclipse SUMO - Simulation of Urban MObility
NBTrafficLightLogic.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
16 // A SUMO-compliant built logic for a traffic light
17 /****************************************************************************/
18 #ifndef NBTrafficLightLogic_h
19 #define NBTrafficLightLogic_h
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #include <config.h>
26 
27 #include <vector>
28 #include <string>
29 #include <bitset>
30 #include <utility>
31 #include <set>
32 #include "NBConnectionDefs.h"
33 #include <utils/common/SUMOTime.h>
34 #include <utils/common/Named.h>
36 
37 
38 // ===========================================================================
39 // class declarations
40 // ===========================================================================
41 class OutputDevice;
42 
43 
44 // ===========================================================================
45 // class definitions
46 // ===========================================================================
51 class NBTrafficLightLogic : public Named, public Parameterised {
52 public:
58  public:
63 
65  std::string state;
66 
68  std::vector<int> next;
70  std::string name;
71 
76  PhaseDefinition(SUMOTime durationArg, const std::string& stateArg, SUMOTime minDurArg, SUMOTime maxDurArg, const std::vector<int>& nextArg, const std::string& nameArg) :
77  duration(durationArg),
78  minDur(minDurArg),
79  maxDur(maxDurArg),
80  state(stateArg),
81  next(nextArg),
82  name(nameArg)
83  { }
84 
87 
92  bool operator!=(const PhaseDefinition& pd) const {
93  return (pd.duration != duration
94  || pd.minDur != minDur
95  || pd.maxDur != maxDur
96  || pd.state != state
97  || pd.next != next
98  || pd.name != name);
99  }
100 
101  };
102 
103 
111  NBTrafficLightLogic(const std::string& id, const std::string& subid, int noLinks,
112  SUMOTime offset = 0, TrafficLightType type = TLTYPE_STATIC);
113 
114 
119 
120 
123 
124 
137  void addStep(SUMOTime duration, const std::string& state,
138  const std::vector<int>& next = std::vector<int>(), const std::string& name = "", int index = -1);
139  void addStep(SUMOTime duration, const std::string& state, SUMOTime minDur, SUMOTime maxDur,
140  const std::vector<int>& next = std::vector<int>(), const std::string& name = "", int index = -1);
141 
142 
148  void setPhaseState(int phaseIndex, int tlIndex, LinkState linkState);
149 
154  void setPhaseDuration(int phaseIndex, SUMOTime duration);
155  void setPhaseMinDuration(int phaseIndex, SUMOTime duration);
156  void setPhaseMaxDuration(int phaseIndex, SUMOTime duration);
157  void setPhaseNext(int phaseIndex, const std::vector<int>& next);
158  void setPhaseName(int phaseIndex, const std::string& name);
159 
160  /* @brief deletes the phase at the given index
161  * @note thhrows InvalidArgument on out-of range index
162  */
163  void deletePhase(int index);
164 
165  /* @brief changes state size either by cutting of at the end or by adding
166  * new states at the end
167  */
168  void setStateLength(int numLinks, LinkState fill = LINKSTATE_TL_RED);
169 
170  /* @brief deletes all phases and reset the expect number of links
171  */
172  void resetPhases();
173 
178  void closeBuilding(bool checkVarDurations = true);
179 
180 
184  SUMOTime getDuration() const;
185 
186 
190  void setOffset(SUMOTime offset) {
191  myOffset = offset;
192  }
193 
194 
198  const std::string& getProgramID() const {
199  return mySubID;
200  };
201 
202 
206  const std::vector<PhaseDefinition>& getPhases() const {
207  return myPhases;
208  }
209 
210 
214  SUMOTime getOffset() const {
215  return myOffset;
216  };
217 
218 
221  int getNumLinks() {
222  return myNumLinks;
223  }
224 
227  return myType;
228  }
229 
232  myType = type;
233  }
234 
235 private:
238 
240  const std::string mySubID;
241 
244 
246  typedef std::vector<PhaseDefinition> PhaseDefinitionVector;
247 
250 
253 
254 private:
257 
258 };
259 
260 
261 #endif
262 
263 /****************************************************************************/
264 
NBTrafficLightLogic::getDuration
SUMOTime getDuration() const
Returns the duration of the complete cycle.
Definition: NBTrafficLightLogic.cpp:134
NBConnectionDefs.h
Parameterised
An upper class for objects with additional parameters.
Definition: Parameterised.h:42
NBTrafficLightLogic::setPhaseName
void setPhaseName(int phaseIndex, const std::string &name)
Definition: NBTrafficLightLogic.cpp:220
SUMOTime.h
NBTrafficLightLogic::operator=
NBTrafficLightLogic & operator=(const NBTrafficLightLogic &s)
Invalidated assignment operator.
Named
Base class for objects which have an id.
Definition: Named.h:56
NBTrafficLightLogic::getOffset
SUMOTime getOffset() const
Returns the offset of first switch.
Definition: NBTrafficLightLogic.h:214
OutputDevice
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:63
TLTYPE_STATIC
@ TLTYPE_STATIC
Definition: SUMOXMLDefinitions.h:1198
NBTrafficLightLogic::PhaseDefinition::next
std::vector< int > next
next phase indices or empty list
Definition: NBTrafficLightLogic.h:68
NBTrafficLightLogic::PhaseDefinitionVector
std::vector< PhaseDefinition > PhaseDefinitionVector
Definition of a vector of traffic light phases.
Definition: NBTrafficLightLogic.h:246
NBTrafficLightLogic::closeBuilding
void closeBuilding(bool checkVarDurations=true)
closes the building process
Definition: NBTrafficLightLogic.cpp:144
TrafficLightType
TrafficLightType
Definition: SUMOXMLDefinitions.h:1197
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
NBTrafficLightLogic::setPhaseDuration
void setPhaseDuration(int phaseIndex, SUMOTime duration)
Modifies the duration for an existing phase (used by NETEDIT)
Definition: NBTrafficLightLogic.cpp:196
NBTrafficLightLogic::PhaseDefinition::duration
SUMOTime duration
The duration of the phase in s.
Definition: NBTrafficLightLogic.h:60
NBTrafficLightLogic::getType
TrafficLightType getType() const
get the algorithm type (static etc..)
Definition: NBTrafficLightLogic.h:226
NBTrafficLightLogic::setOffset
void setOffset(SUMOTime offset)
Sets the offset of this tls.
Definition: NBTrafficLightLogic.h:190
NBTrafficLightLogic::PhaseDefinition
The definition of a single phase of the logic.
Definition: NBTrafficLightLogic.h:57
NBTrafficLightLogic::myPhases
PhaseDefinitionVector myPhases
The junction logic's storage for traffic light phase list.
Definition: NBTrafficLightLogic.h:249
NBTrafficLightLogic::setPhaseState
void setPhaseState(int phaseIndex, int tlIndex, LinkState linkState)
Modifies the state for an existing phase (used by NETEDIT)
Definition: NBTrafficLightLogic.cpp:187
NBTrafficLightLogic::PhaseDefinition::state
std::string state
The state definition.
Definition: NBTrafficLightLogic.h:65
NBTrafficLightLogic::addStep
void addStep(SUMOTime duration, const std::string &state, const std::vector< int > &next=std::vector< int >(), const std::string &name="", int index=-1)
Adds a phase to the logic.
Definition: NBTrafficLightLogic.cpp:69
LinkState
LinkState
The right-of-way state of a link between two lanes used when constructing a NBTrafficLightLogic,...
Definition: SUMOXMLDefinitions.h:1137
NBTrafficLightLogic::setPhaseMinDuration
void setPhaseMinDuration(int phaseIndex, SUMOTime duration)
Definition: NBTrafficLightLogic.cpp:202
NBTrafficLightLogic::myOffset
SUMOTime myOffset
The tls program's offset.
Definition: NBTrafficLightLogic.h:243
NBTrafficLightLogic::setStateLength
void setStateLength(int numLinks, LinkState fill=LINKSTATE_TL_RED)
Definition: NBTrafficLightLogic.cpp:111
Parameterised.h
Named.h
NBTrafficLightLogic::PhaseDefinition::name
std::string name
option phase name
Definition: NBTrafficLightLogic.h:70
NBTrafficLightLogic::mySubID
const std::string mySubID
The tls program's subid.
Definition: NBTrafficLightLogic.h:240
NBTrafficLightLogic::getPhases
const std::vector< PhaseDefinition > & getPhases() const
Returns the phases.
Definition: NBTrafficLightLogic.h:206
NBTrafficLightLogic::getNumLinks
int getNumLinks()
Returns the number of participating links.
Definition: NBTrafficLightLogic.h:221
NBTrafficLightLogic::PhaseDefinition::operator!=
bool operator!=(const PhaseDefinition &pd) const
Comparison operator.
Definition: NBTrafficLightLogic.h:92
NBTrafficLightLogic::PhaseDefinition::minDur
SUMOTime minDur
Definition: NBTrafficLightLogic.h:61
NBTrafficLightLogic::NBTrafficLightLogic
NBTrafficLightLogic(const std::string &id, const std::string &subid, int noLinks, SUMOTime offset=0, TrafficLightType type=TLTYPE_STATIC)
Constructor.
Definition: NBTrafficLightLogic.cpp:50
NBTrafficLightLogic::~NBTrafficLightLogic
~NBTrafficLightLogic()
Destructor.
Definition: NBTrafficLightLogic.cpp:66
NBTrafficLightLogic::deletePhase
void deletePhase(int index)
Definition: NBTrafficLightLogic.cpp:101
NBTrafficLightLogic::setType
void setType(TrafficLightType type)
set the algorithm type (static etc..)
Definition: NBTrafficLightLogic.h:231
NBTrafficLightLogic::PhaseDefinition::~PhaseDefinition
~PhaseDefinition()
Destructor.
Definition: NBTrafficLightLogic.h:86
config.h
NBTrafficLightLogic::PhaseDefinition::PhaseDefinition
PhaseDefinition(SUMOTime durationArg, const std::string &stateArg, SUMOTime minDurArg, SUMOTime maxDurArg, const std::vector< int > &nextArg, const std::string &nameArg)
Constructor.
Definition: NBTrafficLightLogic.h:76
NBTrafficLightLogic::myType
TrafficLightType myType
The algorithm type for the traffic light.
Definition: NBTrafficLightLogic.h:252
NBTrafficLightLogic::resetPhases
void resetPhases()
Definition: NBTrafficLightLogic.cpp:127
LINKSTATE_TL_RED
@ LINKSTATE_TL_RED
The link has red light (must brake)
Definition: SUMOXMLDefinitions.h:1143
NBTrafficLightLogic::PhaseDefinition::maxDur
SUMOTime maxDur
Definition: NBTrafficLightLogic.h:62
NBTrafficLightLogic
A SUMO-compliant built logic for a traffic light.
Definition: NBTrafficLightLogic.h:51
NBTrafficLightLogic::setPhaseNext
void setPhaseNext(int phaseIndex, const std::vector< int > &next)
Definition: NBTrafficLightLogic.cpp:214
NBTrafficLightLogic::myNumLinks
int myNumLinks
The number of participating links.
Definition: NBTrafficLightLogic.h:237
NBTrafficLightLogic::getProgramID
const std::string & getProgramID() const
Returns the ProgramID.
Definition: NBTrafficLightLogic.h:198
NBTrafficLightLogic::setPhaseMaxDuration
void setPhaseMaxDuration(int phaseIndex, SUMOTime duration)
Definition: NBTrafficLightLogic.cpp:208