Program listing for file control/src/utils/ControlManager.hpp#

  1#ifndef ControlManager_H
  2#define ControlManager_H
  3
  4#include "Actuator.hpp"
  5
  6
  7#include <set>
  8
  9
 10typedef std::set<SP::Sensor> Sensors;
 11
 12
 13typedef std::set<SP::Actuator> Actuators;
 14
 15
 16typedef std::set<SP::Observer> Observers;
 17
 18
 19typedef Sensors::iterator SensorsIterator;
 20
 21
 22typedef Actuators::iterator ActuatorsIterator;
 23
 24
 25typedef Observers::iterator ObserversIterator;
 26
 27
 28
 29
 30class ControlManager
 31{
 32private:
 33  ACCEPT_SERIALIZATION(ControlManager);
 34
 35protected:
 36
 37  Sensors _allSensors;
 38
 39
 40  Actuators _allActuators;
 41
 42
 43  Observers _allObservers;
 44
 45
 46  SP::Simulation _sim;
 47
 48
 49  ControlManager(): _sim(SP::Simulation()) {};
 50
 51
 52  void linkSensorSimulation(SP::Sensor s, SP::TimeDiscretisation td);
 53
 54
 55  void linkActuatorSimulation(SP::Actuator act, SP::TimeDiscretisation td);
 56
 57
 58  void linkObserverSimulation(SP::Observer obs, SP::TimeDiscretisation td);
 59
 60public:
 61
 62
 63  ControlManager(SP::Simulation sim);
 64
 65
 66  virtual ~ControlManager();
 67
 68
 69  inline SP::Simulation simulation() const
 70  {
 71    return _sim;
 72  };
 73
 74
 75  inline const Sensors getSensors() const
 76  {
 77    return _allSensors ;
 78  };
 79
 80
 81  inline const Actuators getActuators() const
 82  {
 83    return _allActuators ;
 84  };
 85
 86
 87  inline const Observers getObservers() const
 88  {
 89    return _allObservers ;
 90  };
 91
 92
 93  SP::Sensor addSensor(int name, SP::TimeDiscretisation td, SP::DynamicalSystem ds);
 94
 95
 96  SP::Sensor addAndRecordSensor(int name, SP::TimeDiscretisation td, SP::DynamicalSystem ds, const NonSmoothDynamicalSystem& nsds);
 97
 98
 99  void addSensorPtr(SP::Sensor s, SP::TimeDiscretisation td);
100
101
102  void addAndRecordSensorPtr(SP::Sensor s, SP::TimeDiscretisation td, const NonSmoothDynamicalSystem& nsds);
103
104
105  SP::Actuator addActuator(int name, SP::TimeDiscretisation td, SP::ControlSensor sensor);
106
107
108  SP::Actuator addAndRecordActuator(int name, SP::TimeDiscretisation t, SP::ControlSensor sensor, const NonSmoothDynamicalSystem& nsds);
109
110
111  void addActuatorPtr(SP::Actuator act, SP::TimeDiscretisation td);
112
113
114  void addAndRecordActuatorPtr(SP::Actuator act, SP::TimeDiscretisation td, const NonSmoothDynamicalSystem& nsds);
115
116
117  SP::Observer addObserver(int name, SP::TimeDiscretisation td, SP::ControlSensor sensor, const SiconosVector& xHat0);
118
119
120  SP::Observer addAndRecordObserver(int name, SP::TimeDiscretisation td, SP::ControlSensor sensor, const SiconosVector& xHat0, const NonSmoothDynamicalSystem& nsds);
121
122
123  void addObserverPtr(SP::Observer obs, SP::TimeDiscretisation td);
124
125
126  void addAndRecordObserverPtr(SP::Observer obs, SP::TimeDiscretisation td, const NonSmoothDynamicalSystem& nsds);
127
128
129
130  void initialize(const NonSmoothDynamicalSystem& nsds);
131
132
133  void display() const;
134
135
136};
137#endif