Program listing for file control/src/utils/ControlManager.hpp#
Return to documentation for this file
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