Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2017-2025 German Aerospace Center (DLR) and others.
4 : // This program and the accompanying materials are made available under the
5 : // terms of the Eclipse Public License 2.0 which is available at
6 : // https://www.eclipse.org/legal/epl-2.0/
7 : // This Source Code may also be made available under the following Secondary
8 : // Licenses when the conditions for such availability set forth in the Eclipse
9 : // Public License 2.0 are satisfied: GNU General Public License, version 2
10 : // or later which is available at
11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 : /****************************************************************************/
14 : /// @file VehicleType.h
15 : /// @author Gregor Laemmel
16 : /// @date 04.04.2017
17 : ///
18 : // C++ TraCI client API implementation
19 : /****************************************************************************/
20 :
21 : #pragma once
22 : #include <string>
23 : #include <libsumo/TraCIDefs.h>
24 : #include <libsumo/TraCIConstants.h>
25 :
26 :
27 : #define LIBSUMO_VEHICLE_TYPE_GETTER \
28 : static double getLength(const std::string& typeID); \
29 : static double getMaxSpeed(const std::string& typeID); \
30 : static std::string getVehicleClass(const std::string& typeID); \
31 : static double getSpeedFactor(const std::string& typeID); \
32 : static double getAccel(const std::string& typeID); \
33 : static double getDecel(const std::string& typeID); \
34 : static double getEmergencyDecel(const std::string& typeID); \
35 : static double getApparentDecel(const std::string& typeID); \
36 : static double getImperfection(const std::string& typeID); \
37 : static double getTau(const std::string& typeID); \
38 : static std::string getEmissionClass(const std::string& typeID); \
39 : static std::string getShapeClass(const std::string& typeID); \
40 : static double getMinGap(const std::string& typeID); \
41 : static double getWidth(const std::string& typeID); \
42 : static double getHeight(const std::string& typeID); \
43 : static double getMass(const std::string& typeID); \
44 : static libsumo::TraCIColor getColor(const std::string& typeID); \
45 : static double getMinGapLat(const std::string& typeID); \
46 : static double getMaxSpeedLat(const std::string& typeID); \
47 : static std::string getLateralAlignment(const std::string& typeID); \
48 : static int getPersonCapacity(const std::string& typeID); \
49 : static double getActionStepLength(const std::string& typeID); \
50 : \
51 : static double getSpeedDeviation(const std::string& typeID); \
52 : static double getBoardingDuration(const std::string& typeID); \
53 : static double getImpatience(const std::string& typeID); \
54 :
55 :
56 : #define LIBSUMO_VEHICLE_TYPE_SETTER \
57 : static void setLength(const std::string& typeID, double length); \
58 : static void setMaxSpeed(const std::string& typeID, double speed); \
59 : static void setVehicleClass(const std::string& typeID, const std::string& clazz); \
60 : static void setSpeedFactor(const std::string& typeID, double factor); \
61 : static void setAccel(const std::string& typeID, double accel); \
62 : static void setDecel(const std::string& typeID, double decel); \
63 : static void setEmergencyDecel(const std::string& typeID, double decel); \
64 : static void setApparentDecel(const std::string& typeID, double decel); \
65 : static void setImperfection(const std::string& typeID, double imperfection); \
66 : static void setTau(const std::string& typeID, double tau); \
67 : static void setEmissionClass(const std::string& typeID, const std::string& clazz); \
68 : static void setShapeClass(const std::string& typeID, const std::string& shapeClass); \
69 : static void setWidth(const std::string& typeID, double width); \
70 : static void setHeight(const std::string& typeID, double height); \
71 : static void setMass(const std::string& typeID, double mass); \
72 : static void setColor(const std::string& typeID, const libsumo::TraCIColor& color); \
73 : static void setMinGap(const std::string& typeID, double minGap); \
74 : static void setMinGapLat(const std::string& typeID, double minGapLat); \
75 : static void setMaxSpeedLat(const std::string& typeID, double speed); \
76 : static void setLateralAlignment(const std::string& typeID, const std::string& latAlignment); \
77 : static void setActionStepLength(const std::string& typeID, double actionStepLength, bool resetActionOffset=true); \
78 : static void setBoardingDuration(const std::string& typeID, double boardingDuration); \
79 : static void setImpatience(const std::string& typeID, double impatience); \
80 :
81 : // ===========================================================================
82 : // class declarations
83 : // ===========================================================================
84 : #ifndef LIBTRACI
85 : class MSVehicleType;
86 : #endif
87 :
88 :
89 : // ===========================================================================
90 : // class definitions
91 : // ===========================================================================
92 : /**
93 : * @class VehicleType
94 : * @brief C++ TraCI client API implementation
95 : */
96 : namespace LIBSUMO_NAMESPACE {
97 : class VehicleType {
98 : public:
99 : LIBSUMO_VEHICLE_TYPE_GETTER
100 : LIBSUMO_ID_PARAMETER_API
101 :
102 : LIBSUMO_VEHICLE_TYPE_SETTER
103 : static void copy(const std::string& origTypeID, const std::string& newTypeID);
104 :
105 : static void setSpeedDeviation(const std::string& typeID, double deviation);
106 : static double getScale(const std::string& typeID);
107 : static void setScale(const std::string& typeID, double value);
108 :
109 0 : LIBSUMO_SUBSCRIPTION_API
110 :
111 : #ifndef LIBTRACI
112 : #ifndef SWIG
113 : static MSVehicleType* getVType(std::string id);
114 :
115 : static std::shared_ptr<VariableWrapper> makeWrapper();
116 :
117 : static bool handleVariable(const std::string& objID, const int variable, VariableWrapper* wrapper, tcpip::Storage* paramData);
118 :
119 : static bool handleVariableWithID(const std::string& objID, const std::string& typeID, const int variable, VariableWrapper* wrapper, tcpip::Storage* paramData);
120 :
121 : private:
122 : static SubscriptionResults mySubscriptionResults;
123 : static ContextSubscriptionResults myContextSubscriptionResults;
124 :
125 : #endif
126 : #endif
127 :
128 : private:
129 : /// @brief invalidated standard constructor
130 : VehicleType() = delete;
131 : };
132 :
133 :
134 : }
|