Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
eclipse
GitHub Repository: eclipse/sumo
Path: blob/main/src/guinetload/GUIDetectorBuilder.cpp
169665 views
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2025 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
GUIDetectorBuilder::GUIDetectorBuilder(MSNet& net)
44
: NLDetectorBuilder(net) {}
45
46
47
GUIDetectorBuilder::~GUIDetectorBuilder() {}
48
49
50
MSDetectorFileOutput*
51
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
if (MSGlobals::gUseMesoSim) {
57
return new GUIMEInductLoop(id, MSGlobals::gMesoNet->getSegmentForEdge(lane->getEdge(), pos), pos, name, vTypes, nextEdges, detectPersons, show);
58
} else {
59
return new GUIInductLoop(id, lane, pos, length, name, vTypes, nextEdges, detectPersons, show);
60
}
61
}
62
63
64
MSDetectorFileOutput*
65
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
return new GUIInstantInductLoop(id, OutputDevice::getDevice(od), lane, pos, name, vTypes, nextEdges);
68
}
69
70
71
MSE2Collector*
72
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
return new GUIE2Collector(id, usage, lane, pos, endPos, length, haltingTimeThreshold, haltingSpeedThreshold, jamDistThreshold, name, vTypes, nextEdges, detectPersons, showDetector);
79
}
80
81
MSE2Collector*
82
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
return new GUIE2Collector(id, usage, lanes, pos, endPos, haltingTimeThreshold, haltingSpeedThreshold, jamDistThreshold, name, vTypes, nextEdges, detectPersons, showDetector);
89
}
90
91
MSDetectorFileOutput*
92
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
return new GUIE3Collector(id, entries, exits, haltingSpeedThreshold, haltingTimeThreshold, name, vTypes, nextEdges, detectPersons, openEntry, expectArrival);
101
}
102
103
104
/****************************************************************************/
105
106