|
SUMO - Simulation of Urban MObility
|
00001 /****************************************************************************/ 00007 // Writes e2 state of a link for the time the link has yellow/red 00008 /****************************************************************************/ 00009 // SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/ 00010 // Copyright (C) 2001-2011 DLR (http://www.dlr.de/) and contributors 00011 /****************************************************************************/ 00012 // 00013 // This program is free software; you can redistribute it and/or modify 00014 // it under the terms of the GNU General Public License as published by 00015 // the Free Software Foundation; either version 2 of the License, or 00016 // (at your option) any later version. 00017 // 00018 /****************************************************************************/ 00019 00020 00021 // =========================================================================== 00022 // included modules 00023 // =========================================================================== 00024 #ifdef _MSC_VER 00025 #include <windows_config.h> 00026 #else 00027 #include <config.h> 00028 #endif 00029 00030 #include "Command_SaveTLCoupledLaneDet.h" 00031 #include <microsim/MSNet.h> 00032 #include <microsim/traffic_lights/MSTrafficLightLogic.h> 00033 #include <microsim/MSEventControl.h> 00034 #include <microsim/output/MSDetectorFileOutput.h> 00035 #include <microsim/MSLinkCont.h> 00036 #include <utils/common/UtilExceptions.h> 00037 #include <utils/common/MsgHandler.h> 00038 #include <utils/iodevices/OutputDevice.h> 00039 00040 #ifdef CHECK_MEMORY_LEAKS 00041 #include <foreign/nvwa/debug_new.h> 00042 #endif // CHECK_MEMORY_LEAKS 00043 00044 00045 // =========================================================================== 00046 // method definitions 00047 // =========================================================================== 00048 Command_SaveTLCoupledLaneDet::Command_SaveTLCoupledLaneDet(MSTLLogicControl::TLSLogicVariants& tlls, 00049 MSDetectorFileOutput* dtf, unsigned int begin, OutputDevice& device, MSLink* link) 00050 : Command_SaveTLCoupledDet(tlls, dtf, begin, device), 00051 myLink(link), myLastState(LINKSTATE_TL_RED), 00052 myHadOne(false) { 00053 execute(); 00054 } 00055 00056 00057 Command_SaveTLCoupledLaneDet::~Command_SaveTLCoupledLaneDet() { 00058 } 00059 00060 00061 void 00062 Command_SaveTLCoupledLaneDet::execute() { 00063 if (myLink->getState()==myLastState&&myHadOne) { 00064 return; 00065 } 00066 myHadOne = true; 00067 if (myLastState==LINKSTATE_TL_RED&&myLink->getState()!=LINKSTATE_TL_RED) { 00068 SUMOTime end = MSNet::getInstance()->getCurrentTimeStep(); 00069 if (myStartTime!=end) { 00070 myDetector->writeXMLOutput(myDevice, myStartTime, end); 00071 myStartTime = end; 00072 } 00073 } else if (myLink->getState()==LINKSTATE_TL_RED) { 00074 myDetector->reset(); 00075 myStartTime = MSNet::getInstance()->getCurrentTimeStep(); 00076 } 00077 myLastState = myLink->getState(); 00078 } 00079 00080 00081 00082 /****************************************************************************/ 00083