diff --git a/.gitignore b/.gitignore
index 755472c..e76c98c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -62,3 +62,4 @@ GUI
# Android
*.apk
+/software/raspberry/superviseur-robot/superviseur/dist/
\ No newline at end of file
diff --git a/software/monitor/monitor/.gitignore b/software/monitor/monitor/.gitignore
new file mode 100644
index 0000000..4e82d27
--- /dev/null
+++ b/software/monitor/monitor/.gitignore
@@ -0,0 +1,40 @@
+# Autosave files
+*~
+
+# build
+[Oo]bj/
+[Bb]in/
+packages/
+TestResults/
+
+# globs
+Makefile.in
+*.DS_Store
+*.sln.cache
+*.suo
+*.cache
+*.pidb
+*.userprefs
+*.usertasks
+config.log
+config.make
+config.status
+aclocal.m4
+install-sh
+autom4te.cache/
+*.user
+*.tar.gz
+tarballs/
+test-results/
+Thumbs.db
+
+# Mac bundle stuff
+*.dmg
+*.app
+
+# resharper
+*_Resharper.*
+*.Resharper
+
+# dotCover
+*.dotCover
diff --git a/software/monitor/monitor/MonitorUI.cs b/software/monitor/monitor/MonitorUI.cs
new file mode 100644
index 0000000..8aad94d
--- /dev/null
+++ b/software/monitor/monitor/MonitorUI.cs
@@ -0,0 +1,16 @@
+using System;
+using Gtk;
+
+public partial class MainWindow : Gtk.Window
+{
+ public MainWindow() : base(Gtk.WindowType.Toplevel)
+ {
+ Build();
+ }
+
+ protected void OnDeleteEvent(object sender, DeleteEventArgs a)
+ {
+ Application.Quit();
+ a.RetVal = true;
+ }
+}
diff --git a/software/monitor/monitor/Program.cs b/software/monitor/monitor/Program.cs
new file mode 100644
index 0000000..3528fcc
--- /dev/null
+++ b/software/monitor/monitor/Program.cs
@@ -0,0 +1,16 @@
+using System;
+using Gtk;
+
+namespace monitor
+{
+ class MainClass
+ {
+ public static void Main(string[] args)
+ {
+ Application.Init();
+ MainWindow win = new MainWindow();
+ win.Show();
+ Application.Run();
+ }
+ }
+}
diff --git a/software/monitor/monitor/Properties/AssemblyInfo.cs b/software/monitor/monitor/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..703ac09
--- /dev/null
+++ b/software/monitor/monitor/Properties/AssemblyInfo.cs
@@ -0,0 +1,26 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+// Information about this assembly is defined by the following attributes.
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle("monitor")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("")]
+[assembly: AssemblyCopyright("${AuthorCopyright}")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
+// The form "{Major}.{Minor}.*" will automatically update the build and revision,
+// and "{Major}.{Minor}.{Build}.*" will update just the revision.
+
+[assembly: AssemblyVersion("1.0.*")]
+
+// The following attributes are used to specify the signing key for the assembly,
+// if desired. See the Mono documentation for more information about signing.
+
+//[assembly: AssemblyDelaySign(false)]
+//[assembly: AssemblyKeyFile("")]
diff --git a/software/monitor/monitor/gtk-gui/MainWindow.cs b/software/monitor/monitor/gtk-gui/MainWindow.cs
new file mode 100644
index 0000000..2397dbf
--- /dev/null
+++ b/software/monitor/monitor/gtk-gui/MainWindow.cs
@@ -0,0 +1,126 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+
+public partial class MainWindow
+{
+ private global::Gtk.UIManager UIManager;
+
+ private global::Gtk.VBox vbox1;
+
+ private global::Gtk.MenuBar menubar1;
+
+ private global::Gtk.HBox hbox1;
+
+ private global::Gtk.DrawingArea drawingarea1;
+
+ private global::Gtk.Alignment alignment1;
+
+ private global::Gtk.ScrolledWindow GtkScrolledWindow;
+
+ private global::Gtk.Frame frame1;
+
+ private global::Gtk.Fixed fixed4;
+
+ private global::Gtk.Button button7;
+
+ private global::Gtk.Label GtkLabel2;
+
+ private global::Gtk.Statusbar statusbar1;
+
+ protected virtual void Build()
+ {
+ global::Stetic.Gui.Initialize(this);
+ // Widget MainWindow
+ this.UIManager = new global::Gtk.UIManager();
+ global::Gtk.ActionGroup w1 = new global::Gtk.ActionGroup("Default");
+ this.UIManager.InsertActionGroup(w1, 0);
+ this.AddAccelGroup(this.UIManager.AccelGroup);
+ this.Name = "MainWindow";
+ this.Title = global::Mono.Unix.Catalog.GetString("Monitor UI");
+ this.WindowPosition = ((global::Gtk.WindowPosition)(4));
+ // Container child MainWindow.Gtk.Container+ContainerChild
+ this.vbox1 = new global::Gtk.VBox();
+ this.vbox1.Name = "vbox1";
+ this.vbox1.Spacing = 6;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.UIManager.AddUiFromString("");
+ this.menubar1 = ((global::Gtk.MenuBar)(this.UIManager.GetWidget("/menubar1")));
+ this.menubar1.Name = "menubar1";
+ this.vbox1.Add(this.menubar1);
+ global::Gtk.Box.BoxChild w2 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.menubar1]));
+ w2.Position = 0;
+ w2.Expand = false;
+ w2.Fill = false;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.hbox1 = new global::Gtk.HBox();
+ this.hbox1.Name = "hbox1";
+ this.hbox1.Spacing = 6;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.drawingarea1 = new global::Gtk.DrawingArea();
+ this.drawingarea1.Name = "drawingarea1";
+ this.hbox1.Add(this.drawingarea1);
+ global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.drawingarea1]));
+ w3.Position = 0;
+ // Container child hbox1.Gtk.Box+BoxChild
+ this.alignment1 = new global::Gtk.Alignment(0.5F, 0.5F, 1F, 1F);
+ this.alignment1.Name = "alignment1";
+ // Container child alignment1.Gtk.Container+ContainerChild
+ this.GtkScrolledWindow = new global::Gtk.ScrolledWindow();
+ this.GtkScrolledWindow.Name = "GtkScrolledWindow";
+ this.GtkScrolledWindow.ShadowType = ((global::Gtk.ShadowType)(1));
+ // Container child GtkScrolledWindow.Gtk.Container+ContainerChild
+ global::Gtk.Viewport w4 = new global::Gtk.Viewport();
+ w4.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child GtkViewport.Gtk.Container+ContainerChild
+ this.frame1 = new global::Gtk.Frame();
+ this.frame1.Name = "frame1";
+ this.frame1.ShadowType = ((global::Gtk.ShadowType)(0));
+ // Container child frame1.Gtk.Container+ContainerChild
+ this.fixed4 = new global::Gtk.Fixed();
+ this.fixed4.Name = "fixed4";
+ this.fixed4.HasWindow = false;
+ // Container child fixed4.Gtk.Fixed+FixedChild
+ this.button7 = new global::Gtk.Button();
+ this.button7.CanFocus = true;
+ this.button7.Name = "button7";
+ this.button7.UseUnderline = true;
+ this.button7.Label = global::Mono.Unix.Catalog.GetString("GtkButton");
+ this.fixed4.Add(this.button7);
+ global::Gtk.Fixed.FixedChild w5 = ((global::Gtk.Fixed.FixedChild)(this.fixed4[this.button7]));
+ w5.X = 30;
+ w5.Y = 25;
+ this.frame1.Add(this.fixed4);
+ this.GtkLabel2 = new global::Gtk.Label();
+ this.GtkLabel2.Name = "GtkLabel2";
+ this.GtkLabel2.LabelProp = global::Mono.Unix.Catalog.GetString("Controls");
+ this.GtkLabel2.UseMarkup = true;
+ this.frame1.LabelWidget = this.GtkLabel2;
+ w4.Add(this.frame1);
+ this.GtkScrolledWindow.Add(w4);
+ this.alignment1.Add(this.GtkScrolledWindow);
+ this.hbox1.Add(this.alignment1);
+ global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.alignment1]));
+ w10.Position = 1;
+ this.vbox1.Add(this.hbox1);
+ global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1]));
+ w11.Position = 1;
+ // Container child vbox1.Gtk.Box+BoxChild
+ this.statusbar1 = new global::Gtk.Statusbar();
+ this.statusbar1.Name = "statusbar1";
+ this.statusbar1.Spacing = 6;
+ this.vbox1.Add(this.statusbar1);
+ global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.statusbar1]));
+ w12.Position = 2;
+ w12.Expand = false;
+ w12.Fill = false;
+ this.Add(this.vbox1);
+ if ((this.Child != null))
+ {
+ this.Child.ShowAll();
+ }
+ this.DefaultWidth = 1039;
+ this.DefaultHeight = 705;
+ this.Show();
+ this.DeleteEvent += new global::Gtk.DeleteEventHandler(this.OnDeleteEvent);
+ }
+}
diff --git a/software/monitor/monitor/gtk-gui/generated.cs b/software/monitor/monitor/gtk-gui/generated.cs
new file mode 100644
index 0000000..4842e95
--- /dev/null
+++ b/software/monitor/monitor/gtk-gui/generated.cs
@@ -0,0 +1,30 @@
+
+// This file has been generated by the GUI designer. Do not modify.
+namespace Stetic
+{
+ internal class Gui
+ {
+ private static bool initialized;
+
+ internal static void Initialize(Gtk.Widget iconRenderer)
+ {
+ if ((Stetic.Gui.initialized == false))
+ {
+ Stetic.Gui.initialized = true;
+ }
+ }
+ }
+
+ internal class ActionGroups
+ {
+ public static Gtk.ActionGroup GetActionGroup(System.Type type)
+ {
+ return Stetic.ActionGroups.GetActionGroup(type.FullName);
+ }
+
+ public static Gtk.ActionGroup GetActionGroup(string name)
+ {
+ return null;
+ }
+ }
+}
diff --git a/software/monitor/monitor/gtk-gui/gui.stetic b/software/monitor/monitor/gtk-gui/gui.stetic
new file mode 100644
index 0000000..c490966
--- /dev/null
+++ b/software/monitor/monitor/gtk-gui/gui.stetic
@@ -0,0 +1,129 @@
+
+
+
+ ..
+
+
+
+
+
+
+
+
+ Monitor UI
+ CenterOnParent
+
+
+
+
+ 6
+
+
+
+ 0
+ True
+ False
+ False
+
+
+
+
+
+ 6
+
+
+
+
+
+ 0
+ True
+
+
+
+
+
+
+
+
+ In
+
+
+
+ None
+
+
+
+ True
+ None
+
+
+
+ False
+
+
+
+ True
+ TextOnly
+ GtkButton
+ True
+
+
+ 30
+ 25
+
+
+
+
+
+
+
+ <b>Controls</b>
+ True
+
+
+ label_item
+
+
+
+
+
+
+
+
+
+
+ 1
+ True
+
+
+
+
+ 1
+ True
+
+
+
+
+
+ 6
+
+
+
+
+
+
+
+
+ 2
+ True
+ False
+ False
+
+
+
+
+
+
\ No newline at end of file
diff --git a/software/monitor/monitor/monitor.csproj b/software/monitor/monitor/monitor.csproj
new file mode 100644
index 0000000..bb09369
--- /dev/null
+++ b/software/monitor/monitor/monitor.csproj
@@ -0,0 +1,64 @@
+
+
+
+ Debug
+ x86
+ {F759E76E-E6D5-4117-8CE3-7FB83FECCAF9}
+ WinExe
+ monitor
+ monitor
+ v4.6.1
+
+
+ true
+ full
+ false
+ bin\Debug
+ DEBUG;
+ prompt
+ 4
+ x86
+
+
+ true
+ bin\Release
+ prompt
+ 4
+ x86
+
+
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+ False
+
+
+
+
+
+ gui.stetic
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/software/monitor/monitor/monitor.sln b/software/monitor/monitor/monitor.sln
new file mode 100644
index 0000000..d3302ce
--- /dev/null
+++ b/software/monitor/monitor/monitor.sln
@@ -0,0 +1,17 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monitor", "monitor.csproj", "{F759E76E-E6D5-4117-8CE3-7FB83FECCAF9}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x86 = Debug|x86
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F759E76E-E6D5-4117-8CE3-7FB83FECCAF9}.Debug|x86.ActiveCfg = Debug|x86
+ {F759E76E-E6D5-4117-8CE3-7FB83FECCAF9}.Debug|x86.Build.0 = Debug|x86
+ {F759E76E-E6D5-4117-8CE3-7FB83FECCAF9}.Release|x86.ActiveCfg = Release|x86
+ {F759E76E-E6D5-4117-8CE3-7FB83FECCAF9}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+EndGlobal
diff --git a/software/raspberry/conception_robot_2018.pdf b/software/raspberry/conception_robot_2018.pdf
new file mode 100644
index 0000000..65a39b3
Binary files /dev/null and b/software/raspberry/conception_robot_2018.pdf differ
diff --git a/software/raspberry/sujet_robot_2018.pdf b/software/raspberry/sujet_robot_2018.pdf
new file mode 100644
index 0000000..e1467c6
Binary files /dev/null and b/software/raspberry/sujet_robot_2018.pdf differ
diff --git a/software/raspberry/superviseur-robot/lib/server.h b/software/raspberry/superviseur-robot/lib/server.h
new file mode 100644
index 0000000..31904db
--- /dev/null
+++ b/software/raspberry/superviseur-robot/lib/server.h
@@ -0,0 +1,28 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/*
+ * File: server.h
+ * Author: dimercur
+ *
+ * Created on 19 octobre 2018, 14:24
+ */
+
+#ifndef _SERVER_H_
+#define _SERVER_H_
+
+#define DEFAULT_SERVER_PORT 2323
+
+int openServer (int port);
+int closeServer();
+int acceptClient();
+
+int sendDataToServer(char *data, int length);
+int sendDataToServerForClient(int client, char *data, int length);
+int receiveDataFromServer(char *data, int size);
+int receiveDataFromServerFromClient(int client, char *data, int size);
+#endif /* _SERVER_H_ */
+
diff --git a/software/raspberry/superviseur-robot/lib/src/monitor.cpp b/software/raspberry/superviseur-robot/lib/src/monitor.cpp
index f145f46..b7fd125 100644
--- a/software/raspberry/superviseur-robot/lib/src/monitor.cpp
+++ b/software/raspberry/superviseur-robot/lib/src/monitor.cpp
@@ -1,4 +1,5 @@
#include "monitor.h"
+#include "server.h"
using namespace std;
@@ -6,131 +7,48 @@ SOCKADDR_IN ssin;
SOCKET sock;
socklen_t recsize = sizeof (ssin);
-/*Socket et contexte d'adressage du client */
-SOCKADDR_IN csin;
-SOCKET csock;
-socklen_t crecsize = sizeof (csin);
-
-int sock_err;
-pid_t pidNodejs;
string serverReceive(int size);
-int serverSend(const void *data, int dataLength);
+int sendMessage(const char *data, int dataLength);
int receive(char *data);
-int run_nodejs(const char * path, char * file) {
- int ret;
- //char *const parmList[] = {"/bin/ls", "-l", "/home", NULL};
- char * const parmList[] = {"node", file, NULL};
-
- if ((ret = fork()) == -1)
- perror("fork error");
- else if (ret == 0) {
- ret = execv(path, parmList);
- }
- return ret;
-}
-
-int kill_nodejs() {
-#ifdef __VERBOSE__
- printf("kill nodejs\n");
-#endif
- return kill(pidNodejs, SIGTERM);
-}
-
-int open_server(int port) {
- /* Création d'un socket */
- sock = socket(AF_INET, SOCK_STREAM, 0);
- int enable = 1;
-
- /* Si la socket est valide */
- if (sock != INVALID_SOCKET) {
-#ifdef _WITH_TRACE_
- printf("TCP/IP Socket %d opened\n", sock);
-#endif
- setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof (enable));
-
- /* Configuration */
- ssin.sin_addr.s_addr = htonl(INADDR_ANY); /* Adresse IP automatique */
- ssin.sin_family = AF_INET; /* Protocole familial (IP) */
- ssin.sin_port = htons(port); /* Listage du port */
- sock_err = bind(sock, (SOCKADDR*) & ssin, recsize);
-
- /* Si la socket fonctionne */
- if (sock_err != SOCKET_ERROR) {
- /* Démarrage du listage (mode server) */
- sock_err = listen(sock, 1);
-
- /* Si la socket fonctionne */
- if (sock_err != SOCKET_ERROR) {
- /* Attente pendant laquelle le client se connecte */
-#ifdef _WITH_TRACE_
- printf("Waiting a client on port %d\n", port);
-#endif
- csock = accept(sock, (SOCKADDR*) & csin, &crecsize);
-#ifdef _WITH_TRACE_
- printf("Client connected\n");
-#endif
- return 0;
- } else {
- perror("listen");
- }
- } else {
- perror("bind");
- return (-1);
- }
- } else {
- perror("socket");
- return (-1);
- }
- return 0;
-}
-
-int close_server(void) {
- /* Fermeture de la socket client et de la socket serveur */
- close(csock);
- close(sock);
- printf("Socket fermé\n");
- return 0;
-}
-
int send_message_to_monitor(const char* typeMessage, const void * data) {
if ((string) typeMessage == HEADER_STM_IMAGE) {
Jpg * imgC = (Jpg*) data;
- serverSend("IMG", 3);
- serverSend(imgC->data(), imgC->size());
- serverSend("TRAME", 5);
+ sendMessage("IMG", 3);
+ sendMessage((const char*)imgC->data(), imgC->size());
+ sendMessage("TRAME", 5);
return 0;
} else if ((string) typeMessage == HEADER_STM_POS) {
char buffer[400];
Position * maPosition = (Position*) data;
sprintf(buffer, "POScenter: %3d;%3d | %.1fTRAME", maPosition->center.x, maPosition->center.y, maPosition->angle);
- serverSend(buffer, strlen(buffer));
+ sendMessage(buffer, strlen(buffer));
return 0;
} else if ((string) typeMessage == HEADER_STM_MES) {
char buffer[50];
sprintf(buffer, "MSG%sTRAME", (const char*) data);
- serverSend(buffer, strlen(buffer));
+ sendMessage(buffer, strlen(buffer));
return 0;
} else if ((string) typeMessage == HEADER_STM_ACK) {
char buffer[50];
sprintf(buffer, "ACK%sTRAME", (const char*) data);
- serverSend(buffer, strlen(buffer));
+ sendMessage(buffer, strlen(buffer));
return 0;
} else if ((string) typeMessage == HEADER_STM_BAT) {
char buffer[50];
sprintf(buffer, "BAT%sTRAME", (const char*) data);
- serverSend(buffer, strlen(buffer));
+ sendMessage(buffer, strlen(buffer));
return 0;
} else if ((string) typeMessage == HEADER_STM_NO_ACK) {
char buffer[50];
sprintf(buffer, "NAK%sTRAME", (const char*) data);
- serverSend(buffer, strlen(buffer));
+ sendMessage(buffer, strlen(buffer));
return 0;
} else if ((string) typeMessage == HEADER_STM_LOST_DMB) {
char buffer[50];
sprintf(buffer, "LCD%sTRAME", (const char*) data);
- serverSend(buffer, strlen(buffer));
+ sendMessage(buffer, strlen(buffer));
return 0;
} else {
return -1;
@@ -146,13 +64,13 @@ int receive_message_from_monitor(char *typeMessage, char *data) {
int receive(char *data) {
int result;
- result = recv(csock, data, 20, 0);
+ result = receiveDataFromServer(data, 20);
//cout <<"Data : " << data << endl;
return result;
}
-int serverSend(const void *data, int dataLength) {
- if (send(csock, data, dataLength, 0) != dataLength) {
+int sendMessage(const char *data, int dataLength) {
+ if (sendDataToServer((char*)data, dataLength) != dataLength) {
perror("Send failed : ");
return false;
}
diff --git a/software/raspberry/superviseur-robot/lib/src/server.cpp b/software/raspberry/superviseur-robot/lib/src/server.cpp
new file mode 100644
index 0000000..49aa71f
--- /dev/null
+++ b/software/raspberry/superviseur-robot/lib/src/server.cpp
@@ -0,0 +1,97 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/*
+ * File: server.cpp
+ * Author: dimercur
+ *
+ * Created on 19 octobre 2018, 14:24
+ */
+
+#include "server.h"
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#define NB_CONNECTION_MAX 1
+
+int socketFD = -1;
+int clientID = -1;
+
+int openServer(int port) {
+ struct sockaddr_in server;
+
+ socketFD = socket(AF_INET, SOCK_STREAM, 0);
+ if (socketFD < 0) {
+ perror("Can not create socket");
+ exit(-1);
+ }
+
+ server.sin_addr.s_addr = INADDR_ANY;
+ server.sin_family = AF_INET;
+ server.sin_port = htons(port);
+
+ if (bind(socketFD, (struct sockaddr *) &server, sizeof (server)) < 0) {
+ perror("Can not bind socket");
+ exit(-1);
+ }
+
+ listen(socketFD, NB_CONNECTION_MAX);
+
+ return socketFD;
+}
+
+int closeServer() {
+ close(socketFD);
+
+ socketFD = -1;
+}
+
+int acceptClient() {
+ struct sockaddr_in client;
+ int c = sizeof (struct sockaddr_in);
+
+ clientID = accept(socketFD, (struct sockaddr *) &client, (socklen_t*) & c);
+
+ if (clientID < 0) {
+ perror("Accept failed in acceptClient");
+ exit(-1);
+ }
+
+ return clientID;
+}
+
+int sendDataToServer(char *data, int length) {
+ return sendDataToServerForClient(clientID, data, length);
+}
+
+int sendDataToServerForClient(int client, char *data, int length) {
+ if (client >= 0)
+ return write(client, (void*)data, length);
+ else return 0;
+}
+
+int receiveDataFromServer(char *data, int size) {
+ return receiveDataFromServerFromClient(clientID, data, size);
+}
+
+int receiveDataFromServerFromClient(int client, char *data, int size) {
+ char length = 0;
+
+ if (client > 0) {
+ if ((length = recv(client, (void*)data, size, 0)) > 0) {
+ data[length] = 0;
+ }
+ }
+
+ return length;
+}
+
+
diff --git a/software/raspberry/superviseur-robot/nbproject/private/CodeAssistancePathMapper.properties b/software/raspberry/superviseur-robot/nbproject/private/CodeAssistancePathMapper.properties
new file mode 100644
index 0000000..7f5ded8
--- /dev/null
+++ b/software/raspberry/superviseur-robot/nbproject/private/CodeAssistancePathMapper.properties
@@ -0,0 +1 @@
+# Automatic path mapper. CRC = 1
diff --git a/software/raspberry/superviseur-robot/nbproject/private/Default-build.log b/software/raspberry/superviseur-robot/nbproject/private/Default-build.log
new file mode 100644
index 0000000..f729b19
--- /dev/null
+++ b/software/raspberry/superviseur-robot/nbproject/private/Default-build.log
@@ -0,0 +1,48 @@
+Scanning dependencies of target destijl
+[ 12%] Building CXX object lib/CMakeFiles/destijl.dir/src/robot.cpp.o
+[ 25%] Building CXX object lib/CMakeFiles/destijl.dir/src/monitor.cpp.o
+In file included from /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp:1:0:
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/./monitor.h:65:117: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ int run_nodejs(const char *path = (const char*)DEFAULT_NODEJS_PATH, char *file = (const char*)DEFAULT_INTERFACE_FILE);
+ ^
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp: In function ‘int run_nodejs(const char*, char*)’:
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp:24:50: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ char * const parmList[] = {"node", file, NULL};
+ ^
+[ 37%] Building CXX object lib/CMakeFiles/destijl.dir/src/message.cpp.o
+[ 50%] Building CXX object lib/CMakeFiles/destijl.dir/src/image.cpp.o
+[ 62%] Linking CXX static library /home/dimercur/Documents/Travail/git/dumber/software/raspberry/lib/libdestijl.a
+[ 62%] Built target destijl
+Scanning dependencies of target superviseur
+[ 75%] Building CXX object superviseur/CMakeFiles/superviseur.dir/src/main.cpp.o
+In file included from /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.h:28:0,
+ from /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/main.cpp:19:
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/../lib/monitor.h:65:117: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ int run_nodejs(const char *path = (const char*)DEFAULT_NODEJS_PATH, char *file = (const char*)DEFAULT_INTERFACE_FILE);
+ ^
+[ 87%] Building CXX object superviseur/CMakeFiles/superviseur.dir/src/functions.cpp.o
+In file included from /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.h:28:0,
+ from /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp:1:
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/../lib/monitor.h:65:117: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ int run_nodejs(const char *path = (const char*)DEFAULT_NODEJS_PATH, char *file = (const char*)DEFAULT_INTERFACE_FILE);
+ ^
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp: In function ‘void f_server(void*)’:
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp:15:81: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ err = run_nodejs("/usr/local/bin/node", "/home/pi/Interface_Robot/server.js");
+ ^
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp: In function ‘void f_openComRobot(void*)’:
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp:140:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ set_msgToMon_header(&msg, HEADER_STM_ACK);
+ ^
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp:144:56: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ set_msgToMon_header(&msg, HEADER_STM_NO_ACK);
+ ^
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp: In function ‘void f_startRobot(void*)’:
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp:176:53: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ set_msgToMon_header(&msg, HEADER_STM_ACK);
+ ^
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp:180:56: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
+ set_msgToMon_header(&msg, HEADER_STM_NO_ACK);
+ ^
+[100%] Linking CXX executable /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur/bin/superviseur
+[100%] Built target superviseur
diff --git a/software/raspberry/superviseur-robot/nbproject/private/Default-exec.log b/software/raspberry/superviseur-robot/nbproject/private/Default-exec.log
new file mode 100644
index 0000000..2f4cd85
--- /dev/null
+++ b/software/raspberry/superviseur-robot/nbproject/private/Default-exec.log
@@ -0,0 +1,225 @@
+called: /usr/bin/g++
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib
+ /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
+
+called: /usr/bin/g++
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib
+ /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
+
+called: /usr/bin/g++
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib
+ /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
+
+called: /usr/bin/g++
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib
+ /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
+
+called: /usr/bin/ar
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib
+ /usr/bin/ar
+ qc
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/lib/libdestijl.a
+ CMakeFiles/destijl.dir/src/robot.cpp.o
+ CMakeFiles/destijl.dir/src/monitor.cpp.o
+ CMakeFiles/destijl.dir/src/message.cpp.o
+ CMakeFiles/destijl.dir/src/image.cpp.o
+
+called: /usr/bin/g++
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur
+ /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
+
+called: /usr/bin/g++
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur
+ /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
+
+called: /usr/bin/g++
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur
+ /usr/bin/g++
+ -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
+ -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
+ CMakeFiles/superviseur.dir/src/main.cpp.o
+ CMakeFiles/superviseur.dir/src/functions.cpp.o
+ -o
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur/bin/superviseur
+ -L/usr/xenomai/lib
+ -Wl,-rpath,/usr/xenomai/lib
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/lib/libdestijl.a
+
+called: /usr/bin/ld
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur
+ /usr/bin/ld
+ -plugin
+ /usr/lib/gcc/x86_64-linux-gnu/7/liblto_plugin.so
+ -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
+ -plugin-opt=-fresolution=/tmp/ccpeJ2Nc.res
+ -plugin-opt=-pass-through=-lgcc_s
+ -plugin-opt=-pass-through=-lgcc
+ -plugin-opt=-pass-through=-lc
+ -plugin-opt=-pass-through=-lgcc_s
+ -plugin-opt=-pass-through=-lgcc
+ --sysroot=/
+ --build-id
+ --eh-frame-hdr
+ -m
+ elf_x86_64
+ --hash-style=gnu
+ --as-needed
+ -dynamic-linker
+ /lib64/ld-linux-x86-64.so.2
+ -pie
+ -z
+ now
+ -z
+ relro
+ -o
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur/bin/superviseur
+ /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o
+ /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o
+ /usr/lib/gcc/x86_64-linux-gnu/7/crtbeginS.o
+ -L/usr/xenomai/lib
+ -L/usr/xenomai/lib
+ -L/usr/lib/gcc/x86_64-linux-gnu/7
+ -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu
+ -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib
+ -L/lib/x86_64-linux-gnu
+ -L/lib/../lib
+ -L/usr/lib/x86_64-linux-gnu
+ -L/usr/lib/../lib
+ -L/usr/lib/gcc/x86_64-linux-gnu/7/../../..
+ --no-as-needed
+ -lalchemy
+ -lcopperplate
+ /usr/xenomai/lib/xenomai/bootstrap.o
+ --wrap=main
+ --dynamic-list=/usr/xenomai/lib/dynlist.ld
+ -lmercury
+ -lpthread
+ -lrt
+ CMakeFiles/superviseur.dir/src/main.cpp.o
+ CMakeFiles/superviseur.dir/src/functions.cpp.o
+ -rpath
+ /usr/xenomai/lib
+ /home/dimercur/Documents/Travail/git/dumber/software/raspberry/lib/libdestijl.a
+ -lstdc++
+ -lm
+ -lgcc_s
+ -lgcc
+ -lc
+ -lgcc_s
+ -lgcc
+ /usr/lib/gcc/x86_64-linux-gnu/7/crtendS.o
+ /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o
+
diff --git a/software/raspberry/superviseur-robot/nbproject/private/Default.properties b/software/raspberry/superviseur-robot/nbproject/private/Default.properties
new file mode 100644
index 0000000..fb09157
--- /dev/null
+++ b/software/raspberry/superviseur-robot/nbproject/private/Default.properties
@@ -0,0 +1,6 @@
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/message.cpp=/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib#-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
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp=/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib#-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
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/robot.cpp=/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib#-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
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/image.cpp=/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib#-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
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/main.cpp=/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur#-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
+/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp=/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur#-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
diff --git a/software/raspberry/superviseur-robot/nbproject/private/c_standard_headers_indexer.c b/software/raspberry/superviseur-robot/nbproject/private/c_standard_headers_indexer.c
new file mode 100644
index 0000000..c2548d2
--- /dev/null
+++ b/software/raspberry/superviseur-robot/nbproject/private/c_standard_headers_indexer.c
@@ -0,0 +1,75 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License. When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ */
+
+// List of standard headers was taken in http://en.cppreference.com/w/c/header
+
+#include // Conditionally compiled macro that compares its argument to zero
+#include // Functions to determine the type contained in character data
+#include // Macros reporting error conditions
+#include // Limits of float types
+#include // Sizes of basic types
+#include // Localization utilities
+#include // Common mathematics functions
+#include // Nonlocal jumps
+#include // Signal handling
+#include // Variable arguments
+#include // Common macro definitions
+#include // Input/output
+#include // String handling
+#include // General utilities: memory management, program utilities, string conversions, random numbers
+#include // Time/date utilities
+#include // (since C95) Alternative operator spellings
+#include // (since C95) Extended multibyte and wide character utilities
+#include // (since C95) Wide character classification and mapping utilities
+#ifdef _STDC_C99
+#include // (since C99) Complex number arithmetic
+#include // (since C99) Floating-point environment
+#include // (since C99) Format conversion of integer types
+#include // (since C99) Boolean type
+#include // (since C99) Fixed-width integer types
+#include // (since C99) Type-generic math (macros wrapping math.h and complex.h)
+#endif
+#ifdef _STDC_C11
+#include // (since C11) alignas and alignof convenience macros
+#include // (since C11) Atomic types
+#include // (since C11) noreturn convenience macros
+#include // (since C11) Thread library
+#include // (since C11) UTF-16 and UTF-32 character utilities
+#endif
diff --git a/software/raspberry/superviseur-robot/nbproject/private/configurations.xml b/software/raspberry/superviseur-robot/nbproject/private/configurations.xml
new file mode 100644
index 0000000..92d8f5a
--- /dev/null
+++ b/software/raspberry/superviseur-robot/nbproject/private/configurations.xml
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CMakeCXXCompilerId.cpp
+
+
+
+
+ feature_tests.cxx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CMakeCXXCompilerId.cpp
+
+
+
+
+
+
+ CMakeCXXCompilerId.cpp
+
+
+
+
+ feature_tests.cxx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ rtvideoExample.cpp
+ serialExample.cpp
+ serialTest.cpp
+ serverTest.cpp
+ uiExample.cpp
+ videoExample.cpp
+
+
+
+
+
+
+
+ rtvideoExample.cpp
+ serialExample.cpp
+ serialTest.cpp
+ serverTest.cpp
+ uiExample.cpp
+ videoExample.cpp
+
+
+
+
+ Camera.cpp
+ Image.cpp
+ MsgManager.cpp
+ Robot.cpp
+ Serial.cpp
+ TcpServer.cpp
+
+ Camera.h
+ Definition.h
+ Image.h
+ MsgManager.h
+ Robot.h
+ Serial.h
+ TcpServer.h
+
+
+
+
+
+ Program.cpp
+ Tasks.cpp
+ Tasks.h
+
+
+
+
+
+
+
+
+
+
+
+ image.cpp
+ message.cpp
+ monitor.cpp
+ robot.cpp
+ server.cpp
+
+ definitions.h
+ image.h
+ message.h
+ monitor.h
+ robot.h
+ server.h
+
+
+ definitions.h
+ image.cpp
+ image.h
+ message.cpp
+ message.h
+ monitor.cpp
+ monitor.h
+ robot.cpp
+ robot.h
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ functions.cpp
+ functions.h
+ main.cpp
+
+ .gitignore
+
+
+
+
+
+ Program.cpp
+ Tasks.cpp
+ Tasks.h
+
+
+
+
+
+
+
+
+ Makefile
+
+
+
+ localhost
+ 2
+
+
+
+ .
+ ${AUTO_FOLDER}
+
+ ${AUTO_FOLDER}
+
+ ${MAKE} ${ITEM_NAME}.o
+ ${AUTO_COMPILE}
+
+ ${AUTO_COMPILE}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ gdb
+
+
+
+ "${OUTPUT_PATH}"
+
+ "${OUTPUT_PATH}"
+ .
+ false
+ 0
+ 0
+
+
+
+
+
+
diff --git a/software/raspberry/superviseur-robot/nbproject/private/cpp_standard_headers_indexer.cpp b/software/raspberry/superviseur-robot/nbproject/private/cpp_standard_headers_indexer.cpp
new file mode 100644
index 0000000..04f6fa6
--- /dev/null
+++ b/software/raspberry/superviseur-robot/nbproject/private/cpp_standard_headers_indexer.cpp
@@ -0,0 +1,135 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved.
+ *
+ * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+ * Other names may be trademarks of their respective owners.
+ *
+ * The contents of this file are subject to the terms of either the GNU
+ * General Public License Version 2 only ("GPL") or the Common
+ * Development and Distribution License("CDDL") (collectively, the
+ * "License"). You may not use this file except in compliance with the
+ * License. You can obtain a copy of the License at
+ * http://www.netbeans.org/cddl-gplv2.html
+ * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+ * specific language governing permissions and limitations under the
+ * License. When distributing the software, include this License Header
+ * Notice in each file and include the License file at
+ * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the GPL Version 2 section of the License file that
+ * accompanied this code. If applicable, add the following below the
+ * License Header, with the fields enclosed by brackets [] replaced by
+ * your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ *
+ * If you wish your version of this file to be governed by only the CDDL
+ * or only the GPL Version 2, indicate your decision by adding
+ * "[Contributor] elects to include this software in this distribution
+ * under the [CDDL or GPL Version 2] license." If you do not indicate a
+ * single choice of license, a recipient has the option to distribute
+ * your version of this file under either the CDDL, the GPL Version 2 or
+ * to extend the choice of license to its licensees as provided above.
+ * However, if you add GPL Version 2 code and therefore, elected the GPL
+ * Version 2 license, then the option applies only if the new code is
+ * made subject to such option by the copyright holder.
+ *
+ * Contributor(s):
+ */
+
+// List of standard headers was taken in http://en.cppreference.com/w/cpp/header
+
+#include // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search
+#include // Functions and macro constants for signal management
+#include // Macro (and function) that saves (and jumps) to an execution context
+#include // Handling of variable length argument lists
+#include // Runtime type information utilities
+#include // std::bitset class template
+#include // Function objects, designed for use with the standard algorithms
+#include // Various utility components
+#include // C-style time/date utilites
+#include // typedefs for types such as size_t, NULL and others
+#include // Low-level memory management utilities
+#include // Higher level memory management utilities
+#include // limits of integral types
+#include // limits of float types
+#include // standardized way to query properties of arithmetic types
+#include // Exception handling utilities
+#include // Standard exception objects
+#include // Conditionally compiled macro that compares its argument to zero
+#include // Macro containing the last error number
+#include // functions to determine the type contained in character data
+#include // functions for determining the type of wide character data
+#include // various narrow character string handling functions
+#include // various wide and multibyte string handling functions
+#include // std::basic_string class template
+#include // std::vector container
+#include // std::deque container
+#include // std::list container
+#include // std::set and std::multiset associative containers
+#include