Eclipse SUMO - Simulation of Urban MObility
libtraci/Edge.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2017-2020 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 /****************************************************************************/
18 // C++ TraCI client API implementation
19 /****************************************************************************/
20 
21 #define LIBTRACI 1
22 #include <iterator>
23 #include <libsumo/Edge.h>
24 #include "Connection.h"
25 #include "Domain.h"
26 
27 
28 namespace libtraci {
29 
30 typedef Domain<libsumo::CMD_GET_EDGE_VARIABLE, libsumo::CMD_SET_EDGE_VARIABLE> Dom;
31 
32 
33 // ===========================================================================
34 // static member definitions
35 // ===========================================================================
36 std::vector<std::string>
37 Edge::getIDList() {
39 }
40 
41 
42 int
43 Edge::getIDCount() {
44  return Dom::getInt(libsumo::ID_COUNT, "");
45 }
46 
47 
48 double
49 Edge::getAdaptedTraveltime(const std::string& edgeID, double time) {
50  tcpip::Storage content;
52  content.writeDouble(time);
53  return Dom::getDouble(libsumo::VAR_EDGE_TRAVELTIME, edgeID, &content);
54 }
55 
56 
57 double
58 Edge::getEffort(const std::string& edgeID, double time) {
59  tcpip::Storage content;
61  content.writeDouble(time);
62  return Dom::getDouble(libsumo::VAR_EDGE_EFFORT, edgeID, &content);
63 }
64 
65 
66 double
67 Edge::getTraveltime(const std::string& edgeID) {
69 }
70 
71 
72 double
73 Edge::getWaitingTime(const std::string& edgeID) {
75 }
76 
77 
78 const std::vector<std::string>
79 Edge::getLastStepPersonIDs(const std::string& edgeID) {
81 }
82 
83 
84 const std::vector<std::string>
85 Edge::getLastStepVehicleIDs(const std::string& edgeID) {
87 }
88 
89 
90 double
91 Edge::getCO2Emission(const std::string& edgeID) {
93 }
94 
95 
96 double
97 Edge::getCOEmission(const std::string& edgeID) {
99 }
100 
101 
102 double
103 Edge::getHCEmission(const std::string& edgeID) {
104  return Dom::getDouble(libsumo::VAR_HCEMISSION, edgeID);
105 }
106 
107 
108 double
109 Edge::getPMxEmission(const std::string& edgeID) {
111 }
112 
113 
114 double
115 Edge::getNOxEmission(const std::string& edgeID) {
117 }
118 
119 
120 double
121 Edge::getFuelConsumption(const std::string& edgeID) {
123 }
124 
125 
126 double
127 Edge::getNoiseEmission(const std::string& edgeID) {
129 }
130 
131 
132 double
133 Edge::getElectricityConsumption(const std::string& edgeID) {
135 }
136 
137 
138 int
139 Edge::getLastStepVehicleNumber(const std::string& edgeID) {
141 }
142 
143 
144 double
145 Edge::getLastStepMeanSpeed(const std::string& edgeID) {
147 }
148 
149 
150 double
151 Edge::getLastStepOccupancy(const std::string& edgeID) {
153 }
154 
155 
156 int
157 Edge::getLastStepHaltingNumber(const std::string& edgeID) {
159 }
160 
161 
162 double
163 Edge::getLastStepLength(const std::string& edgeID) {
165 }
166 
167 
168 int
169 Edge::getLaneNumber(const std::string& edgeID) {
170  return Dom::getInt(libsumo::VAR_LANE_INDEX, edgeID);
171 }
172 
173 
174 std::string
175 Edge::getStreetName(const std::string& edgeID) {
176  return Dom::getString(libsumo::VAR_NAME, edgeID);
177 }
178 
179 
182 
183 
184 void
185 Edge::setAllowedVehicleClasses(const std::string& edgeID, std::vector<std::string> classes) {
187 }
188 
189 
190 void
191 Edge::setDisallowedVehicleClasses(const std::string& edgeID, std::vector<std::string> classes) {
193 }
194 
195 
196 void
197 Edge::adaptTraveltime(const std::string& edgeID, double time, double beginSeconds, double endSeconds) {
198  tcpip::Storage content;
200  if (endSeconds != std::numeric_limits<double>::max()) {
201  content.writeInt(3);
203  content.writeDouble(beginSeconds);
205  content.writeDouble(endSeconds);
206  } else {
207  content.writeInt(1);
208  }
210  content.writeDouble(time);
212 }
213 
214 
215 void
216 Edge::setEffort(const std::string& edgeID, double effort, double beginSeconds, double endSeconds) {
217  tcpip::Storage content;
219  if (endSeconds != std::numeric_limits<double>::max()) {
220  content.writeInt(3);
222  content.writeDouble(beginSeconds);
224  content.writeDouble(endSeconds);
225  } else {
226  content.writeInt(1);
227  }
229  content.writeDouble(effort);
231 }
232 
233 
234 void
235 Edge::setMaxSpeed(const std::string& edgeID, double speed) {
236  Dom::setDouble(libsumo::VAR_MAXSPEED, edgeID, speed);
237 }
238 
239 }
240 
241 
242 /****************************************************************************/
#define LIBTRACI_SUBSCRIPTION_IMPLEMENTATION(CLASS, DOMAIN)
Definition: Domain.h:36
#define LIBTRACI_PARAMETER_IMPLEMENTATION(CLASS, DOMAIN)
Definition: Domain.h:74
C++ TraCI client API implementation.
static Connection & getActive()
Definition: Connection.h:53
tcpip::Storage & doCommand(int command, int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Connection.cpp:366
static void setDouble(int var, const std::string &id, double value)
Definition: Domain.h:156
static void setStringVector(int var, const std::string &id, const std::vector< std::string > &value)
Definition: Domain.h:164
static std::vector< std::string > getStringVector(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:140
static std::string getString(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:136
static int getInt(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:116
static double getDouble(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:120
virtual void writeInt(int)
Definition: storage.cpp:316
virtual void writeDouble(double)
Definition: storage.cpp:349
virtual void writeByte(int)
Definition: storage.cpp:135
TRACI_CONST int LAST_STEP_VEHICLE_ID_LIST
TRACI_CONST int LAST_STEP_VEHICLE_NUMBER
TRACI_CONST int VAR_NOXEMISSION
TRACI_CONST int VAR_NAME
TRACI_CONST int LAST_STEP_PERSON_ID_LIST
TRACI_CONST int TRACI_ID_LIST
TRACI_CONST int CMD_SET_EDGE_VARIABLE
TRACI_CONST int VAR_WAITING_TIME
TRACI_CONST int VAR_EDGE_TRAVELTIME
TRACI_CONST int LAST_STEP_LENGTH
TRACI_CONST int TYPE_COMPOUND
TRACI_CONST int VAR_EDGE_EFFORT
TRACI_CONST int VAR_LANE_INDEX
TRACI_CONST int VAR_PMXEMISSION
TRACI_CONST int VAR_COEMISSION
TRACI_CONST int VAR_MAXSPEED
TRACI_CONST int LAST_STEP_MEAN_SPEED
TRACI_CONST int VAR_CO2EMISSION
TRACI_CONST int VAR_FUELCONSUMPTION
TRACI_CONST int LAST_STEP_VEHICLE_HALTING_NUMBER
TRACI_CONST int VAR_HCEMISSION
TRACI_CONST int ID_COUNT
TRACI_CONST int LAST_STEP_OCCUPANCY
TRACI_CONST int VAR_NOISEEMISSION
TRACI_CONST int LANE_DISALLOWED
TRACI_CONST int TYPE_DOUBLE
TRACI_CONST int VAR_CURRENT_TRAVELTIME
TRACI_CONST int LANE_ALLOWED
TRACI_CONST int VAR_ELECTRICITYCONSUMPTION
Domain< libsumo::CMD_GET_BUSSTOP_VARIABLE, libsumo::CMD_SET_BUSSTOP_VARIABLE > Dom