Eclipse SUMO - Simulation of Urban MObility
Command_SaveTLCoupledLaneDet.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials are made available under the
5 // terms of the Eclipse Public License 2.0 which is available at
6 // https://www.eclipse.org/legal/epl-2.0/
7 // This Source Code may also be made available under the following Secondary
8 // Licenses when the conditions for such availability set forth in the Eclipse
9 // Public License 2.0 are satisfied: GNU General Public License, version 2
10 // or later which is available at
11 // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 /****************************************************************************/
20 // Writes e2 state of a link for the time the link has yellow/red
21 /****************************************************************************/
22 #include <config.h>
23 
25 #include <microsim/MSNet.h>
32 
33 
34 // ===========================================================================
35 // method definitions
36 // ===========================================================================
38  MSDetectorFileOutput* dtf, SUMOTime begin, OutputDevice& device, const MSLink* link)
39  : Command_SaveTLCoupledDet(tlls, dtf, begin, device),
40  myLink(link), myLastState(LINKSTATE_TL_RED),
41  myHadOne(false) {
42  execute();
43 }
44 
45 
47 }
48 
49 
50 void
52  if (myLink->getState() == myLastState && myHadOne) {
53  return;
54  }
55  myHadOne = true;
58  if (myStartTime != end) {
60  myStartTime = end;
61  }
62  } else if (myLink->getState() == LINKSTATE_TL_RED) {
63  myDetector->reset();
65  }
67 }
68 
69 
70 /****************************************************************************/
long long int SUMOTime
Definition: GUI.h:35
@ LINKSTATE_TL_RED
The link has red light (must brake)
Writes e2 state on each tls switch.
MSDetectorFileOutput * myDetector
The detector to use.
OutputDevice & myDevice
The file to write the output to.
SUMOTime myStartTime
The last time the values were written.
Command_SaveTLCoupledLaneDet(MSTLLogicControl::TLSLogicVariants &tlls, MSDetectorFileOutput *dtf, SUMOTime begin, OutputDevice &device, const MSLink *link)
Constructor.
const MSLink * myLink
The link to observe.
bool myHadOne
Whether the last link state was already saved.
LinkState myLastState
The state the link had the last time.
Base of value-generating classes (detectors)
virtual void reset()
Resets collected values.
virtual void writeXMLOutput(OutputDevice &dev, SUMOTime startTime, SUMOTime stopTime)=0
Write the generated output to the given device.
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
Definition: MSNet.cpp:182
SUMOTime getCurrentTimeStep() const
Returns the current simulation step.
Definition: MSNet.h:320
Storage for all programs of a single tls.
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:61