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 GUIDetectorBuilder.cpp
15 : /// @author Daniel Krajzewicz
16 : /// @author Michael Behrisch
17 : /// @date Tue, 22 Jul 2003
18 : ///
19 : // Builds detectors for guisim
20 : /****************************************************************************/
21 : #include <config.h>
22 :
23 : #include <string>
24 : #include <iostream>
25 : #include <guisim/GUIInductLoop.h>
26 : #include <guisim/GUIE2Collector.h>
27 : #include <guisim/GUIE3Collector.h>
28 : #include <guisim/GUIInstantInductLoop.h>
29 : #include <microsim/MSGlobals.h>
30 : #include <microsim/MSNet.h>
31 : #include <microsim/output/MSInductLoop.h>
32 : #include <utils/common/UtilExceptions.h>
33 : #include <utils/common/FileHelpers.h>
34 : #include "GUIDetectorBuilder.h"
35 :
36 : #include <mesogui/GUIMEInductLoop.h>
37 : #include <mesosim/MELoop.h>
38 :
39 :
40 : // ===========================================================================
41 : // method definitions
42 : // ===========================================================================
43 7523 : GUIDetectorBuilder::GUIDetectorBuilder(MSNet& net)
44 7523 : : NLDetectorBuilder(net) {}
45 :
46 :
47 7523 : GUIDetectorBuilder::~GUIDetectorBuilder() {}
48 :
49 :
50 : MSDetectorFileOutput*
51 654 : GUIDetectorBuilder::createInductLoop(const std::string& id,
52 : MSLane* lane, double pos, double length,
53 : const std::string name, const std::string& vTypes,
54 : const std::string& nextEdges,
55 : int detectPersons, bool show) {
56 654 : if (MSGlobals::gUseMesoSim) {
57 546 : return new GUIMEInductLoop(id, MSGlobals::gMesoNet->getSegmentForEdge(lane->getEdge(), pos), pos, name, vTypes, nextEdges, detectPersons, show);
58 : } else {
59 945 : return new GUIInductLoop(id, lane, pos, length, name, vTypes, nextEdges, detectPersons, show);
60 : }
61 : }
62 :
63 :
64 : MSDetectorFileOutput*
65 122 : GUIDetectorBuilder::createInstantInductLoop(const std::string& id,
66 : MSLane* lane, double pos, const std::string& od, const std::string name, const std::string& vTypes, const std::string& nextEdges) {
67 245 : return new GUIInstantInductLoop(id, OutputDevice::getDevice(od), lane, pos, name, vTypes, nextEdges);
68 : }
69 :
70 :
71 : MSE2Collector*
72 234 : GUIDetectorBuilder::createE2Detector(const std::string& id,
73 : DetectorUsage usage, MSLane* lane, double pos, double endPos, double length,
74 : SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
75 : const std::string name, const std::string& vTypes,
76 : const std::string& nextEdges,
77 : int detectPersons, bool showDetector) {
78 702 : return new GUIE2Collector(id, usage, lane, pos, endPos, length, haltingTimeThreshold, haltingSpeedThreshold, jamDistThreshold, name, vTypes, nextEdges, detectPersons, showDetector);
79 : }
80 :
81 : MSE2Collector*
82 6 : GUIDetectorBuilder::createE2Detector(const std::string& id,
83 : DetectorUsage usage, std::vector<MSLane*> lanes, double pos, double endPos,
84 : SUMOTime haltingTimeThreshold, double haltingSpeedThreshold, double jamDistThreshold,
85 : const std::string name, const std::string& vTypes,
86 : const std::string& nextEdges,
87 : int detectPersons, bool showDetector) {
88 14 : return new GUIE2Collector(id, usage, lanes, pos, endPos, haltingTimeThreshold, haltingSpeedThreshold, jamDistThreshold, name, vTypes, nextEdges, detectPersons, showDetector);
89 : }
90 :
91 : MSDetectorFileOutput*
92 165 : GUIDetectorBuilder::createE3Detector(const std::string& id,
93 : const CrossSectionVector& entries,
94 : const CrossSectionVector& exits,
95 : double haltingSpeedThreshold,
96 : SUMOTime haltingTimeThreshold,
97 : const std::string name, const std::string& vTypes,
98 : const std::string& nextEdges,
99 : int detectPersons, bool openEntry, bool expectArrival) {
100 495 : return new GUIE3Collector(id, entries, exits, haltingSpeedThreshold, haltingTimeThreshold, name, vTypes, nextEdges, detectPersons, openEntry, expectArrival);
101 : }
102 :
103 :
104 : /****************************************************************************/
|