SUMO - Simulation of Urban MObility
MSDevice_BTsender.h
Go to the documentation of this file.
1 /****************************************************************************/
8 // A BT sender
9 /****************************************************************************/
10 // SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
11 // Copyright (C) 2013-2014 DLR (http://www.dlr.de/) and contributors
12 /****************************************************************************/
13 //
14 // This file is part of SUMO.
15 // SUMO is free software: you can redistribute it and/or modify
16 // it under the terms of the GNU General Public License as published by
17 // the Free Software Foundation, either version 3 of the License, or
18 // (at your option) any later version.
19 //
20 /****************************************************************************/
21 #ifndef MSDevice_BTsender_h
22 #define MSDevice_BTsender_h
23 
24 
25 // ===========================================================================
26 // included modules
27 // ===========================================================================
28 #ifdef _MSC_VER
29 #include <windows_config.h>
30 #else
31 #include <config.h>
32 #endif
33 
34 #include <set>
35 #include <string>
36 #include "MSDevice.h"
37 #include <utils/common/SUMOTime.h>
38 #include <utils/geom/Position.h>
39 
40 
41 // ===========================================================================
42 // class declarations
43 // ===========================================================================
44 class SUMOVehicle;
45 
46 
47 // ===========================================================================
48 // class definitions
49 // ===========================================================================
56 class MSDevice_BTsender : public MSDevice {
57 public:
61  static void insertOptions(OptionsCont& oc);
62 
63 
74  static void buildVehicleDevices(SUMOVehicle& v, std::vector<MSDevice*>& into);
75 
76 
78  friend class MSDevice_BTreceiver;
79 
80 
81 
82 public:
85 
86 
87 
90 
99  bool notifyEnter(SUMOVehicle& veh, Notification reason);
100 
101 
115  bool notifyMove(SUMOVehicle& veh, SUMOReal oldPos, SUMOReal newPos, SUMOReal newSpeed);
116 
117 
128  bool notifyLeave(SUMOVehicle& veh, SUMOReal lastPos, Notification reason);
130 
131 
132 
136  class VehicleState {
137  public:
146  VehicleState(SUMOReal _time, SUMOReal _speed, SUMOReal _angle, const Position& _position, const std::string& _laneID, SUMOReal _lanePos)
147  : time(_time), speed(_speed), angle(_angle), position(_position), laneID(_laneID), lanePos(_lanePos) {}
148 
151 
161  std::string laneID;
164 
165  };
166 
167 
168 
172  class VehicleInformation : public Named {
173  public:
177  VehicleInformation(const std::string& id) : Named(id), amOnNet(true), haveArrived(false) {}
178 
181 
186  Boundary ret;
187  for (std::vector<VehicleState>::const_iterator i = updates.begin(); i != updates.end(); ++i) {
188  ret.add((*i).position);
189  }
190  return ret;
191  }
192 
194  std::vector<VehicleState> updates;
195 
197  bool amOnNet;
198 
201 
202  };
203 
204 
205 
206 private:
212  MSDevice_BTsender(SUMOVehicle& holder, const std::string& id);
213 
214 
215 
216 protected:
218  static std::map<std::string, VehicleInformation*> sVehicles;
219 
220 
221 
222 private:
225 
228 
229 
230 };
231 
232 
233 #endif
234 
235 /****************************************************************************/
236 
bool amOnNet
Whether the vehicle is within the simulated network.
Position position
The position of the vehicle.
SUMOReal angle
The angle of the vehicle.
SUMOReal lanePos
The position at the lane of the vehicle.
~MSDevice_BTsender()
Destructor.
bool notifyEnter(SUMOVehicle &veh, Notification reason)
Adds the vehicle to running vehicles if it (re-) enters the network.
SUMOReal time
The current time.
std::string laneID
The lane the vehicle was at.
Notification
Definition of a vehicle state.
VehicleInformation(const std::string &id)
Constructor.
MSDevice_BTsender & operator=(const MSDevice_BTsender &)
Invalidated assignment operator.
Boundary getBoxBoundary() const
Returns the boundary of passed positions.
A class that stores a 2D geometrical boundary.
Definition: Boundary.h:48
VehicleState(SUMOReal _time, SUMOReal _speed, SUMOReal _angle, const Position &_position, const std::string &_laneID, SUMOReal _lanePos)
Constructor.
Representation of a vehicle.
Definition: SUMOVehicle.h:64
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
A single movement state of the vehicle.
bool notifyLeave(SUMOVehicle &veh, SUMOReal lastPos, Notification reason)
Moves (the known) vehicle from running to arrived vehicles' list.
bool haveArrived
Whether the vehicle was removed from the simulation.
bool notifyMove(SUMOVehicle &veh, SUMOReal oldPos, SUMOReal newPos, SUMOReal newSpeed)
Checks whether the reminder still has to be notified about the vehicle moves.
SUMOReal speed
The speed of the vehicle.
MSDevice_BTsender(SUMOVehicle &holder, const std::string &id)
Constructor.
static void insertOptions(OptionsCont &oc)
Inserts MSDevice_BTsender-options.
Base class for objects which have an id.
Definition: Named.h:45
Abstract in-vehicle device.
Definition: MSDevice.h:69
void add(SUMOReal x, SUMOReal y)
Makes the boundary include the given coordinate.
Definition: Boundary.cpp:76
std::vector< VehicleState > updates
List of position updates during last step.
A storage for options typed value containers)
Definition: OptionsCont.h:108
#define SUMOReal
Definition: config.h:215
Stores the information of a vehicle.
static std::map< std::string, VehicleInformation * > sVehicles
The list of arrived senders.
static void buildVehicleDevices(SUMOVehicle &v, std::vector< MSDevice * > &into)
Build devices for the given vehicle, if needed.