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>
32#ifdef HAVE_FOX
34#endif
35
36
37// ===========================================================================
38// class declarations
39// ===========================================================================
41class MSLane;
42
43
44// ===========================================================================
45// class definitions
46// ===========================================================================
66public:
72 MSMoveReminder(const std::string& description, MSLane* const lane = nullptr, const bool doAdd = true);
73
74
77 virtual ~MSMoveReminder() {}
78
79
84 const MSLane* getLane() const {
85 return myLane;
86 }
87
88
130
131
134
145 virtual bool notifyEnter(SUMOTrafficObject& veh, Notification reason, const MSLane* enteredLane) {
146 UNUSED_PARAMETER(reason);
147 UNUSED_PARAMETER(&veh);
148 UNUSED_PARAMETER(&enteredLane);
149 return true;
150 }
151
152
166 virtual bool notifyMove(SUMOTrafficObject& veh,
167 double oldPos,
168 double newPos,
169 double newSpeed) {
170 UNUSED_PARAMETER(oldPos);
171 UNUSED_PARAMETER(newPos);
172 UNUSED_PARAMETER(newSpeed);
173 UNUSED_PARAMETER(&veh);
174 return true;
175 }
176
186 virtual bool notifyIdle(SUMOTrafficObject& veh) {
187 UNUSED_PARAMETER(&veh);
188 return true;
189 }
190
192 virtual void notifyParking() {}
193
195 virtual void notifyStopEnded() {}
196
210 virtual bool notifyLeave(SUMOTrafficObject& veh, double lastPos, Notification reason, const MSLane* enteredLane = nullptr) {
211 UNUSED_PARAMETER(&veh);
212 UNUSED_PARAMETER(lastPos);
213 UNUSED_PARAMETER(reason);
214 UNUSED_PARAMETER(enteredLane);
215 return true;
216 }
217
231 virtual bool notifyLeaveBack(SUMOTrafficObject& veh, Notification reason, const MSLane* leftLane) {
232 UNUSED_PARAMETER(&veh);
233 UNUSED_PARAMETER(reason);
234 UNUSED_PARAMETER(leftLane);
235 return true;
236 }
237
238 // TODO: Documentation
239 void updateDetector(SUMOTrafficObject& veh, double entryPos, double leavePos,
240 SUMOTime entryTime, SUMOTime currentTime, SUMOTime leaveTime,
241 bool cleanUp);
242
244
261 virtual void notifyMoveInternal(const SUMOTrafficObject& veh,
262 const double frontOnLane,
263 const double timeOnLane,
264 const double meanSpeedFrontOnLane,
265 const double meanSpeedVehicleOnLane,
266 const double travelledDistanceFrontOnLane,
267 const double travelledDistanceVehicleOnLane,
268 const double meanLengthOnLane) {
269 UNUSED_PARAMETER(&veh);
270 UNUSED_PARAMETER(frontOnLane);
271 UNUSED_PARAMETER(timeOnLane);
272 UNUSED_PARAMETER(meanSpeedFrontOnLane);
273 UNUSED_PARAMETER(meanSpeedVehicleOnLane);
274 UNUSED_PARAMETER(travelledDistanceFrontOnLane);
275 UNUSED_PARAMETER(travelledDistanceVehicleOnLane);
276 UNUSED_PARAMETER(meanLengthOnLane);
277 }
278
279 void setDescription(const std::string& description) {
280 myDescription = description;
281 }
282
283 const std::string& getDescription() const {
284 return myDescription;
285 }
286
287 // @brief return whether this moveReminder triggers parking reroute
288 virtual bool isParkingRerouter() const {
289 return false;
290 }
291
293
294protected:
296
297protected:
298
302 std::string myDescription;
303
304#ifdef HAVE_FOX
306 mutable FXMutex myNotificationMutex;
307#endif
308
309private:
310 std::map<long long int, std::pair<SUMOTime, double> > myLastVehicleUpdateValues;
312
313
314private:
315 MSMoveReminder& operator=(const MSMoveReminder&); // just to avoid a compiler warning
316
317};
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
static StringBijection< Notification >::Entry NotificationValues[]
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_NONE
must be the last one
@ NOTIFICATION_TELEPORT_CONTINUATION
The vehicle continues being teleported past an edge.
MSMoveReminder & operator=(const MSMoveReminder &)
virtual ~MSMoveReminder()
Destructor.
virtual bool isParkingRerouter() const
static StringBijection< Notification > Notifications
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.