Line data Source code
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 : /****************************************************************************/
14 : /// @file Command_SaveTLCoupledLaneDet.cpp
15 : /// @author Daniel Krajzewicz
16 : /// @author Jakob Erdmann
17 : /// @author Michael Behrisch
18 : /// @date 15 Feb 2004
19 : ///
20 : // Writes e2 state of a link for the time the link has yellow/red
21 : /****************************************************************************/
22 : #include <config.h>
23 :
24 : #include "Command_SaveTLCoupledLaneDet.h"
25 : #include <microsim/MSNet.h>
26 : #include <microsim/traffic_lights/MSTrafficLightLogic.h>
27 : #include <microsim/MSEventControl.h>
28 : #include <microsim/output/MSDetectorFileOutput.h>
29 : #include <utils/common/UtilExceptions.h>
30 : #include <utils/common/MsgHandler.h>
31 : #include <utils/iodevices/OutputDevice.h>
32 :
33 :
34 : // ===========================================================================
35 : // method definitions
36 : // ===========================================================================
37 8 : Command_SaveTLCoupledLaneDet::Command_SaveTLCoupledLaneDet(MSTLLogicControl::TLSLogicVariants& tlls,
38 8 : MSDetectorFileOutput* dtf, SUMOTime begin, OutputDevice& device, const MSLink* link)
39 : : Command_SaveTLCoupledDet(tlls, dtf, begin, device),
40 8 : myLink(link), myLastState(LINKSTATE_TL_RED),
41 8 : myHadOne(false) {
42 8 : execute();
43 8 : }
44 :
45 :
46 16 : Command_SaveTLCoupledLaneDet::~Command_SaveTLCoupledLaneDet() {
47 16 : }
48 :
49 :
50 : void
51 392 : Command_SaveTLCoupledLaneDet::execute() {
52 392 : if (myLink->getState() == myLastState && myHadOne) {
53 : return;
54 : }
55 164 : myHadOne = true;
56 164 : if (myLastState == LINKSTATE_TL_RED && myLink->getState() != LINKSTATE_TL_RED) {
57 60 : SUMOTime end = MSNet::getInstance()->getCurrentTimeStep();
58 60 : if (myStartTime != end) {
59 52 : myDetector->writeXMLOutput(myDevice, myStartTime, end);
60 52 : myStartTime = end;
61 : }
62 104 : } else if (myLink->getState() == LINKSTATE_TL_RED) {
63 56 : myDetector->reset();
64 56 : myStartTime = MSNet::getInstance()->getCurrentTimeStep();
65 : }
66 164 : myLastState = myLink->getState();
67 : }
68 :
69 :
70 : /****************************************************************************/
|