Eclipse SUMO - Simulation of Urban MObility
Subscription.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
14 // Subscription representation for libsumo and TraCI
15 /****************************************************************************/
16 #ifndef Subscription_h
17 #define Subscription_h
18 
19 
20 // ===========================================================================
21 // included modules
22 // ===========================================================================
23 #include <vector>
24 #include <libsumo/TraCIDefs.h>
25 
26 
27 // ===========================================================================
28 // class definitions
29 // ===========================================================================
30 namespace libsumo {
31 
35  // No filters
37  // Filter by list of lanes relative to ego vehicle
39  // Exclude vehicles on opposite (and other) lanes from context subscription result
41  // Specify maximal downstream distance for vehicles in context subscription result
43  // Specify maximal upstream distance for vehicles in context subscription result
45  // Only return leader and follower on specified lanes in context subscription result
47  // Only return foes on upcoming junction in context subscription result
48  SUBS_FILTER_TURN = 1 << 6,
49  // Only return vehicles of the given vClass in context subscription result
51  // Only return vehicles of the given vType in context subscription result
53  // Only return vehicles within field of vision in context subscription result
54  // NOTE: relies on rTree, therefore incompatible with SUBS_FILTER_NO_RTREE
56  // Filter category for measuring distances along the road network instead of using the usual rtree query
58  // Filter category for maneuver filters
60 };
61 
62 
63 
67 class Subscription {
68 public:
78  Subscription(int commandIdArg, const std::string& idArg,
79  const std::vector<int>& variablesArg,
80  const std::vector<std::vector<unsigned char>>& paramsArg,
81  SUMOTime beginTimeArg, SUMOTime endTimeArg,
82  int contextDomainArg, double rangeArg)
83  : commandId(commandIdArg),
84  id(idArg),
85  variables(variablesArg),
86  parameters(paramsArg),
87  beginTime(beginTimeArg),
88  endTime(endTimeArg),
89  contextDomain(contextDomainArg),
90  range(rangeArg),
92  filterLanes(),
95  filterVTypes(),
96  filterVClasses(0),
98 
102  std::string id;
104  std::vector<int> variables;
106  std::vector<std::vector<unsigned char> > parameters;
114  double range;
115 
119  std::vector<int> filterLanes;
125  std::set<std::string> filterVTypes;
130 };
131 
133 public:
135  typedef bool(*SubscriptionHandler)(const std::string& objID, const int variable, VariableWrapper* wrapper);
136  VariableWrapper(SubscriptionHandler handler = nullptr) : handle(handler) {}
138  virtual void setContext(const std::string& /* refID */) {}
139  virtual void clear() {}
140  virtual bool wrapDouble(const std::string& objID, const int variable, const double value) = 0;
141  virtual bool wrapInt(const std::string& objID, const int variable, const int value) = 0;
142  virtual bool wrapString(const std::string& objID, const int variable, const std::string& value) = 0;
143  virtual bool wrapStringList(const std::string& objID, const int variable, const std::vector<std::string>& value) = 0;
144  virtual bool wrapPosition(const std::string& objID, const int variable, const TraCIPosition& value) = 0;
145  virtual bool wrapColor(const std::string& objID, const int variable, const TraCIColor& value) = 0;
146  virtual bool wrapRoadPosition(const std::string& objID, const int variable, const TraCIRoadPosition& value) = 0;
147 };
148 }
149 
150 
151 #endif
libsumo::Subscription::Subscription
Subscription(int commandIdArg, const std::string &idArg, const std::vector< int > &variablesArg, const std::vector< std::vector< unsigned char >> &paramsArg, SUMOTime beginTimeArg, SUMOTime endTimeArg, int contextDomainArg, double rangeArg)
Constructor.
Definition: Subscription.h:78
libsumo::Subscription::activeFilters
int activeFilters
Active filters for the subscription (bitset,.
Definition: Subscription.h:117
libsumo::Subscription::filterUpstreamDist
double filterUpstreamDist
Upstream distance specified by the upstream distance filter.
Definition: Subscription.h:123
libsumo::VariableWrapper::wrapString
virtual bool wrapString(const std::string &objID, const int variable, const std::string &value)=0
libsumo::TraCIPosition
A 3D-position.
Definition: TraCIDefs.h:109
libsumo::Subscription::filterDownstreamDist
double filterDownstreamDist
Downstream distance specified by the downstream distance filter.
Definition: Subscription.h:121
libsumo::VariableWrapper
Definition: Subscription.h:132
libsumo::SUBS_FILTER_VCLASS
@ SUBS_FILTER_VCLASS
Definition: Subscription.h:50
libsumo::Subscription::filterLanes
std::vector< int > filterLanes
lanes specified by the lanes filter
Definition: Subscription.h:119
SUMOTime
long long int SUMOTime
Definition: SUMOTime.h:34
libsumo::Subscription::id
std::string id
The id of the object that is subscribed.
Definition: Subscription.h:102
libsumo::VariableWrapper::wrapRoadPosition
virtual bool wrapRoadPosition(const std::string &objID, const int variable, const TraCIRoadPosition &value)=0
libsumo::Subscription::endTime
SUMOTime endTime
The end time of the subscription.
Definition: Subscription.h:110
libsumo::TraCIColor
A color.
Definition: TraCIDefs.h:135
libsumo::SUBS_FILTER_MANEUVER
@ SUBS_FILTER_MANEUVER
Definition: Subscription.h:59
libsumo::Subscription::variables
std::vector< int > variables
The subscribed variables.
Definition: Subscription.h:104
libsumo::VariableWrapper::wrapColor
virtual bool wrapColor(const std::string &objID, const int variable, const TraCIColor &value)=0
libsumo::SUBS_FILTER_NOOPPOSITE
@ SUBS_FILTER_NOOPPOSITE
Definition: Subscription.h:40
libsumo::SUBS_FILTER_NONE
@ SUBS_FILTER_NONE
Definition: Subscription.h:36
libsumo
Definition: Edge.cpp:29
libsumo::Subscription::parameters
std::vector< std::vector< unsigned char > > parameters
The parameters for the subscribed variables.
Definition: Subscription.h:106
libsumo::Subscription::commandId
int commandId
commandIdArg The command id of the subscription
Definition: Subscription.h:100
libsumo::SUBS_FILTER_TURN
@ SUBS_FILTER_TURN
Definition: Subscription.h:48
libsumo::VariableWrapper::wrapDouble
virtual bool wrapDouble(const std::string &objID, const int variable, const double value)=0
libsumo::SUBS_FILTER_UPSTREAM_DIST
@ SUBS_FILTER_UPSTREAM_DIST
Definition: Subscription.h:44
libsumo::Subscription
Representation of a subscription.
Definition: Subscription.h:67
libsumo::Subscription::filterFieldOfVisionOpeningAngle
double filterFieldOfVisionOpeningAngle
Opening angle (in deg) specified by the field of vision filter.
Definition: Subscription.h:129
libsumo::SubscriptionFilterType
SubscriptionFilterType
Filter types for context subscriptions.
Definition: Subscription.h:34
libsumo::VariableWrapper::VariableWrapper
VariableWrapper(SubscriptionHandler handler=nullptr)
Definition: Subscription.h:136
libsumo::VariableWrapper::wrapStringList
virtual bool wrapStringList(const std::string &objID, const int variable, const std::vector< std::string > &value)=0
libsumo::Subscription::filterVClasses
int filterVClasses
vClasses specified by the vClasses filter,
Definition: Subscription.h:127
libsumo::VariableWrapper::SubscriptionHandler
bool(* SubscriptionHandler)(const std::string &objID, const int variable, VariableWrapper *wrapper)
Definition of a method to be called for serving an associated commandID.
Definition: Subscription.h:135
libsumo::Subscription::beginTime
SUMOTime beginTime
The begin time of the subscription.
Definition: Subscription.h:108
libsumo::SUBS_FILTER_LANES
@ SUBS_FILTER_LANES
Definition: Subscription.h:38
libsumo::SUBS_FILTER_NO_RTREE
@ SUBS_FILTER_NO_RTREE
Definition: Subscription.h:57
libsumo::Subscription::range
double range
The range of the context.
Definition: Subscription.h:114
libsumo::VariableWrapper::wrapInt
virtual bool wrapInt(const std::string &objID, const int variable, const int value)=0
libsumo::SUBS_FILTER_DOWNSTREAM_DIST
@ SUBS_FILTER_DOWNSTREAM_DIST
Definition: Subscription.h:42
libsumo::SUBS_FILTER_FIELD_OF_VISION
@ SUBS_FILTER_FIELD_OF_VISION
Definition: Subscription.h:55
libsumo::VariableWrapper::setContext
virtual void setContext(const std::string &)
Definition: Subscription.h:138
libsumo::TraCIRoadPosition
An edgeId, position and laneIndex.
Definition: TraCIDefs.h:121
libsumo::Subscription::contextDomain
int contextDomain
The domain ID of the context.
Definition: Subscription.h:112
libsumo::SUBS_FILTER_LEAD_FOLLOW
@ SUBS_FILTER_LEAD_FOLLOW
Definition: Subscription.h:46
libsumo::SUBS_FILTER_VTYPE
@ SUBS_FILTER_VTYPE
Definition: Subscription.h:52
libsumo::VariableWrapper::wrapPosition
virtual bool wrapPosition(const std::string &objID, const int variable, const TraCIPosition &value)=0
libsumo::VariableWrapper::handle
SubscriptionHandler handle
Definition: Subscription.h:137
TraCIDefs.h
libsumo::Subscription::filterVTypes
std::set< std::string > filterVTypes
vTypes specified by the vTypes filter
Definition: Subscription.h:125
libsumo::VariableWrapper::clear
virtual void clear()
Definition: Subscription.h:139