Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
TraCIServerAPI_Simulation.cpp
Go to the documentation of this file.
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/****************************************************************************/
21// APIs for getting/setting simulation values via TraCI
22/****************************************************************************/
23#include <config.h>
24
27#include <microsim/MSNet.h>
30#include <microsim/MSEdge.h>
31#include <microsim/MSLane.h>
32#include <microsim/MSVehicle.h>
36#include <libsumo/Helper.h>
37#include <libsumo/Simulation.h>
41
42
43// ===========================================================================
44// method definitions
45// ===========================================================================
46bool
48 const std::string& objID, const int variable) {
49 // unlike the other domains we cannot check here first whether libsumo::Simulation can handle it because the implementations for the state variables differ
50 switch (variable) {
53 break;
56 break;
59 break;
62 break;
65 break;
68 break;
71 break;
74 break;
77 break;
80 break;
83 break;
86 break;
89 break;
92 break;
95 break;
98 break;
101 break;
104 break;
107 break;
110 break;
113 break;
116 break;
119 break;
122 break;
125 break;
128 break;
131 break;
134 break;
136 std::vector<libsumo::TraCICollision> collisions = libsumo::Simulation::getCollisions();
138 const int cnt = 1 + (int)collisions.size() * 4;
139 server.getWrapperStorage().writeInt(cnt);
141 server.getWrapperStorage().writeInt((int)collisions.size());
142 for (const auto& c : collisions) {
144 server.getWrapperStorage().writeString(c.collider);
146 server.getWrapperStorage().writeString(c.victim);
148 server.getWrapperStorage().writeString(c.colliderType);
150 server.getWrapperStorage().writeString(c.victimType);
152 server.getWrapperStorage().writeDouble(c.colliderSpeed);
154 server.getWrapperStorage().writeDouble(c.victimSpeed);
156 server.getWrapperStorage().writeString(c.type);
158 server.getWrapperStorage().writeString(c.lane);
160 server.getWrapperStorage().writeDouble(c.pos);
161 }
162 break;
163 }
166 libsumo::TraCIPositionVector tb = libsumo::Simulation::getNetBoundary();
167 server.getWrapperStorage().writeByte(2);
168 server.getWrapperStorage().writeDouble(tb.value[0].x);
169 server.getWrapperStorage().writeDouble(tb.value[0].y);
170 server.getWrapperStorage().writeDouble(tb.value[1].x);
171 server.getWrapperStorage().writeDouble(tb.value[1].y);
172 break;
173 }
175 if (inputStorage.readUnsignedByte() != libsumo::TYPE_COMPOUND) {
176 throw libsumo::TraCIException("Position conversion requires a compound object.");
177 }
178 const int compoundSize = inputStorage.readInt();
179 if (compoundSize < 2 || compoundSize > 3) {
180 throw libsumo::TraCIException("Position conversion requires a source position and a position type as parameter.");
181 }
182 commandPositionConversion(inputStorage, compoundSize, server.getWrapperStorage());
183 break;
184 }
186 if (inputStorage.readUnsignedByte() != libsumo::TYPE_COMPOUND) {
187 throw libsumo::TraCIException("Retrieval of distance requires a compound object.");
188 }
189 if (inputStorage.readInt() != 3) {
190 throw libsumo::TraCIException("Retrieval of distance requires two positions and a distance type as parameter.");
191 }
192 commandDistanceRequest(inputStorage, server.getWrapperStorage());
193 break;
194 case libsumo::FIND_ROUTE: {
195 const int parameterCount = StoHelp::readCompound(inputStorage, -1, "Retrieval of a route requires a compound object.");
196 if (parameterCount < 5 || parameterCount > 7) {
197 throw libsumo::TraCIException("Retrieval of a route requires between five to seven parameters.");
198 }
199 const std::string from = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as first parameter.");
200 const std::string to = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as second parameter.");
201 const std::string vtype = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as third parameter.");
202 const double depart = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as fourth parameter.");
203 const int routingMode = StoHelp::readTypedInt(inputStorage, "Retrieval of a route requires an integer as fifth parameter.");
204 double departPos = 0.;
205 if (parameterCount > 5) {
206 departPos = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as sixth parameter.");
207 }
208 double arrivalPos = libsumo::INVALID_DOUBLE_VALUE;
209 if (parameterCount > 6) {
210 arrivalPos = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as seventh parameter.");
211 }
212 StoHelp::writeStage(server.getWrapperStorage(), libsumo::Simulation::findRoute(from, to, vtype, depart, routingMode, departPos, arrivalPos));
213 break;
214 }
216 StoHelp::readCompound(inputStorage, 13, "Retrieval of an intermodal route requires thirteen parameters.");
217 const std::string from = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as first parameter.");
218 const std::string to = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as second parameter.");
219 const std::string modes = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as third parameter.");
220 const double depart = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as fourth parameter.");
221 const int routingMode = StoHelp::readTypedInt(inputStorage, "Retrieval of a route requires an integer as fifth parameter.");
222 const double speed = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as sixth parameter.");
223 const double walkFactor = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as seventh parameter.");
224 const double departPos = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as eighth parameter.");
225 const double arrivalPos = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as ninth parameter.");
226 const double departPosLat = StoHelp::readTypedDouble(inputStorage, "Retrieval of a route requires a double as tenth parameter.");
227 const std::string ptype = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as eleventh parameter.");
228 const std::string vtype = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as twelfth parameter.");
229 const std::string destStop = StoHelp::readTypedString(inputStorage, "Retrieval of a route requires a string as thirteenth parameter.");
230 const std::vector<libsumo::TraCIStage>& result = libsumo::Simulation::findIntermodalRoute(from, to, modes, depart, routingMode, speed, walkFactor, departPos, arrivalPos, departPosLat, ptype, vtype, destStop);
232 server.getWrapperStorage().writeInt((int)result.size());
233 for (const libsumo::TraCIStage& s : result) {
235 }
236 break;
237 }
238 default:
239 if (!libsumo::Simulation::handleVariable(objID, variable, &server, &inputStorage)) {
240 throw libsumo::TraCIException("Get Simulation Variable: unsupported variable " + toHex(variable, 2) + " specified");
241 }
242 }
243 return true;
244}
245
246
247bool
249 tcpip::Storage& outputStorage) {
250 std::string warning = ""; // additional description for response
251 // variable
252 int variable = inputStorage.readUnsignedByte();
254 && variable != libsumo::CMD_SAVE_SIMSTATE
255 && variable != libsumo::CMD_LOAD_SIMSTATE
256 && variable != libsumo::VAR_PARAMETER
257 && variable != libsumo::VAR_SCALE
258 && variable != libsumo::CMD_MESSAGE
259 ) {
260 return server.writeErrorStatusCmd(libsumo::CMD_SET_SIM_VARIABLE, "Set Simulation Variable: unsupported variable " + toHex(variable, 2) + " specified", outputStorage);
261 }
262 // id
263 std::string id = inputStorage.readString();
264 // process
265 try {
266 switch (variable) {
267 case libsumo::VAR_SCALE: {
268 const double value = StoHelp::readTypedDouble(inputStorage, "A double is needed for setting traffic scale.");
269 if (value < 0.0) {
270 return server.writeErrorStatusCmd(libsumo::CMD_SET_SIM_VARIABLE, "Traffic scale may not be negative.", outputStorage);
271 }
272 libsumo::Simulation::setScale(value);
273 }
274 break;
276 //clear any pending vehicle insertions
277 libsumo::Simulation::clearPending(StoHelp::readTypedString(inputStorage, "A string is needed for clearing pending vehicles."));
278 break;
280 //save current simulation state
281 libsumo::Simulation::saveState(StoHelp::readTypedString(inputStorage, "A string is needed for saving simulation state."));
282 break;
284 //quick-load simulation state
285 const double time = libsumo::Simulation::loadState(StoHelp::readTypedString(inputStorage, "A string is needed for loading simulation state."));
287 }
288 break;
290 StoHelp::readCompound(inputStorage, 2, "A compound object of size 2 is needed for setting a parameter.");
291 const std::string name = StoHelp::readTypedString(inputStorage, "The name of the parameter must be given as a string.");
292 const std::string value = StoHelp::readTypedString(inputStorage, "The value of the parameter must be given as a string.");
293 libsumo::Simulation::setParameter(id, name, value);
294 break;
295 }
297 libsumo::Simulation::writeMessage(StoHelp::readTypedString(inputStorage, "A string is needed for adding a log message."));
298 break;
299 default:
300 break;
301 }
302 } catch (libsumo::TraCIException& e) {
303 return server.writeErrorStatusCmd(libsumo::CMD_SET_SIM_VARIABLE, e.what(), outputStorage);
304 }
305 server.writeStatusCmd(libsumo::CMD_SET_SIM_VARIABLE, libsumo::RTYPE_OK, warning, outputStorage);
306 return true;
307}
308
309
310void
312 StoHelp::writeTypedInt(outputStorage, (int)server.getVehicleStateChanges().find(state)->second.size());
313}
314
315
316void
320
321
322void
324 StoHelp::writeTypedInt(outputStorage, (int)server.getTransportableStateChanges().find(state)->second.size());
325}
326
327
328void
332
333
334void
336 const int compoundSize, tcpip::Storage& outputStorage) {
337 std::pair<MSLane*, double> roadPos;
338 Position cartesianPos;
339 Position geoPos;
340 double z = 0;
341
342 // actual position type that will be converted
343 int srcPosType = inputStorage.readUnsignedByte();
344
345 switch (srcPosType) {
350 const double x = inputStorage.readDouble();
351 const double y = inputStorage.readDouble();
352 if (srcPosType != libsumo::POSITION_2D && srcPosType != libsumo::POSITION_LON_LAT) {
353 z = inputStorage.readDouble();
354 }
355 geoPos.set(x, y);
356 cartesianPos.set(x, y);
357 if (srcPosType == libsumo::POSITION_LON_LAT || srcPosType == libsumo::POSITION_LON_LAT_ALT) {
359 } else {
361 }
362 }
363 break;
365 const std::string roadID = inputStorage.readString();
366 const double pos = inputStorage.readDouble();
367 const int laneIdx = inputStorage.readUnsignedByte();
368 // convert edge,offset,laneIdx to cartesian position
369 cartesianPos = geoPos = libsumo::Helper::getLaneChecking(roadID, laneIdx, pos)->geometryPositionAtOffset(pos);
370 z = cartesianPos.z();
372 }
373 break;
374 default:
375 throw libsumo::TraCIException("Source position type not supported");
376 }
377
378 const int destPosType = StoHelp::readTypedUnsignedByte(inputStorage, "Destination position type must be of type ubyte.");
380 if (compoundSize == 3) {
381 inputStorage.readUnsignedByte();
382 const std::string& vClassString = inputStorage.readString();
383 if (!SumoVehicleClassStrings.hasString(vClassString)) {
384 throw libsumo::TraCIException("Unknown vehicle class '" + vClassString + "'.");
385 }
386 vClass = SumoVehicleClassStrings.get(vClassString);
387 }
388
389 switch (destPosType) {
391 // convert cartesion position to edge,offset,lane_index
392 roadPos = libsumo::Helper::convertCartesianToRoadMap(cartesianPos, vClass);
393 if (roadPos.first == nullptr) {
394 throw libsumo::TraCIException("No matching lane found.");
395 }
396 // write result that is added to response msg
398 outputStorage.writeString(roadPos.first->getEdge().getID());
399 outputStorage.writeDouble(roadPos.second);
400 outputStorage.writeUnsignedByte(roadPos.first->getIndex());
401 }
402 break;
407 outputStorage.writeUnsignedByte(destPosType);
408 if (destPosType == libsumo::POSITION_LON_LAT || destPosType == libsumo::POSITION_LON_LAT_ALT) {
409 outputStorage.writeDouble(geoPos.x());
410 outputStorage.writeDouble(geoPos.y());
411 } else {
412 outputStorage.writeDouble(cartesianPos.x());
413 outputStorage.writeDouble(cartesianPos.y());
414 }
415 if (destPosType != libsumo::POSITION_2D && destPosType != libsumo::POSITION_LON_LAT) {
416 outputStorage.writeDouble(z);
417 }
418 break;
419 default:
420 throw libsumo::TraCIException("Destination position type not supported");
421 }
422}
423
424
425void
427 Position pos1;
428 Position pos2;
429 std::pair<const MSLane*, double> roadPos1;
430 std::pair<const MSLane*, double> roadPos2;
431
432 // read position 1
433 int posType = inputStorage.readUnsignedByte();
434 switch (posType) {
436 std::string roadID = inputStorage.readString();
437 roadPos1.second = inputStorage.readDouble();
438 roadPos1.first = libsumo::Helper::getLaneChecking(roadID, inputStorage.readUnsignedByte(), roadPos1.second);
439 pos1 = roadPos1.first->geometryPositionAtOffset(roadPos1.second);
440 break;
441 }
444 double p1x = inputStorage.readDouble();
445 double p1y = inputStorage.readDouble();
446 pos1.set(p1x, p1y);
447 }
448 if (posType == libsumo::POSITION_3D) {
449 inputStorage.readDouble();// z value is ignored
450 }
452 break;
455 double p1x = inputStorage.readDouble();
456 double p1y = inputStorage.readDouble();
457 pos1.set(p1x, p1y);
459 }
460 if (posType == libsumo::POSITION_LON_LAT_ALT) {
461 inputStorage.readDouble();// altitude value is ignored
462 }
464 break;
465 default:
466 throw libsumo::TraCIException("Unknown position format used for distance request");
467 }
468
469 // read position 2
470 posType = inputStorage.readUnsignedByte();
471 switch (posType) {
473 std::string roadID = inputStorage.readString();
474 roadPos2.second = inputStorage.readDouble();
475 roadPos2.first = libsumo::Helper::getLaneChecking(roadID, inputStorage.readUnsignedByte(), roadPos2.second);
476 pos2 = roadPos2.first->geometryPositionAtOffset(roadPos2.second);
477 break;
478 }
481 double p2x = inputStorage.readDouble();
482 double p2y = inputStorage.readDouble();
483 pos2.set(p2x, p2y);
484 }
485 if (posType == libsumo::POSITION_3D) {
486 inputStorage.readDouble();// z value is ignored
487 }
489 break;
492 double p2x = inputStorage.readDouble();
493 double p2y = inputStorage.readDouble();
494 pos2.set(p2x, p2y);
496 }
497 if (posType == libsumo::POSITION_LON_LAT_ALT) {
498 inputStorage.readDouble();// altitude value is ignored
499 }
501 break;
502 default:
503 throw libsumo::TraCIException("Unknown position format used for distance request");
504 }
505
506 // read distance type
507 const int distType = inputStorage.readUnsignedByte();
508
509 double distance = 0.0;
510 if (distType == libsumo::REQUEST_DRIVINGDIST) {
511 distance = libsumo::Helper::getDrivingDistance(roadPos1, roadPos2);
512 } else {
513 // compute air distance (default)
514 distance = pos1.distanceTo(pos2);
515 }
516 // write response command
517 StoHelp::writeTypedDouble(outputStorage, distance);
518}
519
520
521/****************************************************************************/
#define TIME2STEPS(x)
Definition SUMOTime.h:57
StringBijection< SUMOVehicleClass > SumoVehicleClassStrings(sumoVehicleClassStringInitializer, SVC_CUSTOM2, false)
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_IGNORING
vehicles ignoring classes
std::string toHex(const T i, std::streamsize numDigits=0)
Definition ToString.h:56
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
void cartesian2geo(Position &cartesian) const
Converts the given cartesian (shifted) position to its geo (lat/long) representation.
bool x2cartesian_const(Position &from) const
Converts the given coordinate into a cartesian using the previous initialisation.
const Position geometryPositionAtOffset(double offset, double lateralOffset=0) const
Definition MSLane.h:560
VehicleState
Definition of a vehicle state.
Definition MSNet.h:626
@ ENDING_PARKING
The vehicle ends to park.
@ STARTING_STOP
The vehicles starts to stop.
@ BUILT
The vehicle was built, but has not yet departed.
@ STARTING_PARKING
The vehicles starts to park.
@ STARTING_TELEPORT
The vehicle started to teleport.
@ ENDING_STOP
The vehicle ends to stop.
@ ENDING_TELEPORT
The vehicle ended being teleported.
@ ARRIVED
The vehicle arrived at his destination (is deleted)
@ DEPARTED
The vehicle has departed (was inserted into the network)
@ COLLISION
The vehicle is involved in a collision.
@ EMERGENCYSTOP
The vehicle had to brake harder than permitted.
@ MANEUVERING
Vehicle maneuvering either entering or exiting a parking space.
TransportableState
Definition of a transportable state.
Definition MSNet.h:703
@ PERSON_DEPARTED
The transportable person has departed (was inserted into the network)
@ PERSON_ARRIVED
The transportable person arrived at his destination (is deleted)
A point in 2D or 3D with translation and scaling methods.
Definition Position.h:37
void set(double x, double y)
set positions x and y
Definition Position.h:82
double distanceTo(const Position &p2) const
returns the euclidean distance in 3 dimensions
Definition Position.h:263
double x() const
Returns the x-position.
Definition Position.h:52
double z() const
Returns the z-position.
Definition Position.h:62
double y() const
Returns the y-position.
Definition Position.h:57
static bool processGet(TraCIServer &server, tcpip::Storage &inputStorage, const std::string &objID, const int variable)
Processes a get value command (Command 0xab: Get Simulation Variable)
static void writeTransportableStateIDs(TraCIServer &server, tcpip::Storage &outputStorage, MSNet::TransportableState state)
static void writeTransportableStateNumber(TraCIServer &server, tcpip::Storage &outputStorage, MSNet::TransportableState state)
static bool processSet(TraCIServer &server, tcpip::Storage &inputStorage, tcpip::Storage &outputStorage)
Processes a set value command (Command 0xcb: Set Simulation Variable)
static void writeVehicleStateIDs(TraCIServer &server, tcpip::Storage &outputStorage, MSNet::VehicleState state)
static void writeVehicleStateNumber(TraCIServer &server, tcpip::Storage &outputStorage, MSNet::VehicleState state)
static void commandDistanceRequest(tcpip::Storage &inputStorage, tcpip::Storage &outputStorage)
static void commandPositionConversion(tcpip::Storage &inputStorage, const int compoundSize, tcpip::Storage &outputStorage)
TraCI server used to control sumo by a remote TraCI client.
Definition TraCIServer.h:59
void writeStatusCmd(int commandId, int status, const std::string &description, tcpip::Storage &outputStorage)
Writes a status command to the given storage.
void stateLoaded(SUMOTime targetTime)
updates myTargetTime and resets vehicle state changes after loading a simulation state
tcpip::Storage & getWrapperStorage()
bool writeErrorStatusCmd(int commandId, const std::string &description, tcpip::Storage &outputStorage)
Writes a status command to the given storage with status = RTYPE_ERR.
static TraCIServer * getInstance()
Definition TraCIServer.h:68
const std::map< MSNet::VehicleState, std::vector< std::string > > & getVehicleStateChanges() const
const std::map< MSNet::TransportableState, std::vector< std::string > > & getTransportableStateChanges() const
static double getDrivingDistance(std::pair< const MSLane *, double > &roadPos1, std::pair< const MSLane *, double > &roadPos2)
Definition Helper.cpp:472
static std::pair< MSLane *, double > convertCartesianToRoadMap(const Position &pos, const SUMOVehicleClass vClass)
Definition Helper.cpp:436
static const MSLane * getLaneChecking(const std::string &edgeID, int laneIndex, double pos)
Definition Helper.cpp:419
static int readTypedUnsignedByte(tcpip::Storage &ret, const std::string &error="")
static void writeTypedDouble(tcpip::Storage &content, double value)
static int readCompound(tcpip::Storage &ret, int expectedSize=-1, const std::string &error="")
static void writeStage(tcpip::Storage &content, const libsumo::TraCIStage &stage)
static int readTypedInt(tcpip::Storage &ret, const std::string &error="")
static std::string readTypedString(tcpip::Storage &ret, const std::string &error="")
static void writeTypedInt(tcpip::Storage &content, int value)
static void writeTypedStringList(tcpip::Storage &content, const std::vector< std::string > &value)
static double readTypedDouble(tcpip::Storage &ret, const std::string &error="")
An error which allows to continue.
Definition TraCIDefs.h:145
virtual std::string readString()
Definition storage.cpp:180
virtual void writeString(const std::string &s)
Definition storage.cpp:197
virtual void writeInt(int)
Definition storage.cpp:321
virtual void writeDouble(double)
Definition storage.cpp:354
virtual int readUnsignedByte()
Definition storage.cpp:155
virtual void writeUnsignedByte(int)
Definition storage.cpp:165
virtual void writeByte(int)
Definition storage.cpp:140
virtual double readDouble()
Definition storage.cpp:362
virtual int readInt()
Definition storage.cpp:311
TRACI_CONST double INVALID_DOUBLE_VALUE
TRACI_CONST int CMD_SAVE_SIMSTATE
TRACI_CONST int VAR_STOP_ENDING_VEHICLES_IDS
TRACI_CONST int POSITION_3D
TRACI_CONST int POSITION_ROADMAP
TRACI_CONST int VAR_ARRIVED_VEHICLES_NUMBER
TRACI_CONST int VAR_STOP_STARTING_VEHICLES_NUMBER
TRACI_CONST int VAR_SCALE
TRACI_CONST int VAR_DEPARTED_VEHICLES_NUMBER
TRACI_CONST int CMD_LOAD_SIMSTATE
TRACI_CONST int VAR_COLLIDING_VEHICLES_NUMBER
TRACI_CONST int VAR_COLLISIONS
TRACI_CONST int CMD_CLEAR_PENDING_VEHICLES
TRACI_CONST int VAR_PARKING_ENDING_VEHICLES_IDS
TRACI_CONST int VAR_PARKING_STARTING_VEHICLES_IDS
TRACI_CONST int TYPE_COMPOUND
TRACI_CONST int VAR_PARKING_MANEUVERING_VEHICLES_IDS
TRACI_CONST int FIND_INTERMODAL_ROUTE
TRACI_CONST int VAR_DEPARTED_PERSONS_NUMBER
TRACI_CONST int VAR_PARKING_MANEUVERING_VEHICLES_NUMBER
TRACI_CONST int POSITION_2D
TRACI_CONST int VAR_ARRIVED_PERSONS_IDS
TRACI_CONST int TYPE_POLYGON
TRACI_CONST int VAR_NET_BOUNDING_BOX
TRACI_CONST int CMD_SET_SIM_VARIABLE
TRACI_CONST int TYPE_INTEGER
TRACI_CONST int POSITION_LON_LAT
TRACI_CONST int VAR_EMERGENCYSTOPPING_VEHICLES_IDS
TRACI_CONST int VAR_PARAMETER
TRACI_CONST int VAR_DEPARTED_VEHICLES_IDS
TRACI_CONST int VAR_TELEPORT_ENDING_VEHICLES_NUMBER
TRACI_CONST int CMD_MESSAGE
TRACI_CONST int VAR_PARKING_ENDING_VEHICLES_NUMBER
TRACI_CONST int VAR_LOADED_VEHICLES_IDS
TRACI_CONST int REQUEST_DRIVINGDIST
TRACI_CONST int VAR_DEPARTED_PERSONS_IDS
TRACI_CONST int VAR_ARRIVED_PERSONS_NUMBER
TRACI_CONST int VAR_STOP_STARTING_VEHICLES_IDS
TRACI_CONST int FIND_ROUTE
TRACI_CONST int VAR_STOP_ENDING_VEHICLES_NUMBER
TRACI_CONST int POSITION_CONVERSION
TRACI_CONST int TYPE_DOUBLE
TRACI_CONST int DISTANCE_REQUEST
TRACI_CONST int VAR_LOADED_VEHICLES_NUMBER
TRACI_CONST int VAR_TELEPORT_ENDING_VEHICLES_IDS
TRACI_CONST int VAR_COLLIDING_VEHICLES_IDS
TRACI_CONST int VAR_TELEPORT_STARTING_VEHICLES_NUMBER
TRACI_CONST int VAR_TELEPORT_STARTING_VEHICLES_IDS
TRACI_CONST int VAR_ARRIVED_VEHICLES_IDS
TRACI_CONST int RTYPE_OK
TRACI_CONST int VAR_PARKING_STARTING_VEHICLES_NUMBER
TRACI_CONST int POSITION_LON_LAT_ALT
TRACI_CONST int VAR_EMERGENCYSTOPPING_VEHICLES_NUMBER
TRACI_CONST int TYPE_STRING
A list of positions.
Definition TraCIDefs.h:240
std::vector< TraCIPosition > value
Definition TraCIDefs.h:250