Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
MSMoveReminder.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2003-2024 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/****************************************************************************/
22// Something on a lane to be noticed about vehicle movement
23/****************************************************************************/
24#pragma once
25#include <config.h>
26
27#include <iostream>
28#include <map>
31#ifdef HAVE_FOX
33#endif
34
35
36// ===========================================================================
37// class declarations
38// ===========================================================================
40class MSLane;
41
42
43// ===========================================================================
44// class definitions
45// ===========================================================================
65public:
71 MSMoveReminder(const std::string& description, MSLane* const lane = nullptr, const bool doAdd = true);
72
73
76 virtual ~MSMoveReminder() {}
77
78
83 const MSLane* getLane() const {
84 return myLane;
85 }
86
87
127
128
131
142 virtual bool notifyEnter(SUMOTrafficObject& veh, Notification reason, const MSLane* enteredLane) {
143 UNUSED_PARAMETER(reason);
144 UNUSED_PARAMETER(&veh);
145 UNUSED_PARAMETER(&enteredLane);
146 return true;
147 }
148
149
163 virtual bool notifyMove(SUMOTrafficObject& veh,
164 double oldPos,
165 double newPos,
166 double newSpeed) {
167 UNUSED_PARAMETER(oldPos);
168 UNUSED_PARAMETER(newPos);
169 UNUSED_PARAMETER(newSpeed);
170 UNUSED_PARAMETER(&veh);
171 return true;
172 }
173
183 virtual bool notifyIdle(SUMOTrafficObject& veh) {
184 UNUSED_PARAMETER(&veh);
185 return true;
186 }
187
189 virtual void notifyParking() {}
190
192 virtual void notifyStopEnded() {}
193
207 virtual bool notifyLeave(SUMOTrafficObject& veh, double lastPos, Notification reason, const MSLane* enteredLane = nullptr) {
208 UNUSED_PARAMETER(&veh);
209 UNUSED_PARAMETER(lastPos);
210 UNUSED_PARAMETER(reason);
211 UNUSED_PARAMETER(enteredLane);
212 return true;
213 }
214
228 virtual bool notifyLeaveBack(SUMOTrafficObject& veh, Notification reason, const MSLane* leftLane) {
229 UNUSED_PARAMETER(&veh);
230 UNUSED_PARAMETER(reason);
231 UNUSED_PARAMETER(leftLane);
232 return true;
233 }
234
235 // TODO: Documentation
236 void updateDetector(SUMOTrafficObject& veh, double entryPos, double leavePos,
237 SUMOTime entryTime, SUMOTime currentTime, SUMOTime leaveTime,
238 bool cleanUp);
239
241
258 virtual void notifyMoveInternal(const SUMOTrafficObject& veh,
259 const double frontOnLane,
260 const double timeOnLane,
261 const double meanSpeedFrontOnLane,
262 const double meanSpeedVehicleOnLane,
263 const double travelledDistanceFrontOnLane,
264 const double travelledDistanceVehicleOnLane,
265 const double meanLengthOnLane) {
266 UNUSED_PARAMETER(&veh);
267 UNUSED_PARAMETER(frontOnLane);
268 UNUSED_PARAMETER(timeOnLane);
269 UNUSED_PARAMETER(meanSpeedFrontOnLane);
270 UNUSED_PARAMETER(meanSpeedVehicleOnLane);
271 UNUSED_PARAMETER(travelledDistanceFrontOnLane);
272 UNUSED_PARAMETER(travelledDistanceVehicleOnLane);
273 UNUSED_PARAMETER(meanLengthOnLane);
274 }
275
276 void setDescription(const std::string& description) {
277 myDescription = description;
278 }
279
280 const std::string& getDescription() const {
281 return myDescription;
282 }
283
284 // @brief return whether this moveReminder triggers parking reroute
285 virtual bool isParkingRerouter() const {
286 return false;
287 }
288
289protected:
291
292protected:
293
297 std::string myDescription;
298
299#ifdef HAVE_FOX
301 mutable FXMutex myNotificationMutex;
302#endif
303
304private:
305 std::map<long long int, std::pair<SUMOTime, double> > myLastVehicleUpdateValues;
306
307
308private:
309 MSMoveReminder& operator=(const MSMoveReminder&); // just to avoid a compiler warning
310
311};
long long int SUMOTime
Definition GUI.h:36
#define UNUSED_PARAMETER(x)
Definition StdDefs.h:30
Representation of a lane in the micro simulation.
Definition MSLane.h:84
Something on a lane to be noticed about vehicle movement.
virtual bool notifyMove(SUMOTrafficObject &veh, double oldPos, double newPos, double newSpeed)
Checks whether the reminder still has to be notified about the vehicle moves.
virtual void notifyMoveInternal(const SUMOTrafficObject &veh, const double frontOnLane, const double timeOnLane, const double meanSpeedFrontOnLane, const double meanSpeedVehicleOnLane, const double travelledDistanceFrontOnLane, const double travelledDistanceVehicleOnLane, const double meanLengthOnLane)
Internal notification about the vehicle moves.
std::map< long long int, std::pair< SUMOTime, double > > myLastVehicleUpdateValues
void setDescription(const std::string &description)
virtual bool notifyEnter(SUMOTrafficObject &veh, Notification reason, const MSLane *enteredLane)
Checks whether the reminder is activated by a vehicle entering the lane.
const std::string & getDescription() const
virtual void notifyStopEnded()
called to update state for stopped vehicles
Notification
Definition of a vehicle state.
@ NOTIFICATION_VAPORIZED_TRACI
The vehicle got removed via TraCI.
@ NOTIFICATION_ARRIVED
The vehicle arrived at its destination (is deleted)
@ NOTIFICATION_TELEPORT_ARRIVED
The vehicle was teleported out of the net.
@ NOTIFICATION_PARKING_REROUTE
The vehicle needs another parking area.
@ NOTIFICATION_VAPORIZED_CALIBRATOR
The vehicle got removed by a calibrator.
@ NOTIFICATION_VAPORIZED_GUI
The vehicle got removed via the GUI.
@ NOTIFICATION_DEPARTED
The vehicle has departed (was inserted into the network)
@ NOTIFICATION_SEGMENT
The vehicle changes the segment (meso only)
@ NOTIFICATION_LANE_CHANGE
The vehicle changes lanes (micro only)
@ NOTIFICATION_VAPORIZED_VAPORIZER
The vehicle got vaporized with a vaporizer.
@ NOTIFICATION_JUNCTION
The vehicle arrived at a junction.
@ NOTIFICATION_VAPORIZED_BREAKDOWN
The vehicle got removed via stationfinder device.
@ NOTIFICATION_PARKING
The vehicle starts or ends parking.
@ NOTIFICATION_VAPORIZED_COLLISION
The vehicle got removed by a collision.
@ NOTIFICATION_LOAD_STATE
The vehicle has been loaded from a state file.
@ NOTIFICATION_TELEPORT
The vehicle is being teleported.
@ NOTIFICATION_TELEPORT_CONTINUATION
The vehicle continues being teleported past an edge.
MSMoveReminder & operator=(const MSMoveReminder &)
virtual ~MSMoveReminder()
Destructor.
virtual bool isParkingRerouter() const
std::string myDescription
a description of this moveReminder
virtual void notifyParking()
called to update state for parking vehicles
MSLane * myLane
Lane on which the reminder works.
void removeFromVehicleUpdateValues(SUMOTrafficObject &veh)
const MSLane * getLane() const
Returns the lane the reminder works on.
virtual bool notifyLeaveBack(SUMOTrafficObject &veh, Notification reason, const MSLane *leftLane)
Called if the vehicle's back leaves the reminder's lane.
virtual bool notifyIdle(SUMOTrafficObject &veh)
Computes idling emission values and adds them to the emission sums.
void updateDetector(SUMOTrafficObject &veh, double entryPos, double leavePos, SUMOTime entryTime, SUMOTime currentTime, SUMOTime leaveTime, bool cleanUp)
virtual bool notifyLeave(SUMOTrafficObject &veh, double lastPos, Notification reason, const MSLane *enteredLane=nullptr)
Called if the vehicle leaves the reminder's lane.
Representation of a vehicle, person, or container.