Eclipse SUMO - Simulation of Urban MObility
libtraci/Lane.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-2022 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/****************************************************************************/
23// C++ TraCI client API implementation
24/****************************************************************************/
25#include <config.h>
26
27#define LIBTRACI 1
28#include <libsumo/Lane.h>
30#include "Domain.h"
31
32
33namespace libtraci {
34
35typedef Domain<libsumo::CMD_GET_LANE_VARIABLE, libsumo::CMD_SET_LANE_VARIABLE> Dom;
36
37
38
39// ===========================================================================
40// static member definitions
41// ===========================================================================
42std::vector<std::string>
43Lane::getIDList() {
45}
46
47
48int
49Lane::getIDCount() {
51}
52
53
54std::string
55Lane::getEdgeID(std::string laneID) {
57}
58
59
60double
61Lane::getLength(std::string laneID) {
62 return Dom::getDouble(libsumo::VAR_LENGTH, laneID);
63}
64
65
66double
67Lane::getMaxSpeed(std::string laneID) {
69}
70
71double
72Lane::getFriction(std::string laneID) {
74}
75
76
77int
78Lane::getLinkNumber(std::string laneID) {
80}
81
82
83std::vector<libsumo::TraCIConnection>
84Lane::getLinks(std::string laneID) {
85 std::vector<libsumo::TraCIConnection> ret;
87 sto.readUnsignedByte();
88 sto.readInt();
89
90 int linkNo = sto.readInt();
91 for (int i = 0; i < linkNo; ++i) {
92
93 sto.readUnsignedByte();
94 std::string approachedLane = sto.readString();
95
96 sto.readUnsignedByte();
97 std::string approachedLaneInternal = sto.readString();
98
99 sto.readUnsignedByte();
100 bool hasPrio = sto.readUnsignedByte() != 0;
101
102 sto.readUnsignedByte();
103 bool isOpen = sto.readUnsignedByte() != 0;
104
105 sto.readUnsignedByte();
106 bool hasFoe = sto.readUnsignedByte() != 0;
107
108 sto.readUnsignedByte();
109 std::string state = sto.readString();
110
111 sto.readUnsignedByte();
112 std::string direction = sto.readString();
113
114 sto.readUnsignedByte();
115 double length = sto.readDouble();
116
117 ret.push_back(libsumo::TraCIConnection(approachedLane,
118 hasPrio,
119 isOpen,
120 hasFoe,
121 approachedLaneInternal,
122 state,
123 direction,
124 length));
125
126 }
127 return ret;
128}
129
130
131std::vector<std::string>
132Lane::getAllowed(std::string laneID) {
134}
135
136
137std::vector<std::string>
138Lane::getDisallowed(std::string laneID) {
139 return Dom::getStringVector(libsumo::LANE_DISALLOWED, laneID); // negation yields disallowed
140}
141
142
144Lane::getShape(std::string laneID) {
145 return Dom::getPolygon(libsumo::VAR_SHAPE, laneID);
146}
147
148
149double
150Lane::getWidth(std::string laneID) {
151 return Dom::getDouble(libsumo::VAR_WIDTH, laneID);
152}
153
154
155double
156Lane::getCO2Emission(std::string laneID) {
158}
159
160
161double
162Lane::getCOEmission(std::string laneID) {
164}
165
166
167double
168Lane::getHCEmission(std::string laneID) {
170}
171
172
173double
174Lane::getPMxEmission(std::string laneID) {
176}
177
178
179double
180Lane::getNOxEmission(std::string laneID) {
182}
183
184double
185Lane::getFuelConsumption(std::string laneID) {
187}
188
189
190double
191Lane::getNoiseEmission(std::string laneID) {
193}
194
195
196double
197Lane::getElectricityConsumption(std::string laneID) {
199}
200
201
202double
203Lane::getLastStepMeanSpeed(std::string laneID) {
205}
206
207
208double
209Lane::getLastStepOccupancy(std::string laneID) {
211}
212
213
214double
215Lane::getLastStepLength(std::string laneID) {
217}
218
219
220double
221Lane::getWaitingTime(std::string laneID) {
223}
224
225
226double
227Lane::getTraveltime(std::string laneID) {
229}
230
231
232int
233Lane::getLastStepVehicleNumber(std::string laneID) {
235}
236
237int
238Lane::getLastStepHaltingNumber(std::string laneID) {
240}
241
242
243std::vector<std::string>
244Lane::getLastStepVehicleIDs(std::string laneID) {
246}
247
248
249std::vector<std::string>
250Lane::getFoes(const std::string& laneID, const std::string& toLaneID) {
251 tcpip::Storage content;
253 content.writeString(toLaneID);
254 return Dom::getStringVector(libsumo::VAR_FOES, laneID, &content);
255}
256
257// XXX: there seems to be no "Dom::getFoes"
258std::vector<std::string>
259Lane::getInternalFoes(const std::string& laneID) {
260 //tcpip::Storage content;
261 //content.writeUnsignedByte(libsumo::TYPE_STRING);
262 //content.writeString("");
263 //return Dom::getStringVector(libsumo::VAR_FOES, laneID, &content);
264 return getFoes(laneID, "");
265 //return Dom::getFoes(laneID, "");
266}
267
268const std::vector<std::string>
269Lane::getPendingVehicles(const std::string& laneID) {
271}
272
273void
274Lane::setAllowed(std::string laneID, std::string allowedClass) {
275 Dom::setString(libsumo::LANE_ALLOWED, laneID, allowedClass);
276}
277
278
279void
280Lane::setAllowed(std::string laneID, std::vector<std::string> allowedClasses) {
281 Dom::setStringVector(libsumo::LANE_ALLOWED, laneID, allowedClasses);
282}
283
284
285void
286Lane::setDisallowed(std::string laneID, std::vector<std::string> disallowedClasses) {
287 Dom::setStringVector(libsumo::LANE_DISALLOWED, laneID, disallowedClasses);
288}
289
290
291void
292Lane::setMaxSpeed(std::string laneID, double speed) {
294}
295
296void
297Lane::setFriction(std::string laneID, double friction) {
298 Dom::setDouble(libsumo::VAR_FRICTION, laneID, friction);
299}
300
301
302void
303Lane::setLength(std::string laneID, double length) {
304 Dom::setDouble(libsumo::VAR_LENGTH, laneID, length);
305}
306
307
310
311}
312
313
314/****************************************************************************/
#define LIBTRACI_SUBSCRIPTION_IMPLEMENTATION(CLASS, DOMAIN)
Definition: Domain.h:38
#define LIBTRACI_PARAMETER_IMPLEMENTATION(CLASS, DOMAIN)
Definition: Domain.h:77
C++ TraCI client API implementation.
static void setDouble(int var, const std::string &id, double value)
Definition: Domain.h:220
static std::vector< std::string > getStringVector(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:171
static void setStringVector(int var, const std::string &id, const std::vector< std::string > &value)
Definition: Domain.h:234
static std::string getString(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:167
static int getInt(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:125
static libsumo::TraCIPositionVector getPolygon(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:133
static double getDouble(int var, const std::string &id, tcpip::Storage *add=nullptr)
Definition: Domain.h:129
static void setString(int var, const std::string &id, const std::string &value)
Definition: Domain.h:227
static tcpip::Storage & get(int var, const std::string &id, tcpip::Storage *add=nullptr, int expectedType=libsumo::TYPE_COMPOUND)
Definition: Domain.h:111
virtual std::string readString()
Definition: storage.cpp:180
virtual void writeString(const std::string &s)
Definition: storage.cpp:197
virtual int readUnsignedByte()
Definition: storage.cpp:155
virtual void writeUnsignedByte(int)
Definition: storage.cpp:165
virtual double readDouble()
Definition: storage.cpp:362
virtual int readInt()
Definition: storage.cpp:311
TRACI_CONST int LAST_STEP_VEHICLE_ID_LIST
TRACI_CONST int LAST_STEP_VEHICLE_NUMBER
TRACI_CONST int VAR_NOXEMISSION
TRACI_CONST int LANE_LINKS
TRACI_CONST int TRACI_ID_LIST
TRACI_CONST int VAR_WAITING_TIME
TRACI_CONST int LANE_LINK_NUMBER
TRACI_CONST int LAST_STEP_LENGTH
TRACI_CONST int LANE_EDGE_ID
TRACI_CONST int VAR_PMXEMISSION
TRACI_CONST int VAR_COEMISSION
TRACI_CONST int VAR_WIDTH
TRACI_CONST int VAR_MAXSPEED
TRACI_CONST int LAST_STEP_MEAN_SPEED
TRACI_CONST int VAR_CO2EMISSION
TRACI_CONST int VAR_PENDING_VEHICLES
TRACI_CONST int VAR_FUELCONSUMPTION
TRACI_CONST int VAR_SHAPE
TRACI_CONST int LAST_STEP_VEHICLE_HALTING_NUMBER
TRACI_CONST int VAR_LENGTH
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 VAR_FRICTION
TRACI_CONST int VAR_CURRENT_TRAVELTIME
TRACI_CONST int VAR_FOES
TRACI_CONST int LANE_ALLOWED
TRACI_CONST int VAR_ELECTRICITYCONSUMPTION
TRACI_CONST int TYPE_STRING
Domain< libsumo::CMD_GET_BUSSTOP_VARIABLE, libsumo::CMD_SET_BUSSTOP_VARIABLE > Dom
A list of positions.
Definition: TraCIDefs.h:215