Browse Source

Last commit to branch master.

after that next commits will be in branch dev or stable
Sébastien DI MERCURIO 2 years ago
parent
commit
2451177ccd
41 changed files with 2211 additions and 841 deletions
  1. 9
    0
      software/raspberry/superviseur-robot/.gitignore
  2. 1
    0
      software/raspberry/superviseur-robot/.idea/.name
  3. 29
    0
      software/raspberry/superviseur-robot/.idea/codeStyles/Project.xml
  4. 7
    0
      software/raspberry/superviseur-robot/.idea/misc.xml
  5. 8
    0
      software/raspberry/superviseur-robot/.idea/modules.xml
  6. 2
    0
      software/raspberry/superviseur-robot/.idea/superviseur-robot.iml
  7. 6
    0
      software/raspberry/superviseur-robot/.idea/vcs.xml
  8. 864
    0
      software/raspberry/superviseur-robot/.idea/workspace.xml
  9. 16
    6
      software/raspberry/superviseur-robot/CMakeLists.txt
  10. 142
    0
      software/raspberry/superviseur-robot/ProjDestijl.cbp
  11. 32
    0
      software/raspberry/superviseur-robot/compile_commands.json
  12. 0
    36
      software/raspberry/superviseur-robot/destijl_init/Makefile
  13. 4
    4
      software/raspberry/superviseur-robot/examples/CMakeLists.txt
  14. 5
    0
      software/raspberry/superviseur-robot/lib/.gitignore
  15. 2
    2
      software/raspberry/superviseur-robot/lib/CMakeLists.txt
  16. 0
    84
      software/raspberry/superviseur-robot/lib/Robot.h
  17. 0
    49
      software/raspberry/superviseur-robot/lib/Serial.h
  18. 0
    35
      software/raspberry/superviseur-robot/lib/TcpServer.h
  19. 24
    0
      software/raspberry/superviseur-robot/lib/definitions.h
  20. 2
    0
      software/raspberry/superviseur-robot/lib/image.h
  21. 1
    1
      software/raspberry/superviseur-robot/lib/monitor.h
  22. 64
    0
      software/raspberry/superviseur-robot/lib/robot.h
  23. 0
    349
      software/raspberry/superviseur-robot/lib/src/Robot.cpp
  24. 0
    164
      software/raspberry/superviseur-robot/lib/src/Serial.cpp
  25. 0
    93
      software/raspberry/superviseur-robot/lib/src/TcpServer.cpp
  26. 1
    1
      software/raspberry/superviseur-robot/lib/src/message.cpp
  27. 1
    1
      software/raspberry/superviseur-robot/lib/src/monitor.cpp
  28. 236
    0
      software/raspberry/superviseur-robot/lib/src/robot.cpp
  29. 116
    0
      software/raspberry/superviseur-robot/nbproject/configurations.xml
  30. 26
    0
      software/raspberry/superviseur-robot/nbproject/project.xml
  31. 9
    0
      software/raspberry/superviseur-robot/superviseur-pthread/CMakeLists.txt
  32. BIN
      software/raspberry/superviseur-robot/superviseur-pthread/bin/monitor
  33. BIN
      software/raspberry/superviseur-robot/superviseur-pthread/bin/superviseur-pthread
  34. 273
    0
      software/raspberry/superviseur-robot/superviseur-pthread/src/Program.cpp
  35. 246
    0
      software/raspberry/superviseur-robot/superviseur-pthread/src/Tasks.cpp
  36. 44
    0
      software/raspberry/superviseur-robot/superviseur-pthread/src/Tasks.h
  37. 9
    0
      software/raspberry/superviseur-robot/superviseur/.gitignore
  38. 15
    0
      software/raspberry/superviseur-robot/superviseur/CMakeLists.txt
  39. 3
    3
      software/raspberry/superviseur-robot/superviseur/src/functions.cpp
  40. 5
    5
      software/raspberry/superviseur-robot/superviseur/src/functions.h
  41. 9
    8
      software/raspberry/superviseur-robot/superviseur/src/main.cpp

+ 9
- 0
software/raspberry/superviseur-robot/.gitignore View File

@@ -1,2 +1,11 @@
1 1
 build/
2 2
 src.sav/
3
+cmake-build-debug/
4
+futur/
5
+build/
6
+CMakeFiles/
7
+
8
+Makefile
9
+*.cmake
10
+CMakeCache.txt
11
+

+ 1
- 0
software/raspberry/superviseur-robot/.idea/.name View File

@@ -0,0 +1 @@
1
+ProjDestijl

+ 29
- 0
software/raspberry/superviseur-robot/.idea/codeStyles/Project.xml View File

@@ -0,0 +1,29 @@
1
+<component name="ProjectCodeStyleConfiguration">
2
+  <code_scheme name="Project" version="173">
3
+    <Objective-C-extensions>
4
+      <file>
5
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
6
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
7
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
8
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
9
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
10
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
11
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
12
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
13
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
14
+      </file>
15
+      <class>
16
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
17
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
18
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
19
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
20
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
21
+        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
22
+      </class>
23
+      <extensions>
24
+        <pair source="cpp" header="h" fileNamingConvention="NONE" />
25
+        <pair source="c" header="h" fileNamingConvention="NONE" />
26
+      </extensions>
27
+    </Objective-C-extensions>
28
+  </code_scheme>
29
+</component>

+ 7
- 0
software/raspberry/superviseur-robot/.idea/misc.xml View File

@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
4
+  <component name="JavaScriptSettings">
5
+    <option name="languageLevel" value="ES6" />
6
+  </component>
7
+</project>

+ 8
- 0
software/raspberry/superviseur-robot/.idea/modules.xml View File

@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="ProjectModuleManager">
4
+    <modules>
5
+      <module fileurl="file://$PROJECT_DIR$/.idea/superviseur-robot.iml" filepath="$PROJECT_DIR$/.idea/superviseur-robot.iml" />
6
+    </modules>
7
+  </component>
8
+</project>

+ 2
- 0
software/raspberry/superviseur-robot/.idea/superviseur-robot.iml View File

@@ -0,0 +1,2 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<module classpath="CMake" type="CPP_MODULE" version="4" />

+ 6
- 0
software/raspberry/superviseur-robot/.idea/vcs.xml View File

@@ -0,0 +1,6 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="VcsDirectoryMappings">
4
+    <mapping directory="$PROJECT_DIR$/../../.." vcs="Git" />
5
+  </component>
6
+</project>

+ 864
- 0
software/raspberry/superviseur-robot/.idea/workspace.xml View File

@@ -0,0 +1,864 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project version="4">
3
+  <component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true" buildAllGenerated="true">
4
+    <generated>
5
+      <config projectName="ProjDestijl" targetName="superviseur" />
6
+      <config projectName="ProjDestijl" targetName="destijl" />
7
+    </generated>
8
+  </component>
9
+  <component name="CMakeSettings" AUTO_RELOAD="true">
10
+    <configurations>
11
+      <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
12
+    </configurations>
13
+  </component>
14
+  <component name="ChangeListManager">
15
+    <list default="true" id="4c044020-a391-4234-8366-64abd3f0f464" name="Default Changelist" comment="">
16
+      <change afterPath="$PROJECT_DIR$/.idea/codeStyles/Project.xml" afterDir="false" />
17
+      <change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
18
+      <change afterPath="$PROJECT_DIR$/superviseur-pthread/CMakeLists.txt" afterDir="false" />
19
+      <change afterPath="$PROJECT_DIR$/superviseur-pthread/src/Program.cpp" afterDir="false" />
20
+      <change afterPath="$PROJECT_DIR$/superviseur-pthread/src/Tasks.cpp" afterDir="false" />
21
+      <change afterPath="$PROJECT_DIR$/superviseur-pthread/src/Tasks.h" afterDir="false" />
22
+      <change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
23
+      <change beforePath="$PROJECT_DIR$/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/CMakeLists.txt" afterDir="false" />
24
+      <change beforePath="$PROJECT_DIR$/destijl_init/Makefile" beforeDir="false" />
25
+      <change beforePath="$PROJECT_DIR$/examples/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/examples/CMakeLists.txt" afterDir="false" />
26
+      <change beforePath="$PROJECT_DIR$/lib/CMakeLists.txt" beforeDir="false" afterPath="$PROJECT_DIR$/lib/CMakeLists.txt" afterDir="false" />
27
+      <change beforePath="$PROJECT_DIR$/lib/Robot.h" beforeDir="false" />
28
+      <change beforePath="$PROJECT_DIR$/lib/Serial.h" beforeDir="false" />
29
+      <change beforePath="$PROJECT_DIR$/lib/TcpServer.h" beforeDir="false" />
30
+      <change beforePath="$PROJECT_DIR$/lib/definitions.h" beforeDir="false" />
31
+      <change beforePath="$PROJECT_DIR$/lib/image.h" beforeDir="false" />
32
+      <change beforePath="$PROJECT_DIR$/lib/message.h" beforeDir="false" />
33
+      <change beforePath="$PROJECT_DIR$/lib/monitor.h" beforeDir="false" />
34
+      <change beforePath="$PROJECT_DIR$/lib/src/Robot.cpp" beforeDir="false" />
35
+      <change beforePath="$PROJECT_DIR$/lib/src/Serial.cpp" beforeDir="false" />
36
+      <change beforePath="$PROJECT_DIR$/lib/src/TcpServer.cpp" beforeDir="false" />
37
+      <change beforePath="$PROJECT_DIR$/lib/src/image.cpp" beforeDir="false" />
38
+      <change beforePath="$PROJECT_DIR$/lib/src/message.cpp" beforeDir="false" />
39
+      <change beforePath="$PROJECT_DIR$/lib/src/monitor.cpp" beforeDir="false" />
40
+      <change beforePath="$PROJECT_DIR$/superviseur-xenomai/src/Program.cpp" beforeDir="false" />
41
+      <change beforePath="$PROJECT_DIR$/superviseur-xenomai/src/Tasks.cpp" beforeDir="false" />
42
+      <change beforePath="$PROJECT_DIR$/superviseur-xenomai/src/Tasks.h" beforeDir="false" />
43
+    </list>
44
+    <ignored path="$PROJECT_DIR$/cmake-build-debug/" />
45
+    <ignored path="$PROJECT_DIR$/CMakeFiles/" />
46
+    <ignored path="$PROJECT_DIR$/superviseur/CMakeFiles/" />
47
+    <ignored path="$PROJECT_DIR$/lib/CMakeFiles/" />
48
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
49
+    <option name="SHOW_DIALOG" value="false" />
50
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
51
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
52
+    <option name="LAST_RESOLUTION" value="IGNORE" />
53
+  </component>
54
+  <component name="ExecutionTargetManager" SELECTED_TARGET="CMakeBuildProfile:Debug" />
55
+  <component name="FUSProjectUsageTrigger">
56
+    <session id="-329952360">
57
+      <usages-collector id="statistics.lifecycle.project">
58
+        <counts>
59
+          <entry key="project.closed" value="2" />
60
+          <entry key="project.open.time.3" value="1" />
61
+          <entry key="project.open.time.9" value="1" />
62
+          <entry key="project.opened" value="2" />
63
+        </counts>
64
+      </usages-collector>
65
+      <usages-collector id="statistics.file.extensions.open">
66
+        <counts>
67
+          <entry key="cmake" value="1" />
68
+          <entry key="cpp" value="36" />
69
+          <entry key="gitignore" value="1" />
70
+          <entry key="h" value="18" />
71
+          <entry key="txt" value="20" />
72
+        </counts>
73
+      </usages-collector>
74
+      <usages-collector id="statistics.file.types.open">
75
+        <counts>
76
+          <entry key="CMakeLists.txt" value="21" />
77
+          <entry key="ObjectiveC" value="54" />
78
+          <entry key="PLAIN_TEXT" value="1" />
79
+        </counts>
80
+      </usages-collector>
81
+      <usages-collector id="statistics.file.extensions.edit">
82
+        <counts>
83
+          <entry key="cpp" value="3165" />
84
+          <entry key="gitignore" value="19" />
85
+          <entry key="h" value="1381" />
86
+          <entry key="txt" value="1035" />
87
+        </counts>
88
+      </usages-collector>
89
+      <usages-collector id="statistics.file.types.edit">
90
+        <counts>
91
+          <entry key="CMakeLists.txt" value="1035" />
92
+          <entry key="Doxygen file" value="2" />
93
+          <entry key="ObjectiveC" value="4544" />
94
+          <entry key="PLAIN_TEXT" value="19" />
95
+        </counts>
96
+      </usages-collector>
97
+    </session>
98
+  </component>
99
+  <component name="FileEditorManager">
100
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
101
+      <file pinned="false" current-in-tab="false">
102
+        <entry file="file://$PROJECT_DIR$/lib/CMakeLists.txt">
103
+          <provider selected="true" editor-type-id="text-editor">
104
+            <state>
105
+              <caret column="81" selection-start-column="81" selection-end-column="81" />
106
+            </state>
107
+          </provider>
108
+        </entry>
109
+      </file>
110
+      <file pinned="false" current-in-tab="false">
111
+        <entry file="file://$PROJECT_DIR$/lib/image.h">
112
+          <provider selected="true" editor-type-id="text-editor">
113
+            <state relative-caret-position="209">
114
+              <caret line="17" selection-start-line="17" selection-end-line="17" />
115
+              <folding>
116
+                <element signature="e#566#599#0" expanded="true" />
117
+                <element signature="e#635#673#0" expanded="true" />
118
+                <element signature="e#865#890#0" expanded="true" />
119
+                <element signature="e#935#962#0" expanded="true" />
120
+              </folding>
121
+            </state>
122
+          </provider>
123
+        </entry>
124
+      </file>
125
+      <file pinned="false" current-in-tab="false">
126
+        <entry file="file://$PROJECT_DIR$/lib/src/message.cpp">
127
+          <provider selected="true" editor-type-id="text-editor">
128
+            <state relative-caret-position="405">
129
+              <caret line="27" column="32" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="32" />
130
+            </state>
131
+          </provider>
132
+        </entry>
133
+      </file>
134
+      <file pinned="false" current-in-tab="false">
135
+        <entry file="file://$PROJECT_DIR$/lib/monitor.h">
136
+          <provider selected="true" editor-type-id="text-editor">
137
+            <state relative-caret-position="389">
138
+              <caret line="64" column="94" selection-start-line="64" selection-start-column="94" selection-end-line="64" selection-end-column="94" />
139
+            </state>
140
+          </provider>
141
+        </entry>
142
+      </file>
143
+      <file pinned="false" current-in-tab="false">
144
+        <entry file="file://$PROJECT_DIR$/lib/src/monitor.cpp">
145
+          <provider selected="true" editor-type-id="text-editor">
146
+            <state relative-caret-position="338">
147
+              <caret line="104" column="23" selection-start-line="104" selection-start-column="23" selection-end-line="104" selection-end-column="23" />
148
+            </state>
149
+          </provider>
150
+        </entry>
151
+      </file>
152
+      <file pinned="false" current-in-tab="false">
153
+        <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
154
+          <provider selected="true" editor-type-id="text-editor">
155
+            <state relative-caret-position="330">
156
+              <caret line="22" selection-start-line="22" selection-end-line="22" />
157
+            </state>
158
+          </provider>
159
+        </entry>
160
+      </file>
161
+      <file pinned="false" current-in-tab="false">
162
+        <entry file="file://$PROJECT_DIR$/superviseur/CMakeLists.txt">
163
+          <provider selected="true" editor-type-id="text-editor">
164
+            <state relative-caret-position="135">
165
+              <caret line="9" selection-start-line="9" selection-end-line="9" />
166
+            </state>
167
+          </provider>
168
+        </entry>
169
+      </file>
170
+      <file pinned="false" current-in-tab="false">
171
+        <entry file="file://$PROJECT_DIR$/superviseur/src/main.cpp">
172
+          <provider selected="true" editor-type-id="text-editor">
173
+            <state relative-caret-position="75">
174
+              <caret line="89" column="13" selection-start-line="89" selection-start-column="13" selection-end-line="89" selection-end-column="13" />
175
+              <folding>
176
+                <element signature="e#88#106#0" expanded="true" />
177
+              </folding>
178
+            </state>
179
+          </provider>
180
+        </entry>
181
+      </file>
182
+      <file pinned="false" current-in-tab="false">
183
+        <entry file="file://$PROJECT_DIR$/superviseur/src/functions.h">
184
+          <provider selected="true" editor-type-id="text-editor">
185
+            <state relative-caret-position="180">
186
+              <caret line="51" column="21" selection-start-line="51" selection-start-column="12" selection-end-line="51" selection-end-column="21" />
187
+              <folding>
188
+                <element signature="e#319#337#0" expanded="true" />
189
+              </folding>
190
+            </state>
191
+          </provider>
192
+        </entry>
193
+      </file>
194
+      <file pinned="false" current-in-tab="true">
195
+        <entry file="file://$PROJECT_DIR$/superviseur/src/functions.cpp">
196
+          <provider selected="true" editor-type-id="text-editor">
197
+            <state relative-caret-position="300">
198
+              <caret line="20" column="19" selection-start-line="20" selection-start-column="19" selection-end-line="20" selection-end-column="19" />
199
+            </state>
200
+          </provider>
201
+        </entry>
202
+      </file>
203
+    </leaf>
204
+  </component>
205
+  <component name="Git.Settings">
206
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../../.." />
207
+  </component>
208
+  <component name="IdeDocumentHistory">
209
+    <option name="CHANGED_PATHS">
210
+      <list>
211
+        <option value="$PROJECT_DIR$/.gitignore" />
212
+        <option value="$PROJECT_DIR$/lib/Definition.h" />
213
+        <option value="$PROJECT_DIR$/lib/src/Robot.cpp" />
214
+        <option value="$PROJECT_DIR$/lib/Image.h" />
215
+        <option value="$PROJECT_DIR$/lib/Camera.h" />
216
+        <option value="$PROJECT_DIR$/lib/src/Camera.cpp" />
217
+        <option value="$PROJECT_DIR$/lib/src/Image.cpp" />
218
+        <option value="$PROJECT_DIR$/destijl_init/CMakeLists.txt" />
219
+        <option value="$PROJECT_DIR$/monitor/CMakeLists.txt" />
220
+        <option value="$PROJECT_DIR$/monitor/src/functions.h" />
221
+        <option value="$PROJECT_DIR$/monitor/src/main.cpp" />
222
+        <option value="$PROJECT_DIR$/monitor-pc/CMakeLists.txt" />
223
+        <option value="$PROJECT_DIR$/monitor-pc/src/functions.cpp" />
224
+        <option value="$PROJECT_DIR$/monitor-pc/src/functions.h" />
225
+        <option value="$PROJECT_DIR$/monitor-pc/src/main.cpp" />
226
+        <option value="$PROJECT_DIR$/monitor-pthread/CMakeLists.txt" />
227
+        <option value="$PROJECT_DIR$/superviseur-pthread/src/Functions.h" />
228
+        <option value="$PROJECT_DIR$/superviseur-pthread/src/Functions.cpp" />
229
+        <option value="$PROJECT_DIR$/lib/src/TcpServer.cpp" />
230
+        <option value="$PROJECT_DIR$/lib/TcpServer.h" />
231
+        <option value="$PROJECT_DIR$/lib/src/Messages.cpp" />
232
+        <option value="$PROJECT_DIR$/lib/Messages.h" />
233
+        <option value="$PROJECT_DIR$/superviseur-pthread/src/Tasks.h" />
234
+        <option value="$PROJECT_DIR$/superviseur-pthread/src/Program.cpp" />
235
+        <option value="$PROJECT_DIR$/superviseur-pthread/src/Tasks.cpp" />
236
+        <option value="$PROJECT_DIR$/superviseur-pthread/CMakeLists.txt" />
237
+        <option value="$PROJECT_DIR$/examples/CMakeLists.txt" />
238
+        <option value="$PROJECT_DIR$/superviseur-xenomai/CMakeLists.txt" />
239
+        <option value="$PROJECT_DIR$/superviseur-xenomai/src/Program.cpp" />
240
+        <option value="$PROJECT_DIR$/lib/MsgManager.h" />
241
+        <option value="$PROJECT_DIR$/superviseur-xenomai/src/Tasks.cpp" />
242
+        <option value="$PROJECT_DIR$/superviseur-xenomai/src/Tasks.h" />
243
+        <option value="$PROJECT_DIR$/lib/CMakeLists.txt" />
244
+        <option value="$PROJECT_DIR$/lib/image.h" />
245
+        <option value="$PROJECT_DIR$/lib/src/message.cpp" />
246
+        <option value="$PROJECT_DIR$/lib/monitor.h" />
247
+        <option value="$PROJECT_DIR$/lib/src/monitor.cpp" />
248
+        <option value="$PROJECT_DIR$/superviseur/src/functions.h" />
249
+        <option value="$PROJECT_DIR$/superviseur/src/functions.cpp" />
250
+        <option value="$PROJECT_DIR$/CMakeLists.txt" />
251
+        <option value="$PROJECT_DIR$/superviseur/src/main.cpp" />
252
+        <option value="$PROJECT_DIR$/superviseur/CMakeLists.txt" />
253
+      </list>
254
+    </option>
255
+  </component>
256
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
257
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
258
+  <component name="JsGulpfileManager">
259
+    <detection-done>true</detection-done>
260
+    <sorting>DEFINITION_ORDER</sorting>
261
+  </component>
262
+  <component name="OCFindUsagesOptions" text="true" ivars="false" properties="true" derivedClasses="false" />
263
+  <component name="ProjectFrameBounds">
264
+    <option name="x" value="260" />
265
+    <option name="y" value="101" />
266
+    <option name="width" value="1660" />
267
+    <option name="height" value="1088" />
268
+  </component>
269
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
270
+  <component name="ProjectView">
271
+    <navigator proportions="" version="1">
272
+      <foldersAlwaysOnTop value="true" />
273
+    </navigator>
274
+    <panes>
275
+      <pane id="Scope" />
276
+      <pane id="ProjectPane">
277
+        <subPane>
278
+          <expand>
279
+            <path>
280
+              <item name="ProjDestijl" type="b2602c69:ProjectViewProjectNode" />
281
+              <item name="superviseur-robot" type="462c0819:PsiDirectoryNode" />
282
+            </path>
283
+            <path>
284
+              <item name="ProjDestijl" type="b2602c69:ProjectViewProjectNode" />
285
+              <item name="superviseur-robot" type="462c0819:PsiDirectoryNode" />
286
+              <item name="lib" type="462c0819:PsiDirectoryNode" />
287
+            </path>
288
+            <path>
289
+              <item name="ProjDestijl" type="b2602c69:ProjectViewProjectNode" />
290
+              <item name="superviseur-robot" type="462c0819:PsiDirectoryNode" />
291
+              <item name="superviseur" type="462c0819:PsiDirectoryNode" />
292
+            </path>
293
+            <path>
294
+              <item name="ProjDestijl" type="b2602c69:ProjectViewProjectNode" />
295
+              <item name="superviseur-robot" type="462c0819:PsiDirectoryNode" />
296
+              <item name="superviseur" type="462c0819:PsiDirectoryNode" />
297
+              <item name="src" type="462c0819:PsiDirectoryNode" />
298
+            </path>
299
+            <path>
300
+              <item name="ProjDestijl" type="b2602c69:ProjectViewProjectNode" />
301
+              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
302
+            </path>
303
+          </expand>
304
+          <select />
305
+        </subPane>
306
+      </pane>
307
+    </panes>
308
+  </component>
309
+  <component name="PropertiesComponent">
310
+    <property name="WebServerToolWindowFactoryState" value="false" />
311
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/superviseur/bin/superviseur" />
312
+    <property name="settings.editor.selected.configurable" value="reference.settingsdialog.IDE.editor.colors.General" />
313
+  </component>
314
+  <component name="RecentsManager">
315
+    <key name="CopyFile.RECENT_KEYS">
316
+      <recent name="$PROJECT_DIR$/destijl_init" />
317
+    </key>
318
+    <key name="MoveFile.RECENT_KEYS">
319
+      <recent name="$PROJECT_DIR$/lib" />
320
+      <recent name="$PROJECT_DIR$/destijl_init/src" />
321
+    </key>
322
+  </component>
323
+  <component name="RunDashboard">
324
+    <option name="ruleStates">
325
+      <list>
326
+        <RuleState>
327
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
328
+        </RuleState>
329
+        <RuleState>
330
+          <option name="name" value="StatusDashboardGroupingRule" />
331
+        </RuleState>
332
+      </list>
333
+    </option>
334
+  </component>
335
+  <component name="RunManager" selected="Application.superviseur">
336
+    <configuration name="Build All" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" CONFIG_NAME="Debug" EXPLICIT_BUILD_TARGET_NAME="all">
337
+      <method v="2">
338
+        <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
339
+      </method>
340
+    </configuration>
341
+    <configuration name="destijl" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" PROJECT_NAME="ProjDestijl" TARGET_NAME="destijl" CONFIG_NAME="Debug">
342
+      <method v="2">
343
+        <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
344
+      </method>
345
+    </configuration>
346
+    <configuration name="superviseur" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" PROJECT_NAME="ProjDestijl" TARGET_NAME="superviseur" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="ProjDestijl" RUN_TARGET_NAME="superviseur">
347
+      <method v="2">
348
+        <option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
349
+      </method>
350
+    </configuration>
351
+    <list>
352
+      <item itemvalue="Application.Build All" />
353
+      <item itemvalue="Application.destijl" />
354
+      <item itemvalue="Application.superviseur" />
355
+    </list>
356
+  </component>
357
+  <component name="SvnConfiguration">
358
+    <configuration />
359
+  </component>
360
+  <component name="TaskManager">
361
+    <task active="true" id="Default" summary="Default task">
362
+      <changelist id="4c044020-a391-4234-8366-64abd3f0f464" name="Default Changelist" comment="" />
363
+      <created>1539692092358</created>
364
+      <option name="number" value="Default" />
365
+      <option name="presentableId" value="Default" />
366
+      <updated>1539692092358</updated>
367
+      <workItem from="1539692095452" duration="3090000" />
368
+      <workItem from="1539698076207" duration="43886000" />
369
+    </task>
370
+    <servers />
371
+  </component>
372
+  <component name="TimeTrackingManager">
373
+    <option name="totallyTimeSpent" value="46976000" />
374
+  </component>
375
+  <component name="ToolWindowManager">
376
+    <frame x="260" y="101" width="1660" height="1088" extended-state="0" />
377
+    <layout>
378
+      <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.21277915" />
379
+      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
380
+      <window_info id="Favorites" order="2" side_tool="true" />
381
+      <window_info anchor="bottom" id="Message" order="0" />
382
+      <window_info anchor="bottom" id="Find" order="1" weight="0.2114165" />
383
+      <window_info anchor="bottom" id="Run" order="2" />
384
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.39957717" />
385
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
386
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
387
+      <window_info anchor="bottom" id="TODO" order="6" />
388
+      <window_info anchor="bottom" id="Database Changes" order="7" show_stripe_button="false" />
389
+      <window_info anchor="bottom" id="Messages" order="8" weight="0.3118393" />
390
+      <window_info anchor="bottom" id="Terminal" order="9" weight="0.32980973" />
391
+      <window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
392
+      <window_info anchor="bottom" id="Version Control" order="11" show_stripe_button="false" />
393
+      <window_info anchor="bottom" id="CMake" order="12" weight="0.32980973" />
394
+      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
395
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
396
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
397
+      <window_info anchor="right" id="Database" order="3" />
398
+    </layout>
399
+  </component>
400
+  <component name="TypeScriptGeneratedFilesManager">
401
+    <option name="version" value="1" />
402
+  </component>
403
+  <component name="VcsContentAnnotationSettings">
404
+    <option name="myLimit" value="2678400000" />
405
+  </component>
406
+  <component name="XDebuggerManager">
407
+    <breakpoint-manager>
408
+      <breakpoints>
409
+        <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
410
+          <url>file://$PROJECT_DIR$/examples/src/serverTest.cpp</url>
411
+          <line>28</line>
412
+          <option name="timeStamp" value="1" />
413
+        </line-breakpoint>
414
+        <line-breakpoint enabled="true" type="com.jetbrains.cidr.execution.debugger.OCBreakpointType">
415
+          <url>file://$PROJECT_DIR$/superviseur/src/functions.cpp</url>
416
+          <line>16</line>
417
+          <option name="timeStamp" value="6" />
418
+        </line-breakpoint>
419
+      </breakpoints>
420
+    </breakpoint-manager>
421
+  </component>
422
+  <component name="editorHistoryManager">
423
+    <entry file="file://$PROJECT_DIR$/destijl_init/src/functions.h">
424
+      <provider selected="true" editor-type-id="text-editor" />
425
+    </entry>
426
+    <entry file="file://$PROJECT_DIR$/destijl_init/src/main.cpp">
427
+      <provider selected="true" editor-type-id="text-editor" />
428
+    </entry>
429
+    <entry file="file://$PROJECT_DIR$/lib/src/Camera.cpp">
430
+      <provider selected="true" editor-type-id="text-editor">
431
+        <state relative-caret-position="795">
432
+          <caret line="53" column="19" selection-start-line="53" selection-start-column="19" selection-end-line="53" selection-end-column="19" />
433
+          <folding>
434
+            <element signature="e#43#62#0" expanded="true" />
435
+          </folding>
436
+        </state>
437
+      </provider>
438
+    </entry>
439
+    <entry file="file://$PROJECT_DIR$/lib/Image.h">
440
+      <provider selected="true" editor-type-id="text-editor">
441
+        <state relative-caret-position="525">
442
+          <caret line="35" column="52" selection-start-line="35" selection-start-column="52" selection-end-line="35" selection-end-column="52" />
443
+          <folding>
444
+            <element signature="e#80#99#0" expanded="true" />
445
+          </folding>
446
+        </state>
447
+      </provider>
448
+    </entry>
449
+    <entry file="file://$PROJECT_DIR$/lib/Definition.h">
450
+      <provider selected="true" editor-type-id="text-editor">
451
+        <state relative-caret-position="330">
452
+          <caret line="22" column="10" selection-start-line="22" selection-start-column="10" selection-end-line="22" selection-end-column="10" />
453
+          <folding>
454
+            <element signature="e#90#128#0" expanded="true" />
455
+          </folding>
456
+        </state>
457
+      </provider>
458
+    </entry>
459
+    <entry file="file://$PROJECT_DIR$/lib/Camera.h">
460
+      <provider selected="true" editor-type-id="text-editor">
461
+        <state relative-caret-position="435">
462
+          <caret line="29" selection-start-line="29" selection-end-line="29" />
463
+          <folding>
464
+            <element signature="e#82#120#0" expanded="true" />
465
+          </folding>
466
+        </state>
467
+      </provider>
468
+    </entry>
469
+    <entry file="file://$PROJECT_DIR$/destijl_init/CMakeLists.txt">
470
+      <provider selected="true" editor-type-id="text-editor">
471
+        <state relative-caret-position="90">
472
+          <caret line="6" column="21" selection-start-line="6" selection-start-column="21" selection-end-line="6" selection-end-column="21" />
473
+        </state>
474
+      </provider>
475
+    </entry>
476
+    <entry file="file://$PROJECT_DIR$/monitor/CMakeLists.txt">
477
+      <provider selected="true" editor-type-id="text-editor">
478
+        <state relative-caret-position="135">
479
+          <caret line="9" selection-start-line="9" selection-end-line="9" />
480
+        </state>
481
+      </provider>
482
+    </entry>
483
+    <entry file="file://$PROJECT_DIR$/monitor/src/functions.cpp">
484
+      <provider selected="true" editor-type-id="text-editor">
485
+        <state relative-caret-position="615">
486
+          <caret line="41" column="41" selection-start-line="41" selection-start-column="41" selection-end-line="41" selection-end-column="41" />
487
+          <folding>
488
+            <element signature="e#1028#1087#0" expanded="true" />
489
+          </folding>
490
+        </state>
491
+      </provider>
492
+    </entry>
493
+    <entry file="file://$PROJECT_DIR$/monitor/src/functions.h">
494
+      <provider selected="true" editor-type-id="text-editor">
495
+        <state relative-caret-position="203">
496
+          <caret line="33" selection-start-line="24" selection-end-line="33" />
497
+          <folding>
498
+            <element signature="e#319#337#0" expanded="true" />
499
+            <element signature="e#446#577#0" expanded="true" />
500
+            <element signature="e#588#616#0" expanded="true" />
501
+          </folding>
502
+        </state>
503
+      </provider>
504
+    </entry>
505
+    <entry file="file://$PROJECT_DIR$/build/CMakeFiles/Makefile.cmake">
506
+      <provider selected="true" editor-type-id="text-editor">
507
+        <state relative-caret-position="90">
508
+          <caret line="6" column="16" selection-start-line="6" selection-start-column="16" selection-end-line="6" selection-end-column="16" />
509
+        </state>
510
+      </provider>
511
+    </entry>
512
+    <entry file="file://$PROJECT_DIR$/monitor-pc/CMakeLists.txt">
513
+      <provider selected="true" editor-type-id="text-editor">
514
+        <state>
515
+          <caret column="68" selection-start-column="68" selection-end-column="68" />
516
+        </state>
517
+      </provider>
518
+    </entry>
519
+    <entry file="file://$PROJECT_DIR$/monitor/src/main.cpp">
520
+      <provider selected="true" editor-type-id="text-editor">
521
+        <state relative-caret-position="-1185">
522
+          <caret line="20" selection-start-line="20" selection-end-line="20" />
523
+          <folding>
524
+            <element signature="e#88#106#0" expanded="true" />
525
+            <element signature="e#308#328#0" expanded="true" />
526
+          </folding>
527
+        </state>
528
+      </provider>
529
+    </entry>
530
+    <entry file="file://$PROJECT_DIR$/monitor-pc/src/functions.h">
531
+      <provider selected="true" editor-type-id="text-editor">
532
+        <state relative-caret-position="434">
533
+          <caret line="68" lean-forward="true" selection-start-line="30" selection-end-line="68" />
534
+          <folding>
535
+            <element signature="e#319#337#0" expanded="true" />
536
+          </folding>
537
+        </state>
538
+      </provider>
539
+    </entry>
540
+    <entry file="file://$PROJECT_DIR$/monitor-pc/src/main.cpp">
541
+      <provider selected="true" editor-type-id="text-editor">
542
+        <state relative-caret-position="-510">
543
+          <caret line="11" lean-forward="true" selection-start-line="11" selection-end-line="11" />
544
+        </state>
545
+      </provider>
546
+    </entry>
547
+    <entry file="file://$PROJECT_DIR$/monitor-pc/src/functions.cpp">
548
+      <provider selected="true" editor-type-id="text-editor">
549
+        <state relative-caret-position="824">
550
+          <caret line="214" column="11" lean-forward="true" selection-start-line="214" selection-start-column="11" selection-end-line="214" selection-end-column="11" />
551
+        </state>
552
+      </provider>
553
+    </entry>
554
+    <entry file="file://$PROJECT_DIR$/src.sav/image.cpp">
555
+      <provider selected="true" editor-type-id="text-editor">
556
+        <state relative-caret-position="-1260">
557
+          <caret line="12" selection-start-line="12" selection-end-line="12" />
558
+          <folding>
559
+            <element signature="e#494#512#0" expanded="true" />
560
+          </folding>
561
+        </state>
562
+      </provider>
563
+    </entry>
564
+    <entry file="file://$PROJECT_DIR$/src.sav/image.h">
565
+      <provider selected="true" editor-type-id="text-editor">
566
+        <state relative-caret-position="-810" />
567
+      </provider>
568
+    </entry>
569
+    <entry file="file://$PROJECT_DIR$/monitor-pthread/CMakeLists.txt">
570
+      <provider selected="true" editor-type-id="text-editor">
571
+        <state relative-caret-position="30">
572
+          <caret line="2" column="43" lean-forward="true" selection-start-line="2" selection-start-column="43" selection-end-line="2" selection-end-column="43" />
573
+        </state>
574
+      </provider>
575
+    </entry>
576
+    <entry file="file://$PROJECT_DIR$/monitor-pthread/src/functions.cpp">
577
+      <provider selected="true" editor-type-id="text-editor">
578
+        <state relative-caret-position="-2655" />
579
+      </provider>
580
+    </entry>
581
+    <entry file="file://$PROJECT_DIR$/src.sav/monitor.h">
582
+      <provider selected="true" editor-type-id="text-editor">
583
+        <state relative-caret-position="1680">
584
+          <caret line="112" lean-forward="true" selection-start-line="19" selection-end-line="112" />
585
+          <folding>
586
+            <element signature="e#82#104#0" expanded="true" />
587
+          </folding>
588
+        </state>
589
+      </provider>
590
+    </entry>
591
+    <entry file="file://$PROJECT_DIR$/src.sav/message.h">
592
+      <provider selected="true" editor-type-id="text-editor">
593
+        <state relative-caret-position="135">
594
+          <caret line="9" column="2" lean-forward="true" selection-start-line="9" selection-start-column="2" selection-end-line="9" selection-end-column="2" />
595
+          <folding>
596
+            <element signature="e#312#330#0" expanded="true" />
597
+          </folding>
598
+        </state>
599
+      </provider>
600
+    </entry>
601
+    <entry file="file://$PROJECT_DIR$/lib/src/Serial.cpp">
602
+      <provider selected="true" editor-type-id="text-editor">
603
+        <state relative-caret-position="-1080" />
604
+      </provider>
605
+    </entry>
606
+    <entry file="file://$PROJECT_DIR$/src.sav/message.cpp">
607
+      <provider selected="true" editor-type-id="text-editor">
608
+        <state relative-caret-position="405">
609
+          <caret line="27" column="36" lean-forward="true" selection-start-line="26" selection-start-column="4" selection-end-line="27" selection-end-column="36" />
610
+        </state>
611
+      </provider>
612
+    </entry>
613
+    <entry file="file://$PROJECT_DIR$/src.sav/monitor.cpp">
614
+      <provider selected="true" editor-type-id="text-editor">
615
+        <state relative-caret-position="433">
616
+          <caret line="151" column="1" selection-start-line="146" selection-end-line="151" selection-end-column="1" />
617
+          <folding>
618
+            <element signature="e#1030#1072#0" expanded="true" />
619
+            <element signature="e#1814#1860#0" expanded="true" />
620
+            <element signature="e#1973#2002#0" expanded="true" />
621
+          </folding>
622
+        </state>
623
+      </provider>
624
+    </entry>
625
+    <entry file="file://$PROJECT_DIR$/lib/src/TcpServer.cpp">
626
+      <provider selected="true" editor-type-id="text-editor">
627
+        <state relative-caret-position="299">
628
+          <caret line="76" selection-start-line="76" selection-end-line="76" />
629
+          <folding>
630
+            <element signature="e#648#670#0" expanded="true" />
631
+          </folding>
632
+        </state>
633
+      </provider>
634
+    </entry>
635
+    <entry file="file://$PROJECT_DIR$/lib/Robot.h">
636
+      <provider selected="true" editor-type-id="text-editor">
637
+        <state relative-caret-position="-495" />
638
+      </provider>
639
+    </entry>
640
+    <entry file="file://$PROJECT_DIR$/lib/TcpServer.h">
641
+      <provider selected="true" editor-type-id="text-editor">
642
+        <state relative-caret-position="195">
643
+          <caret line="14" column="17" selection-start-line="14" selection-start-column="17" selection-end-line="14" selection-end-column="17" />
644
+        </state>
645
+      </provider>
646
+    </entry>
647
+    <entry file="file://$PROJECT_DIR$/superviseur-pthread/src/Program.cpp">
648
+      <provider selected="true" editor-type-id="text-editor">
649
+        <state relative-caret-position="419">
650
+          <caret line="107" selection-start-line="107" selection-end-line="107" />
651
+          <folding>
652
+            <element signature="e#90#108#0" expanded="true" />
653
+          </folding>
654
+        </state>
655
+      </provider>
656
+    </entry>
657
+    <entry file="file://$PROJECT_DIR$/examples/CMakeLists.txt">
658
+      <provider selected="true" editor-type-id="text-editor">
659
+        <state relative-caret-position="135">
660
+          <caret line="9" column="22" selection-start-line="9" selection-start-column="22" selection-end-line="9" selection-end-column="22" />
661
+        </state>
662
+      </provider>
663
+    </entry>
664
+    <entry file="file://$PROJECT_DIR$/superviseur-pthread/CMakeLists.txt">
665
+      <provider selected="true" editor-type-id="text-editor">
666
+        <state relative-caret-position="105">
667
+          <caret line="7" column="60" selection-start-line="7" selection-start-column="60" selection-end-line="7" selection-end-column="60" />
668
+        </state>
669
+      </provider>
670
+    </entry>
671
+    <entry file="file://$PROJECT_DIR$/superviseur-pthread/src/Tasks.h">
672
+      <provider selected="true" editor-type-id="text-editor">
673
+        <state relative-caret-position="405">
674
+          <caret line="33" column="40" selection-start-line="33" selection-start-column="40" selection-end-line="33" selection-end-column="40" />
675
+          <folding>
676
+            <element signature="e#319#338#0" expanded="true" />
677
+          </folding>
678
+        </state>
679
+      </provider>
680
+    </entry>
681
+    <entry file="file://$PROJECT_DIR$/superviseur-pthread/src/Tasks.cpp">
682
+      <provider selected="true" editor-type-id="text-editor">
683
+        <state relative-caret-position="509">
684
+          <caret line="245" column="27" selection-start-line="245" selection-start-column="27" selection-end-line="245" selection-end-column="27" />
685
+          <folding>
686
+            <element signature="e#0#18#0" expanded="true" />
687
+          </folding>
688
+        </state>
689
+      </provider>
690
+    </entry>
691
+    <entry file="file://$PROJECT_DIR$/superviseur-xenomai/src/Program.cpp">
692
+      <provider selected="true" editor-type-id="text-editor">
693
+        <state relative-caret-position="373">
694
+          <caret line="148" column="7" selection-start-line="145" selection-start-column="6" selection-end-line="148" selection-end-column="7" />
695
+          <folding>
696
+            <element signature="e#88#106#0" expanded="true" />
697
+          </folding>
698
+        </state>
699
+      </provider>
700
+    </entry>
701
+    <entry file="file://$PROJECT_DIR$/lib/src/Robot.cpp">
702
+      <provider selected="true" editor-type-id="text-editor">
703
+        <state relative-caret-position="165">
704
+          <caret line="29" column="19" selection-start-line="29" selection-start-column="19" selection-end-line="29" selection-end-column="19" />
705
+          <folding>
706
+            <element signature="e#891#909#0" expanded="true" />
707
+          </folding>
708
+        </state>
709
+      </provider>
710
+    </entry>
711
+    <entry file="file://$PROJECT_DIR$/superviseur-xenomai/src/Tasks.h">
712
+      <provider selected="true" editor-type-id="text-editor">
713
+        <state relative-caret-position="748">
714
+          <caret line="84" column="60" selection-start-line="84" selection-start-column="60" selection-end-line="84" selection-end-column="60" />
715
+          <folding>
716
+            <element signature="e#316#341#0" expanded="true" />
717
+          </folding>
718
+        </state>
719
+      </provider>
720
+    </entry>
721
+    <entry file="file://$PROJECT_DIR$/lib/MsgManager.h">
722
+      <provider selected="true" editor-type-id="text-editor">
723
+        <state relative-caret-position="-151">
724
+          <caret line="20" column="8" selection-start-line="20" selection-start-column="8" selection-end-line="20" selection-end-column="8" />
725
+          <folding>
726
+            <element signature="e#86#105#0" expanded="true" />
727
+          </folding>
728
+        </state>
729
+      </provider>
730
+    </entry>
731
+    <entry file="file://$PROJECT_DIR$/superviseur-xenomai/src/Tasks.cpp">
732
+      <provider selected="true" editor-type-id="text-editor">
733
+        <state relative-caret-position="410">
734
+          <caret line="92" column="35" lean-forward="true" selection-start-line="92" selection-start-column="35" selection-end-line="92" selection-end-column="35" />
735
+          <folding>
736
+            <element signature="e#0#19#0" expanded="true" />
737
+            <element signature="e#876#929#0" expanded="true" />
738
+            <element signature="e#1024#1083#0" expanded="true" />
739
+            <element signature="e#1218#1293#0" expanded="true" />
740
+            <element signature="e#1799#1852#0" expanded="true" />
741
+            <element signature="e#1939#2002#0" expanded="true" />
742
+            <element signature="e#2104#2194#0" expanded="true" />
743
+            <element signature="e#2383#2442#0" expanded="true" />
744
+            <element signature="e#2683#2730#0" expanded="true" />
745
+            <element signature="e#3232#3297#0" expanded="true" />
746
+            <element signature="e#3735#3816#0" expanded="true" />
747
+            <element signature="e#3922#3978#0" expanded="true" />
748
+            <element signature="e#6217#6275#0" expanded="true" />
749
+          </folding>
750
+        </state>
751
+      </provider>
752
+    </entry>
753
+    <entry file="file://$PROJECT_DIR$/lib/src/Image.cpp">
754
+      <provider selected="true" editor-type-id="text-editor">
755
+        <state relative-caret-position="419">
756
+          <caret line="51" column="6" selection-start-line="51" selection-start-column="6" selection-end-line="51" selection-end-column="26" />
757
+        </state>
758
+      </provider>
759
+    </entry>
760
+    <entry file="file://$PROJECT_DIR$/lib/src/MsgManager.cpp">
761
+      <provider selected="true" editor-type-id="text-editor">
762
+        <state relative-caret-position="339">
763
+          <caret line="136" column="23" selection-start-line="136" selection-start-column="23" selection-end-line="136" selection-end-column="23" />
764
+          <folding>
765
+            <element signature="e#44#64#0" expanded="true" />
766
+            <element signature="e#751#793#0" expanded="true" />
767
+            <element signature="e#832#878#0" expanded="true" />
768
+            <element signature="e#938#967#0" expanded="true" />
769
+            <element signature="e#1253#1282#0" expanded="true" />
770
+          </folding>
771
+        </state>
772
+      </provider>
773
+    </entry>
774
+    <entry file="file://$PROJECT_DIR$/superviseur-xenomai/CMakeLists.txt">
775
+      <provider selected="true" editor-type-id="text-editor">
776
+        <state relative-caret-position="60">
777
+          <caret line="4" column="82" selection-start-line="4" selection-start-column="82" selection-end-line="4" selection-end-column="82" />
778
+        </state>
779
+      </provider>
780
+    </entry>
781
+    <entry file="file://$PROJECT_DIR$/lib/image.h">
782
+      <provider selected="true" editor-type-id="text-editor">
783
+        <state relative-caret-position="209">
784
+          <caret line="17" selection-start-line="17" selection-end-line="17" />
785
+          <folding>
786
+            <element signature="e#566#599#0" expanded="true" />
787
+            <element signature="e#635#673#0" expanded="true" />
788
+            <element signature="e#865#890#0" expanded="true" />
789
+            <element signature="e#935#962#0" expanded="true" />
790
+          </folding>
791
+        </state>
792
+      </provider>
793
+    </entry>
794
+    <entry file="file://$PROJECT_DIR$/lib/src/message.cpp">
795
+      <provider selected="true" editor-type-id="text-editor">
796
+        <state relative-caret-position="405">
797
+          <caret line="27" column="32" selection-start-line="27" selection-start-column="32" selection-end-line="27" selection-end-column="32" />
798
+        </state>
799
+      </provider>
800
+    </entry>
801
+    <entry file="file://$PROJECT_DIR$/lib/monitor.h">
802
+      <provider selected="true" editor-type-id="text-editor">
803
+        <state relative-caret-position="389">
804
+          <caret line="64" column="94" selection-start-line="64" selection-start-column="94" selection-end-line="64" selection-end-column="94" />
805
+        </state>
806
+      </provider>
807
+    </entry>
808
+    <entry file="file://$PROJECT_DIR$/lib/src/monitor.cpp">
809
+      <provider selected="true" editor-type-id="text-editor">
810
+        <state relative-caret-position="338">
811
+          <caret line="104" column="23" selection-start-line="104" selection-start-column="23" selection-end-line="104" selection-end-column="23" />
812
+        </state>
813
+      </provider>
814
+    </entry>
815
+    <entry file="file://$PROJECT_DIR$/superviseur/src/functions.h">
816
+      <provider selected="true" editor-type-id="text-editor">
817
+        <state relative-caret-position="180">
818
+          <caret line="51" column="21" selection-start-line="51" selection-start-column="12" selection-end-line="51" selection-end-column="21" />
819
+          <folding>
820
+            <element signature="e#319#337#0" expanded="true" />
821
+          </folding>
822
+        </state>
823
+      </provider>
824
+    </entry>
825
+    <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
826
+      <provider selected="true" editor-type-id="text-editor">
827
+        <state relative-caret-position="330">
828
+          <caret line="22" selection-start-line="22" selection-end-line="22" />
829
+        </state>
830
+      </provider>
831
+    </entry>
832
+    <entry file="file://$PROJECT_DIR$/lib/CMakeLists.txt">
833
+      <provider selected="true" editor-type-id="text-editor">
834
+        <state>
835
+          <caret column="81" selection-start-column="81" selection-end-column="81" />
836
+        </state>
837
+      </provider>
838
+    </entry>
839
+    <entry file="file://$PROJECT_DIR$/superviseur/CMakeLists.txt">
840
+      <provider selected="true" editor-type-id="text-editor">
841
+        <state relative-caret-position="135">
842
+          <caret line="9" selection-start-line="9" selection-end-line="9" />
843
+        </state>
844
+      </provider>
845
+    </entry>
846
+    <entry file="file://$PROJECT_DIR$/superviseur/src/main.cpp">
847
+      <provider selected="true" editor-type-id="text-editor">
848
+        <state relative-caret-position="75">
849
+          <caret line="89" column="13" selection-start-line="89" selection-start-column="13" selection-end-line="89" selection-end-column="13" />
850
+          <folding>
851
+            <element signature="e#88#106#0" expanded="true" />
852
+          </folding>
853
+        </state>
854
+      </provider>
855
+    </entry>
856
+    <entry file="file://$PROJECT_DIR$/superviseur/src/functions.cpp">
857
+      <provider selected="true" editor-type-id="text-editor">
858
+        <state relative-caret-position="300">
859
+          <caret line="20" column="19" selection-start-line="20" selection-start-column="19" selection-end-line="20" selection-end-column="19" />
860
+        </state>
861
+      </provider>
862
+    </entry>
863
+  </component>
864
+</project>

+ 16
- 6
software/raspberry/superviseur-robot/CMakeLists.txt View File

@@ -1,13 +1,23 @@
1
-cmake_minimum_required(VERSION 3.9)
2
-project(ProjDestjil CXX)
1
+cmake_minimum_required(VERSION 3.6)
2
+project(ProjDestijl CXX)
3 3
 
4 4
 set (ProjDestjil_VERSION_MAJOR 1)
5 5
 set (ProjDestjil_VERSION_MINOR 0)
6 6
 set (CMAKE_CXX_STANDARD 11)
7 7
 
8
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../lib)
9
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../lib)
8
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
9
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
10
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/superviseur/bin)
11
+
12
+option(BUILD_FOR_XENOMAI "Build for Raspberry" OFF)
13
+
14
+set(CMAKE_BUILD_TYPE DEBUG)
15
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy")
16
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy")
17
+
18
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-as-needed -lalchemy -lcopperplate /usr/xenomai/lib/xenomai/bootstrap.o -Wl,--wrap=main -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld -L/usr/xenomai/lib -lmercury -lpthread -lrt")
10 19
 
11 20
 add_subdirectory("lib")
12
-add_subdirectory("examples")
13
-#add_subdirectory("destjil_init")
21
+#add_subdirectory("examples")
22
+add_subdirectory("superviseur")
23
+

+ 142
- 0
software/raspberry/superviseur-robot/ProjDestijl.cbp View File

@@ -0,0 +1,142 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<CodeBlocks_project_file>
3
+	<FileVersion major="1" minor="6"/>
4
+	<Project>
5
+		<Option title="ProjDestijl"/>
6
+		<Option makefile_is_custom="1"/>
7
+		<Option compiler="gcc"/>
8
+		<Option virtualFolders="CMake Files\;CMake Files\lib\;CMake Files\superviseur\;"/>
9
+		<Build>
10
+			<Target title="all">
11
+				<Option working_dir="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot"/>
12
+				<Option type="4"/>
13
+				<MakeCommands>
14
+					<Build command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 all"/>
15
+					<CompileFile command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
16
+					<Clean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 clean"/>
17
+					<DistClean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 clean"/>
18
+				</MakeCommands>
19
+			</Target>
20
+			<Target title="rebuild_cache">
21
+				<Option working_dir="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot"/>
22
+				<Option type="4"/>
23
+				<MakeCommands>
24
+					<Build command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 rebuild_cache"/>
25
+					<CompileFile command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
26
+					<Clean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 clean"/>
27
+					<DistClean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 clean"/>
28
+				</MakeCommands>
29
+			</Target>
30
+			<Target title="edit_cache">
31
+				<Option working_dir="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot"/>
32
+				<Option type="4"/>
33
+				<MakeCommands>
34
+					<Build command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 edit_cache"/>
35
+					<CompileFile command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
36
+					<Clean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 clean"/>
37
+					<DistClean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile&quot;  VERBOSE=1 clean"/>
38
+				</MakeCommands>
39
+			</Target>
40
+			<Target title="destijl">
41
+				<Option output="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/lib/libdestijl.a" prefix_auto="0" extension_auto="0"/>
42
+				<Option working_dir="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib"/>
43
+				<Option object_output="./"/>
44
+				<Option type="2"/>
45
+				<Option compiler="gcc"/>
46
+				<Compiler>
47
+					<Add directory="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/."/>
48
+				</Compiler>
49
+				<MakeCommands>
50
+					<Build command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 destijl"/>
51
+					<CompileFile command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
52
+					<Clean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 clean"/>
53
+					<DistClean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 clean"/>
54
+				</MakeCommands>
55
+			</Target>
56
+			<Target title="destijl/fast">
57
+				<Option output="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/lib/libdestijl.a" prefix_auto="0" extension_auto="0"/>
58
+				<Option working_dir="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib"/>
59
+				<Option object_output="./"/>
60
+				<Option type="2"/>
61
+				<Option compiler="gcc"/>
62
+				<Compiler>
63
+					<Add directory="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/."/>
64
+				</Compiler>
65
+				<MakeCommands>
66
+					<Build command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 destijl/fast"/>
67
+					<CompileFile command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
68
+					<Clean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 clean"/>
69
+					<DistClean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/Makefile&quot;  VERBOSE=1 clean"/>
70
+				</MakeCommands>
71
+			</Target>
72
+			<Target title="superviseur">
73
+				<Option output="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur/bin/superviseur" prefix_auto="0" extension_auto="0"/>
74
+				<Option working_dir="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/../superviseur/bin"/>
75
+				<Option object_output="./"/>
76
+				<Option type="1"/>
77
+				<Option compiler="gcc"/>
78
+				<Compiler>
79
+					<Add directory="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/./src"/>
80
+					<Add directory="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/../lib"/>
81
+					<Add directory="/usr/xenomai/include"/>
82
+					<Add directory="/usr/xenomai/include/mercury"/>
83
+				</Compiler>
84
+				<MakeCommands>
85
+					<Build command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 superviseur"/>
86
+					<CompileFile command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
87
+					<Clean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 clean"/>
88
+					<DistClean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 clean"/>
89
+				</MakeCommands>
90
+			</Target>
91
+			<Target title="superviseur/fast">
92
+				<Option output="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur/bin/superviseur" prefix_auto="0" extension_auto="0"/>
93
+				<Option working_dir="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/../superviseur/bin"/>
94
+				<Option object_output="./"/>
95
+				<Option type="1"/>
96
+				<Option compiler="gcc"/>
97
+				<Compiler>
98
+					<Add directory="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/./src"/>
99
+					<Add directory="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/../lib"/>
100
+					<Add directory="/usr/xenomai/include"/>
101
+					<Add directory="/usr/xenomai/include/mercury"/>
102
+				</Compiler>
103
+				<MakeCommands>
104
+					<Build command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 superviseur/fast"/>
105
+					<CompileFile command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
106
+					<Clean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 clean"/>
107
+					<DistClean command="/usr/bin/make -f &quot;/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile&quot;  VERBOSE=1 clean"/>
108
+				</MakeCommands>
109
+			</Target>
110
+		</Build>
111
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/image.cpp">
112
+			<Option target="destijl"/>
113
+		</Unit>
114
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/message.cpp">
115
+			<Option target="destijl"/>
116
+		</Unit>
117
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp">
118
+			<Option target="destijl"/>
119
+		</Unit>
120
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/robot.cpp">
121
+			<Option target="destijl"/>
122
+		</Unit>
123
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp">
124
+			<Option target="superviseur"/>
125
+		</Unit>
126
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.h">
127
+			<Option target="superviseur"/>
128
+		</Unit>
129
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/main.cpp">
130
+			<Option target="superviseur"/>
131
+		</Unit>
132
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/CMakeLists.txt">
133
+			<Option virtualFolder="CMake Files\"/>
134
+		</Unit>
135
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/CMakeLists.txt">
136
+			<Option virtualFolder="CMake Files\lib\"/>
137
+		</Unit>
138
+		<Unit filename="/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/CMakeLists.txt">
139
+			<Option virtualFolder="CMake Files\superviseur\"/>
140
+		</Unit>
141
+	</Project>
142
+</CodeBlocks_project_file>

+ 32
- 0
software/raspberry/superviseur-robot/compile_commands.json View File

@@ -0,0 +1,32 @@
1
+[
2
+{
3
+  "directory": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib",
4
+  "command": "/usr/bin/g++   -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/.   -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -g3 -gdwarf-2   -std=gnu++11 -o CMakeFiles/destijl.dir/src/robot.cpp.o -c /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/robot.cpp",
5
+  "file": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/robot.cpp"
6
+},
7
+{
8
+  "directory": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib",
9
+  "command": "/usr/bin/g++   -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/.   -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -g3 -gdwarf-2   -std=gnu++11 -o CMakeFiles/destijl.dir/src/monitor.cpp.o -c /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp",
10
+  "file": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp"
11
+},
12
+{
13
+  "directory": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib",
14
+  "command": "/usr/bin/g++   -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/.   -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -g3 -gdwarf-2   -std=gnu++11 -o CMakeFiles/destijl.dir/src/message.cpp.o -c /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/message.cpp",
15
+  "file": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/message.cpp"
16
+},
17
+{
18
+  "directory": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib",
19
+  "command": "/usr/bin/g++   -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/.   -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -g3 -gdwarf-2   -std=gnu++11 -o CMakeFiles/destijl.dir/src/image.cpp.o -c /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/image.cpp",
20
+  "file": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/image.cpp"
21
+},
22
+{
23
+  "directory": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur",
24
+  "command": "/usr/bin/g++   -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/./src -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury   -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -g3 -gdwarf-2   -std=gnu++11 -o CMakeFiles/superviseur.dir/src/main.cpp.o -c /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/main.cpp",
25
+  "file": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/main.cpp"
26
+},
27
+{
28
+  "directory": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur",
29
+  "command": "/usr/bin/g++   -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/./src -I/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury   -I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -g3 -gdwarf-2   -std=gnu++11 -o CMakeFiles/superviseur.dir/src/functions.cpp.o -c /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp",
30
+  "file": "/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp"
31
+}
32
+]

+ 0
- 36
software/raspberry/superviseur-robot/destijl_init/Makefile View File

@@ -1,36 +0,0 @@
1
-
2
-CC=g++
3
-CFLAGS=-D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -c -g -D_WITH_TRACE_ -I/usr/xenomai/include/ -I/usr/xenomai/include/mercury -MMD -MP
4
-LDFLAGS=-D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -L/usr/xenomai/lib -lalchemy -lcopperplate -lmercury -L/opt/vc/lib -I/usr/local/include -lopencv_highgui -lopencv_core -lopencv_imgproc -Wl,--no-as-needed -lalchemy -lcopperplate /usr/xenomai/lib/xenomai/bootstrap.o -Wl,--wrap=main -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld -L/usr/xenomai/lib -lmercury -lpthread -lrt -Wl,-rpath /usr/xenomai/lib -lopencv_highgui -lopencv_core -lopencv_imgcodecs -lraspicam_cv -lopencv_imgproc -lpthread
5
-EXEC=superviseur
6
-SRC= $(wildcard *.cpp ./src/*.cpp ./../src/*.cpp)
7
-OBJ= $(SRC:.cpp=.o)
8
-
9
-
10
-all: $(EXEC)
11
-
12
-
13
-$(EXEC): $(OBJ)
14
-	@$(CC) -o $@ $^ $(LDFLAGS)
15
-
16
-
17
-main.o: main.cpp
18
-
19
-
20
-%.o: %.cpp
21
-	@$(CC) -o $@ -c $< $(CFLAGS)
22
-
23
-
24
-.PHONY: clean mrproper
25
-
26
-
27
-clean:
28
-	@rm -rf *.o
29
-	@rm -rf *.d
30
-	@rm -rf ./src/*.o
31
-	@rm -rf ./src/*.d
32
-	@rm -rf ./../src/*o
33
-	@rm -rf ./../src/*.d
34
-
35
-mrproper: clean
36
-	@rm -rf $(EXEC)

+ 4
- 4
software/raspberry/superviseur-robot/examples/CMakeLists.txt View File

@@ -4,8 +4,8 @@ set(serialTest_FILES ./src/serialTest.cpp)
4 4
 set(serverTest_FILES ./src/serverTest.cpp)
5 5
 include_directories(./src ../lib)
6 6
 
7
-add_executable(serialTest ${serialTest_FILES})
8
-target_link_libraries(serialTest destjil)
7
+add_executable(serialtest ${serialTest_FILES})
8
+target_link_libraries(serialtest destijl)
9 9
 
10
-add_executable(serverTest ${serverTest_FILES})
11
-target_link_libraries(serverTest destjil)
10
+add_executable(servertest ${serverTest_FILES})
11
+target_link_libraries(servertest destijl)

+ 5
- 0
software/raspberry/superviseur-robot/lib/.gitignore View File

@@ -1 +1,6 @@
1
+CMakeFiles/
2
+
1 3
 libdestjil.a
4
+Makefile
5
+*.cmake
6
+

+ 2
- 2
software/raspberry/superviseur-robot/lib/CMakeLists.txt View File

@@ -1,5 +1,5 @@
1
-set(LIB_FILES ./src/Serial.cpp ./src/Robot.cpp ./src/TcpServer.cpp)
1
+set(LIB_FILES ./src/robot.cpp ./src/monitor.cpp ./src/message.cpp ./src/image.cpp)
2 2
 include_directories("./")
3 3
 
4
-add_library(destjil STATIC ${LIB_FILES})
4
+add_library(destijl STATIC ${LIB_FILES})
5 5
 

+ 0
- 84
software/raspberry/superviseur-robot/lib/Robot.h View File

@@ -1,84 +0,0 @@
1
-/*******************************************************************************
2
- * Copyright (c) 2018 INSA - GEI, Toulouse, France.
3
- * All rights reserved. This program and the accompanying materials
4
- * are made available "AS IS", without any warranty of any kind.
5
- *
6
- * INSA assumes no responsibility for errors or omissions in the 
7
- * software or documentation available. 
8
- *
9
- * Contributors:
10
- *     Lucien Senaneuch - Initial API and implementation
11
- *     Sebastien DI MERCURIO - Maintainer since Octobre 2018
12
- *******************************************************************************/
13
-/**
14
- * \file      robot.h
15
- * \author    L.Senaneuch
16
- * \version   1.0
17
- * \date      06/06/2017
18
- * \brief     Fonction permettant la communication avec le robot.
19
- *
20
- * \details   Ce fichier regroupe des fonctions facilitant la communication avec le robot en utilisant le port serie USART
21
- */
22
-
23
-#ifndef __ROBOT_H__
24
-#define __ROBOT_H__
25
-
26
-#include <iostream>
27
-#include <string>
28
-#include <Serial.h>
29
-
30
-using namespace std;
31
-
32
-#define REJECTED_COMMAND                    -3
33
-#define INVALID_COMMAND                     -4
34
-#define TIMEOUT_COMMAND                     -5
35
-#define INVALID_ANSWER                      -6
36
-
37
-#define BATTERY_FULL                        2
38
-#define BATTERY_LOW                         1
39
-#define BATTERY_EMPTY                       0
40
-
41
-class Robot : public Serial {
42
-    public:
43
-        Robot();
44
-        virtual ~Robot();
45
-
46
-        char Open();
47
-        char Open(const char *path);
48
-        char Close();
49
-
50
-        int GetLastCommandStatus();
51
-
52
-        void Ping();
53
-        void Reset();
54
-
55
-        void StartWithoutWatchdog();
56
-        void StartWithWatchdog();
57
-        void ResetWatchdog();
58
-
59
-        void Move(int distance);
60
-        void Turn(int angle);
61
-
62
-        void PowerOff();
63
-
64
-        char GetBatteryLevel();
65
-        string GetVersion();
66
-        bool IsBusy();
67
-
68
-        // Ces deux methodes virtuelles sont a redefinir (surcharger) dans une classe qui etends la classe Robot
69
-        // Servez vous en pour faire une action avant (prologue) ou apres (epilogue) une commande au robot
70
-        virtual void CommunicationProlog();
71
-        virtual void CommunicationEpilog();
72
-
73
-        static const string InvalidAnswerException;
74
-    private:
75
-
76
-        int lastCommandStatus;
77
-
78
-        char SendCommand(string cmd, string *ans);
79
-        string AddChecksum(string cmd);
80
-        bool ValidateChecksum(string *answerWithoutChecksum, string answer);
81
-        void CheckAnswer(string ans);
82
-};
83
-
84
-#endif //__ROBOT_H__

+ 0
- 49
software/raspberry/superviseur-robot/lib/Serial.h View File

@@ -1,49 +0,0 @@
1
-/*
2
- * Serial.h
3
- *
4
- *  Created on: 12 oct. 2018
5
- *      Author: dimercur
6
- */
7
-
8
-#ifndef SERIAL_H_
9
-#define SERIAL_H_
10
-
11
-#include <iostream>
12
-#include <string>
13
-#include <vector>
14
-
15
-using namespace std;
16
-
17
-#define SUCCESS                             0
18
-#define INVALID_COMMUNICATION_PORT          -1
19
-#define COMMUNICATION_PORT_ALREADY_OPENED   -2
20
-
21
-#define DEFAULT_SERIAL_PORT             "/dev/ttyS0"
22
-#define DEFAULT_BAUDRATE                9600
23
-
24
-class Serial {
25
-    public:
26
-        static const string TimeoutException;
27
-        static const string IOErrorException;
28
-        static const string BufferOverflowException;
29
-
30
-        Serial();
31
-        virtual ~Serial();
32
-
33
-        char Open(void);
34
-        char Open(int baudrate);
35
-        char Open(const char *path, int baudrate);
36
-        char Close(void);
37
-
38
-        bool IsOpen();
39
-        ssize_t Send(string mes);
40
-        string Receive(int size);
41
-        string Receive(vector<char> endingChars, int maxLength);
42
-
43
-    private:
44
-        int serialPortDescriptor;
45
-        int SetBaudrate(int baudrate);
46
-        char GetChar(); // read 1 char
47
-};
48
-
49
-#endif /* SERIAL_H_ */

+ 0
- 35
software/raspberry/superviseur-robot/lib/TcpServer.h View File

@@ -1,35 +0,0 @@
1
-//
2
-// Created by senaneuc on 12/06/18.
3
-//
4
-
5
-#ifndef TCP_SERVER_H_
6
-#define TCP_SERVER_H_
7
-
8
-#define NB_CONNECTION_MAX 5
9
-
10
-#include <iostream>
11
-#include <vector>
12
-
13
-using namespace std;
14
-
15
-class TcpServer {
16
-public:
17
-    TcpServer();
18
-    virtual ~TcpServer();
19
-
20
-    int Listen (int port);
21
-    int AcceptClient();
22
-    int Send(int clien_fd, string mes);
23
-    int Broadcast(string mes);
24
-    string Receive(int client_fd, int size);
25
-
26
-    const vector<int> &getSocketClients() const;
27
-
28
-    void SetSocketClients(const vector<int> &socketClients);
29
-
30
-private:
31
-    vector<int> socketClients;
32
-    int socketFD;
33
-};
34
-
35
-#endif /* TCP_SERVER_H_ */

+ 24
- 0
software/raspberry/superviseur-robot/lib/definitions.h View File

@@ -14,6 +14,30 @@
14 14
 #ifndef DEFINITIONS_H
15 15
 #define DEFINITIONS_H
16 16
 
17
+#define OPEN_COM_DMB  'o'
18
+#define CLOSE_COM_DMB 'C'
19
+
20
+#define DMB_PING                'p'
21
+#define DMB_IDLE                'r'
22
+#define DMB_START_WITHOUT_WD    'u'
23
+#define DMB_START_WITH_WD       'W'
24
+#define DMB_RELOAD_WD           'w'
25
+#define DMB_GET_VBAT            'v'
26
+#define DMB_IS_BUSY             'b'
27
+#define DMB_MOVE                'M'
28
+#define DMB_TURN                'T'
29
+#define DMB_GO_FORWARD          'F'
30
+#define DMB_GO_BACK             'B'
31
+#define DMB_GO_LEFT             'L'
32
+#define DMB_GO_RIGHT            'R'
33
+#define DMB_STOP_MOVE           'S'
34
+
35
+#define ROBOT_TIMED_OUT -3
36
+#define ROBOT_UKNOWN_CMD -2
37
+#define ROBOT_ERROR  -1
38
+#define ROBOT_CHECKSUM  -4
39
+#define ROBOT_OK    0
40
+
17 41
 #define CAM_OPEN                    'A'
18 42
 #define CAM_CLOSE                   'I'
19 43
 #define CAM_ASK_ARENA               'y'

+ 2
- 0
software/raspberry/superviseur-robot/lib/image.h View File

@@ -14,6 +14,8 @@
14 14
 #ifndef IMAGERIE_H
15 15
 #define IMAGERIE_H
16 16
 
17
+#define __STUB__
18
+
17 19
 #ifndef __STUB__
18 20
 #include <raspicam/raspicam_cv.h>
19 21
 #else

+ 1
- 1
software/raspberry/superviseur-robot/lib/monitor.h View File

@@ -62,7 +62,7 @@ typedef struct {
62 62
  * \param    file  chemin du fichier de l'interface (défaut ./interface.js)
63 63
  * \return   retourne 0 si le process a été lancé et -1 sinon.
64 64
  */
65
-int run_nodejs(const char * path = DEFAULT_NODEJS_PATH, char * file = DEFAULT_INTERFACE_FILE);
65
+int run_nodejs(const char *path = (const char*)DEFAULT_NODEJS_PATH, char *file = (const char*)DEFAULT_INTERFACE_FILE);
66 66
 
67 67
 /**
68 68
  * \brief    Tue le process exécutant nodejs.

+ 64
- 0
software/raspberry/superviseur-robot/lib/robot.h View File

@@ -0,0 +1,64 @@
1
+/**
2
+ * \file      robot.h
3
+ * \author    L.Senaneuch
4
+ * \version   1.0
5
+ * \date      06/06/2017
6
+ * \brief     Fonction permettant la communication avec le robot.
7
+ *
8
+ * \details   Ce fichier regroupe des fonctions facilitant la communication avec le robot en utilisant le port serie USART
9
+ */
10
+
11
+
12
+#ifndef DUMBERC_SERIAL_H_H
13
+#define DUMBERC_SERIAL_H_H
14
+
15
+#include <stdio.h>
16
+#include <unistd.h>
17
+#include <fcntl.h>
18
+#include <termios.h>
19
+#include <string.h>
20
+#include <stdlib.h>
21
+#include "definitions.h"
22
+
23
+
24
+#define serialPort "/dev/ttyS0"
25
+
26
+typedef struct
27
+   {
28
+    char header[4];
29
+    char data[20];
30
+   } MessageToRobot;
31
+
32
+ /**
33
+ * \brief     Ouvre la communication avec le robot.
34
+ * \details   Ouvre le serial port passé en paramétre. Par defaut cette fonction ouvre le port ttySO connecté au module xbee.
35
+ *             
36
+ * \param    *path    chaine de caractère indiquant le path du port serie à ouvrir.
37
+ * \return    Return -1 si l'ouverture c'est mal passé et 0 si le port est ouvert.
38
+ */
39
+int open_communication_robot(const char * path=serialPort);
40
+
41
+ /**
42
+ * \brief      Ferme la communication avec le robot.
43
+ * \details    Ferme le descripteur de fichier du port serie contrôlant le robot.
44
+ *             
45
+ * \param     void	aucun 
46
+ * \return    Retourne -1 en cas d'erreur ou 0 en cas de fermeture effectué
47
+ */
48
+int close_communication_robot(void);
49
+
50
+ /**
51
+ * \brief      Envoi une commande au robot et attends sa réponse.
52
+ * \details    Envoi une commande au robot en ajoutant le checksum et lis la réponse du robot en verifiant le checksum.
53
+			   Le premier paramétre \a cmd correspond au type de commande ex : PING, SETMOVE ...
54
+			   Le second paramétre  \a *arg correspond aux arguments à la commande ex : SETMOVE, "100"
55
+			   La fonction retourne un code confirmation transmise par le robot (ROBOT_CHEKSUM, ROBOT_ERROR, ROBOT_TIMED_OUT, ROBOT_OK, ROBOT_UKNOW_CMD)
56
+ *             
57
+ * \param    cmd    Entête de la commande
58
+ * \param    *arg   Argument de la commande 
59
+ * \return   retourne un code confirmation.
60
+ */
61
+int send_command_to_robot(char cmd, const char * arg=NULL);
62
+
63
+
64
+#endif //DUMBERC_SERIAL_H_H

+ 0
- 349
software/raspberry/superviseur-robot/lib/src/Robot.cpp View File

@@ -1,349 +0,0 @@
1
-/*******************************************************************************
2
- * Copyright (c) 2018 INSA - GEI, Toulouse, France.
3
- * All rights reserved. This program and the accompanying materials
4
- * are made available "AS IS", without any warranty of any kind.
5
- *
6
- * INSA assumes no responsibility for errors or omissions in the 
7
- * software or documentation available. 
8
- *
9
- * Contributors:
10
- *     Lucien Senaneuch - Initial API and implementation
11
- *     Sebastien DI MERCURIO - Maintainer since Octobre 2018
12
- *******************************************************************************/
13
-
14
-/**
15
- * \file      robot.cpp
16
- * \author    L.Senaneuch
17
- * \version   1.0
18
- * \date      06/06/2017
19
- * \brief     Fonction permettant la communication avec le robot.
20
- *
21
- * \details   Ce fichier regroupe des fonctions facilitant la communication avec le robot en utilisant le port serie USART
22
- */
23
-
24
-#include "Robot.h"
25
-
26
-#include <unistd.h>
27
-#include <fcntl.h>
28
-#include <termios.h>
29
-
30
-#include <stdlib.h>
31
-#include "definitions.h"
32
-
33
-using namespace std;
34
-
35
-#define ROBOT_CMD_ENDING_CHAR           '\r'
36
-
37
-#define ROBOT_CMD_PING                  'p'
38
-#define ROBOT_CMD_RESET                 'r'
39
-#define ROBOT_CMD_START_WITHOUT_WD      'u'
40
-#define ROBOT_CMD_START_WITH_WD         'W'
41
-#define ROBOT_CMD_RELOAD_WD             'w'
42
-#define ROBOT_CMD_GET_VBAT              'v'
43
-#define ROBOT_CMD_IS_BUSY               'b'
44
-#define ROBOT_CMD_MOVE                  'M'
45
-#define ROBOT_CMD_TURN                  'T'
46
-#define ROBOT_CMD_GET_VERSION           'V'
47
-#define ROBOT_CMD_POWER_OFF             'z'
48
-
49
-#define ROBOT_CMD_OK_ANS                "O"
50
-#define ROBOT_CMD_ERR_ANS               "E"
51
-#define ROBOT_CMD_UNKNOW_ANS            "C"
52
-
53
-const string Robot::InvalidAnswerException = "Invalid answer exception";
54
-
55
-Robot::Robot() {
56
-
57
-}
58
-
59
-Robot::~Robot() {
60
-    this->Close();
61
-}
62
-
63
-char Robot::Open() {
64
-    return Serial::Open(DEFAULT_SERIAL_PORT,9600);
65
-}
66
-
67
-char Robot::Open(const char *path) {
68
-    return Serial::Open(path,9600);
69
-}
70
-
71
-char Robot::Close() {
72
-    return Serial::Close();
73
-}
74
-
75
-int Robot::GetLastCommandStatus() {
76
-    return this->lastCommandStatus;
77
-}
78
-
79
-void Robot::Ping() {
80
-#ifndef __STUB__
81
-    string ans;
82
-    SendCommand(string(1,ROBOT_CMD_PING), &ans);
83
-
84
-    CheckAnswer(ans);
85
-#else
86
-    return SUCCESS;
87
-#endif /* __STUB__ */
88
-}
89
-
90
-void Robot::Reset() {
91
-#ifndef __STUB__
92
-    string ans;
93
-    SendCommand(string(1,ROBOT_CMD_RESET), &ans);
94
-
95
-    CheckAnswer(ans);
96
-#else
97
-    return SUCCESS;
98
-#endif /* __STUB__ */
99
-}
100
-
101
-void Robot::StartWithoutWatchdog() {
102
-#ifndef __STUB__
103
-    string ans;
104
-    SendCommand(string(1,ROBOT_CMD_START_WITHOUT_WD), &ans);
105
-
106
-    CheckAnswer(ans);
107
-#else
108
-    return SUCCESS;
109
-#endif /* __STUB__ */
110
-}
111
-
112
-void Robot::StartWithWatchdog() {
113
-#ifndef __STUB__
114
-    string ans;
115
-    SendCommand(string(1,ROBOT_CMD_START_WITH_WD), &ans);
116
-
117
-    CheckAnswer(ans);
118
-#else
119
-    return SUCCESS;
120
-#endif /* __STUB__ */
121
-}
122
-
123
-void Robot::ResetWatchdog() {
124
-#ifndef __STUB__
125
-    string ans;
126
-    SendCommand(string(1,ROBOT_CMD_RELOAD_WD), &ans);
127
-
128
-    CheckAnswer(ans);
129
-#else
130
-    return SUCCESS;
131
-#endif /* __STUB__ */
132
-}
133
-
134
-void Robot::Move(int distance) {
135
-#ifndef __STUB__
136
-    string ans;
137
-    SendCommand(string(1,ROBOT_CMD_MOVE) + "="+to_string(distance), &ans);
138
-
139
-    CheckAnswer(ans);
140
-#else
141
-    return SUCCESS;
142
-#endif /* __STUB__ */
143
-}
144
-
145
-void Robot::Turn(int angle) {
146
-#ifndef __STUB__
147
-    string ans;
148
-    SendCommand(string(1,ROBOT_CMD_TURN) + "="+to_string(angle), &ans);
149
-
150
-    CheckAnswer(ans);
151
-#else
152
-    return SUCCESS;
153
-#endif /* __STUB__ */
154
-}
155
-
156
-void Robot::PowerOff() {
157
-#ifndef __STUB__
158
-    string ans;
159
-    SendCommand(string(1,ROBOT_CMD_POWER_OFF), &ans);
160
-
161
-    CheckAnswer(ans);
162
-#else
163
-    return SUCCESS;
164
-#endif /* __STUB__ */
165
-}
166
-
167
-char Robot::GetBatteryLevel() {
168
-#ifndef __STUB__
169
-    string ans;
170
-
171
-    SendCommand(string(1,ROBOT_CMD_GET_VBAT), &ans);
172
-    lastCommandStatus=SUCCESS;
173
-
174
-    if (ans.length()==1) {
175
-        if ((ans[0] != '2') && (ans[0] != '1') && (ans[0] != '0')) {
176
-            lastCommandStatus=INVALID_ANSWER;
177
-            throw (InvalidAnswerException + " raised in Robot::GetBatteryLevel. Invalid battery value (" + ans[0] +")\n");
178
-        }
179
-    } else {
180
-        lastCommandStatus=INVALID_ANSWER;
181
-        throw (InvalidAnswerException + " raised in Robot::GetBatteryLevel. Invalid answer length (" + to_string(ans.length())+")\n");
182
-    }
183
-
184
-    return ans[0];
185
-#else
186
-    return BATTERY_FULL;
187
-#endif /* __STUB__ */
188
-}
189
-
190
-string Robot::GetVersion() {
191
-#ifndef __STUB__
192
-    string ans;
193
-
194
-    SendCommand(string(1,ROBOT_CMD_GET_VERSION), &ans);
195
-    lastCommandStatus=SUCCESS;
196
-
197
-    if (ans.find("version")== string::npos) {
198
-        lastCommandStatus=INVALID_ANSWER;
199
-        throw (InvalidAnswerException + " raised in Robot::GetVersion. Invalid version (" + ans +")\n");
200
-    }
201
-
202
-    return ans;
203
-#else
204
-    return "1.3";
205
-#endif /* __STUB__ */
206
-}
207
-
208
-bool Robot::IsBusy() {
209
-#ifndef __STUB__
210
-    string ans;
211
-
212
-    SendCommand(string(1,ROBOT_CMD_IS_BUSY), &ans);
213
-    lastCommandStatus=SUCCESS;
214
-
215
-    if (ans.length()!=1) {
216
-        lastCommandStatus=INVALID_ANSWER;
217
-        throw (InvalidAnswerException + " raised in Robot::GetBatteryLevel. Invalid answer length (" + to_string(ans.length())+")\n");
218
-    }
219
-
220
-    if (ans[0]=='1')
221
-        return true;
222
-    else if (ans[0]=='0')
223
-        return false;
224
-    else {
225
-        lastCommandStatus=INVALID_ANSWER;
226
-        throw (InvalidAnswerException + " raised in Robot::IsBusy. Invalid value (" + ans[0] +")\n");
227
-    }
228
-#else
229
-    return false;
230
-#endif /* __STUB__ */
231
-}
232
-
233
-void Robot::CommunicationProlog() {}
234
-void Robot::CommunicationEpilog() {}
235
-
236
-/****************************/
237
-/* PRIVATE                  */
238
-/****************************/
239
-
240
-char Robot::SendCommand(string cmd, string *ans) {
241
-    string commandString;
242
-    commandString = this->AddChecksum(cmd);
243
-
244
-    this->CommunicationProlog(); // action avant le debut de la commande
245
-
246
-    ssize_t status = Send(commandString);
247
-
248
-    if (status == (ssize_t)commandString.length()) {
249
-        // Recuperation de la reponse
250
-        string commandResponse;
251
-        vector<char> endingChars;
252
-
253
-        endingChars.push_back('\r');
254
-        try {
255
-            commandResponse = Serial::Receive(endingChars,30);
256
-        } catch (string e) {
257
-            if (e.find("Timeout")!= string::npos)
258
-                lastCommandStatus= TIMEOUT_COMMAND;
259
-            else
260
-                lastCommandStatus=INVALID_ANSWER;
261
-
262
-            if (lastCommandStatus == TIMEOUT_COMMAND)
263
-                throw (Serial::TimeoutException + " raised in Robot::SendCommand. Timeout while receiving answer from robot.\n");
264
-            else
265
-                throw (e + " raised in Robot::SendCommand.\n");
266
-        }
267
-
268
-        this->CommunicationEpilog(); // Action a faire apres la commande
269
-
270
-        if (ValidateChecksum(&commandResponse, commandResponse)) {
271
-            ans->assign(commandResponse);
272
-        } else {
273
-            lastCommandStatus = INVALID_ANSWER;
274
-            throw InvalidAnswerException;
275
-        }
276
-
277
-        lastCommandStatus=SUCCESS;
278
-    } else {
279
-        lastCommandStatus=INVALID_COMMUNICATION_PORT;
280
-
281
-        throw IOErrorException;
282
-    }
283
-
284
-    return lastCommandStatus;
285
-}
286
-
287
-void Robot::CheckAnswer(string ans) {
288
-
289
-    if (ans.length()==1)
290
-    {
291
-        switch (ans.at(0)) {
292
-            case 'o':
293
-            case 'O':
294
-                lastCommandStatus=SUCCESS;
295
-                break;
296
-            case 'e':
297
-            case 'E':
298
-                lastCommandStatus=REJECTED_COMMAND;
299
-                break;
300
-            case 'c':
301
-            case 'C':
302
-                lastCommandStatus=INVALID_COMMAND;
303
-                break;
304
-            default:
305
-                lastCommandStatus = INVALID_ANSWER;
306
-                throw InvalidAnswerException;
307
-        }
308
-    } else {
309
-        lastCommandStatus = INVALID_ANSWER;
310
-        throw InvalidAnswerException;
311
-    }
312
-}
313
-
314
-string Robot::AddChecksum(string cmd) {
315
-    string commandWithChecksum(cmd);
316
-    char checksum=0;
317
-
318
-    commandWithChecksum.resize(cmd.length()+2, ' ');
319
-
320
-    for (size_t i=0; i<commandWithChecksum.length()-2; i++) {
321
-        checksum = checksum^commandWithChecksum.at(i);
322
-    }
323
-
324
-    commandWithChecksum.at(commandWithChecksum.length()-2) = checksum;
325
-    commandWithChecksum.at(commandWithChecksum.length()-1) = '\r';
326
-
327
-    return commandWithChecksum;
328
-}
329
-
330
-bool Robot::ValidateChecksum(string *answerWithoutChecksum, string answer) {
331
-    string localAnswer(answer, 0, answer.length()-1); // recopie de la chaine initiale, sans le dernier caractere (checksum)
332
-    char checksum=0;
333
-    bool status=false;
334
-
335
-    if (answer.length()<2) // trop court pour contenir un checksum
336
-        throw InvalidAnswerException;
337
-    else {
338
-        for (size_t i=0; i< answer.length()-1; i++) {
339
-            checksum = checksum^answer.at(i);
340
-        }
341
-
342
-        if (answer.at(answer.length()-1) == checksum) {
343
-            status=true;
344
-        }
345
-    }
346
-
347
-    answerWithoutChecksum->assign(localAnswer);
348
-    return status;
349
-}

+ 0
- 164
software/raspberry/superviseur-robot/lib/src/Serial.cpp View File

@@ -1,164 +0,0 @@
1
-/*******************************************************************************
2
- * Copyright (c) 2018 INSA - GEI, Toulouse, France.
3
- * All rights reserved. This program and the accompanying materials
4
- * are made available "AS IS", without any warranty of any kind.
5
- *
6
- * INSA assumes no responsibility for errors or omissions in the 
7
- * software or documentation available. 
8
- *
9
- * Part of code Copyright ST Microelectronics.
10
- *
11
- * Contributors:
12
- *     Lucien Senaneuch - Initial API and implementation
13
- *     Sebastien DI MERCURIO - Maintainer since Octobre 2018
14
- *******************************************************************************/
15
-
16
-#include <Serial.h>
17
-#include <unistd.h>
18
-#include <fcntl.h>
19
-#include <termios.h>
20
-
21
-#include <stdlib.h>
22
-
23
-#include <algorithm>
24
-
25
-const string Serial::TimeoutException = "Timeout exception";
26
-const string Serial::IOErrorException = "IO error exception";
27
-const string Serial::BufferOverflowException = "Buffer overflow exception";
28
-
29
-Serial::Serial() {
30
-    this->serialPortDescriptor=-1;
31
-}
32
-
33
-Serial::~Serial() {
34
-    this->Close();
35
-}
36
-
37
-char Serial::Open(void) {
38
-    return this->Open(DEFAULT_SERIAL_PORT, DEFAULT_BAUDRATE);
39
-}
40
-
41
-char Serial::Open(int baudrate) {
42
-    return this->Open(DEFAULT_SERIAL_PORT, baudrate);
43
-}
44
-
45
-char Serial::Open(const char *path, int baudrate) {
46
-#ifndef __STUB__
47
-    struct termios options;
48
-
49
-    if (this->IsOpen() == true) return COMMUNICATION_PORT_ALREADY_OPENED;
50
-
51
-    this->serialPortDescriptor = open(path, O_RDWR | O_NOCTTY | O_NDELAY);
52
-
53
-    if(this->serialPortDescriptor >= 0) {
54
-        fcntl(this->serialPortDescriptor, F_SETFL, 0);
55
-        tcgetattr(this->serialPortDescriptor, &options);
56
-        options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
57
-        cfsetospeed (&options, this->SetBaudrate(baudrate));
58
-        cfsetispeed (&options, this->SetBaudrate(baudrate));
59
-        options.c_cc[VMIN]=0;
60
-        options.c_cc[VTIME]=10;
61
-        tcsetattr(this->serialPortDescriptor, TCSANOW, &options);
62
-
63
-        return SUCCESS;
64
-    }
65
-    else {
66
-        std::cerr << "[Robot::Open] Can't open port " << path;
67
-        return INVALID_COMMUNICATION_PORT;
68
-    }
69
-#else
70
-    return SUCCESS;
71
-#endif
72
-}
73
-
74
-char Serial::Close(void) {
75
-#ifndef __STUB__
76
-    if (this->serialPortDescriptor<0) {
77
-        if (close(this->serialPortDescriptor) == 0)
78
-            return SUCCESS;
79
-        else return INVALID_COMMUNICATION_PORT;
80
-    } else return SUCCESS;
81
-#else
82
-    return SUCCESS;
83
-#endif
84
-}
85
-
86
-bool Serial::IsOpen() {
87
-    if(this->serialPortDescriptor >= 0)
88
-        return true;
89
-    else
90
-        return false;
91
-}
92
-
93
-ssize_t Serial::Send(string mes) {
94
-    ssize_t n;
95
-
96
-    n=write(this->serialPortDescriptor, (void*)mes.c_str(), mes.length());
97
-
98
-    if (n< (ssize_t)mes.length())
99
-        throw (IOErrorException + " raised in Serial::Send. Requested to send " + to_string(mes.length()) + " characters, sent only " + to_string(n) +"\n");
100
-    else
101
-        return n;
102
-}
103
-
104
-string Serial::Receive(int size) {
105
-    string mes;
106
-
107
-    while(mes.length() < (unsigned int)size){
108
-        mes += this->GetChar();
109
-    }
110
-
111
-    return mes;
112
-}
113
-
114
-string Serial::Receive(vector<char> endingChars,int maxLength) {
115
-    string mes;
116
-    char c;
117
-
118
-    bool characterFound = false;
119
-
120
-    do {
121
-        c= GetChar();
122
-
123
-        if (std::find(endingChars.begin(), endingChars.end(), c)!=endingChars.end()) //recherche du caractere dans la liste des caractere de fin
124
-            characterFound=true;
125
-        else {
126
-            mes += c;
127
-        }
128
-    } while ((mes.length()<(unsigned int)maxLength) && (characterFound==false));
129
-
130
-    if (mes.length()>=(unsigned int)maxLength) {
131
-        throw (BufferOverflowException + " raised in Serial::Receive. Received data exceed " + to_string(maxLength) + "chars\n");
132
-    }
133
-
134
-    return mes;
135
-}
136
-
137
-int Serial::SetBaudrate(int baudrate) {
138
-    switch(baudrate){
139
-        case 4800:
140
-            return baudrate = B4800;
141
-        case 9600:
142
-            return baudrate = B9600;
143
-        case 38400:
144
-            return baudrate = B38400;
145
-        case 57600:
146
-            return baudrate = B57600;
147
-        case 115200:
148
-            return baudrate = B115200;
149
-        default:
150
-            std::cerr << "Baudrate not supported" << std::endl;
151
-            return -1;
152
-    }
153
-}
154
-
155
-char Serial::GetChar() {
156
-    char c;
157
-
158
-    if (read(this->serialPortDescriptor, &c, 1) > 0)
159
-        return c;
160
-    else
161
-        throw (TimeoutException + " raised in Serial::GetChar\n");
162
-}
163
-
164
-

+ 0
- 93
software/raspberry/superviseur-robot/lib/src/TcpServer.cpp View File

@@ -1,93 +0,0 @@
1
-/*******************************************************************************
2
- * Copyright (c) 2018 INSA - GEI, Toulouse, France.
3
- * All rights reserved. This program and the accompanying materials
4
- * are made available "AS IS", without any warranty of any kind.
5
- *
6
- * INSA assumes no responsibility for errors or omissions in the 
7
- * software or documentation available. 
8
- *
9
- * Part of code Copyright ST Microelectronics.
10
- *
11
- * Contributors:
12
- *     Lucien Senaneuch - Initial API and implementation
13
- *     Sebastien DI MERCURIO - Maintainer since Octobre 2018
14
- *******************************************************************************/
15
-
16
-
17
-#include "TcpServer.h"
18
-#include <netinet/in.h>
19
-#include <zconf.h>
20
-#include <vector>
21
-
22
-TcpServer::TcpServer() {
23
-    this->socketFD = -1;
24
-    this->socketClients.clear();
25
-}
26
-
27
-int TcpServer::Listen (int port) {
28
-    struct sockaddr_in server;
29
-
30
-    this->socketFD = socket(AF_INET, SOCK_STREAM, 0);
31
-    if(this->socketFD < 0){
32
-        throw invalid_argument("Can not create socket");
33
-    }
34
-
35
-    server.sin_addr.s_addr = INADDR_ANY;
36
-    server.sin_family = AF_INET;
37
-    server.sin_port = htons(port);
38
-
39
-    if(bind(this->socketFD, (struct sockaddr *) &server, sizeof(server)) < 0) {
40
-        throw invalid_argument("Can not bind socket");
41
-    }
42
-
43
-    listen(this->socketFD , NB_CONNECTION_MAX);
44
-
45
-    return this->socketFD;
46
-}
47
-
48
-int TcpServer::AcceptClient() {
49
-    struct sockaddr_in client;
50
-    int c = sizeof(struct sockaddr_in);
51
-
52
-    int fd = accept(this->socketFD,(struct sockaddr *) &client, (socklen_t*)&c);
53
-
54
-    if (fd >=0 )
55
-        this->socketClients.push_back(fd);
56
-    else throw invalid_argument("Accept failed in TcpServer::AcceptClient");
57
-
58
-    return fd;
59
-}
60
-
61
-int TcpServer::Send(int client, string mes) {
62
-    return write(client, mes.c_str(), mes.size());
63
-}
64
-
65
-string TcpServer::Receive(int client_fd, int size){
66
-    char tab[size];
67
-
68
-    if(recv(client_fd,tab,size,0) >0) {
69
-        tab[size] = 0;
70
-        return string(tab);
71
-    } else
72
-        return string();
73
-}
74
-
75
-int TcpServer::Broadcast(string mes) {
76
-    for (int socket : this->socketClients) {
77
-        int err = write(socket, mes.c_str(), mes.size());
78
-    }
79
-
80
-    return 0;
81
-}
82
-
83
-const vector<int> &TcpServer::getSocketClients() const {
84
-    return socketClients;
85
-}
86
-
87
-void TcpServer::SetSocketClients(const std::vector<int> &socketClients) {
88
-    this->socketClients = socketClients;
89
-}
90
-
91
-TcpServer::~TcpServer() {
92
-    close(this->socketFD);
93
-}

+ 1
- 1
software/raspberry/superviseur-robot/lib/src/message.cpp View File

@@ -25,5 +25,5 @@ void free_msgToMon_data(MessageToMon *msg) {
25 25
 
26 26
 void print_msgToMon(MessageToMon *msg) {
27 27
     printf("header: %s\n", msg->header);
28
-    printf("data: %s\n", msg->data);
28
+    printf("data: %s\n", (char*)msg->data);
29 29
 }

+ 1
- 1
software/raspberry/superviseur-robot/lib/src/monitor.cpp View File

@@ -102,7 +102,7 @@ int send_message_to_monitor(const char* typeMessage, const void * data) {
102 102
         serverSend("TRAME", 5);
103 103
         return 0;
104 104
     } else if ((string) typeMessage == HEADER_STM_POS) {
105
-        char buffer[20];
105
+        char buffer[400];
106 106
         Position * maPosition = (Position*) data;
107 107
         sprintf(buffer, "POScenter: %3d;%3d | %.1fTRAME", maPosition->center.x, maPosition->center.y, maPosition->angle);
108 108
         serverSend(buffer, strlen(buffer));

+ 236
- 0
software/raspberry/superviseur-robot/lib/src/robot.cpp View File

@@ -0,0 +1,236 @@
1
+/**
2
+ * \file      robot.cpp
3
+ * \author    L.Senaneuch
4
+ * \version   1.0
5
+ * \date      06/06/2017
6
+ * \brief     Fonction permettant la communication avec le robot.
7
+ *
8
+ * \details   Ce fichier regroupe des fonctions facilitant la communication avec le robot en utilisant le port serie USART
9
+ */
10
+
11
+#include "robot.h"
12
+
13
+int fd;
14
+
15
+int getChar(char * c);
16
+int readSerial(char * msg);
17
+char checkSumGO(char * msg);
18
+int receiveMsg(void);
19
+int sendCmd(char cmd, const char * arg);
20
+
21
+int open_communication_robot(const char * path)
22
+{
23
+#ifndef __STUB__
24
+    struct termios options;
25
+    fd = open(path, O_RDWR | O_NOCTTY | O_NDELAY);
26
+    if(fd !=-1)
27
+    {
28
+        fcntl(fd, F_SETFL, 0);
29
+        tcgetattr(fd, &options);
30
+        options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
31
+        cfsetospeed (&options, B9600);
32
+        cfsetispeed (&options, B9600);
33
+        options.c_cc[VMIN]=0;
34
+        options.c_cc[VTIME]=0;
35
+        tcsetattr(fd, TCSANOW, &options);
36
+        return 0;
37
+    }
38
+    else
39
+    {
40
+        perror("can't openSerial");
41
+        return -1;
42
+    }
43
+#else
44
+    return 0;
45
+#endif
46
+}
47
+
48
+
49
+int close_communication_robot(void)
50
+{
51
+#ifndef __STUB__
52
+    return close(fd);
53
+#else
54
+    return 0;
55
+#endif
56
+}
57
+
58
+
59
+int send_command_to_robot(char cmd, const char * arg)
60
+{
61
+#ifndef __STUB__
62
+    sendCmd(cmd,arg);
63
+    // TODO : check return from sendCmd
64
+    return receiveMsg();
65
+#else
66
+    int reponse;
67
+    switch(cmd)
68
+    {
69
+        case DMB_PING:
70
+            reponse = 0;
71
+            break;
72
+        case DMB_IDLE:
73
+            reponse = 0;
74
+            break;
75
+        case DMB_START_WITH_WD:
76
+            reponse = 0;
77
+            break;
78
+        case DMB_RELOAD_WD:
79
+            reponse = 0;
80
+            break;
81
+        case DMB_GET_VBAT:
82
+            reponse = 2;
83
+            break;
84
+        case DMB_IS_BUSY:
85
+            reponse = 1;
86
+            break;
87
+        case DMB_START_WITHOUT_WD:
88
+            reponse = 0;
89
+            break;
90
+        case DMB_MOVE:
91
+            reponse = 0;
92
+            break;
93
+        case DMB_TURN:
94
+            reponse = 0;
95
+            break;
96
+        case DMB_GO_FORWARD:
97
+            reponse = 0;
98
+            break;
99
+        case DMB_GO_BACK:
100
+            reponse = 0;
101
+            break;
102
+        case DMB_GO_LEFT:
103
+            reponse = 0;
104
+            break;
105
+        case DMB_GO_RIGHT:
106
+            reponse = 0;
107
+            break;
108
+        case DMB_STOP_MOVE:
109
+            reponse = 0;
110
+            break;
111
+        default:
112
+            reponse = 0;
113
+            break;
114
+    }
115
+    return reponse;
116
+#endif
117
+}
118
+
119
+/****************************/
120
+/* PRIVATE                  */
121
+/****************************/
122
+
123
+int sendCmd(char cmd, const char * arg)
124
+{
125
+    char cmdWithArg[20]={};
126
+    cmdWithArg[0]=cmd;
127
+    switch(cmd)
128
+    {
129
+        case DMB_GO_FORWARD: strcpy(cmdWithArg,"M=+64000");
130
+            break;
131
+        case DMB_GO_BACK:    strcpy(cmdWithArg,"M=-64000");
132
+            break;
133
+        case DMB_GO_LEFT:  strcpy(cmdWithArg,"T=+64000");
134
+            break;
135
+        case DMB_GO_RIGHT: strcpy(cmdWithArg,"T=-64000");
136
+            break;
137
+        case DMB_STOP_MOVE:  strcpy(cmdWithArg,"M=0");
138
+            break;
139
+        case DMB_MOVE:   strcat(cmdWithArg,"=");
140
+            strcat(cmdWithArg,arg);
141
+            break;
142
+        case DMB_TURN:   strcat(cmdWithArg,"=");
143
+            strcat(cmdWithArg,arg);
144
+            break;
145
+    }
146
+    int sizeCmd = strlen(cmdWithArg);
147
+    cmdWithArg[sizeCmd] = checkSumGO(cmdWithArg);
148
+    cmdWithArg[sizeCmd+1] = '\r';
149
+    cmdWithArg[sizeCmd+2] = '\0';
150
+    return write(fd,cmdWithArg,strlen(cmdWithArg));
151
+}
152
+
153
+int receiveMsg(void)
154
+{
155
+    char msg[20];
156
+    int b;
157
+    if((b = readSerial(msg))!=ROBOT_TIMED_OUT)
158
+    {
159
+        int taille = strlen(msg);
160
+        char checksum = msg[taille-2];
161
+        msg[taille-1] = 0;
162
+        msg[taille-2] = 0;
163
+        if(checksum!=checkSumGO(msg))
164
+        {
165
+            return ROBOT_CHECKSUM;
166
+        }
167
+        else
168
+        {
169
+            switch(msg[0])
170
+            {
171
+                case 'O' : return 0;
172
+                case 'E' : return ROBOT_ERROR;
173
+                case 'C' : return ROBOT_UKNOWN_CMD;
174
+                default :  return atoi(&msg[0]);
175
+            }
176
+        }
177
+    }
178
+    else
179
+    {
180
+        return ROBOT_TIMED_OUT;
181
+    }
182
+}
183
+
184
+int getChar(char * c)
185
+{
186
+    int n =0;
187
+    int delay =0;
188
+    while((n=read(fd,c,1)) <=0)
189
+    {
190
+        usleep(5000);
191
+        delay++;
192
+        if(delay > 10)
193
+        {
194
+            return ROBOT_TIMED_OUT;
195
+        }
196
+
197
+    }
198
+    return n;
199
+}
200
+
201
+int readSerial(char * msg)
202
+{
203
+    char car=0;
204
+    int i=0;
205
+    for(int j = 0 ; j < 20 ; j++)
206
+        msg[j]=0;
207
+    
208
+    while(car !='\r' && car!='\n') {
209
+        if(i>=20) 
210
+            return -5;
211
+
212
+        if(getChar(&car)==ROBOT_TIMED_OUT) {
213
+            return ROBOT_TIMED_OUT;
214
+        }
215
+        
216
+        msg[i] = car;
217
+        i++;
218
+    }
219
+    return i;
220
+}
221
+
222
+char checkSumGO(char * msg)
223
+{
224
+    char resultat = 0;
225
+    int i = 0;
226
+    int taille = strlen(msg);
227
+    for(i=0;i<taille;i++)
228
+    {
229
+        resultat^=msg[i];
230
+    }
231
+    return resultat;
232
+
233
+}
234
+
235
+
236
+

+ 116
- 0
software/raspberry/superviseur-robot/nbproject/configurations.xml View File

@@ -0,0 +1,116 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<configurationDescriptor version="100">
3
+  <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
4
+    <df root="." name="0">
5
+      <df name="lib">
6
+        <df name="src">
7
+          <in>image.cpp</in>
8
+          <in>message.cpp</in>
9
+          <in>monitor.cpp</in>
10
+          <in>robot.cpp</in>
11
+        </df>
12
+      </df>
13
+      <df name="superviseur">
14
+        <df name="src">
15
+          <in>functions.cpp</in>
16
+          <in>main.cpp</in>
17
+        </df>
18
+        <in>.gitignore</in>
19
+      </df>
20
+    </df>
21
+    <logicalFolder name="ExternalFiles"
22
+                   displayName="Important Files"
23
+                   projectFiles="false"
24
+                   kind="IMPORTANT_FILES_FOLDER">
25
+      <itemPath>CMakeLists.txt</itemPath>
26
+      <itemPath>Makefile</itemPath>
27
+      <itemPath>nbproject/private/launcher.properties</itemPath>
28
+    </logicalFolder>
29
+  </logicalFolder>
30
+  <sourceFolderFilter>^(nbproject)$</sourceFolderFilter>
31
+  <sourceRootList>
32
+    <Elem>.</Elem>
33
+  </sourceRootList>
34
+  <projectmakefile>Makefile</projectmakefile>
35
+  <confs>
36
+    <conf name="Default" type="0">
37
+      <toolsSet>
38
+        <compilerSet>default</compilerSet>
39
+        <dependencyChecking>false</dependencyChecking>
40
+        <rebuildPropChanged>false</rebuildPropChanged>
41
+      </toolsSet>
42
+      <flagsDictionary>
43
+        <element flagsID="0" commonFlags="-std=gnu++11"/>
44
+      </flagsDictionary>
45
+      <codeAssistance>
46
+      </codeAssistance>
47
+      <makefileType>
48
+        <makeTool>
49
+          <buildCommandWorkingDir>.</buildCommandWorkingDir>
50
+          <buildCommand>${MAKE} -f Makefile</buildCommand>
51
+          <cleanCommand>${MAKE} -f Makefile clean</cleanCommand>
52
+          <executablePath></executablePath>
53
+          <ccTool>
54
+            <preprocessorList>
55
+              <Elem>_GNU_SOURCE</Elem>
56
+              <Elem>_REENTRANT</Elem>
57
+              <Elem>__MERCURY__</Elem>
58
+            </preprocessorList>
59
+          </ccTool>
60
+        </makeTool>
61
+        <preBuild>
62
+          <preBuildCommandWorkingDir>.</preBuildCommandWorkingDir>
63
+          <preBuildCommand>${CMAKE} -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=${IDE_CC} -DCMAKE_CXX_COMPILER=${IDE_CXX} -DCMAKE_C_FLAGS_DEBUG="-g3 -gdwarf-2" -DCMAKE_CXX_FLAGS_DEBUG="-g3 -gdwarf-2" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .</preBuildCommand>
64
+        </preBuild>
65
+      </makefileType>
66
+      <folder path="0/lib">
67
+        <ccTool>
68
+          <incDir>
69
+            <pElem>lib</pElem>
70
+            <pElem>/usr/xenomai/include/mercury</pElem>
71
+            <pElem>/usr/xenomai/include</pElem>
72
+            <pElem>/usr/xenomai/include/alchemy</pElem>
73
+          </incDir>
74
+        </ccTool>
75
+      </folder>
76
+      <folder path="0/superviseur">
77
+        <ccTool>
78
+          <incDir>
79