35#pragma warning(disable: 4355)
38 edge(*this), gui(*this), inductionloop(*this),
39 junction(*this), lane(*this), lanearea(*this), multientryexit(*this),
40 person(*this), poi(*this), polygon(*this),
41 rerouter(*this), route(*this), routeprobe(*this),
42 simulation(*this), trafficlights(*this),
43 vehicle(*this), vehicletype(*this),
45 std::cerr <<
"TraCIAPI is deprecated. Please use libtraci instead, see https://sumo.dlr.de/docs/Libtraci.html.\n";
104 std::string acknowledgement;
162 int length = 1 + 1 + 1 + 4 + (int) objID.length();
163 if (add !=
nullptr) {
164 length += (int)add->
size();
176 if (add !=
nullptr) {
186 int length = 1 + 1 + 1;
187 if (add !=
nullptr) {
188 length += (int)add->
size();
199 if (add !=
nullptr) {
207 const std::vector<int>& vars)
const {
213 int varNo = (int) vars.
size();
215 outMsg.
writeInt(5 + 1 + 8 + 8 + 4 + (
int) objID.length() + 1 + varNo);
225 for (
int i = 0; i < varNo; ++i) {
235 int domain,
double range,
const std::vector<int>& vars)
const {
241 int varNo = (int) vars.
size();
243 outMsg.
writeInt(5 + 1 + 8 + 8 + 4 + (
int) objID.length() + 1 + 8 + 1 + varNo);
256 for (
int i = 0; i < varNo; ++i) {
276 if (command != cmdId && !ignoreCommandId) {
281 }
catch (std::invalid_argument&) {
284 switch (resultType) {
290 if (acknowledgement !=
nullptr) {
291 (*acknowledgement) =
".. Command acknowledged (" +
toString(command) +
"), [description: " + msg +
"]";
297 if ((cmdStart + cmdLength) != (
int) inMsg.
position()) {
311 if (!ignoreCommandId && cmdId != (command + 0x10)) {
314 if (expectedType >= 0) {
319 if (valueDataType != expectedType) {
354 while (variableCount > 0) {
363 into[objectID][variableID] = std::make_shared<libsumo::TraCIDouble>(inMsg.
readDouble());
366 into[objectID][variableID] = std::make_shared<libsumo::TraCIString>(inMsg.
readString());
369 auto p = std::make_shared<libsumo::TraCIPosition>();
373 into[objectID][variableID] = p;
377 auto p = std::make_shared<libsumo::TraCIPosition>();
381 into[objectID][variableID] = p;
385 auto c = std::make_shared<libsumo::TraCIColor>();
390 into[objectID][variableID] = c;
394 into[objectID][variableID] = std::make_shared<libsumo::TraCIInt>(inMsg.
readInt());
397 auto sl = std::make_shared<libsumo::TraCIStringList>();
399 for (
int i = 0; i < n; ++i) {
402 into[objectID][variableID] = sl;
422 const std::string objectID = inMsg.
readString();
430 const std::string contextID = inMsg.
readString();
433 int numObjects = inMsg.
readInt();
435 while (numObjects > 0) {
437 readVariables(inMsg, objectID, variableCount,
myDomains[cmdId]->getModifiableContextSubscriptionResults(contextID));
450 it.second->clearSubscriptionResults();
453 while (numSubs > 0) {
468 for (
int i = 0; i < (int)args.size(); ++i) {
469 numChars += (int)args[i].size();
473 content.
writeInt(1 + 4 + 1 + 1 + 4 + numChars + 4 * (
int)args.size());
483std::pair<int, std::string>
493 const int traciVersion = inMsg.
readInt();
494 return std::make_pair(traciVersion, inMsg.
readString());
588std::vector<std::string>
610 if (endSeconds != std::numeric_limits<double>::max()) {
630 if (endSeconds != std::numeric_limits<double>::max()) {
757std::vector<std::string>
778std::vector<libsumo::TraCIVehicleData>
780 std::vector<libsumo::TraCIVehicleData> result;
783 myParent.myInput.readInt();
785 myParent.myInput.readUnsignedByte();
786 const int n = myParent.myInput.readInt();
787 for (
int i = 0; i < n; ++i) {
790 myParent.myInput.readUnsignedByte();
791 vd.
id = myParent.myInput.readString();
793 myParent.myInput.readUnsignedByte();
794 vd.
length = myParent.myInput.readDouble();
796 myParent.myInput.readUnsignedByte();
797 vd.
entryTime = myParent.myInput.readDouble();
799 myParent.myInput.readUnsignedByte();
800 vd.
leaveTime = myParent.myInput.readDouble();
802 myParent.myInput.readUnsignedByte();
803 vd.
typeID = myParent.myInput.readString();
805 result.push_back(vd);
844std::vector<std::string>
849std::vector<std::string>
859std::vector<libsumo::TraCIConnection>
861 std::vector<libsumo::TraCIConnection> ret;
864 myParent.myInput.readUnsignedByte();
865 myParent.myInput.readInt();
867 int linkNo = myParent.myInput.readInt();
868 for (
int i = 0; i < linkNo; ++i) {
870 myParent.myInput.readUnsignedByte();
871 std::string approachedLane = myParent.myInput.readString();
873 myParent.myInput.readUnsignedByte();
874 std::string approachedLaneInternal = myParent.myInput.readString();
876 myParent.myInput.readUnsignedByte();
877 bool hasPrio = myParent.myInput.readUnsignedByte() != 0;
879 myParent.myInput.readUnsignedByte();
880 bool isOpen = myParent.myInput.readUnsignedByte() != 0;
882 myParent.myInput.readUnsignedByte();
883 bool hasFoe = myParent.myInput.readUnsignedByte() != 0;
885 myParent.myInput.readUnsignedByte();
886 std::string state = myParent.myInput.readString();
888 myParent.myInput.readUnsignedByte();
889 std::string direction = myParent.myInput.readString();
891 myParent.myInput.readUnsignedByte();
892 double length = myParent.myInput.readDouble();
898 approachedLaneInternal,
989std::vector<std::string>
995std::vector<std::string>
997 std::vector<std::string> r;
1003 const int size = myParent.myInput.readInt();
1004 for (
int i = 0; i < size; ++i) {
1005 r.push_back(myParent.myInput.readString());
1011std::vector<std::string>
1013 return getFoes(laneID,
"");
1056std::vector<std::string>
1066std::vector<std::string>
1071std::vector<std::string>
1269 if (shape.
value.size() < 256) {
1309 int f = fill ? 1 : 0;
1315 for (
int i = 0; i < (int)shape.
value.size(); ++i) {
1336std::vector<std::string>
1370std::vector<std::string>
1380std::vector<std::string>
1390std::vector<std::string>
1400std::vector<std::string>
1410std::vector<std::string>
1420std::vector<std::string>
1430std::vector<std::string>
1461std::vector<std::string>
1482 result.
x = myParent.myInput.readDouble();
1483 result.
y = myParent.myInput.readDouble();
1504 result.
x = myParent.myInput.readDouble();
1505 result.
y = myParent.myInput.readDouble();
1506 result.
z = myParent.myInput.readDouble();
1527 result.
edgeID = myParent.myInput.readString();
1528 result.
pos = myParent.myInput.readDouble();
1529 result.
laneIndex = myParent.myInput.readUnsignedByte();
1549 result.
x = myParent.myInput.readDouble();
1550 result.
y = myParent.myInput.readDouble();
1570 return myParent.myInput.readDouble();
1592 return myParent.myInput.readDouble();
1652std::vector<libsumo::TraCILogic>
1654 std::vector<libsumo::TraCILogic> ret;
1657 const int logicNo = myParent.myInput.readInt();
1658 for (
int i = 0; i < logicNo; ++i) {
1659 myParent.myInput.readUnsignedByte();
1660 myParent.myInput.readInt();
1661 myParent.myInput.readUnsignedByte();
1662 const std::string programID = myParent.myInput.readString();
1663 myParent.myInput.readUnsignedByte();
1664 const int type = myParent.myInput.readInt();
1665 myParent.myInput.readUnsignedByte();
1666 const int phaseIndex = myParent.myInput.readInt();
1667 myParent.myInput.readUnsignedByte();
1668 const int phaseNumber = myParent.myInput.readInt();
1670 for (
int j = 0; j < phaseNumber; j++) {
1671 myParent.myInput.readUnsignedByte();
1672 myParent.myInput.readInt();
1673 myParent.myInput.readUnsignedByte();
1674 const double duration = myParent.myInput.readDouble();
1675 myParent.myInput.readUnsignedByte();
1676 const std::string state = myParent.myInput.readString();
1677 myParent.myInput.readUnsignedByte();
1678 const double minDur = myParent.myInput.readDouble();
1679 myParent.myInput.readUnsignedByte();
1680 const double maxDur = myParent.myInput.readDouble();
1681 myParent.myInput.readUnsignedByte();
1682 const int numNext = myParent.myInput.readInt();
1683 std::vector<int> next;
1684 for (
int k = 0; k < numNext; k++) {
1685 myParent.myInput.readUnsignedByte();
1686 next.push_back(myParent.myInput.readInt());
1688 myParent.myInput.readUnsignedByte();
1689 const std::string name = myParent.myInput.readString();
1692 myParent.myInput.readUnsignedByte();
1693 const int paramNumber = myParent.myInput.readInt();
1694 for (
int j = 0; j < paramNumber; j++) {
1695 myParent.myInput.readUnsignedByte();
1696 const std::vector<std::string> par = myParent.myInput.readStringList();
1699 ret.emplace_back(logic);
1705std::vector<std::string>
1710std::vector<std::vector<libsumo::TraCILink> >
1712 std::vector<std::vector<libsumo::TraCILink> > result;
1716 myParent.myInput.readUnsignedByte();
1717 myParent.myInput.readInt();
1719 int linkNo = myParent.myInput.readInt();
1720 for (
int i = 0; i < linkNo; ++i) {
1721 myParent.myInput.readUnsignedByte();
1722 int no = myParent.myInput.readInt();
1723 std::vector<libsumo::TraCILink> ret;
1724 for (
int i1 = 0; i1 < no; ++i1) {
1725 myParent.myInput.readUnsignedByte();
1726 myParent.myInput.readInt();
1727 std::string from = myParent.myInput.readString();
1728 std::string to = myParent.myInput.readString();
1729 std::string via = myParent.myInput.readString();
1732 result.emplace_back(ret);
1831 for (
const std::shared_ptr<libsumo::TraCIPhase>& p : logic.
phases) {
1843 content.
writeInt((
int)p->next.size());
1844 for (
int n : p->next) {
2286std::vector<std::string>
2384std::vector<std::string>
2399std::vector<libsumo::TraCINextTLSData>
2401 std::vector<libsumo::TraCINextTLSData> result;
2404 myParent.myInput.readInt();
2406 myParent.myInput.readUnsignedByte();
2407 const int n = myParent.myInput.readInt();
2408 for (
int i = 0; i < n; ++i) {
2410 myParent.myInput.readUnsignedByte();
2411 d.
id = myParent.myInput.readString();
2413 myParent.myInput.readUnsignedByte();
2414 d.
tlIndex = myParent.myInput.readInt();
2416 myParent.myInput.readUnsignedByte();
2417 d.
dist = myParent.myInput.readDouble();
2419 myParent.myInput.readUnsignedByte();
2420 d.
state = (char)myParent.myInput.readByte();
2422 result.push_back(d);
2428std::vector<libsumo::TraCIBestLanesData>
2430 std::vector<libsumo::TraCIBestLanesData> result;
2433 myParent.myInput.readInt();
2434 myParent.myInput.readUnsignedByte();
2436 const int n = myParent.myInput.readInt();
2437 for (
int i = 0; i < n; ++i) {
2439 myParent.myInput.readUnsignedByte();
2440 info.
laneID = myParent.myInput.readString();
2442 myParent.myInput.readUnsignedByte();
2443 info.
length = myParent.myInput.readDouble();
2445 myParent.myInput.readUnsignedByte();
2446 info.
occupation = myParent.myInput.readDouble();
2448 myParent.myInput.readUnsignedByte();
2451 myParent.myInput.readUnsignedByte();
2454 myParent.myInput.readUnsignedByte();
2455 const int m = myParent.myInput.readInt();
2456 for (
int j = 0; j < m; ++j) {
2460 result.push_back(info);
2467std::pair<std::string, double>
2474 myParent.myInput.readInt();
2475 myParent.myInput.readUnsignedByte();
2476 const std::string leaderID = myParent.myInput.readString();
2477 myParent.myInput.readUnsignedByte();
2478 const double gap = myParent.myInput.readDouble();
2479 return std::make_pair(leaderID, gap);
2485std::pair<std::string, double>
2492 myParent.myInput.readInt();
2493 myParent.myInput.readUnsignedByte();
2494 const std::string leaderID = myParent.myInput.readString();
2495 myParent.myInput.readUnsignedByte();
2496 const double gap = myParent.myInput.readDouble();
2497 return std::make_pair(leaderID, gap);
2510 myParent.myInput.readInt();
2511 myParent.myInput.readUnsignedByte();
2512 const int stateWithoutTraCI = myParent.myInput.readInt();
2513 myParent.myInput.readUnsignedByte();
2514 const int state = myParent.myInput.readInt();
2515 return std::make_pair(stateWithoutTraCI, state);
2617std::vector<std::string>
2649 const std::string& routeID,
2650 const std::string& typeID,
2652 const std::string& departLane,
2653 const std::string& departPos,
2654 const std::string& departSpeed,
2655 const std::string& arrivalLane,
2656 const std::string& arrivalPos,
2657 const std::string& arrivalSpeed,
2658 const std::string& fromTaz,
2659 const std::string& toTaz,
2660 const std::string& line,
2662 int personNumber)
const {
2664 if (depart ==
"-1") {
2665 depart =
toString(myParent.simulation.getCurrentTime() / 1000.0);
2782 content.
writeInt((
int)edges.size());
2783 for (
int i = 0; i < (int)edges.size(); ++i) {
2793 if (currentTravelTimes) {
2795 std::vector<std::string> edges = myParent.edge.getIDList();
2796 for (std::vector<std::string>::iterator it = edges.begin(); it != edges.end(); ++it) {
2797 myParent.edge.adaptTraveltime(*it, myParent.edge.getTraveltime(*it));
2936 const double duration,
const int flags,
const double startPos,
const double until)
const {
3020 for (
int i = 0; i < (int)via.size(); ++i) {
3066 bool noOpposite,
double downstreamDist,
double upstreamDist)
const {
3069 addSubscriptionFilterNoOpposite();
3071 if (downstreamDist >= 0) {
3072 addSubscriptionFilterDownstreamDistance(downstreamDist);
3074 if (upstreamDist >= 0) {
3075 addSubscriptionFilterUpstreamDistance(upstreamDist);
3098 addSubscriptionFilterLeadFollow(std::vector<int>({0}));
3099 if (downstreamDist >= 0) {
3100 addSubscriptionFilterDownstreamDistance(downstreamDist);
3102 if (upstreamDist >= 0) {
3103 addSubscriptionFilterUpstreamDistance(upstreamDist);
3109 if (abs(direction) != 1) {
3110 std::cerr <<
"Ignoring lane change subscription filter with non-neighboring lane offset direction " << direction <<
"\n";
3113 addSubscriptionFilterLeadFollow(std::vector<int>({0, direction}));
3115 addSubscriptionFilterNoOpposite();
3117 if (downstreamDist >= 0) {
3118 addSubscriptionFilterDownstreamDistance(downstreamDist);
3120 if (upstreamDist >= 0) {
3121 addSubscriptionFilterUpstreamDistance(upstreamDist);
3134 if (downstreamDist >= 0) {
3135 addSubscriptionFilterDownstreamDistance(downstreamDist);
3160 if (downstreamDist >= 0) {
3161 addSubscriptionFilterDownstreamDistance(downstreamDist);
3163 if (upstreamDist >= 0) {
3164 addSubscriptionFilterUpstreamDistance(upstreamDist);
3198 for (
int i : vals) {
3298std::vector<std::string>
3309 while (getRemainingStages(personID) > 1) {
3310 removeStage(personID, 1);
3312 removeStage(personID, 0);
3560 myParent.createCommand(myCmdGetID, var,
id, add);
3562 return myParent.myInput.readUnsignedByte();
3570 myParent.createCommand(myCmdGetID, var,
id, add);
3572 return myParent.myInput.readByte();
3581 myParent.createCommand(myCmdGetID, var,
id, add);
3583 return myParent.myInput.readInt();
3591 myParent.createCommand(myCmdGetID, var,
id, add);
3593 return myParent.myInput.readDouble();
3602 myParent.createCommand(myCmdGetID, var,
id, add);
3604 int size = myParent.myInput.readUnsignedByte();
3606 size = myParent.myInput.readInt();
3608 for (
int i = 0; i < size; ++i) {
3610 p.
x = myParent.myInput.readDouble();
3611 p.
y = myParent.myInput.readDouble();
3613 ret.
value.push_back(p);
3623 myParent.createCommand(myCmdGetID, var,
id, add);
3625 p.
x = myParent.myInput.readDouble();
3626 p.
y = myParent.myInput.readDouble();
3636 myParent.createCommand(myCmdGetID, var,
id, add);
3638 p.
x = myParent.myInput.readDouble();
3639 p.
y = myParent.myInput.readDouble();
3640 p.
z = myParent.myInput.readDouble();
3648 myParent.createCommand(myCmdGetID, var,
id, add);
3650 return myParent.myInput.readString();
3656std::vector<std::string>
3658 std::vector<std::string> r;
3659 myParent.createCommand(myCmdGetID, var,
id, add);
3661 const int size = myParent.myInput.readInt();
3662 for (
int i = 0; i < size; ++i) {
3663 r.push_back(myParent.myInput.readString());
3672 std::vector<double> r;
3673 myParent.createCommand(myCmdGetID, var,
id, add);
3675 const int size = myParent.myInput.readInt();
3676 for (
int i = 0; i < size; ++i) {
3677 r.push_back(myParent.myInput.readDouble());
3687 myParent.createCommand(myCmdGetID, var,
id, add);
3689 c.
r = (
unsigned char)myParent.myInput.readUnsignedByte();
3690 c.
g = (
unsigned char)myParent.myInput.readUnsignedByte();
3691 c.
b = (
unsigned char)myParent.myInput.readUnsignedByte();
3692 c.
a = (
unsigned char)myParent.myInput.readUnsignedByte();
3701 myParent.createCommand(myCmdGetID, var,
id, add);
3703 myParent.myInput.readInt();
3704 myParent.myInput.readUnsignedByte();
3705 s.
type = myParent.myInput.readInt();
3707 myParent.myInput.readUnsignedByte();
3708 s.
vType = myParent.myInput.readString();
3710 myParent.myInput.readUnsignedByte();
3711 s.
line = myParent.myInput.readString();
3713 myParent.myInput.readUnsignedByte();
3714 s.
destStop = myParent.myInput.readString();
3716 myParent.myInput.readUnsignedByte();
3717 s.
edges = myParent.myInput.readStringList();
3719 myParent.myInput.readUnsignedByte();
3720 s.
travelTime = myParent.myInput.readDouble();
3722 myParent.myInput.readUnsignedByte();
3723 s.
cost = myParent.myInput.readDouble();
3725 myParent.myInput.readUnsignedByte();
3726 s.
length = myParent.myInput.readDouble();
3728 myParent.myInput.readUnsignedByte();
3729 s.
intended = myParent.myInput.readString();
3731 myParent.myInput.readUnsignedByte();
3732 s.
depart = myParent.myInput.readDouble();
3734 myParent.myInput.readUnsignedByte();
3735 s.
departPos = myParent.myInput.readDouble();
3737 myParent.myInput.readUnsignedByte();
3738 s.
arrivalPos = myParent.myInput.readDouble();
3740 myParent.myInput.readUnsignedByte();
3747std::vector<std::string>
3768std::pair<std::string, std::string>
3776 myParent.myInput.readInt();
3777 myParent.myInput.readUnsignedByte();
3778 const std::string returnedKey = myParent.myInput.readString();
3779 myParent.myInput.readUnsignedByte();
3780 const std::string value = myParent.myInput.readString();
3781 return std::make_pair(returnedKey, value);
3783 return std::make_pair(key,
"");
3797 myParent.processSet(myCmdSetID);
3806 myParent.createCommand(myCmdSetID, var,
id, &content);
3807 myParent.processSet(myCmdSetID);
3816 myParent.createCommand(myCmdSetID, var,
id, &content);
3817 myParent.processSet(myCmdSetID);
3826 myParent.createCommand(myCmdSetID, var,
id, &content);
3827 myParent.processSet(myCmdSetID);
3835 content.
writeInt((
int)value.size());
3836 for (
const std::string& s : value) {
3839 myParent.createCommand(myCmdSetID, var,
id, &content);
3840 myParent.processSet(myCmdSetID);
3846 myParent.send_commandSubscribeObjectVariable(mySubscribeID, objID, beginTime, endTime, vars);
3848 myParent.check_resultState(inMsg, mySubscribeID);
3849 if (vars.size() > 0) {
3850 myParent.check_commandGetResult(inMsg, mySubscribeID);
3851 myParent.readVariableSubscription(mySubscribeID + 0x10, inMsg);
3858 myParent.send_commandSubscribeObjectContext(myContextSubscribeID, objID, beginTime, endTime, domain, range, vars);
3860 myParent.check_resultState(inMsg, myContextSubscribeID);
3861 myParent.check_commandGetResult(inMsg, myContextSubscribeID);
3862 myParent.readContextSubscription(myContextSubscribeID + 0x60, inMsg);
3868 return mySubscriptionResults;
3874 if (mySubscriptionResults.find(objID) != mySubscriptionResults.end()) {
3875 return mySubscriptionResults.find(objID)->second;
3884 return myContextSubscriptionResults;
3890 if (myContextSubscriptionResults.find(objID) != myContextSubscriptionResults.end()) {
3891 return myContextSubscriptionResults.find(objID)->second;
3900 mySubscriptionResults.clear();
3901 myContextSubscriptionResults.clear();
3907 return mySubscriptionResults;
3913 return myContextSubscriptionResults[objID];
double getElectricityConsumption(const std::string &edgeID) const
double getLastStepHaltingNumber(const std::string &edgeID) const
double getHCEmission(const std::string &edgeID) const
void adaptTraveltime(const std::string &edgeID, double time, double beginSeconds=0., double endSeconds=std::numeric_limits< double >::max()) const
double getLastStepOccupancy(const std::string &edgeID) const
double getLastStepLength(const std::string &edgeID) const
std::vector< std::string > getLastStepVehicleIDs(const std::string &edgeID) const
double getNOxEmission(const std::string &edgeID) const
void setMaxSpeed(const std::string &edgeID, double speed) const
double getCO2Emission(const std::string &edgeID) const
double getCOEmission(const std::string &edgeID) const
int getLaneNumber(const std::string &edgeID) const
void setEffort(const std::string &edgeID, double effort, double beginSeconds=0., double endSeconds=std::numeric_limits< double >::max()) const
double getNoiseEmission(const std::string &edgeID) const
double getFuelConsumption(const std::string &edgeID) const
double getTraveltime(const std::string &edgeID) const
int getLastStepVehicleNumber(const std::string &edgeID) const
std::string getStreetName(const std::string &id) const
double getLastStepMeanSpeed(const std::string &edgeID) const
double getPMxEmission(const std::string &edgeID) const
double getAdaptedTraveltime(const std::string &edgeID, double time) const
double getEffort(const std::string &edgeID, double time) const
void setOffset(const std::string &viewID, double x, double y) const
libsumo::TraCIPositionVector getBoundary(const std::string &viewID=DEFAULT_VIEW) const
std::string getSchema(const std::string &viewID=DEFAULT_VIEW) const
void setBoundary(const std::string &viewID, double xmin, double ymin, double xmax, double ymax) const
void setZoom(const std::string &viewID, double zoom) const
void trackVehicle(const std::string &viewID, const std::string &vehID) const
void setSchema(const std::string &viewID, const std::string &schemeName) const
libsumo::TraCIPosition getOffset(const std::string &viewID=DEFAULT_VIEW) const
double getZoom(const std::string &viewID=DEFAULT_VIEW) const
void screenshot(const std::string &viewID, const std::string &filename, const int width=-1, const int height=-1) const
std::vector< libsumo::TraCIVehicleData > getVehicleData(const std::string &loopID) const
int getIntervalVehicleNumber(const std::string &loopID) const
double getPosition(const std::string &loopID) const
double getLastStepMeanSpeed(const std::string &loopID) const
double getTimeSinceDetection(const std::string &loopID) const
double getLastStepMeanLength(const std::string &loopID) const
std::vector< std::string > getLastStepVehicleIDs(const std::string &loopID) const
double getLastStepOccupancy(const std::string &loopID) const
int getLastStepVehicleNumber(const std::string &loopID) const
std::string getLaneID(const std::string &loopID) const
libsumo::TraCIPosition getPosition(const std::string &junctionID) const
libsumo::TraCIPositionVector getShape(const std::string &junctionID) const
int getLastStepVehicleNumber(const std::string &laneID) const
double getPMxEmission(const std::string &laneID) const
int getLastStepHaltingNumber(const std::string &laneID) const
std::string getEdgeID(const std::string &laneID) const
void setDisallowed(const std::string &laneID, const std::vector< std::string > &disallowedClasses) const
libsumo::TraCIPositionVector getShape(const std::string &laneID) const
double getLastStepLength(const std::string &laneID) const
void setLength(const std::string &laneID, double length) const
double getLength(const std::string &laneID) const
int getLinkNumber(const std::string &laneID) const
double getTraveltime(const std::string &laneID) const
double getCOEmission(const std::string &laneID) const
void setMaxSpeed(const std::string &laneID, double speed) const
std::vector< std::string > getInternalFoes(const std::string &laneID) const
void setAllowed(const std::string &laneID, const std::vector< std::string > &allowedClasses) const
std::vector< std::string > getDisallowed(const std::string &laneID) const
double getNoiseEmission(const std::string &laneID) const
std::vector< std::string > getAllowed(const std::string &laneID) const
double getFuelConsumption(const std::string &laneID) const
double getWidth(const std::string &laneID) const
double getCO2Emission(const std::string &laneID) const
double getHCEmission(const std::string &laneID) const
std::vector< libsumo::TraCIConnection > getLinks(const std::string &laneID) const
double getMaxSpeed(const std::string &laneID) const
std::vector< std::string > getLastStepVehicleIDs(const std::string &laneID) const
double getElectricityConsumption(const std::string &laneID) const
std::vector< std::string > getFoes(const std::string &laneID, const std::string &toLaneID) const
double getLastStepMeanSpeed(const std::string &laneID) const
double getNOxEmission(const std::string &laneID) const
double getLastStepOccupancy(const std::string &laneID) const
std::vector< std::string > getLastStepVehicleIDs(const std::string &detID) const
int getLastStepVehicleNumber(const std::string &detID) const
std::vector< std::string > getExitLanes(const std::string &detID) const
std::vector< double > getExitPositions(const std::string &detID) const
double getLastStepMeanSpeed(const std::string &detID) const
int getLastStepHaltingNumber(const std::string &detID) const
std::vector< std::string > getEntryLanes(const std::string &detID) const
std::vector< double > getEntryPositions(const std::string &detID) const
libsumo::TraCIColor getColor(const std::string &poiID) const
void add(const std::string &poiID, double x, double y, const libsumo::TraCIColor &c, const std::string &type, int layer, const std::string &imgFile, double width, double height, double angle) const
std::string getImageFile(const std::string &poiID) const
void setWidth(const std::string &poiID, double width) const
libsumo::TraCIPosition getPosition(const std::string &poiID) const
void setImageFile(const std::string &poiID, const std::string &imageFile) const
void setHeight(const std::string &poiID, double height) const
void setAngle(const std::string &poiID, double angle) const
double getHeight(const std::string &poiID) const
double getAngle(const std::string &poiID) const
void remove(const std::string &poiID, int layer=0) const
void setColor(const std::string &poiID, const libsumo::TraCIColor &c) const
void setPosition(const std::string &poiID, double x, double y) const
double getWidth(const std::string &poiID) const
void setType(const std::string &poiID, const std::string &setType) const
std::string getType(const std::string &poiID) const
std::string getNextEdge(const std::string &personID) const
void setLength(const std::string &personID, double length) const
libsumo::TraCIColor getColor(const std::string &personID) const
double getSlope(const std::string &personID) const
int getRemainingStages(const std::string &personID) const
double getWaitingTime(const std::string &personID) const
void setSpeedFactor(const std::string &personID, double factor) const
libsumo::TraCIStage getStage(const std::string &personID, int nextStageIndex=0) const
void removeStage(const std::string &personID, int nextStageIndex) const
void add(const std::string &personID, const std::string &edgeID, double pos, double depart=libsumo::DEPARTFLAG_NOW, const std::string typeID="DEFAULT_PEDTYPE")
void appendWalkingStage(const std::string &personID, const std::vector< std::string > &edges, double arrivalPos, double duration=-1, double speed=-1, const std::string &stopID="")
void setSpeed(const std::string &personID, double speed) const
double getLength(const std::string &personID) const
void moveToXY(const std::string &personID, const std::string &edgeID, const double x, const double y, double angle, const int keepRoute) const
void setHeight(const std::string &personID, double height) const
void setType(const std::string &personID, const std::string &typeID) const
void setMinGap(const std::string &personID, double minGap) const
void moveTo(const std::string &personID, const std::string &edgeID, double position) const
libsumo::TraCIPosition getPosition(const std::string &personID) const
double getSpeedFactor(const std::string &personID) const
void removeStages(const std::string &personID) const
void setColor(const std::string &personID, const libsumo::TraCIColor &c) const
std::string getRoadID(const std::string &personID) const
double getSpeed(const std::string &personID) const
std::string getVehicle(const std::string &personID) const
void appendDrivingStage(const std::string &personID, const std::string &toEdge, const std::string &lines, const std::string &stopID="")
std::string getTypeID(const std::string &personID) const
void appendStage(const std::string &personID, const libsumo::TraCIStage &stage)
double getAngle(const std::string &personID) const
std::string getLaneID(const std::string &personID) const
libsumo::TraCIPosition getPosition3D(const std::string &personID) const
std::vector< std::string > getEdges(const std::string &personID, int nextStageIndex=0) const
void appendWaitingStage(const std::string &personID, double duration, const std::string &description="waiting", const std::string &stopID="")
double getLanePosition(const std::string &personID) const
void setWidth(const std::string &personID, double width) const
void rerouteTraveltime(const std::string &personID) const
libsumo::TraCIColor getColor(const std::string &polygonID) const
void setType(const std::string &polygonID, const std::string &setType) const
bool getFilled(const std::string &polygonID) const
void add(const std::string &polygonID, const libsumo::TraCIPositionVector &shape, const libsumo::TraCIColor &c, bool fill, const std::string &type, int layer) const
libsumo::TraCIPositionVector getShape(const std::string &polygonID) const
std::string getType(const std::string &polygonID) const
void remove(const std::string &polygonID, int layer=0) const
double getLineWidth(const std::string &polygonID) const
void setColor(const std::string &polygonID, const libsumo::TraCIColor &c) const
void setLineWidth(const std::string &polygonID, const double lineWidth) const
void setShape(const std::string &polygonID, const libsumo::TraCIPositionVector &shape) const
std::vector< std::string > getEdges(const std::string &routeID) const
void add(const std::string &routeID, const std::vector< std::string > &edges) const
int getDepartedNumber() const
double getDistance2D(double x1, double y1, double x2, double y2, bool isGeo=false, bool isDriving=false)
libsumo::TraCIPosition convert2D(const std::string &edgeID, double pos, int laneIndex=0, bool toGeo=false) const
std::vector< std::string > getStartingTeleportIDList() const
int getStartingTeleportNumber() const
int getEndingTeleportNumber() const
int getBusStopWaiting(const std::string &stopID) const
libsumo::TraCIStage findRoute(const std::string &fromEdge, const std::string &toEdge, const std::string &vType="", double pos=-1., int routingMode=0) const
libsumo::TraCIRoadPosition convertRoad(double x, double y, bool isGeo=false, const std::string &vClass="ignoring") const
void loadState(const std::string &path) const
int getCurrentTime() const
std::vector< std::string > getBusStopWaitingIDList(const std::string &stopID) const
int getDepartedPersonNumber() const
double getDistanceRoad(const std::string &edgeID1, double pos1, const std::string &edgeID2, double pos2, bool isDriving=false)
std::vector< std::string > getArrivedPersonIDList() const
void saveState(const std::string &destination) const
std::vector< std::string > getEndingTeleportIDList() const
int getMinExpectedNumber() const
std::vector< std::string > getDepartedPersonIDList() const
std::vector< std::string > getDepartedIDList() const
int getArrivedPersonNumber() const
std::vector< std::string > getLoadedIDList() const
int getLoadedNumber() const
std::vector< std::string > getArrivedIDList() const
int getArrivedNumber() const
std::string getOption(const std::string &option) const
libsumo::TraCIPositionVector getNetBoundary() const
void writeMessage(const std::string msg)
libsumo::TraCIPosition convertGeo(double x, double y, bool fromGeo=false) const
libsumo::TraCIPosition convert3D(const std::string &edgeID, double pos, int laneIndex=0, bool toGeo=false) const
int getUnsignedByte(int var, const std::string &id, tcpip::Storage *add=0) const
const libsumo::SubscriptionResults getContextSubscriptionResults(const std::string &objID) const
int getInt(int var, const std::string &id, tcpip::Storage *add=0) const
std::vector< std::string > getStringVector(int var, const std::string &id, tcpip::Storage *add=0) const
double getDouble(int var, const std::string &id, tcpip::Storage *add=0) const
libsumo::TraCIPosition getPos3D(int var, const std::string &id, tcpip::Storage *add=0) const
std::pair< std::string, std::string > getParameterWithKey(const std::string &objectID, const std::string &key) const
retrieve generic parameter and return (key, value) tuple
libsumo::TraCIColor getCol(int var, const std::string &id, tcpip::Storage *add=0) const
void clearSubscriptionResults()
const libsumo::SubscriptionResults getAllSubscriptionResults() const
void setStringVector(int var, const std::string &id, const std::vector< std::string > &value) const
std::vector< std::string > getIDList() const
libsumo::TraCIPositionVector getPolygon(int var, const std::string &id, tcpip::Storage *add=0) const
libsumo::SubscriptionResults & getModifiableSubscriptionResults()
const libsumo::TraCIResults getSubscriptionResults(const std::string &objID) const
void setString(int var, const std::string &id, const std::string &value) const
void subscribeContext(const std::string &objID, int domain, double range, const std::vector< int > &vars, double beginTime, double endTime) const
void setParameter(const std::string &objectID, const std::string &key, const std::string &value) const
set generic paramter
std::string getParameter(const std::string &objectID, const std::string &key) const
retrieve generic parameter
std::vector< double > getDoubleVector(int var, const std::string &id, tcpip::Storage *add=0) const
void setInt(int var, const std::string &id, int value) const
int getByte(int var, const std::string &id, tcpip::Storage *add=0) const
libsumo::TraCIStage getTraCIStage(int var, const std::string &id, tcpip::Storage *add=0) const
void subscribe(const std::string &objID, const std::vector< int > &vars, double beginTime, double endTime) const
std::string getString(int var, const std::string &id, tcpip::Storage *add=0) const
libsumo::TraCIPosition getPos(int var, const std::string &id, tcpip::Storage *add=0) const
const libsumo::ContextSubscriptionResults getAllContextSubscriptionResults() const
libsumo::SubscriptionResults & getModifiableContextSubscriptionResults(const std::string &objID)
void setDouble(int var, const std::string &id, double value) const
int getServedPersonCount(const std::string &tlsID, int index) const
std::string getRedYellowGreenState(const std::string &tlsID) const
int getPhase(const std::string &tlsID) const
std::string getPhaseName(const std::string &tlsID) const
void setRedYellowGreenState(const std::string &tlsID, const std::string &state) const
std::string getProgram(const std::string &tlsID) const
void setPhase(const std::string &tlsID, int index) const
void setPhaseName(const std::string &tlsID, const std::string &name) const
double getNextSwitch(const std::string &tlsID) const
std::vector< std::vector< libsumo::TraCILink > > getControlledLinks(const std::string &tlsID) const
double getPhaseDuration(const std::string &tlsID) const
std::vector< std::string > getControlledLanes(const std::string &tlsID) const
std::vector< libsumo::TraCILogic > getAllProgramLogics(const std::string &tlsID) const
void setPhaseDuration(const std::string &tlsID, double phaseDuration) const
void setProgramLogic(const std::string &tlsID, const libsumo::TraCILogic &logic) const
void setProgram(const std::string &tlsID, const std::string &programID) const
std::vector< libsumo::TraCINextTLSData > getNextTLS(const std::string &vehID) const
void changeLane(const std::string &vehicleID, int laneIndex, double duration) const
void setMinGap(const std::string &vehicleID, double minGap) const
double getLateralSpeed(const std::string &vehicleID) const
void setMaxSpeed(const std::string &vehicleID, double speed) const
void setPreviousSpeed(const std::string &vehicleID, double prevSpeed, double prevAcceleration=std::numeric_limits< int >::min()) const
double getSpeed(const std::string &vehicleID) const
int getStopState(const std::string &vehicleID) const
double getWaitingTime(const std::string &vehicleID) const
void addSubscriptionFilterCFManeuver(double downstreamDist=-1, double upstreamDist=-1) const
double getCOEmission(const std::string &vehicleID) const
void addSubscriptionFilterStringList(int filterType, const std::vector< std::string > &vals) const
void changeTarget(const std::string &vehicleID, const std::string &edgeID) const
libsumo::TraCIPosition getPosition(const std::string &vehicleID) const
bool isRouteValid(const std::string &vehicleID) const
void addSubscriptionFilterByteList(int filterType, const std::vector< int > &vals) const
double getSecureGap(const std::string &vehicleID, double speed, double leaderSpeed, double leaderMaxDecel, const std::string &leaderID="") const
void setSpeedFactor(const std::string &vehicleID, double factor) const
void setShapeClass(const std::string &vehicleID, const std::string &clazz) const
void addSubscriptionFilterLateralDistance(double lateralDist, double downstreamDist=-1, double foeDistToJunction=-1) const
void setVia(const std::string &vehicleID, const std::vector< std::string > &via) const
void setEmissionClass(const std::string &vehicleID, const std::string &clazz) const
double getTau(const std::string &vehicleID) const
double getDistance(const std::string &vehicleID) const
void remove(const std::string &vehicleID, char reason=libsumo::REMOVE_VAPORIZED) const
void openGap(const std::string &vehicleID, double newTau, double duration, double changeRate, double maxDecel) const
void moveTo(const std::string &vehicleID, const std::string &laneID, double position, int reason=libsumo::MOVE_TELEPORT) const
void setSpeed(const std::string &vehicleID, double speed) const
std::string getEmissionClass(const std::string &vehicleID) const
void setStop(const std::string vehicleID, const std::string edgeID, const double endPos=1., const int laneIndex=0, const double duration=std::numeric_limits< double >::max(), const int flags=0, const double startPos=std::numeric_limits< int >::min(), const double until=-1) const
void setRouteID(const std::string &vehicleID, const std::string &routeID) const
std::pair< int, int > getLaneChangeState(const std::string &vehicleID, int direction) const
double getNoiseEmission(const std::string &vehicleID) const
std::string getShapeClass(const std::string &vehicleID) const
void addSubscriptionFilterLeadFollow(const std::vector< int > &lanes) const
std::string getLine(const std::string &vehicleID) const
double getElectricityConsumption(const std::string &vehicleID) const
double getSpeedFactor(const std::string &vehicleID) const
double getNOxEmission(const std::string &vehicleID) const
void setRoute(const std::string &vehicleID, const std::vector< std::string > &edge) const
int getSignals(const std::string &vehicleID) const
libsumo::TraCIColor getColor(const std::string &vehicleID) const
int getPersonCapacity(const std::string &vehicleID) const
void setSignals(const std::string &vehicleID, int signals) const
std::string getRoadID(const std::string &vehicleID) const
void addSubscriptionFilterVType(const std::vector< std::string > &vTypes) const
void addSubscriptionFilterUpstreamDistance(double dist) const
void addSubscriptionFilterFloat(int filterType, double val) const
double getAllowedSpeed(const std::string &vehicleID) const
void addSubscriptionFilterLanes(const std::vector< int > &lanes, bool noOpposite=false, double downstreamDist=-1, double upstreamDist=-1) const
double getCO2Emission(const std::string &vehicleID) const
double getFuelConsumption(const std::string &vehicleID) const
double getHCEmission(const std::string &vehicleID) const
void addSubscriptionFilterNoOpposite() const
void addSubscriptionFilterLCManeuver(int direction, bool noOpposite=false, double downstreamDist=-1, double upstreamDist=-1) const
std::pair< std::string, double > getLeader(const std::string &vehicleID, double dist) const
double getAcceleration(const std::string &vehicleID) const
std::vector< std::string > getVia(const std::string &vehicleID) const
void addSubscriptionFilterVClass(const std::vector< std::string > &vClasses) const
double getImperfection(const std::string &vehicleID) const
std::string getLaneID(const std::string &vehicleID) const
double getAngle(const std::string &vehicleID) const
void addSubscriptionFilterDownstreamDistance(double dist) const
double getMinGap(const std::string &vehicleID) const
void addSubscriptionFilterEmpty(int filterType) const
double getStopArrivalDelay(const std::string &vehicleID) const
void setAcceleration(const std::string &vehicleID, double accel, double duration) const
std::vector< std::string > getPersonIDList(const std::string &vehicleID) const
double getStopDelay(const std::string &vehicleID) const
double getMinGapLat(const std::string &vehicleID) const
void setLine(const std::string &vehicleID, const std::string &line) const
double getSlope(const std::string &vehicleID) const
void setColor(const std::string &vehicleID, const libsumo::TraCIColor &c) const
void add(const std::string &vehicleID, const std::string &routeID, const std::string &typeID="DEFAULT_VEHTYPE", std::string depart="-1", const std::string &departLane="first", const std::string &departPos="base", const std::string &departSpeed="0", const std::string &arrivalLane="current", const std::string &arrivalPos="max", const std::string &arrivalSpeed="current", const std::string &fromTaz="", const std::string &toTaz="", const std::string &line="", int personCapacity=0, int personNumber=0) const
libsumo::TraCIPosition getPosition3D(const std::string &vehicleID) const
void setLaneChangeMode(const std::string &vehicleID, int mode) const
void setRoutingMode(const std::string &vehicleID, int routingMode) const
void addSubscriptionFilterTurn(double downstreamDist=-1, double upstreamDist=-1) const
double getDecel(const std::string &vehicleID) const
void moveToXY(const std::string &vehicleID, const std::string &edgeID, const int lane, const double x, const double y, const double angle, const int keepRoute) const
double getHeight(const std::string &veihcleID) const
int getRouteIndex(const std::string &vehicleID) const
double getMaxSpeedLat(const std::string &vehicleID) const
void changeSublane(const std::string &vehicleID, double latDist) const
std::string getLateralAlignment(const std::string &vehicleID) const
std::string getRouteID(const std::string &vehicleID) const
double getLanePosition(const std::string &vehicleID) const
int getLaneChangeMode(const std::string &vehicleID) const
int getSpeedMode(const std::string &vehicleID) const
std::vector< std::string > getRoute(const std::string &vehicleID) const
double getLateralLanePosition(const std::string &vehicleID) const
std::pair< std::string, double > getFollower(const std::string &vehicleID, double dist) const
double getPMxEmission(const std::string &vehicleID) const
double getLength(const std::string &vehicleID) const
double getMaxSpeed(const std::string &vehicleID) const
std::string getVehicleClass(const std::string &vehicleID) const
double getSpeedWithoutTraCI(const std::string &vehicleID) const
int getRoutingMode(const std::string &vehicleID) const
double getWidth(const std::string &vehicleID) const
double getSpeedDeviation(const std::string &vehicleID) const
int getPersonNumber(const std::string &vehicleID) const
double getFollowSpeed(const std::string &vehicleID, double speed, double gap, double leaderSpeed, double leaderMaxDecel, const std::string &leaderID="") const
void setType(const std::string &vehicleID, const std::string &typeID) const
void addSubscriptionFilterFieldOfVision(double angle) const
std::vector< libsumo::TraCIBestLanesData > getBestLanes(const std::string &vehicleID) const
double getAccel(const std::string &vehicleID) const
void setSpeedMode(const std::string &vehicleID, int mode) const
void slowDown(const std::string &vehicleID, double speed, double duration) const
std::string getTypeID(const std::string &vehicleID) const
double getAccumulatedWaitingTime(const std::string &vehicleID) const
void changeLaneRelative(const std::string &vehicleID, int laneChange, double duration) const
void rerouteTraveltime(const std::string &vehicleID, bool currentTravelTimes=true) const
double getStopSpeed(const std::string &vehicleID, double speed, double gap) const
int getLaneIndex(const std::string &vehicleID) const
double getSpeedDeviation(const std::string &typeID) const
double getSpeedFactor(const std::string &typeID) const
void setImperfection(const std::string &typeID, double imperfection) const
void setApparentDecel(const std::string &typeID, double decel) const
void setHeight(const std::string &typeID, double height) const
std::string getShapeClass(const std::string &typeID) const
double getMinGapLat(const std::string &typeID) const
void copy(const std::string &origTypeID, const std::string &newTypeID) const
int getPersonCapacity(const std::string &typeID) const
void setVehicleClass(const std::string &typeID, const std::string &clazz) const
void setColor(const std::string &typeID, const libsumo::TraCIColor &c) const
void setDecel(const std::string &typeID, double decel) const
void setWidth(const std::string &typeID, double width) const
double getApparentDecel(const std::string &typeID) const
double getDecel(const std::string &typeID) const
void setLateralAlignment(const std::string &typeID, const std::string &latAlignment) const
void setMaxSpeed(const std::string &typeID, double speed) const
double getMinGap(const std::string &typeID) const
std::string getVehicleClass(const std::string &typeID) const
void setShapeClass(const std::string &typeID, const std::string &shapeClass) const
double getMaxSpeedLat(const std::string &typeID) const
double getEmergencyDecel(const std::string &typeID) const
double getWidth(const std::string &typeID) const
libsumo::TraCIColor getColor(const std::string &typeID) const
double getTau(const std::string &typeID) const
double getMaxSpeed(const std::string &typeID) const
double getLength(const std::string &typeID) const
std::string getEmissionClass(const std::string &typeID) const
double getImperfection(const std::string &typeID) const
void setEmissionClass(const std::string &typeID, const std::string &clazz) const
void setAccel(const std::string &typeID, double accel) const
void setMinGap(const std::string &typeID, double minGap) const
double getAccel(const std::string &typeID) const
void setSpeedFactor(const std::string &typeID, double factor) const
double getHeight(const std::string &typeID) const
void setEmergencyDecel(const std::string &typeID, double decel) const
void setSpeedDeviation(const std::string &typeID, double deviation) const
void setMaxSpeedLat(const std::string &typeID, double speed) const
std::string getLateralAlignment(const std::string &typeID) const
void setMinGapLat(const std::string &typeID, double minGapLat) const
void setLength(const std::string &typeID, double length) const
void setTau(const std::string &typeID, double tau) const
RouteScope route
Scope for interaction with routes.
std::pair< int, std::string > getVersion()
return TraCI API and SUMO version
void setOrder(int order)
set priority (execution order) for the client
void readVariableSubscription(int cmdId, tcpip::Storage &inMsg)
tcpip::Storage myInput
The reusable input storage.
MeMeScope multientryexit
Scope for interaction with multi-entry/-exit detectors.
VehicleTypeScope vehicletype
Scope for interaction with vehicle types.
void send_commandSubscribeObjectVariable(int domID, const std::string &objID, double beginTime, double endTime, const std::vector< int > &vars) const
Sends a SubscribeVariable request.
void send_commandSimulationStep(double time) const
Sends a SimulationStep command.
GUIScope gui
Scope for interaction with the gui.
void check_resultState(tcpip::Storage &inMsg, int command, bool ignoreCommandId=false, std::string *acknowledgement=0) const
Validates the result state of a command.
PolygonScope polygon
Scope for interaction with polygons.
static std::string toString(const T &t, std::streamsize accuracy=PRECISION)
void connect(const std::string &host, int port)
Connects to the specified SUMO server.
tcpip::Socket * mySocket
The socket.
void load(const std::vector< std::string > &args)
Let sumo load a simulation using the given command line like options.
LaneAreaScope lanearea
Scope for interaction with lanes.
void simulationStep(double time=0)
Advances by one step (or up to the given time)
void createFilterCommand(int cmdID, int varID, tcpip::Storage *add=nullptr) const
void createCommand(int cmdID, int varID, const std::string &objID, tcpip::Storage *add=nullptr) const
Sends a GetVariable / SetVariable request if mySocket is connected. Otherwise writes to myOutput only...
void close()
ends the simulation and closes the connection
LaneScope lane
Scope for interaction with lanes.
std::map< int, TraCIScopeWrapper * > myDomains
void send_commandSubscribeObjectContext(int domID, const std::string &objID, double beginTime, double endTime, int domain, double range, const std::vector< int > &vars) const
Sends a SubscribeContext request.
bool processSet(int command)
TrafficLightScope trafficlights
Scope for interaction with traffic lights.
tcpip::Storage myOutput
The reusable output storage.
POIScope poi
Scope for interaction with POIs.
void closeSocket()
Closes the connection.
int check_commandGetResult(tcpip::Storage &inMsg, int command, int expectedType=-1, bool ignoreCommandId=false) const
Validates the result state of a command.
VehicleScope vehicle
Scope for interaction with vehicles.
JunctionScope junction
Scope for interaction with junctions.
void send_commandClose() const
Sends a Close command.
void send_commandSetOrder(int order) const
Sends a SetOrder command.
RouteProbeScope routeprobe
Scope for interaction with route probes.
EdgeScope edge
Scope for interaction with edges.
bool processGet(int command, int expectedType, bool ignoreCommandId=false)
SimulationScope simulation
Scope for interaction with the simulation.
void readContextSubscription(int cmdId, tcpip::Storage &inMsg)
void readVariables(tcpip::Storage &inMsg, const std::string &objectID, int variableCount, libsumo::SubscriptionResults &into)
PersonScope person
Scope for interaction with persons.
RerouterScope rerouter
Scope for interaction with rerouters.
An error which allows to continue.
bool receiveExact(Storage &)
Receive a complete TraCI message from Socket::socket_.
void sendExact(const Storage &)
void connect()
Connects to host_:port_.
virtual std::string readString()
virtual void writeString(const std::string &s)
virtual unsigned int position() const
virtual void writeInt(int)
virtual void writeDouble(double)
virtual int readUnsignedByte()
virtual void writeStringList(const std::vector< std::string > &s)
virtual void writeUnsignedByte(int)
StorageType::size_type size() const
virtual void writeByte(int)
virtual void writeStorage(tcpip::Storage &store)
virtual double readDouble()
TRACI_CONST double INVALID_DOUBLE_VALUE
TRACI_CONST int RESPONSE_SUBSCRIBE_GUI_VARIABLE
TRACI_CONST int LAST_STEP_VEHICLE_ID_LIST
TRACI_CONST int VAR_EXIT_POSITIONS
TRACI_CONST int TYPE_COLOR
TRACI_CONST int VAR_MIN_EXPECTED_VEHICLES
TRACI_CONST int CMD_SAVE_SIMSTATE
TRACI_CONST int FILTER_TYPE_DOWNSTREAM_DIST
TRACI_CONST int VAR_IMAGEFILE
TRACI_CONST int VAR_EDGES
TRACI_CONST int LAST_STEP_VEHICLE_NUMBER
TRACI_CONST int POSITION_3D
TRACI_CONST int POSITION_ROADMAP
TRACI_CONST int VAR_NOXEMISSION
TRACI_CONST int VAR_LANECHANGE_MODE
TRACI_CONST int VAR_ARRIVED_VEHICLES_NUMBER
TRACI_CONST int LAST_STEP_PERSON_ID_LIST
TRACI_CONST int RTYPE_NOTIMPLEMENTED
TRACI_CONST int RESPONSE_SUBSCRIBE_ROUTE_VARIABLE
TRACI_CONST int FILTER_TYPE_NOOPPOSITE
TRACI_CONST int VAR_VEHICLECLASS
TRACI_CONST int LANE_LINKS
TRACI_CONST int TRACI_ID_LIST
TRACI_CONST int VAR_LATALIGNMENT
TRACI_CONST int VAR_DEPARTED_VEHICLES_NUMBER
TRACI_CONST int CMD_GET_TL_VARIABLE
TRACI_CONST int VAR_VIEW_BOUNDARY
TRACI_CONST int LAST_STEP_VEHICLE_DATA
TRACI_CONST int CMD_CHANGESUBLANE
TRACI_CONST int CMD_LOAD_SIMSTATE
TRACI_CONST int CMD_SET_EDGE_VARIABLE
TRACI_CONST int RESPONSE_SUBSCRIBE_LANE_VARIABLE
TRACI_CONST int VAR_LAST_INTERVAL_NUMBER
TRACI_CONST int VAR_ROUTING_MODE
TRACI_CONST int VAR_MINGAP
TRACI_CONST int VAR_VEHICLE
TRACI_CONST int VAR_SECURE_GAP
TRACI_CONST int VAR_LANES
TRACI_CONST int VAR_SHAPECLASS
TRACI_CONST int VAR_WAITING_TIME
std::map< std::string, libsumo::SubscriptionResults > ContextSubscriptionResults
TRACI_CONST int LANE_LINK_NUMBER
TRACI_CONST int VAR_EDGE_TRAVELTIME
TRACI_CONST int VAR_ROAD_ID
TRACI_CONST int CMD_GET_VEHICLE_VARIABLE
TRACI_CONST int VAR_SCREENSHOT
TRACI_CONST int VAR_SPEED_FACTOR
TRACI_CONST int MOVE_TO_XY
TRACI_CONST int VAR_FOLLOW_SPEED
TRACI_CONST int VAR_STOP_ARRIVALDELAY
TRACI_CONST int VAR_SPEED_LAT
TRACI_CONST int LAST_STEP_LENGTH
TRACI_CONST int FILTER_TYPE_FIELD_OF_VISION
TRACI_CONST int TL_CONTROLLED_LANES
TRACI_CONST int VAR_ANGLE
TRACI_CONST int TYPE_COMPOUND
TRACI_CONST int LANE_EDGE_ID
TRACI_CONST int VAR_NEXT_TLS
TRACI_CONST int RESPONSE_SUBSCRIBE_PERSON_VARIABLE
TRACI_CONST int VAR_EDGE_EFFORT
TRACI_CONST int RESPONSE_SUBSCRIBE_TL_VARIABLE
TRACI_CONST int VAR_VIEW_OFFSET
TRACI_CONST int RESPONSE_SUBSCRIBE_MULTIENTRYEXIT_VARIABLE
TRACI_CONST int VAR_ROUTE
TRACI_CONST int VAR_BEST_LANES
TRACI_CONST int VAR_ALLOWED_SPEED
TRACI_CONST int VAR_LANE_INDEX
TRACI_CONST int VAR_PMXEMISSION
TRACI_CONST int VAR_SPEED_WITHOUT_TRACI
TRACI_CONST int VAR_DEPARTED_PERSONS_NUMBER
TRACI_CONST int TL_COMPLETE_DEFINITION_RYG
TRACI_CONST int TYPE_UBYTE
TRACI_CONST int VAR_STAGE
TRACI_CONST int CMD_SET_POI_VARIABLE
TRACI_CONST int VAR_MOVE_TO
TRACI_CONST int RESPONSE_SUBSCRIBE_VEHICLE_VARIABLE
TRACI_CONST int VAR_PERSON_NUMBER
TRACI_CONST int RESPONSE_SUBSCRIBE_REROUTER_VARIABLE
TRACI_CONST int CMD_SET_POLYGON_VARIABLE
TRACI_CONST int VAR_COEMISSION
TRACI_CONST int RESPONSE_SUBSCRIBE_INDUCTIONLOOP_VARIABLE
TRACI_CONST int VAR_COLOR
TRACI_CONST int VAR_POSITION
TRACI_CONST int VAR_WIDTH
TRACI_CONST int VAR_PERSON_CAPACITY
TRACI_CONST int VAR_VIEW_SCHEMA
TRACI_CONST int POSITION_2D
TRACI_CONST int VAR_MAXSPEED
TRACI_CONST int VAR_ARRIVED_PERSONS_IDS
TRACI_CONST int VAR_LEADER
TRACI_CONST int CMD_CHANGETARGET
TRACI_CONST int CMD_CLOSE
TRACI_CONST int TYPE_POLYGON
TRACI_CONST int LAST_STEP_MEAN_SPEED
TRACI_CONST int STAGE_WAITING
TRACI_CONST int CMD_SET_ROUTE_VARIABLE
TRACI_CONST int CMD_SETORDER
TRACI_CONST int VAR_CO2EMISSION
TRACI_CONST int RESPONSE_SUBSCRIBE_JUNCTION_VARIABLE
TRACI_CONST int FILTER_TYPE_VTYPE
TRACI_CONST int CMD_REROUTE_TRAVELTIME
TRACI_CONST int VAR_NET_BOUNDING_BOX
TRACI_CONST int TYPE_STRINGLIST
TRACI_CONST int APPEND_STAGE
TRACI_CONST int VAR_VIEW_ZOOM
TRACI_CONST int CMD_SET_SIM_VARIABLE
TRACI_CONST int TL_CONTROLLED_LINKS
TRACI_CONST int TYPE_INTEGER
TRACI_CONST int VAR_PREV_SPEED
TRACI_CONST int VAR_ROUTE_VALID
TRACI_CONST int VAR_SPEEDSETMODE
TRACI_CONST int POSITION_LON_LAT
TRACI_CONST int CMD_ADD_SUBSCRIPTION_FILTER
TRACI_CONST int CMD_SET_VEHICLE_VARIABLE
TRACI_CONST int VAR_FUELCONSUMPTION
TRACI_CONST int CMD_SET_GUI_VARIABLE
std::map< std::string, libsumo::TraCIResults > SubscriptionResults
{object->{variable->value}}
TRACI_CONST int VAR_SLOPE
TRACI_CONST int VAR_SHAPE
TRACI_CONST int LAST_STEP_VEHICLE_HALTING_NUMBER
TRACI_CONST int VAR_LENGTH
TRACI_CONST int VAR_MAXSPEED_LAT
TRACI_CONST int VAR_HCEMISSION
TRACI_CONST int VAR_BUS_STOP_WAITING_IDS
TRACI_CONST int VAR_PARAMETER
TRACI_CONST int VAR_LANEPOSITION
TRACI_CONST int CMD_SET_VEHICLETYPE_VARIABLE
TRACI_CONST int CMD_SET_PERSON_VARIABLE
TRACI_CONST int VAR_DEPARTED_VEHICLES_IDS
TRACI_CONST int VAR_TELEPORT_ENDING_VEHICLES_NUMBER
TRACI_CONST int CMD_GET_SIM_VARIABLE
TRACI_CONST int CMD_MESSAGE
TRACI_CONST int VAR_LANE_ID
TRACI_CONST int VAR_STOP_SPEED
TRACI_CONST int VAR_IMPERFECTION
TRACI_CONST int RESPONSE_SUBSCRIBE_ROUTEPROBE_VARIABLE
TRACI_CONST int LAST_STEP_OCCUPANCY
TRACI_CONST int VAR_HEIGHT
TRACI_CONST int RESPONSE_SUBSCRIBE_LANEAREA_VARIABLE
TRACI_CONST int VAR_APPARENT_DECEL
TRACI_CONST int TL_NEXT_SWITCH
TRACI_CONST int VAR_NOISEEMISSION
TRACI_CONST int VAR_LOADED_VEHICLES_IDS
TRACI_CONST int VAR_EXIT_LANES
TRACI_CONST int FILTER_TYPE_LEAD_FOLLOW
TRACI_CONST int RESPONSE_SUBSCRIBE_VEHICLETYPE_VARIABLE
TRACI_CONST int VAR_DELTA_T
TRACI_CONST int REQUEST_DRIVINGDIST
TRACI_CONST int CMD_GET_LANE_VARIABLE
TRACI_CONST int STAGE_WALKING
TRACI_CONST int VAR_POSITION3D
TRACI_CONST int LANE_DISALLOWED
TRACI_CONST int REMOVE_STAGE
TRACI_CONST int VAR_SPEED
TRACI_CONST int VAR_DECEL
TRACI_CONST int VAR_SIGNALS
TRACI_CONST int VAR_PARAMETER_WITH_KEY
TRACI_CONST int FILTER_TYPE_UPSTREAM_DIST
TRACI_CONST int TYPE_DOUBLELIST
TRACI_CONST int VAR_ACCUMULATED_WAITING_TIME
TRACI_CONST int VAR_MINGAP_LAT
TRACI_CONST int VAR_DEPARTED_PERSONS_IDS
TRACI_CONST int INVALID_INT_VALUE
TRACI_CONST int VAR_ARRIVED_PERSONS_NUMBER
TRACI_CONST int TL_PROGRAM
TRACI_CONST int VAR_ROUTE_INDEX
TRACI_CONST int TL_PHASE_DURATION
TRACI_CONST int CMD_SLOWDOWN
TRACI_CONST int VAR_NEXT_EDGE
TRACI_CONST int FILTER_TYPE_TURN
TRACI_CONST int VAR_ACCELERATION
TRACI_CONST int FIND_ROUTE
TRACI_CONST int VAR_ROUTE_ID
TRACI_CONST int TL_PHASE_INDEX
TRACI_CONST int POSITION_CONVERSION
TRACI_CONST int TYPE_DOUBLE
TRACI_CONST int DISTANCE_REQUEST
TRACI_CONST int TYPE_BYTE
TRACI_CONST int TL_CURRENT_PHASE
TRACI_CONST int CMD_OPENGAP
TRACI_CONST int TL_COMPLETE_PROGRAM_RYG
TRACI_CONST int VAR_LOADED_VEHICLES_NUMBER
TRACI_CONST int VAR_TELEPORT_ENDING_VEHICLES_IDS
TRACI_CONST int CMD_SET_TL_VARIABLE
TRACI_CONST int VAR_LANEPOSITION_LAT
TRACI_CONST int FILTER_TYPE_VCLASS
TRACI_CONST int CMD_CHANGELANE
TRACI_CONST int VAR_CURRENT_TRAVELTIME
TRACI_CONST int VAR_TELEPORT_STARTING_VEHICLES_NUMBER
TRACI_CONST int TL_RED_YELLOW_GREEN_STATE
TRACI_CONST int RESPONSE_SUBSCRIBE_POI_VARIABLE
TRACI_CONST int VAR_STOP_DELAY
TRACI_CONST int VAR_TELEPORT_STARTING_VEHICLES_IDS
TRACI_CONST int CMD_GETVERSION
TRACI_CONST int REQUEST_AIRDIST
TRACI_CONST int VAR_BUS_STOP_WAITING
TRACI_CONST int RTYPE_ERR
TRACI_CONST int CMD_SIMSTEP
TRACI_CONST int VAR_TIME_STEP
TRACI_CONST int VAR_EMERGENCY_DECEL
TRACI_CONST int VAR_ARRIVED_VEHICLES_IDS
TRACI_CONST int RESPONSE_SUBSCRIBE_SIM_VARIABLE
TRACI_CONST int STAGE_DRIVING
TRACI_CONST int CMD_GET_INDUCTIONLOOP_VARIABLE
TRACI_CONST int LAST_STEP_TIME_SINCE_DETECTION
TRACI_CONST int VAR_STOPSTATE
TRACI_CONST int VAR_FOLLOWER
TRACI_CONST int POSITION_LON_LAT_ALT
TRACI_CONST int VAR_EMISSIONCLASS
TRACI_CONST int FILTER_TYPE_LANES
TRACI_CONST int VAR_ACCEL
TRACI_CONST int RESPONSE_SUBSCRIBE_POLYGON_VARIABLE
std::map< int, std::shared_ptr< libsumo::TraCIResult > > TraCIResults
{variable->value}
TRACI_CONST int VAR_STAGES_REMAINING
TRACI_CONST int VAR_DISTANCE
TRACI_CONST int LANE_ALLOWED
TRACI_CONST int VAR_OPTION
TRACI_CONST int RESPONSE_SUBSCRIBE_EDGE_VARIABLE
TRACI_CONST int TL_CURRENT_PROGRAM
TRACI_CONST int FILTER_TYPE_LATERAL_DIST
TRACI_CONST int VAR_ELECTRICITYCONSUMPTION
TRACI_CONST int VAR_SPEED_DEVIATION
TRACI_CONST int TYPE_STRING
double length
The length than can be driven from that lane without lane change.
double occupation
The traffic density along length.
bool allowsContinuation
Whether this lane allows continuing the route.
int bestLaneOffset
The offset of this lane from the best lane.
std::vector< std::string > continuationLanes
The sequence of lanes that best allows continuing the route without lane change.
std::string laneID
The id of the lane.
std::map< std::string, std::string > subParameter
std::vector< std::shared_ptr< libsumo::TraCIPhase > > phases
double dist
The distance to the tls.
int tlIndex
The tls index of the controlled link.
std::string id
The id of the next tls.
char state
The current state of the tls.
A 2D or 3D-position, for 2D positions z == INVALID_DOUBLE_VALUE.
std::vector< TraCIPosition > value
An edgeId, position and laneIndex.
std::string intended
id of the intended vehicle for public transport ride
int type
The type of stage (walking, driving, ...)
std::string destStop
The id of the destination stop.
double travelTime
duration of the stage in seconds
double departPos
position on the lane when starting the stage
std::string description
arbitrary description string
std::string line
The line or the id of the vehicle type.
double depart
intended depart time for public transport ride or INVALID_DOUBLE_VALUE
std::vector< std::string > edges
The sequence of edges to travel.
double arrivalPos
position on the lane when ending the stage
std::string vType
The vehicle type when using a private car or bike.
mirrors MSInductLoop::VehicleData
std::string id
The id of the vehicle.
double entryTime
Entry-time of the vehicle in [s].
std::string typeID
Type of the vehicle in.
double length
Length of the vehicle.
double leaveTime
Leave-time of the vehicle in [s].