diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json deleted file mode 100644 index ee202d8..0000000 --- a/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "configurations": [ - { - "name": "Linux", - "includePath": [ - "${workspaceFolder}/**" - ], - "defines": [], - "compilerPath": "/usr/bin/clang", - "cStandard": "c11", - "cppStandard": "c++17", - "intelliSenseMode": "clang-x64" - } - ], - "version": 4 -} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 29327bf..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - // See https://go.microsoft.com/fwlink/?LinkId=733558 - // for the documentation about the tasks.json format - "version": "2.0.0", - "tasks": [ - { - "taskName": "Compile on raspberry", - "command": "rsync -az '${file}' 10.105.1.6:~ && ssh server.example.org 'chmod +x ./${fileBasename}; ./${fileBasename}'", - "type": "shell", - "group": { - "kind": "build", - "isDefault": true - } - } - ] -} \ No newline at end of file diff --git a/README.md b/README.md index 8e88f84..a445186 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,9 @@ # Dumber -## 2017-2018 : -Problème : -- Watchdog du robot ne fonctionne pas -- Interface graphique qui a des etats mal gérée (je voulais le reprendre en utilisant les 'stores' de vuex pour éviter ça). -- Il faudrait une execution de l'interface (srv nodejs) par défaut au démarage de la RPI. - L'exectution devrait se faire dans l'user space de linux dans le cas d'utilisation d'un noyau xenomai (co-kernel). - => Potentiellement passer d'un noyau preempt_rt (actuel) à un noyau xenomai +Depot du projet de temps reel 4eme année au departement GEI de l'INSA Toulouse. ## Repertoires -- hardware : contient les plans pour la partie mecanique du robot et de son chargeur +- hardware : contient les plans pour la partie mecanique du robot et de son chargeur, ainsi que les plans de conception des PCB du robot, du chargeur, de l'adaptateur Xbee pour la raspberry et les plans des CAP du robot - software: rassemble les parties logicielles du robot, du chargeur, les bibliotheques et superviseur coté raspberry et l'interface Web -- pcb: contient les plans de conception des PCB du robot, du chargeur, de l'adaptateur Xbee pour la raspberry et les plans des CAP du robot -- incubateur: projet en incubation. Actuellement, contient des essais sur les aruco (pour la detection des robots) ou le portage du firmware du robot sous freertos. +- doc: contient les sujets de TD et TP +- aruco_markers: Script de generation des tags (aruco) utilisés sur les robots diff --git a/aruco_markers/.gitignore b/aruco_markers/.gitignore new file mode 100644 index 0000000..225c381 --- /dev/null +++ b/aruco_markers/.gitignore @@ -0,0 +1,2 @@ +*.png +*.jpg diff --git a/aruco_markers/generate_markers.sh b/aruco_markers/generate_markers.sh new file mode 100755 index 0000000..2d3fddd --- /dev/null +++ b/aruco_markers/generate_markers.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +echo "Generating 20 markers" +example_aruco_create_marker -d=3 --id=1 --ms=100 marker_4X4_1000_1.png +example_aruco_create_marker -d=3 --id=2 --ms=100 marker_4X4_1000_2.png +example_aruco_create_marker -d=3 --id=3 --ms=100 marker_4X4_1000_3.png +example_aruco_create_marker -d=3 --id=4 --ms=100 marker_4X4_1000_4.png +example_aruco_create_marker -d=3 --id=5 --ms=100 marker_4X4_1000_5.png +example_aruco_create_marker -d=3 --id=6 --ms=100 marker_4X4_1000_6.png +example_aruco_create_marker -d=3 --id=7 --ms=100 marker_4X4_1000_7.png +example_aruco_create_marker -d=3 --id=8 --ms=100 marker_4X4_1000_8.png +example_aruco_create_marker -d=3 --id=9 --ms=100 marker_4X4_1000_9.png +example_aruco_create_marker -d=3 --id=10 --ms=100 marker_4X4_1000_10.png +example_aruco_create_marker -d=3 --id=11 --ms=100 marker_4X4_1000_11.png +example_aruco_create_marker -d=3 --id=12 --ms=100 marker_4X4_1000_12.png +example_aruco_create_marker -d=3 --id=13 --ms=100 marker_4X4_1000_13.png +example_aruco_create_marker -d=3 --id=14 --ms=100 marker_4X4_1000_14.png +example_aruco_create_marker -d=3 --id=15 --ms=100 marker_4X4_1000_15.png +example_aruco_create_marker -d=3 --id=16 --ms=100 marker_4X4_1000_16.png +example_aruco_create_marker -d=3 --id=17 --ms=100 marker_4X4_1000_17.png +example_aruco_create_marker -d=3 --id=18 --ms=100 marker_4X4_1000_18.png +example_aruco_create_marker -d=3 --id=19 --ms=100 marker_4X4_1000_19.png +example_aruco_create_marker -d=3 --id=20 --ms=100 marker_4X4_1000_20.png diff --git a/aruco_markers/markers_board.odt b/aruco_markers/markers_board.odt new file mode 100644 index 0000000..088d205 Binary files /dev/null and b/aruco_markers/markers_board.odt differ diff --git a/aruco_markers/markers_board.pdf b/aruco_markers/markers_board.pdf new file mode 100644 index 0000000..d65a9c7 Binary files /dev/null and b/aruco_markers/markers_board.pdf differ diff --git a/doc/sujets/tex/guide_compilation/figures-pdf/edition1.pdf b/doc/sujets/tex/guide_compilation/figures-pdf/edition1.pdf new file mode 100644 index 0000000..2861bec Binary files /dev/null and b/doc/sujets/tex/guide_compilation/figures-pdf/edition1.pdf differ diff --git a/doc/sujets/tex/guide_compilation/figures-pdf/edition2.pdf b/doc/sujets/tex/guide_compilation/figures-pdf/edition2.pdf new file mode 100644 index 0000000..3278d72 Binary files /dev/null and b/doc/sujets/tex/guide_compilation/figures-pdf/edition2.pdf differ diff --git a/doc/sujets/tex/guide_compilation/figures-pdf/edition2b.pdf b/doc/sujets/tex/guide_compilation/figures-pdf/edition2b.pdf new file mode 100644 index 0000000..cbd2a1b Binary files /dev/null and b/doc/sujets/tex/guide_compilation/figures-pdf/edition2b.pdf differ diff --git a/doc/sujets/tex/guide_compilation/figures/figures.graffle b/doc/sujets/tex/guide_compilation/figures/figures.graffle new file mode 100644 index 0000000..42c3cfd Binary files /dev/null and b/doc/sujets/tex/guide_compilation/figures/figures.graffle differ diff --git a/doc/sujets/tex/guide_compilation/guide.tex b/doc/sujets/tex/guide_compilation/guide.tex new file mode 100644 index 0000000..9f3e7ea --- /dev/null +++ b/doc/sujets/tex/guide_compilation/guide.tex @@ -0,0 +1,404 @@ +\documentclass[11pt]{paper} +\usepackage[frenchb]{babel} + +\usepackage[T1]{fontenc} + +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{amstext} +\usepackage{amsmath} +\usepackage{a4wide,color} +\usepackage[utf8]{inputenc} +\usepackage{xspace} +\usepackage{anysize} +\usepackage{tabularx} +\usepackage{multirow} +\usepackage{fancybox} +\usepackage{fancyhdr} +\usepackage{bbding} + +\setlength{\parskip}{1ex plus 0.5ex minus 0.2ex} + +\usepackage{threeparttable} +\usepackage{color} +\usepackage{float} + +\usepackage[toc,page]{appendix} +\usepackage{lscape} +\usepackage{xspace} + +\usepackage{placeins} + +\usepackage{listingsutf8} + +\usepackage{todonotes} + +\lstset{% general command to set parameter(s) + basicstyle=\footnotesize, % print whole listing small + keywordstyle=\color{magenta}\bfseries, % underlined bold black keywords + identifierstyle=, % nothing happens + commentstyle=\color{black}, % white comments + stringstyle=\ttfamily, % typewriter type for strings + showstringspaces=false % no special string spaces +} + +\lstdefinelanguage{aald} + {morekeywords={system, implementation}, + sensitive=false, + morecomment=[l]{//}, + morecomment=[s]{/*}{*/}, + morestring=[b]", +} + +\usepackage[colorlinks=true]{hyperref} + +\usepackage[normalem]{ulem} +\usepackage{color} + +\definecolor{Fond}{gray}{0.9} + +\renewcommand{\floatpagefraction}{.99} +\renewcommand{\textfraction}{.01} +\newcommand{\modif}[1]{\textcolor{red}{\uline{#1}}} + +\newcounter{cptreq} +\newcommand{\req}[1]{ +\stepcounter{cptreq} + \noindent\fcolorbox{black}{Fond}{% couleur du texte, couleur du fond + \begin{minipage}[t]{\textwidth} + {\bf Fonctionnalité \thecptreq}\, : #1 + \end{minipage} + } +} + +\newcommand{\raspi}{Raspberry Pi\xspace} + +\pagestyle{fancy} +\fancyhf{} +\fancyhead[RE,RO]{\thepage} +\fancyhead[LE]{} +\fancyhead[LO]{Programmation et conception de systémes temps réel -- 4éme année AE/IR} +\fancyfoot[LO]{INSA Toulouse — P.-E. Hladik} +\fancypagestyle{plain}{% + \fancyhf{} % get rid of headers + \renewcommand{\headrulewidth}{0pt} % and the line +} + +\newenvironment{maliste}% +{ \begin{list}% + {\ArrowBoldRightStrobe}% + {\setlength{\labelwidth}{30pt}% + \setlength{\leftmargin}{35pt}% + \setlength{\itemsep}{\parsep}}}% +{ \end{list} } + +\renewcommand{\appendixtocname}{Annexes} +\renewcommand{\appendixpagename}{Annexes} + + +\title{{\Huge Projet De Stijl 2.0} +{\small : Plateforme pour robots mobiles}\\ +{\scriptsize Programmation et conception de systémes temps réel -- 4éme année AE/IR}\\ +{\scriptsize Institut National des Sciences Appliquées de Toulouse}\\ +---\\ +Guide des outils de développement \\ +{\large Version 1.0.$\beta$ (\today)}\\ +{\scriptsize Référent pédagogique : P.-E. Hladik (\texttt{pehladik@insa-toulouse.fr})}\\ +{\scriptsize Référents plateforme : S. Di Mercurio (\texttt{dimercur@insa-toulouse.fr})}\\ +--- +} + + + +\begin{document} + + +\maketitle + +%%%%%%%%%%%%%%%%%%%% +\section{Code initial du projet} +\label{sec:git} +%%%%%%%%%%%%%%%%%%%% + +Le code du projet est disponible sur un dépôt git hébergé sur GitHub. Pour le récupérer, placer vous le répertoire cible et exécuter la commande\\ \indent\indent {\tt git clone https://github.com/INSA-GEI/dumber.git} + +Il vous faut ensuite changer de branche, pour cela allez dans le répertoire {\tt dumber} puis exécuter la commande\\ \indent\indent {\tt git checkout stable} + +Tout le code relatif au projet est disponible, cependant vous n'aurez besoin que des codes présents dans les répertoires : +\begin{itemize} + \item {\tt ./dumber/software/raspberry} + \item {\tt ./dumber/software/monitor/monitor} +\end{itemize} + + \todo[inline]{Mettre à jour la suite en fonction du projet initial} + + Vous aurez alors un répertoire {\tt ./dumber/software} dans lequel vous trouverez les répertoires: + \begin{itemize} +\item {\tt /src} avec le codes des librairies du projet, +\item {\tt /destijl\_init} avec le codes correspondant au projet initial, +\item {\tt /example} avec des codes d'exemple pour utiliser les librairies (attention ce n'est pas à jour).\\ +\end{itemize} + + +Le code du projet initial est constitué des fichiers suivants : +\begin{itemize} +\item {\tt /destijl\_init/main.cpp} qui contient le main de l'application et les fonctions de création des objets (tâches, sémaphores, mutex, etc.) de l'architecture logicielle, +\item {\tt /destijl\_init/src/functions.cpp} qui contient l'implémentation des fonctions, +\item {\tt /destijl\_init/src/functions.h} qui contient l'entête des différentes fonctions.\\ +\end{itemize} + +A cela s'ajoute un fichier {\tt Makefile} disponible dans {\tt /destijl\_init} qui permet de compiler le projet initial sur une \raspi. + + +%%%%%%%%%%%%%%%%%%%% +\section{Mise en place d'un terminal distant sur la \raspi} +\label{sec:ssh} +%%%%%%%%%%%%%%%%%%%% + +Pour se connecter à la \raspi, vous aurez besoin de créer un accès via ssh. Pour cela, depuis un PC d'une salle informatique utilisez la commande :\\ \indent\indent{\tt ssh pi@10.105.1.x}\\ +avec {\tt x} le numéro sur le boitier de la \raspi. + +Le mot de passe est : insa. + +%%%%%%%%%%%%%%%%%%%% +\section{Exécution du superviseur} +\label{sec:utilisation} +%%%%%%%%%%%%%%%%%%%% + +Pour exécuter l'application sur le superviseur, il faut après avoir mis en place un terminal distant puis démarrer l'exécution avec la commande {\tt sudo ./path/app} où {\tt path} est le chemin du répertoire où se trouve l'application et {\tt app} est le nom de votre application. Attention les droits {\tt sudo} sont nécessaires pour des questions d'accès à certains services Xenomai de gestion de la mémoire. + +%%%%%%%%%%%%%%%%%%%% +\section{Exécution du moniteur} +\label{sec:utilisation} +%%%%%%%%%%%%%%%%%%%% + +L'exécution du moniteur se fait... +\todo[inline]{Faire cette partie} + + +%%%%%%%%%%%%%%%%%%%% +\section{Développement d'une application distante} +%%%%%%%%%%%%%%%%%%%% + +L'application étant sur une \raspi, il vous faut compiler le programme pour cette architecture. Pour faire cela, le plus simple est de compiler le code directement sur la cible à l'aide du {\tt Makefile}. Le problème est alors de choisir comment vous allez éditer le code. Il y a trois solutions envisagées : +\begin{enumerate} +\item édition locale et compilation distante manuelle : fatigant à la longue, il vaut mieux faire de scripts pour automatiser tout cela, +\item édition locale et compilation distante avec netbeans : un peu laborieux à configurer, mais agréable ensuite, +\item édition et compilation distante : mauvaise idée. +\end{enumerate} +Toutes ces solutions sont détaillées dans la suite. + +%%%%%%%%%%%%%%%%%%%% +\subsection{Développement d'une application distante : édition locale et compilation distante manuelle} +%%%%%%%%%%%%%%%%%%%% + +Cette solution consiste à éditer le code en local sur un PC et de faire la compilation distante sur la \raspi. Cela suppose donc de copier le code du PC sur la \raspi avant chaque compilation, puis de lancer la compilation (figure~\ref{fig:edition2}). + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{./figures-pdf/edition2} +\caption{Edition locale et compilation distante} +\label{fig:edition2} +\end{center} +\end{figure} + +Les étapes à suivre sont alors : +\begin{enumerate} +\item récupérer le code du dépôt (voir section~\ref{sec:git}) sur le PC, + \item éditer le code avec l'outil que vous préférez, + \item copier le code du PC vers la \raspi en utilisant la commande {\tt sftp} (voir ci-dessous), +\item se connecter de manière distante à la \raspi via ssh (voir section~\ref{sec:ssh}), + \item compiler avec la commande {\tt make} à l'aide du {\tt Makefile} (qu'il faudra aussi avoir copié sur la \raspi), + \item lancer l'exécutable par la commande {\tt sudo ./superviseur} (voir section ~\ref{sec:utilisation}). + \end{enumerate} + + +\paragraph{Copie distante de fichiers :} +Il est possible d'utiliser {\tt sftp} pour copier un fichier d'une machine sur une autre. Pour cela, en se plaçant dans le répertoire où se trouve le fichier à copier, il faut exécuter les commandes suivantes : +\\ \indent\indent{\tt sftp pi@10.105.1.x} avec {\tt x} le numéro de la \raspi (mot de passe {\tt insa}), +\\ \indent\indent{\tt sftp > put file} avec {\tt file} le nom du fichier à copier, +\\ \indent\indent{\tt sftp > bye} pour quitter sftp. + + +%%%%%%%%%%%%%%%%%%%% +\subsection{Développement d'une application distante : édition locale et compilation distante (version Netbeans)} +%%%%%%%%%%%%%%%%%%%% + +Cette deuxième solution applique le même schéma que précédemment (édition locale du code et compilation distante) mais en utilisant Netbeans comme IDE (figure~\ref{fig:edition2b}). + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.5]{./figures-pdf/edition2b} +\caption{Edition locale et compilation distante avec Netbeans} +\label{fig:edition2b} +\end{center} +\end{figure} + +Cette solution peut sembler longue, mais une fois la configuration réalisée il en restera plus qu'à lancer les éléments automatiquement. + +Les principales étapes sont : +\begin{enumerate} +\item éditer le code sur Netbeans, +\item lancer la compilation distante depuis Netbeans qui se chargera de copier les fichiers distants et de les compiler, +\item lancer un terminal depuis Netbeans, +\item exécuter le programme. +\end{enumerate} + +\subsubsection{Récupérer le code} + +Copiez localement (sur le PC) le dépôt git (voir section~\ref{sec:git}). + +\todo[inline]{Mettre à jour en fonction du dépot} + +\framebox[\textwidth]{ +\begin{minipage}{0.9\textwidth} +Le projet initial est livré avec un projet Netbeans déjà configuré. Vous pouvez simplement l'ouvrir depuis... Il vous faudra ensuite simplement reconfigurer la cible en suivant les étapes présentées dans la section~\ref{sec:cible}. +\end{minipage} +} + + +\subsubsection{Créer un projet Netbeans} + +\begin{enumerate} +\item Lancez Netbeans, +\item Allez dans {\tt File->new project}, +\item Choisir {\tt C/C++} pour {\tt categories}, puis {\tt C/C++ Application}, +\item Cliquez Next +\item Donner un nom au projet (ce sera par défaut le nom de votre exécutable), +\item Décocher {\tt Create main file}, +\item cliquez sur {\tt Finish}, +\end{enumerate} + +\subsubsection{Importer le code dans le projet} + +\begin{enumerate} +\item Cliquez droit sur votre projet et choisissez {\tt Add existing items from Folders...}, +\item puis {\tt Add Folder... } et allez chercher les répertoires que vous avez importé depuis github : +\begin{itemize} +\item {\tt superviseur\_robot/destijl\_init}, +\item {\tt superviseur\_robot/src}, +\end{itemize} +\item Cliquez {\tt Add}. +\end{enumerate} + +Vous pouvez supprimer tous les autres répertoires du projet (clique droit sur les répertoires). + +\subsubsection{Configurer une compilation distante} +\label{sec:cible} + +\begin{enumerate} +\item Cliquez droit sur le projet et choisir {\tt Properties}, +\item Allez dans l'onglet {\tt Build}, +\item Choisir {\tt ...} pour {\tt Build Host}, +\item Cliquez sur {\tt Add}, +\item Remplir {\tt Hostname} avec {\tt 10.105.1.x} l'adresse de la \raspi, +\item Cliquez {\tt Next}, +\item Saisir {\tt pi} pour le {\tt login}, +\item Cliquez {\tt Next}, +\item Attendre l'ouverture de la communication, +\item Saisir {\tt insa} comme mot de passe, +\item Sélectionner {\tt SFTP} pour {\tt Access project files via}, +\item Cliquez {\tt Finish}, +\item Cliquez {\tt OK}, +\item Cliquez {\tt Apply}, +\item Cliquez {\tt OK}. +\end{enumerate} + +\subsubsection{Configurer la compilation} + +\begin{enumerate} +\item Cliquez droit sur le projet et choisir {\tt Properties}, +\item Allez dans l'onglet {\tt Build->C++ Compiler}, +\item Choisir {\tt ...} pour {\tt Additional Options}, +\item Copier dans le champ {\tt -D\_GNU\_SOURCE -D\_REENTRANT -fasynchronous-unwind-tables -D\_\_MERCURY\_\_ -I/usr/xenomai/include/alchemy -g -D\_WITH\_TRACE\_ + +-I/usr/xenomai/include/ -I/usr/xenomai/include/mercury -MMD -MP} +\item Cliquez {\tt OK}, +\item Allez dans l'onglet {\tt Build->Linker}, +\item Choisir {\tt ...} pour {\tt Additional Options}, +\item Copier dans le champ {\tt -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} +\item Cliquez {\tt OK}, +\item Cliquez {\tt Apply}, +\item Cliquez {\tt OK}. +\end{enumerate} + +\subsubsection{Tester la compilation} + +\begin{enumerate} +\item Cliquez sur l'icone \og Marteau \fg ou allez dans {\tt Run->Build Project}. +\end{enumerate} + +\subsubsection{Configurer l'exécution} + +\begin{enumerate} +\item Cliquez droit sur le projet et choisir {\tt Properties}, +\item Allez dans l'onglet {\tt Run}, +\item Remplir le champ {\tt Run Command} avec {\tt sudo "\$\{OUTPUT\_PATH\}"}, +\item Remplir le champ {\tt Console Type} avec {\tt Standard Output}. +\end{enumerate} + +\subsubsection{Exécuter l'application (directement depuis Netbeans)} +\begin{enumerate} +\item Cliquez sur l'icone \og Play \fg ou allez dans {\tt Run->Build Project}. +\end{enumerate} + +\subsubsection{Exécuter l'application (avec un terminal)} +\begin{enumerate} +\item Cliquez sur l'icone \og Terminal \fg dans la fenêtre de le console (ou lancer un terminal), +\item Connectez via ssh à la \raspi, +\item allez dans {\tt .netbeans/.../dist/...} avec la commande {\tt cd} pour trouver le résultat de la compilation, +\item lancez l'exécution via {\tt sudo ./app} avec {\tt app} le nom de votre application. +\end{enumerate} + +\subsubsection{Ajouter les header dans le projet Netbeans} + +\begin{enumerate} +\item Téléchargez les entêtes des services Xenomai depuis \href{https://moodle.insa-toulouse.fr/mod/resource/view.php?id=37439}{moodle}, +\item Décompresser l'archive, +\item Cliquez droit sur le projet et choisir {\tt Properties}, +\item Allez dans l'onglet {\tt Build->C++ Compiler}, +\item Choisir {\tt ...} pour {\tt Include Headers}, +\item Cliquez sur {\tt Add}, +\item Sélectionner tous les fichiers {\tt .h} de l'archive chargée ({\tt ./include\_xenomai/include}), +\item Cliquez {\tt OK}, +\item Cliquez {\tt Apply}, +\item Cliquez {\tt OK}. +\end{enumerate} + +Le service {\tt rt\_task\_create} n'est pas reconnu suite à cette manipulation car il est déclaré à travers une macro qui masque à Netbeans son existence. Le service restera donc souligné en rouge. + +%%%%%%%%%%%%%%%%%%%% +\subsection{Développement d'une application distante : édition et compilation distantes} +%%%%%%%%%%%%%%%%%%%% + +Cette dernière solution est à éviter. Elle consiste à éditer le code directement sur la \raspi et d'y lancer la compilation via un terminal (figure~\ref{fig:edition1}). + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.45]{./figures-pdf/edition1} +\caption{Edition et compilation distante} +\label{fig:edition1} +\end{center} +\end{figure} + +Les étapes à suivre sont alors : +\begin{enumerate} +\item se connecter de manière distante à la \raspi via ssh (voir section~\ref{sec:ssh}), + \item éditer à distance (par ex. avec {\tt nano}) le code, + \item compiler avec la commande {\tt make} à l'aide du {\tt Makefile} du répertoire {\tt /destijl\_init}, + \item lancer l'exécutable par la commande {\tt sudo ./superviseur} (voir section ~\ref{sec:utilisation})\\ +\end{enumerate} + +Vous pouvez ensuite lancer le moniteur (voir section~\ref{sec:utilisation}) pour interragir avec l'application. + +\end{document} \ No newline at end of file diff --git a/doc/sujets/tex/specifications/figures/arene.graffle b/doc/sujets/tex/specifications/figures/arene.graffle new file mode 100644 index 0000000..70c45c8 --- /dev/null +++ b/doc/sujets/tex/specifications/figures/arene.graffle @@ -0,0 +1,393 @@ + + + + + ActiveLayerIndex + 0 + AutoAdjust + + CanvasColor + + w + 1 + + CanvasOrigin + {0, 0} + CanvasScale + 1 + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2010-11-07 15:53:40 +0100 + Creator + Pirem + DisplayScale + 1 cm = 1 cm + GraphDocumentVersion + 5 + GraphicsList + + + Class + Group + Graphics + + + Bounds + {{155.906, 141.732}, {240.945, 141.732}} + Class + ShapedGraphic + ID + 9 + Shape + Rectangle + Style + + fill + + Color + + b + 0.701961 + g + 0.701961 + r + 0.701961 + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Bounds + {{155.906, 184.252}, {42.5197, 56.6929}} + Class + ShapedGraphic + ID + 10 + Shape + Rectangle + Style + + fill + + Color + + b + 0 + g + 0 + r + 1 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Bounds + {{354.331, 184.252}, {42.5197, 56.6929}} + Class + ShapedGraphic + ID + 11 + Shape + Rectangle + Style + + fill + + Color + + b + 0 + g + 0.501961 + r + 0 + + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Bounds + {{155.906, 141.732}, {240.945, 141.732}} + Class + ShapedGraphic + ID + 12 + Shape + Rectangle + Style + + fill + + Color + + b + 0.701961 + g + 0.701961 + r + 0.701961 + + + shadow + + Draws + NO + + + + + Bounds + {{141.732, 127.559}, {269.291, 170.079}} + Class + ShapedGraphic + ID + 13 + Shape + Rectangle + Style + + shadow + + Draws + NO + + + + + ID + 8 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + ShowsGrid + YES + SnapsToGrid + YES + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + IsPalette + NO + KeepToScale + + Layers + + + Lock + NO + Name + Calque 1 + Print + YES + View + YES + + + LayoutInfo + + LinksVisible + NO + MagnetsVisible + NO + MasterSheet + Master 1 + MasterSheets + + + ActiveLayerIndex + 0 + AutoAdjust + + CanvasColor + + w + 1 + + CanvasOrigin + {0, 0} + CanvasScale + 1 + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 cm = 1 cm + GraphicsList + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + HPages + 1 + IsPalette + NO + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Orientation + 2 + OutlineStyle + Basic + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Master 1 + UniqueID + 1 + VPages + 1 + + + ModificationDate + 2010-11-07 15:55:56 +0100 + Modifier + Pirem + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + OutlineStyle + Basic + PageBreaks + YES + PrintInfo + + NSBottomMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSLeftMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSPaperSize + + size + {595, 842} + + NSRightMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSTopMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canevas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + DrawerOpen + + DrawerTab + Outline + DrawerWidth + 209 + FitInWindow + + Frame + {{68, 4}, {574, 742}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{0, 0}, {559, 628}} + Zoom + 1 + + + diff --git a/doc/sujets/tex/specifications/figures/contexte.graffle b/doc/sujets/tex/specifications/figures/contexte.graffle new file mode 100644 index 0000000..0e6a91a --- /dev/null +++ b/doc/sujets/tex/specifications/figures/contexte.graffle @@ -0,0 +1,2185 @@ + + + + + ActiveLayerIndex + 1 + AutoAdjust + + CanvasColor + + w + 1 + + CanvasOrigin + {0, 0} + CanvasScale + 1 + ColumnAlign + 0 + ColumnSpacing + 36 + CreationDate + 2010-05-14 13:21:40 +0200 + Creator + Pirem + DisplayScale + 1 cm = 1 cm + GraphDocumentVersion + 5 + GraphicsList + + + Class + LineGraphic + Head + + ID + 2552 + + ID + 2631 + Layer + 1 + Points + + {255.585, 127.532} + {341.285, 127.095} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 2636 + + + + Class + LineGraphic + Head + + ID + 2615 + + ID + 2628 + Layer + 1 + Points + + {341.785, 261.72} + {255.618, 261.719} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 2621 + Info + 1 + + + + Class + LineGraphic + Head + + ID + 2519 + + ID + 2627 + Layer + 1 + Points + + {255.119, 233.859} + {341.285, 233.395} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 2533 + Info + 1 + + + + Class + LineGraphic + Head + + ID + 2512 + Info + 1 + + ID + 2625 + Layer + 1 + Points + + {255.118, 205.512} + {348.872, 205.512} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 2528 + Info + 1 + + + + Class + Group + Graphics + + + Bounds + {{356.867, 254.634}, {83, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2618 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 outputStream} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{348.871, 254.633}, {7.08645, 14.1729}} + Class + ShapedGraphic + HFlip + YES + ID + 2620 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2621 + Points + + {348.87, 254.633} + {341.785, 261.72} + {348.87, 268.807} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + HFlip + YES + ID + 2619 + + + ID + 2617 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{152.772, 254.72}, {83, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2613 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qr\pardirnatural + +\f0\fs24 \cf0 outputStream} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{248.032, 254.633}, {7.08645, 14.1729}} + Class + ShapedGraphic + HFlip + YES + ID + 2615 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2616 + Points + + {248.032, 254.633} + {240.946, 261.72} + {248.032, 268.807} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + HFlip + YES + ID + 2614 + + + ID + 2612 + Layer + 1 + + + Class + LineGraphic + Head + + ID + 2498 + + ID + 2770 + Layer + 1 + Points + + {622.339, 191.339} + {687.423, 191.338} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 2769 + Info + 1 + + + + Class + LineGraphic + Head + + ID + 2579 + Info + 1 + + ID + 2758 + Layer + 1 + Points + + {623.712, 148.808} + {687.923, 148.645} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + Tail + + ID + 2756 + + + + Class + Group + Graphics + + + Bounds + {{549.867, 141.819}, {54, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2754 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qr\pardirnatural + +\f0\fs24 \cf0 reponse} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{616.126, 141.732}, {7.08645, 14.1729}} + Class + ShapedGraphic + HFlip + YES + ID + 2756 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2757 + Points + + {616.126, 141.732} + {609.04, 148.819} + {616.126, 155.906} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + HFlip + YES + ID + 2755 + + + ID + 2753 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{703.005, 141.559}, {54, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2576 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 reponse} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{695.01, 141.558}, {7.08645, 14.1729}} + Class + ShapedGraphic + HFlip + YES + ID + 2578 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2579 + Points + + {695.009, 141.558} + {687.923, 148.645} + {695.009, 155.732} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + HFlip + YES + ID + 2577 + + + ID + 2575 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{356.867, 119.987}, {43, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2551 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 image} + + Wrap + NO + + + Bounds + {{341.785, 119.988}, {7.08661, 14.1732}} + Class + ShapedGraphic + ID + 2552 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + ID + 2550 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{129.098, 120.559}, {109.295, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 2635 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qr\pardirnatural + +\f0\fs24 \cf0 image} + + + + Bounds + {{245.45, 120.472}, {9.66802, 14.1732}} + Class + ShapedGraphic + ID + 2636 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + ID + 2634 + Layer + 1 + + + Bounds + {{147.426, 85.2126}, {79.1274, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 2637 + Layer + 1 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Webcam} + + + + Bounds + {{127.559, 99.2126}, {127.559, 56.6929}} + Class + ShapedGraphic + ID + 2638 + Layer + 1 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + CornerRadius + 5 + + + + + Class + Group + Graphics + + + Bounds + {{160.772, 226.859}, {75, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2530 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qr\pardirnatural + +\f0\fs24 \cf0 inputStream} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{240.946, 226.772}, {7.08645, 14.1729}} + Class + ShapedGraphic + ID + 2532 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2533 + Points + + {248.033, 226.772} + {255.119, 233.859} + {248.033, 240.946} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + ID + 2531 + + + ID + 2529 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{135.858, 198.512}, {107, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2527 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qr\pardirnatural + +\f0\fs24 \cf0 connecter serveur} + + Wrap + NO + + + Class + LineGraphic + ID + 2528 + Points + + {248.031, 198.425} + {255.118, 205.512} + {248.031, 212.599} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + ID + 2526 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{356.867, 226.287}, {75, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2517 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 inputStream} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{341.785, 226.287}, {7.08645, 14.1729}} + Class + ShapedGraphic + ID + 2519 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2520 + Points + + {348.872, 226.287} + {355.958, 233.374} + {348.872, 240.461} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + ID + 2518 + + + ID + 2516 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{357.693, 198.425}, {107, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Monaco + Size + 11 + + ID + 2511 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qr\pardirnatural + +\f0\fs24 \cf0 connecter serveur} + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Monaco + Size + 11 + + ID + 2512 + Points + + {341.785, 198.425} + {348.872, 205.512} + {341.785, 212.599} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + ID + 2510 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{563.994, 184.338}, {39, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2766 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 2 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qr\pardirnatural + +\f0\fs24 \cf0 ordre} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{608.166, 184.252}, {7.08645, 14.1729}} + Class + ShapedGraphic + ID + 2768 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2769 + Points + + {615.253, 184.252} + {622.339, 191.339} + {615.253, 198.426} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + ID + 2767 + + + ID + 2765 + Layer + 1 + + + Class + Group + Graphics + + + Bounds + {{703.005, 184.253}, {39, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2496 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 ordre} + + Wrap + NO + + + Class + Group + Graphics + + + Bounds + {{687.923, 184.252}, {7.08645, 14.1729}} + Class + ShapedGraphic + ID + 2498 + Shape + Bezier + ShapeData + + UnitPoints + + {-0.500001, -0.5} + {-0.500001, -0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {-0.500001, 0.5} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {0.499999, 1.90735e-06} + {-0.500001, -0.5} + + + Style + + fill + + Color + + b + 0 + g + 0 + r + 0 + + + shadow + + Draws + NO + + + + + Class + LineGraphic + ID + 2499 + Points + + {695.01, 184.252} + {702.096, 191.339} + {695.01, 198.426} + + Style + + stroke + + HeadArrow + 0 + TailArrow + 0 + + + + + ID + 2497 + + + ID + 2495 + Layer + 1 + + + Bounds + {{717.576, 113.559}, {43, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2489 + Layer + 1 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Robot} + + Wrap + NO + + + Bounds + {{687.923, 127.559}, {105.082, 85.0398}} + Class + ShapedGraphic + ID + 2488 + Layer + 1 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + CornerRadius + 5 + + + + + Bounds + {{163.118, 170.079}, {57, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 2487 + Layer + 1 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Moniteur} + + Wrap + NO + + + Bounds + {{127.559, 184.252}, {127.559, 99.2121}} + Class + ShapedGraphic + ID + 2486 + Layer + 1 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + CornerRadius + 5 + + + + + Bounds + {{444.563, 71.0395}, {75, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 256 + Layer + 1 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf540 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 Superviseur} + + Wrap + NO + + + Bounds + {{341.785, 85.0395}, {281.837, 212.598}} + Class + ShapedGraphic + ID + 3 + Layer + 1 + Shape + Rectangle + Style + + shadow + + Draws + NO + + stroke + + CornerRadius + 5 + + + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + ShowsGrid + YES + SnapsToGrid + YES + + GuidesLocked + NO + GuidesVisible + YES + HPages + 2 + ImageCounter + 1 + IsPalette + NO + KeepToScale + + Layers + + + Lock + NO + Name + Calque 2 + Print + YES + View + YES + + + Lock + NO + Name + Calque 1 + Print + YES + View + YES + + + LayoutInfo + + LinksVisible + NO + MagnetsVisible + NO + MasterSheet + Master 1 + MasterSheets + + + ActiveLayerIndex + 0 + AutoAdjust + + CanvasColor + + w + 1 + + CanvasOrigin + {0, 0} + CanvasScale + 1 + ColumnAlign + 1 + ColumnSpacing + 36 + DisplayScale + 1 cm = 1 cm + GraphicsList + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + + HPages + 1 + IsPalette + NO + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Orientation + 2 + OutlineStyle + Basic + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Master 1 + UniqueID + 1 + VPages + 1 + + + ModificationDate + 2012-01-15 19:02:08 +0100 + Modifier + Pirem + NotesVisible + NO + Orientation + 1 + OriginVisible + NO + OutlineStyle + Basic + PageBreaks + YES + PrintInfo + + NSBottomMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSLeftMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSPaperSize + + size + {595, 842} + + NSRightMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + NSTopMargin + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG + + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canevas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 2 + WindowInfo + + CurrentSheet + 0 + DrawerOpen + + DrawerTab + Outline + DrawerWidth + 209 + FitInWindow + + Frame + {{93, 4}, {881, 742}} + ShowRuler + + ShowStatusBar + + VisibleRegion + {{11, 0}, {866, 628}} + Zoom + 1 + + + diff --git a/doc/sujets/tex/specifications/figures/schema_general2.graffle/data.plist b/doc/sujets/tex/specifications/figures/schema_general2.graffle/data.plist new file mode 100644 index 0000000..3e05ad0 --- /dev/null +++ b/doc/sujets/tex/specifications/figures/schema_general2.graffle/data.plist @@ -0,0 +1,900 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 169.14.0.260934 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559, 818}} + Class + SolidGraphic + ID + 2 + Style + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2010-11-07 14:33:57 +0000 + Creator + Pirem + DisplayScale + 1.0000 cm = 1.0000 cm + GraphDocumentVersion + 12 + GraphicsList + + + Class + Group + Graphics + + + Bounds + {{510.2362174987793, 85.039369583129883}, {99.212597846984863, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 311 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 moniteur} + VerticalPad + 0.0 + + + + Bounds + {{537.67418492889419, 113.21259784698486}, {42.519684791564941, 42.519684791564941}} + Class + ShapedGraphic + ID + 312 + ImageID + 3 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + + Bounds + {{509.32772840118423, 99.039369583129883}, {99.212597846984863, 70.866141319274902}} + Class + ShapedGraphic + ID + 313 + Style + + shadow + + Draws + NO + + + + + ID + 310 + + + Class + LineGraphic + ID + 298 + Points + + {467.71653270721436, 141.73226958312989} + {510.2362174987793, 141.7322826385498} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + StickArrow + Legacy + + TailArrow + StickArrow + + + + + Bounds + {{325.98425006866455, 71.039369583129883}, {40, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 287 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 XBee} + VerticalPad + 0.0 + + Wrap + NO + + + Class + LineGraphic + ID + 284 + Points + + {283.46456527709961, 85.039369583129883} + {340.15754347229006, 113.38582611083984} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + StickArrow + Legacy + + TailArrow + StickArrow + + + + + Bounds + {{466.67851741725826, 120.55904131927491}, {43.557700081521034, 14}} + Class + ShapedGraphic + FitText + Vertical + Flow + Resize + ID + 296 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 WiFi} + VerticalPad + 0.0 + + + + Class + Group + Graphics + + + Bounds + {{368.50377173614504, 141.90545652770996}, {55, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 303 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 webcam} + VerticalPad + 0.0 + + Wrap + NO + + + Class + LineGraphic + ID + 304 + Points + + {340.15731520843508, 155.90522826385498} + {325.98431520843508, 170.07822826385498} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + 0 + Legacy + + TailArrow + 0 + + + + + Class + LineGraphic + ID + 305 + Points + + {325.98431520843508, 127.55922826385498} + {340.15731520843508, 141.73222826385498} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + 0 + Legacy + + TailArrow + 0 + + + + + Bounds + {{340.15731520843508, 141.90522826385498}, {28.346499999999999, 14}} + Class + ShapedGraphic + HFlip + YES + ID + 306 + Style + + shadow + + Draws + NO + + + VFlip + YES + + + Class + Group + Graphics + + + Bounds + {{356.16153270721435, 78.148240213030363}, {111.55500000000001, 21.064357633954504}} + Class + ShapedGraphic + ID + 308 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 superviseur} + VerticalPad + 0.0 + + + + Bounds + {{356.16153270721429, 99.212597846984863}, {111.55500000000001, 70.866141319274902}} + Class + ShapedGraphic + ID + 309 + Style + + shadow + + Draws + NO + + + + + ID + 307 + + + ID + 302 + + + Bounds + {{221.19, 87.118577617282838}, {38, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 269 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 robot} + VerticalPad + 0.0 + + Wrap + NO + + + Bounds + {{107.81399999999999, 56.692871736145023}, {41, 14}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 261 + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 ar\'e8ne} + VerticalPad + 0.0 + + Wrap + NO + + + Class + Group + Graphics + + + Class + Group + Graphics + + + Class + LineGraphic + ID + 257 + Points + + {248.857, 128.58757761728282} + {223.999, 114.96457761728284} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + 0 + Legacy + + TailArrow + 0 + Width + 6 + + + + + Class + LineGraphic + ID + 258 + Points + + {269.291, 91.300577617282826} + {244.43299999999999, 77.677577617282836} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + 0 + Legacy + + TailArrow + 0 + Width + 6 + + + + + ID + 256 + Rotation + 118.72389984130859 + + + Bounds + {{226.017, 78.905577617282844}, {28.346499999999999, 42.5197}} + Class + ShapedGraphic + ID + 259 + Rotation + 118.72389984130859 + Style + + shadow + + Draws + NO + + + + + ID + 255 + Rotation + 118.72389984130859 + + + Bounds + {{283.46499999999997, 113.386}, {28.346499999999999, 56.692900000000002}} + Class + ShapedGraphic + ID + 4 + Style + + fill + + Color + + b + 0.0 + g + 0.0 + r + 1 + + + shadow + + Draws + NO + + + + + Bounds + {{99.212599999999995, 113.386}, {28.346499999999999, 56.692900000000002}} + Class + ShapedGraphic + ID + 3 + Style + + fill + + Color + + b + 0.0 + g + 0.50196099999999999 + r + 0.0 + + + shadow + + Draws + NO + + + + + Bounds + {{99.212599999999995, 70.866100000000003}, {212.59800000000001, 141.732}} + Class + ShapedGraphic + ID + 292 + Style + + shadow + + Draws + NO + + + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + ShowsGrid + YES + SnapsToGrid + YES + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 4 + ImageLinkBack + + + + ImageList + + image3.tiff + + KeepToScale + + Layers + + + Lock + NO + Name + Calque 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + layoutEngine + dot + neatoLineLength + 0.20000000298023224 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-12-20 08:11:25 +0000 + Modifier + pehladik + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + OutlineStyle + Basic + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 12 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595, 842} + + NSPrintReverseOrientation + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 12 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canevas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Expanded_Canvases + + Frame + {{196, 18}, {870, 742}} + ShowInfo + + Sidebar + + SidebarWidth + 0 + TopSlabHeight + 250 + VisibleRegion + {{37, 0}, {573, 632}} + Zoom + 1 + ZoomValues + + + Canevas 1 + 1 + 1 + + + + + diff --git a/doc/sujets/tex/specifications/figures/schema_general2.graffle/image3.tiff b/doc/sujets/tex/specifications/figures/schema_general2.graffle/image3.tiff new file mode 100644 index 0000000..90713e0 Binary files /dev/null and b/doc/sujets/tex/specifications/figures/schema_general2.graffle/image3.tiff differ diff --git a/doc/sujets/tex/specifications/figures/schema_robot.graffle b/doc/sujets/tex/specifications/figures/schema_robot.graffle new file mode 100644 index 0000000..099aa0b --- /dev/null +++ b/doc/sujets/tex/specifications/figures/schema_robot.graffle @@ -0,0 +1,482 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 169.14.0.260934 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559, 818}} + Class + SolidGraphic + ID + 2 + Style + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2010-11-07 14:57:04 +0000 + Creator + Pirem + DisplayScale + 1.0000 cm = 1.0000 cm + GraphDocumentVersion + 12 + GraphicsList + + + Bounds + {{212.59899999999999, 269.291}, {28.346399999999999, 28.346499999999999}} + Class + ShapedGraphic + ID + 264 + Shape + Circle + Style + + shadow + + Draws + NO + + + + + Bounds + {{200.64670874938966, 113.38582611083984}, {54.471400000000003, 70.866141319274902}} + Class + ShapedGraphic + ID + 262 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 Xbee} + VerticalPad + 0.0 + + + + Bounds + {{99.462599999999995, 170.32900000000001}, {127.059, 42.5197}} + Class + ShapedGraphic + ID + 257 + Rotation + 90 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 moteur} + VerticalPad + 0.0 + + + + Bounds + {{184.25200000000001, 198.42500000000001}, {84.539199999999994, 42.5197}} + Class + ShapedGraphic + ID + 256 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 micro-contr\'f4leur} + VerticalPad + 0.0 + + + + Bounds + {{227.02199999999999, 170.32900000000001}, {127.059, 42.5197}} + Class + ShapedGraphic + ID + 255 + Rotation + 90 + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf470 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0 + +\f0\fs24 \cf0 moteur} + VerticalPad + 0.0 + + + + Class + LineGraphic + ID + 266 + Points + + {311.81099999999998, 183.75222826385499} + {325.48399999999998, 183.75222826385499} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + 0 + Legacy + + TailArrow + 0 + Width + 10 + + + + + Bounds + {{325.98399999999998, 141.7322826385498}, {14.1732, 85.039660833740243}} + Class + ShapedGraphic + ID + 267 + Style + + fill + + Color + + b + 0.0 + g + 0.0 + r + 0.0 + + + shadow + + Draws + NO + + + + + Bounds + {{141.7322826385498, 99.212597846984863}, {170.07873916625977, 226.77165222167969}} + Class + ShapedGraphic + ID + 265 + Style + + shadow + + Draws + NO + + + + + Class + Group + Graphics + + + Class + LineGraphic + ID + 271 + Points + + {141.73202611083985, 183.75222826385499} + {128.05902611083985, 183.75222826385499} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + 0 + Legacy + + TailArrow + 0 + Width + 10 + + + + + Bounds + {{113.38582611083984, 141.7322826385498}, {14.1732, 85.039660833740243}} + Class + ShapedGraphic + HFlip + YES + ID + 272 + Style + + fill + + Color + + b + 0.0 + g + 0.0 + r + 0.0 + + + shadow + + Draws + NO + + + + + HFlip + YES + ID + 270 + + + GridInfo + + GridSpacing + 14.17322826385498 + MajorGridSpacing + 10 + ShowsGrid + YES + SnapsToGrid + YES + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Calque 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + layoutEngine + dot + neatoLineLength + 0.20000000298023224 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2017-03-22 15:48:36 +0000 + Modifier + pehladik + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + OutlineStyle + Basic + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 12 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {595, 842} + + NSPrintReverseOrientation + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 12 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canevas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Expanded_Canvases + + Frame + {{108, 4}, {870, 742}} + ShowInfo + + Sidebar + + SidebarWidth + 0 + TopSlabHeight + 250 + VisibleRegion + {{-7, 0}, {573, 632}} + Zoom + 1 + ZoomValues + + + Canevas 1 + 1 + 1 + + + + + diff --git a/doc/sujets/tex/specifications/figures_pdf/arene.pdf b/doc/sujets/tex/specifications/figures_pdf/arene.pdf new file mode 100644 index 0000000..885b036 Binary files /dev/null and b/doc/sujets/tex/specifications/figures_pdf/arene.pdf differ diff --git a/doc/sujets/tex/specifications/figures_pdf/classes1.png b/doc/sujets/tex/specifications/figures_pdf/classes1.png new file mode 100644 index 0000000..edeb863 Binary files /dev/null and b/doc/sujets/tex/specifications/figures_pdf/classes1.png differ diff --git a/doc/sujets/tex/specifications/figures_pdf/classes2.png b/doc/sujets/tex/specifications/figures_pdf/classes2.png new file mode 100644 index 0000000..c6046bd Binary files /dev/null and b/doc/sujets/tex/specifications/figures_pdf/classes2.png differ diff --git a/doc/sujets/tex/specifications/figures_pdf/contexte.pdf b/doc/sujets/tex/specifications/figures_pdf/contexte.pdf new file mode 100644 index 0000000..d74ff93 Binary files /dev/null and b/doc/sujets/tex/specifications/figures_pdf/contexte.pdf differ diff --git a/doc/sujets/tex/specifications/figures_pdf/schema_general2.pdf b/doc/sujets/tex/specifications/figures_pdf/schema_general2.pdf new file mode 100644 index 0000000..7105f22 Binary files /dev/null and b/doc/sujets/tex/specifications/figures_pdf/schema_general2.pdf differ diff --git a/doc/sujets/tex/specifications/figures_pdf/schema_robot.pdf b/doc/sujets/tex/specifications/figures_pdf/schema_robot.pdf new file mode 100644 index 0000000..424d896 Binary files /dev/null and b/doc/sujets/tex/specifications/figures_pdf/schema_robot.pdf differ diff --git a/doc/sujets/tex/specifications/seq_req/req1-2.png b/doc/sujets/tex/specifications/seq_req/req1-2.png new file mode 100644 index 0000000..64a7e7f Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req1-2.png differ diff --git a/doc/sujets/tex/specifications/seq_req/req10-11.png b/doc/sujets/tex/specifications/seq_req/req10-11.png new file mode 100644 index 0000000..6692833 Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req10-11.png differ diff --git a/doc/sujets/tex/specifications/seq_req/req12-13.png b/doc/sujets/tex/specifications/seq_req/req12-13.png new file mode 100644 index 0000000..b07e491 Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req12-13.png differ diff --git a/doc/sujets/tex/specifications/seq_req/req14-16.png b/doc/sujets/tex/specifications/seq_req/req14-16.png new file mode 100644 index 0000000..4d5fcc8 Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req14-16.png differ diff --git a/doc/sujets/tex/specifications/seq_req/req17.png b/doc/sujets/tex/specifications/seq_req/req17.png new file mode 100644 index 0000000..e6638c9 Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req17.png differ diff --git a/doc/sujets/tex/specifications/seq_req/req18.png b/doc/sujets/tex/specifications/seq_req/req18.png new file mode 100644 index 0000000..f560bf1 Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req18.png differ diff --git a/doc/sujets/tex/specifications/seq_req/req3-6.png b/doc/sujets/tex/specifications/seq_req/req3-6.png new file mode 100644 index 0000000..39b57b1 Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req3-6.png differ diff --git a/doc/sujets/tex/specifications/seq_req/req7-9.png b/doc/sujets/tex/specifications/seq_req/req7-9.png new file mode 100644 index 0000000..fe64005 Binary files /dev/null and b/doc/sujets/tex/specifications/seq_req/req7-9.png differ diff --git a/doc/sujets/tex/specifications/src/annexes.tex b/doc/sujets/tex/specifications/src/annexes.tex new file mode 100644 index 0000000..a784b9c --- /dev/null +++ b/doc/sujets/tex/specifications/src/annexes.tex @@ -0,0 +1,283 @@ +\begin{appendices} +\section{Annexes} + +\subsection{Messages robot-superviseur} +\label{sec:sec:comm_rob_sup} + +La communication fonctionne sur le principe d'une communication synchrone de type requête. La communication ne peut être initiée que par le superviseur. + +Toutes les communications ont par défaut un retour en cas d'erreur. Ce retour est porté par la valeur de {\tt messageID} d'un objet {\tt Message}. Si la communication s'est bien déroulée la valeur MESSAGE\_ANSWER\_ACK est retournée, sinon une valeur de retour correspondante à l'un des cas d'erreur suivant est produite : +\begin{itemize} + \item MESSAGE\_ANSWER\_ROBOT\_TIMEOUT : la réponse n'est pas arrivée avant 80 ms, + \item MESSAGE\_ANSWER\_ROBOT\_UNKNOWN\_COMMAND : la commande n'a pas été comprise par le robot, + \item MESSAGE\_ANSWER\_ROBOT\_ERROR : la commande n'est pas conforme à sa définition. +\end{itemize} +\FloatBarrier + +Les messages envoyés au robot sont composés d'une entête codée sur un octect ({\tt char}) correspondant à l'ordre à réaliser. Certains ordres sont aussi accompagnés d'une donnée codée sur un entier ({\tt int}). Le tableau~\ref{tab:ordre_robot} décrit les entêtes. + +\begin{table}[htp] +\begin{center} +\begin{tabular}{|l|c|l|c|c|} +\hline +Entête (\scriptsize{MESSAGE\_ROBOT\_}) & Données & Description & Retour\\ +\hline\hline +{\scriptsize PING} & -- & Teste la disponibilité de la communication & --\\ +{\scriptsize RESET} & -- & Demande un redémarrage du robot & --\\ +\hline +{\scriptsize START\_WITHOUT\_WD} & -- & Démarre le robot sans le {\it watchdog} & -- \\ +{\scriptsize START\_WITH\_WD} & -- & Démarre le robot avec le {\it watchdog} & -- \\ +{\scriptsize RELOAD\_WD} & -- & Recharge le {\it watchdog} & --\\ +\hline +{\scriptsize BATTERY\_GET} & -- & Retourne le niveau de la batterie & niv. batterie\\ +{\scriptsize STATE\_GET} & -- & Retourne l'état du robot & état\\ +\hline +{\scriptsize GO\_FORWARD} & -- & Déplace le robot en avant & -- \\ +{\scriptsize GO\_BACK} & -- & Déplace le robot en arrière & -- \\ +{\scriptsize GO\_LEFT} & -- & Fait tourner dans le sens anti-horaire & -- \\ +{\scriptsize GO\_RIGHT} & -- & Fait tourner dans le sens horaire & -- \\ +{\scriptsize STOP\_MOVE} & -- & Stoppe le mouvement du robot & -- \\ +\hline +{\scriptsize MOVE} & distance & Déplace en ligne droite & --\\ +{\scriptsize TURN} & angle & Tourne d'un angle donné & -- \\ +\hline +\end{tabular} +\end{center} +\caption{Liste des messages du superviseur vers le robot} +\label{tab:ordre_robot} +\end{table}% +\FloatBarrier + +Le niveau de la batterie peut prendre comme valeur : +\begin{itemize} + \item BATTERY\_UNKNOWN : la mesure n'a pas abouti, + \item BATTERY\_EMPTY : niveau vide, + \item BATTERY\_LOW : niveau faible, + \item BATTERY\_FULL: niveau haut. +\end{itemize} + +Les états possibles du robot sont : +\begin{itemize} + \item MESSAGE\_ROBOT\_STATE\_BUSY : le robot est en train de réaliser un mouvement, + \item MESSAGE\_ROBOT\_STATE\_NOT\_BUSY : le robot ne réalise pas de mouvement. +\end{itemize} + +%%%%%%%%%%%%%%% + +\subsection{Messages moniteur-superviseur} +\label{sec:comm_mon_sup} + +\subsubsection{Moniteur vers Superviseur} +\label{sec:mts} + +Les message envoyés du moniteur vers le superviseur sont composés d'un entête de trois octets et d'une donnée d'un octet. Le tableau~\ref{tab:mts} décrit ces entêtes et les données. Certains messages nécessitent une réponse par un acquittement (cf. messages section~\ref{sec:stm}). Les messages spécifiques pour le robot ont les même entêtes que la communication entre le robot et le superviseur. + + +\begin{table}[htp] + +\begin{center} +\begin{tabular}{|l|p{7cm}|} +\hline +{\bf Id} & {\bf Description} \\ +\hline +MESSAGE\_ROBOT\_COM\_OPEN & Demande d'ouverture de la comm. avec le robot\\ +MESSAGE\_ROBOT\_COM\_CLOSE & Demande de fermeture de la comm. avec le robot \\ +\hline +\multicolumn{2}{|l|}{{\bf Acquittement} : oui}\\ +\hline +\hline +MESSAGE\_ROBOT\_* & Message portant un ordre pour le robot (voir tableau précédent)\\ +\hline +\multicolumn{2}{|p{\textwidth}|}{{\bf Acquittement} : les messages MESSAGE\_ROBOT\_START\_WITH\_WD et MESSAGE\_ROBOT\_START\_WITHOUT\_WD nécessitent un acquitement}\\ +\hline +\hline +MESSAGE\_CAM\_OPEN & Demande d'ouverture de la caméra\\ +MESSAGE\_CAM\_CLOSE & Demande de fermeture de la caméra\\ +MESSAGE\_CAM\_ASK\_ARENA & Demande de détection de l'arène \\ +MESSAGE\_CAM\_ARENA\_CONFIRM & L'arène est la bonne\\ +MESSAGE\_CAM\_ARENA\_INFIRM & L'arène n'est pas la bonne\\ +MESSAGE\_CAM\_POSITION\_COMPUTE\_START & Calcul de la position du robot\\ +MESSAGE\_CAM\_POSITION\_COMPUTE\_STOP & Arrêt du calcul de la position du robot\\ +\hline +\multicolumn{2}{|p{\textwidth}|}{{\bf Acquittement} : les messages MESSAGE\_CAM\_OPEN et MESSAGE\_CAM\_CLOSE attendent un acquittement.}\\ +\hline +\end{tabular} +\end{center} +\caption{Description des messages du moniteur vers le superviseur} +\label{tab:mts} +\end{table}% + +\newpage +%%%%%%%%% +\subsubsection{Superviseur vers Moniteur} +\label{sec:stm} + +Les messages du superviseur vers le moniteur sont composés d'une entête de 3 octets et de données de taille variables. Le tableau~\ref{tab:stm} décrit ces messages. + +\begin{table}[htp] +\begin{center} +\begin{tabular}{lcl} +\hline +Entête & Données & Description\\ +\hline +\hline +MESSAGE\_ANSWER\_ACK & -- & Message d'acquittement en cas de succès\\ +MESSAGE\_ANSWER\_NACK & -- & Message d'acquittement en cas d'échec\\ +MESSAGE\_MONITOR\_LOST & -- & Signale la perte de la comm. avec le robot\\ +MESSAGE\_CAM\_IMAGE & Image & Envoi d'une image\\ +MESSAGE\_CAM\_POSITION & Position & Envoi de la postion du robot\\ +MESSAGE\_ROBOT\_BATTERY\_LEVEL & int & Envoi du niveau de la batterie\\ +\hline +\end{tabular} +\end{center} +\caption{Liste des messages du moniteur vers le superviseur} +\label{tab:stm} +\end{table}% +\FloatBarrier + +\newpage +\section{Diagramme de classe des bibliothèques} +\label{ann:diag_class} + +% +%@startuml +%skinparam monochrome true +% +%class Message{ +%-MessageID messageID +% +%+Message() +%+Message(MessageId id) +%+string ToString() +%+bool CompareID(MessageID id) +%+MessageID GetID() +%+void SetID(MessageID id) +%-bool CheckID(MessageID id) +%} +% +% +%class MessageBattery{ +% -BatteryLevel level +% +MessageBattery(MessageID id, BatteryLevel level) +% +BatteryLevel GetLevel() +% +void SetLevel(BatteryLevel level) +%} +% +%class MessagePosition{ +% -Position pos +% +MessagePosition(MessageID id, Position& pos) +% +Position GetPosition() +% +void SetPosition(Position& pos) +%} +% +%class MessageImg{ +% -Img* image +% +MessageImg(MessageID id, Img *image) +% +Img* GetImage() +% +void SetImage(Img* image) +%} +% +%class MessageInt{ +% - int value +% + MessageInt(MessageID id, int val) +% +int GetValue() +% +void SetValue(int val) +%} +% +%class MessageString{ +% - string s +% +MessageString(MessageID id, string s) +% +string GetString() +% +void SetString(string s) +%} +% +%Message <|-down- MessageImg +%Message <|-down- MessageInt +%Message <|-up- MessageString +%Message <|-up- MessageBattery +%Message <|-- MessagePosition +% +%class ComRobot { +% +int Open() +% +int Open(string usart) +% +int Close() +% +Message *Write(Message* msg) +% +void Write_Pre() +% +void Write_Post() +% +Message *Ping() +% +Message *Reset() +% +Message *PowerOff() +% +Message *StartWithWD() +% +Message *StartWithoutWD() +% +Message *ReloadWD() +% +Message *Move(int length) +% +Message *Turn(int angle) +% +Message *Stop() +% +Message *GoForward() +% +Message *GoBackward() +% +Message *GoLeft() +% +Message *GoRight() +% +Message *GetBattery() +% +Message *GetState() +%} +% +%class ComMonitor { +% +int Open(int port) +% +void Close() +% +int AcceptClient() +% +void Write(Message *msg) +% +void Write_Pre() +% +void Write_Post() +% +Message *Read() +% +void Read_Pre() +% +void Read_Post() +%} +%class Img{ +% +ImageMat img +% +Img(ImageMat imgMatrice) +% +string ToString() +% +Jpg ToJpg() +% +Arena SearchArena() +% +int DrawRobot(Position robot) +% +int DrawArena(Arena arenaToDraw) +% +std::list SearchRobot(Arena arena) +%} +% +%class Camera{ +% +Camera(int size, int fps); +% +% +bool Open(); +% +void Close(); +% +Img Grab(); +% +int GetWidth() const; +% +int GetHeight() const; +% +% +bool IsOpen(); +% +void SetSize(int size); +%} +% +%class Position{ +% +cv::Point2f center +% +cv::Point2f direction +% +float angle +% +int robotId +%} +% +%class Arena{ +% +cv::Rect arena +% +Arena() +% +bool IsEmpty() +%} +% +%@enduml + + \begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.55]{./figures_pdf/classes1} +\includegraphics[scale=0.55]{./figures_pdf/classes2} +\caption{Diagramme de classes des bibliothèques De Stijl} +\label{fig:diag17} +\end{center} +\end{figure} +\FloatBarrier +\end{appendices} \ No newline at end of file diff --git a/doc/sujets/tex/specifications/src/besoins.tex b/doc/sujets/tex/specifications/src/besoins.tex new file mode 100644 index 0000000..cf5ffdc --- /dev/null +++ b/doc/sujets/tex/specifications/src/besoins.tex @@ -0,0 +1,493 @@ +%%%%%%%%%%%%%%%%%%%%%%% +\section{Expression fonctionnelle du besoin} +%%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Présentation générale} + +L'objectif est de concevoir et de développer l'architecture logicielle du superviseur afin d'assurer le fonctionnement de la plate-forme. Les fonctions attendues sont : +\begin{enumerate} + \item Assurer la communication entre le moniteur et le superviseur. + \item Assurer la communication entre le superviseur et le robot. + \item Superviser l'état du robot. + \item Contrôler le déplacement du robot. + \item Contrôler et diffuser les images de la webcam. + \item Réaliser des missions.\\ +\end{enumerate} + +\noindent\framebox[\textwidth]{ +\begin{minipage}{0.9\textwidth} +{\bf Remarque :} Les plateformes matérielle et logicielle ont de nouveau évoluées cette année. Les bibliothèques fournies ont été réécrites pour faciliter leur prise en main. Bien qu'elles aient été testées, elles comportent certainement des erreurs. Soyez indulgents, nous faisons de notre mieux pour fournir une plate-forme opérationnelle !\\ +{\bf Si vous remarquez des erreurs, des problèmes ou des optimisations à faire, n'hésitez pas à le communiquer} (via GitHub pour en garder la trace). +\end{minipage} +}\\ + + \subsection{Diagramme de contexte} + +La figure~\ref{fig:contexte} présente le superviseur dans son contexte et ses interactions avec les autres composants de la plate-forme. + + \begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.6]{figures_pdf/contexte} +\caption{Diagramme de contexte} +\label{fig:contexte} +\end{center} +\end{figure} +\FloatBarrier + +La webcam produit des données (\texttt{image}) sous la forme d'un tableau d'octets. Le robot reçoit des ordres (\texttt{ordre}) sous la forme d'une chaîne de caractères et retourne une réponse aussi sous la forme d'une chaîne (\texttt{reponse}). Le moniteur envoie un événement (\texttt{connecter serveur}) pour demander la connexion avec le serveur puis établit une communication bi-directionnelle sous la forme d'un flux d'octets (\texttt{inputStream} et \texttt{outputStream}). + +%Si l'on se focalise uniquement sur le superviseur, nous avons donc un unique processus (voir figure~\ref{fig:processus}). +% +% \begin{figure}[htbp] +%\begin{center} +%\includegraphics[scale=0.6]{figures_pdf/AADL/system} +%\caption{Vue systéme du Superviseur} +%\label{fig:processus} +%\end{center} +%\end{figure} +%\FloatBarrier + + + %%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Description des fonctionnalités} +%%%%%%%%%%%%%%%%%%%%%%%%% + +Vous trouverez dans cette partie la description des différentes fonctionnalités attendues. Les annexes apportent des compléments techniques.\\ + +\noindent\fcolorbox{black}{Fond}{% couleur du texte, couleur du fond +\begin{minipage}{\textwidth} +L'expression des fonctionnalités est repérée par des encadrés avec un fond gris. C'est ce que vous devez réaliser. +\end{minipage} +} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Fonctionnement du moniteur} +%%%%%%%%%%%%%%%%%%%%%%%%% + +Le moniteur sert pour le contrôle du robot et la visualisation d'une scène. La communication entre le moniteur et le superviseur est réalisée par un socket avec un serveur du côté du superviseur. La communication est bi-directionnelle : le moniteur peut envoyer des requêtes et le superviseur peut envoyer des données pour mettre à jour certains éléments de l'interface. Les messages sont prédéfinis et sont présentés dans l'annexe~\ref{sec:comm_mon_sup}. + + +%%%%%%%%%%%%%%%%%%%%%%%%% + \subsubsection{Communication entre le superviseur et le moniteur} +%%%%%%%%%%%%%%%%%%%%%%%%% + +La communication entre le serveur et le superviseur est réalisée à l'aide d'un socket. Le superviseur joue le rôle de serveur. Toutes les fonctions pour gérer la communication entre le moniteur et le superviseur sont fournies dans {\tt monitor}. + +Les figures~\ref{fig:diag1_2} et~\ref{fig:diag3_6} illustrent le mode de fonctionnement nominal attendu pour la communication entre le superviseur et le moniteur. + +%https://sequencediagram.org + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Lancement du serveur.} Le lancement du serveur est réalisé à l'aide de la méthode {\tt Open} de la classe {\tt ComMonitor}.\\ + +\req{Le lancement du serveur doit être réalisé au démarrage du superviseur. En cas d'échec du démarrage du serveur, un message textuel doit être affiché sur la console de lancement de l'application. Ce message doit signaler le problème et le superviseur doit s'arrêter.} + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Etablissement du socket.} La connexion entre le moniteur et le superviseur est réalisée site à la demande de l'utilisateur via l'interface graphique. Lorsque la demande est faite, un socket est créé, il faut donc que le serveur soit en attente d'une demande de connexion, c'est-à-dire que la méthode {\tt AcceptClient} de la classe {\tt ComMonitor} soit en cours d'exécution. Cette méthode est bloquante.\\ + +\req{La connexion entre le moniteur et le superviseur (via le socket) doit être établie suite à la demande de connexion de l'utilisateur.} + +%Terminal->*Supervisor:exec +%note left of Supervisor: (req 1) start server +%Supervisor->+Supervisor: ComMonitor::Open() +%Supervisor-->-Supervisor:err +%alt err != failed +% Supervisor->+Supervisor: ComMonitor::AcceptClient() +% Monitor->Supervisor: connexion +% note left of Supervisor: (req 2) connect socket +% Supervisor->Monitor:accept +% Supervisor-->-Supervisor:err +% +%else +% Supervisor->Terminal: print("server failed") +% destroy Supervisor +%end +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.4]{./seq_req/req1-2} +\caption{Diagramme de séquence des fonctionnalités 1 à 2} +\label{fig:diag1_2} +\end{center} +\end{figure} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Réception des messages.} La réception des messages du serveur par le superviseur est réalisée par l'appel de la méthode {\tt Read} de la classe {\tt ComMonitor}. Cette méthode est bloquante. Les messages du moniteur vers le superviseur sont pré-formatés dans la classe {\tt Message} et définis dans l'annexe~\ref{sec:mts}.\\ + +\req{Tous les messages envoyés depuis le moniteur doivent être réceptionnés par le superviseur.} + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Envoi des messages.} L'envoi des messages du superviseur vers le moniteur est réalisé à l'aide de la fonction {\tt Write} de la classe {\tt ComMonitor}. Les messages du superviseur vers le moniteur sont pré-formatés et définis dans l'annexe~\ref{sec:stm}.\\ + +\req{L'application superviseur doit être capable d'envoyer les messages au moniteur (via le serveur) avec un délai d'au plus 10~ms.} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Détection de la perte de communication.} La perte de communication entre le moniteur et le superviseur est détectée lors de la lecture sur le socket. La méthode {\tt Read} retourne un message de type {\tt MESSAGE\_MONITOR\_LOST} si la communication est perdue. \\ + +\req{Le superviseur doit détecter la perte de communication avec le moniteur. En cas de perte de la communication un message doit être affiché sur la console de lancement du superviseur.} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Reprise de la communication.} La communication entre le moniteur et le superviseur est fermé à l'aide de la méthode {\tt Close} de la classe {\tt ComMonitor}. {\bf Attention} cette fonctionnalité ne peut être mise en place que lorsque l'ensemble de l'application est déjà réalisée, il ne sert à rien d'y travailler tant que le reste n'est pas fait.\\ + +\req{En cas de perte de communication entre le superviseur et moniteur, il faut stopper le robot, la communication avec le robot, fermer le serveur et déconnecter la caméra afin de revenir dans le même état qu'au démarrage du superviseur.} + +%loop message is not MESSAGE_MONITOR_LOST +%par +%note left of Monitor: (req 3) receive message from Monitor +%Supervisor->+Supervisor: ComMonitor::Read() +%Monitor->Supervisor: message +%Supervisor-->-Supervisor: message +%note over Supervisor: compute message +%else +%note left of Monitor: (req 4) send message to Monitor +%note over Supervisor: wait message to send +%Supervisor->Monitor: ComMonitor::Write(message) +%end +%note left of Monitor +% (req 5) detect loss of +% communication between Supervisor +% and Monitor +%end note +%end +%note right of Supervisor: (req 6) kill server +%Supervisor->+Supervisor:ComMonitor::Close +%Supervisor->Terminal:print("Monitor is lost") +%note over Supervisor: clear Supervisor +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.4]{./seq_req/req3-6} +\caption{Diagramme de séquence des fonctionnalités 3 à 6} +\label{fig:diag3_6} +\end{center} +\end{figure} +\FloatBarrier + + %%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Communication entre le superviseur et le robot} +%%%%%%%%%%%%%%%%%%%%%%%%% + +La communication avec le robot s'effectue par le biais d'émetteur-récepteur Xbee. Pour communiquer, il est nécessaire de commencer par ouvrir la communication entre le superviseur et le boîtier Xbee. Toutes les fonctions de gestion de la communication entre le robot et le superviseur sont fournies dans la bibliothèque {\tt robot}. La figure~\ref{fig:diag7_9} illustre les fonctionnalités 7 à 9. + +\paragraph{Mettre en place la communication avec le robot.} L'ouverture de la communication (c'est-à-dire la réservation d'un port série) avec le robot se fait à l'aide de la fonction {\tt Open} de la classe {\tt ComRobot}. Cette demande est automatiquement demandée par le moniteur dès que le socket est en place.\\ + +\req{Dès que la communication avec le moniteur est en place, la communication entre le superviseur et le robot doit être ouverte. Si la communication est active, il faut envoyer un message d'acquittement au moniteur. En cas d'échec, un message le signalant est renvoyé au moniteur.} + +\paragraph{Surveillance de la communication avec le robot.} La communication entre le robot et le superviseur peut être perdue. Afin de surveiller cela, il faut mettre en place un mécanisme permettant d'inférer cette perte. L'envoi des messages au robot se fait à l'aide de la fonction {\tt Write} de la classe {\tt ComRobot}. En cas d'échec de communication, la méthode retourne un message contenant un code d'erreur. Cependant, l'envoi d'un message par Xbee peut retourner un échec même si le médium de communication est encore opérationnel. + +De ce fait, le simple retour d'un échec ne suffit pas à déterminer si la communication est définitivement perdue ou bien si c'est une erreur fugace. Afin de conclure que la communication est perdue, il faut donc mettre en place un mécanisme de compteur. Pour cela, il faut incrémenter un compteur à chaque échec sur l'envoi d'un message et le remettre à zéro à chaque succès. Si le compteur dépasse 3, la communication est alors déclarée perdue.\\ + +\req{La communication entre le robot et le superviseur doit être surveillée par un mécanisme de compteur afin de détecter une perte du médium de communication.} + +\paragraph{Perte de la communication avec le robot.} Le medium de communication entre le robot et le superviseur est stoppé par l'appel à la fonction {\tt close\_communication\_robot}.\\ + +\req{Lorsque la communication entre le robot et le superviseur est perdue, un message spécifique doit être envoyé au moniteur. Le système doit fermer la communication entre le robot et le superviseur et se remettre dans un état initial permettant de relancer la communication.} + + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Démarrage du robot} +%%%%%%%%%%%%%%%%%%%%%%%%% + +Tous les messages entre le superviseur et le robot sont décrits dans l'annexe~\ref{sec:sec:comm_rob_sup}. L'envoi d'un message se fait par l'utilisation de la méthode {\tt Write} de la classe {\tt ComRobot}. La figure~\ref{fig:diag10_11} représente la séquence pour les fonctionnalités 10 et 11.\\ + +\noindent\framebox[\textwidth]{ +\begin{minipage}{0.9\textwidth} +{\bf Remarque :} Aucun mécanisme n'est mis en {\oe}uvre dans l'implémentation de {\tt Write} de {\tt ComRobot} pour se prémunir des appels concurrents. +\end{minipage} +} + + +%%%%%%%%%%%%%%%% +\paragraph{Démarrage sans watchdog du robot.} Le robot a deux modes de démarrage. Un mode simple, dit sans watchdog et un mode évolué exposé ci-après.\\ + +\req{Lorsque l'utilisateur demande, via le moniteur, le démarrage sans watchdog, le robot doit démarrer dans ce mode. En cas de succès, un message d'acquittement est retourné au moniteur. En cas d'échec, un message indiquant l'échec est transmis au moniteur.} + + +%note right of Monitor: (req 7) connect robot +%Monitor->Supervisor:connexion robot +%Supervisor->+Supervisor: ComRobot::Open() +%Supervisor-->-Supervisor:err +%alt err == 0 +%Supervisor->Monitor: ComMonitor::Write(ACK) +%else +%Supervisor->Monitor: ComMonitor::Write(NO_ACK) +%end +%note right of Monitor +% (req 8) monitor communication with robot +%end note +%loop cmpt <= 3 +%Supervisor->+Supervisor: ComRobot:Write(message) +%Supervisor-->-Supervisor:msg +%alt msg is not an error +% note over Supervisor: cmpt = 0 +%else +% note over Supervisor: cmpt ++ +%end +%end +%note right of Monitor: (req 9) robot communication lost +%Supervisor->Monitor: ComMonitor::Write(LOST_DMB) +%Supervisor->Supervisor: ComRobot::Close() +%note over Supervisor: initialize_communication_robot + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.48]{./seq_req/req7-9} +\caption{Diagramme de séquence des fonctionnalités 7 à 9} +\label{fig:diag7_9} +\end{center} +\end{figure} +\FloatBarrier + +%%%%%%%%%%%%%%%% +\paragraph{Démarrage avec watchdog du robot.} En cas de perte de la communication entre le superviseur et le robot, ce dernier n'est plus contrôlable et continue à exécuter des ordres. Pour éviter cela, un mécanisme de surveillance à base de watchdog a été mis en place sur le robot. + +Le principe est simple : au démarrage du robot (c.-à-d. quand le robot traite l'ordre de démarrage avec watchdog), un watchdog périodique d'une seconde est lancé. \`A chaque expiration du watchdog un compteur dans le robot est incrémenté. Si le compteur atteint 3, le robot s'arrête et doit être redémarré manuellement. Pour éviter cela, le robot doit recevoir du superviseur un ordre spécifique de rechargement du watchdog (DMB\_RELOAD\_WD). Si l'ordre est valide, le compteur est décrémenté de 1 (minimum 0). Pour que cet ordre soit valide il faut qu'il arrive au moment où le watchdog expire avec un tolérance de 50~ms. \\ + +\req{Lorsque l'utilisateur demande, via le moniteur, le démarrage avec watchdog, le robot doit démarrer dans ce mode. Un message d'acquittement est retourné au moniteur. En cas d'échec, un message indiquant l'échec est transmis au moniteur. + +Une fois le démarrage effectué, le robot doit rester vivant en envoyant régulièrement le message de rechargement du watchdog.} + +%alt +%note right of Monitor +% (req 10) start without watchdog +%end note +%Monitor->Supervisor:start_robot_without_wd +%Supervisor->+Supervisor: ComRobot::Write(START_WITHOUT_WD) +%Supervisor-->-Supervisor:err +%note over Monitor, Supervisor:ack or no_ack +% +%else +%note right of Monitor +% (req 11) start with watchdog +%end note +% +%Monitor->Supervisor:start_robot_with_wd +%Supervisor->+Supervisor: ComRobot::Write(START_WITH_WD) +%Supervisor-->-Supervisor:err +%alt err == ROBOT_OK +%Supervisor->Monitor: ComMonitor::Write(message(ACK)) +%note over Supervisor +% start to reload wd periodically +%end note +%else +%Supervisor->Monitor: ComMonitor::Write(message(NO_ACK) +%end +%end + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.4]{./seq_req/req10-11} +\caption{Diagramme de séquence des fonctionnalités 10 et 11} +\label{fig:diag10_11} +\end{center} +\end{figure} +\FloatBarrier + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Déplacement et état du robot} +%%%%%%%%%%%%%%%%%%%%%%%%% + +Le robot n'a aucune intelligence et ne réagit qu'aux ordres qu'il reçoit. La figure~\ref{fig:diag12_13} représente la séquence pour les fonctionnalités 12 et 13. + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Déplacement manuel du robot.} Le robot peut recevoir cinq ordres de mouvement (avancer, reculer, tourner à droite, tourner à gauche et stopper). Lorsque l'utilisateur presse les flèches de l'interface graphique un message est envoyé au superviseur avec le mouvement à réaliser.\\ + +\req{Lorsque qu'un ordre de mouvement est reçu par le superviseur, le robot doit réaliser ce déplacement en moins de 100~ms.} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Niveau de batterie du robot.} Il est possible de récupérer le niveau de la batterie du robot à l'aide de la fonction {\tt Write} de {\tt ComRobot} avec l'entête {\tt DMB\_GET\_VBAT}. La valeur retournée est ensuite à transmettre au moniteur.\\ + +\req{Le niveau de la batterie du robot doit être mis à jour toutes les 500~ms sur le moniteur.} + +%par +%note right of Monitor +% (req 12) move robot +%end note +%loop +%Monitor->Supervisor:move_robot(move) +%note over Supervisor: treat the message +%Supervisor->Supervisor: ComRobot::Write(Message(move)) +%end +%else +%note right of Monitor +% (req 13) check battery +%end note +%loop 500 ms +%Supervisor->+Supervisor: ComRobot::Write(Message(GET_VBAT)) +%Supervisor-->-Supervisor: levelBat +%Supervisor->Monitor:ComMonitor::Write(Message(levelBat)) +%end +%end +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.4]{./seq_req/req12-13} +\caption{Diagramme de séquence des fonctionnalités 12 et 13} +\label{fig:diag12_13} +\end{center} +\end{figure} +\FloatBarrier + +%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Gestion de la caméra} +%%%%%%%%%%%%%%%%%%%%%%%%% + +Les fonctions permettant la manipulation des images sont fournies dans les librairies {\tt img} et {\tt camera}. L'implémentation des méthodes utilise \textsc{openCV}, une libraire libre en C/C++ de traitement d'images. + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Ouverture de la caméra.} La méthode {\tt Open} de la classe {\tt Camera} donne accès à la caméra.\\ + +\req{La caméra doit être démarrée suite à une demande provenant du moniteur. Si l'ouverture de la caméra a échoué, il faut envoyer un message au moniteur.} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Capture d'une image (mode nominal).} La méthode {\tt Grab} de {\tt Camera} permet de capturer une image. La compression de l'image se fait à l'aide de la fonction {\tt ToJpg} de {\tt Img}. L'envoi de l'image au moniteur s'effectue normalement par l'envoi d'un message. La fréquence de capture d'une image est fixée par un paramètre lors de l'instanciation d'un objet {\tt Camera}.\\ + +\req{Dès que la caméra est ouverte, une image doit être envoyée au moniteur toutes les 100 ms.} + +%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph{Fermeture de la caméra.} La méthode {\tt Close} de la classe {\tt Camera} permet de fermer proprement la caméra.\\ + +\req{La caméra doit être fermée suite à une demande provenant du moniteur. Un message doit être envoyé au moniteur pour signifier l'acquittement de la demande. L'envoi périodique des images doit alors être stoppé.} + +%note right of Monitor +%(req 14) open camera +%end note +%Monitor->Supervisor: open camera +%Supervisor->+Supervisor: Camera::Open() +%Supervisor-->-Supervisor: err +%note over Monitor, Supervisor: ack or no_ack +%par +%loop camera active +%note right of Monitor +%(req 15) capture image +%end note +%Supervisor->+Supervisor: Camera:Grab() +%Supervisor-->-Supervisor: image +%Supervisor->+Supervisor: Img::ToJpg(image) +%Supervisor-->-Supervisor: jpgimage +%Supervisor->Monitor:ComMonitor::Write(Message(jpgimage)) +%end +%else +% note right of Monitor +% (req 16) close camera +% end note +% Monitor->Supervisor: close camera +% Supervisor->+Supervisor: Camera::Close() +% Supervisor-->-Supervisor: err +% note over Monitor, Supervisor: ack or no_ack +%end + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.4]{./seq_req/req14-16} +\caption{Diagramme de séquence des fonctionnalités 14 et 16} +\label{fig:diag14_15} +\end{center} +\end{figure} +\FloatBarrier + +\paragraph{Calibration de l'arène} Pour accélérer le traitement de l'image et le rendre plus stable\footnote{Si vous placez un robot en dehors de l'arène, il y a de fortes chances pour que cela perturbe le calcul de la position du robot.}, il est préférable de limiter la zone d'étude à l'arène. Pour cela il est nécessaire de faire un pré-traitement qui recherche l'arène. + +Le calcul se fait par l'appel à la méthode {\tt SearchArena} de {\tt Img}. Il est possible de tracer sur l'image l'arène en faisant appel à la méthode {\tt DrawArena}.\\ + +\req{Suite à une demande de recherche de l'arène, le superviseur doit stopper l'envoi périodique des images, faire la recherche de l'arène et renvoyer une image sur laquelle est dessinée cette arène. Si aucune arène n'est trouvée un message d'échec est envoyé.\\ + +L'utilisateur doit ensuite valider visuellement via le moniteur si l'arène a bien été trouvée. L'utilisateur peut : +\begin{itemize} + \item valider l'arène : dans ce cas, le superviseur doit sauvegarder l'arène trouvée (pour l'utiliser ultérieurement) puis retourner dans son mode d'envoi périodique des images en ajoutant à l'image l'arène dessinée. + \item annuler la recherche : dans ce cas, le superviseur doit simplement retourner dans son mode d'envoi périodique des images et invalider la recherche. +\end{itemize} +} + +%note left of Monitor:(req 17) find arena +%Monitor->Supervisor:find arena +%note over Supervisor:stop periodic image +%Supervisor->+Supervisor: Camera:Grab() +%Supervisor-->-Supervisor: image +%Supervisor->+Supervisor: Img::SearchArena(image) +%Supervisor-->-Supervisor: arena +%alt arena == NULL +%Supervisor->Monitor:ComMonitor::Write(Message(NO_ACK)) +%else +%Supervisor->+Supervisor: Img::DrawArena(image, arena) +%Supervisor-->-Supervisor: image +%Supervisor->+Supervisor: Img::ToJpg(image) +%Supervisor-->-Supervisor: jpgimage +%Supervisor->Monitor:ComMonitor::Write(Message(jpgimage)) +%alt +% Monitor->Supervisor: arena ok +% note over Supervisor: save arena +%else +% Monitor->Supervisor: arena ko +% note over Supervisor: delete arena +%end +%end +% +%note over Supervisor: restart periodic image + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.4]{./seq_req/req17} +\caption{Diagramme de séquence de la fonctionnalité 17} +\label{fig:diag16} +\end{center} +\end{figure} +\FloatBarrier + +%%%%%%%%%%%%% +\paragraph{Calcul de la position du robot.} Le traitement d'une image pour trouver la position du robot se fait à l'aide de la méthode {\tt SearchRobot} de {\tt Img}. Il est possible de dessiner sur l'image la position trouvée en faisant appel à la méthode {\tt DrawRobot}. La position est envoyée du superviseur vers le moniteur en utilisant un message avec une entête dédié.\\ + +\req{Suite à une demande de l'utilisateur de calculer la position du robot, le superviseur doit calculer cette position, dessiner sur l'image le résultat et envoyer un message au moniteur avec la position toutes les 100~ms. Si le robot n'a pas été trouvé, un message de position est envoyé avec une position (-1,-1).} + +%%%%%%%%%%%%% +\paragraph{Stopper le calcul de la position du robot.} Il est possible pour l'utilisateur de demander l'arrêt du calcul de la position.\\ + +\req{Suite à une demande de l'utilisateur de stopper le calcul de la position du robot, le superviseur doit rebasculer dans un mode d'envoi de l'image sans le calcul de la position.} + +% note right of Monitor:(req 18) compute position +%Monitor->Supervisor:find_position +%loop +%Supervisor->+Supervisor: Camera:Grab() +%Supervisor-->-Supervisor: image +%Supervisor->+Supervisor: Img::SearchRobot(image, arena) +%Supervisor-->-Supervisor: position +%alt position != null +% Supervisor->+Supervisor: Img::DrawRobot(image, positin) +% Supervisor-->-Supervisor: image +% Supervisor->Monitor:ComMonitor::Write(Message(position)) +%else +% Supervisor->Monitor:ComMonitor::Write(Message(position nulle)) +%end +% Supervisor->+Supervisor: Img::ToJpg(image) +% Supervisor-->-Supervisor: jpgimage +% Supervisor->Monitor:ComMonitor::Write(Message(image)) +%end + + \begin{figure}[htbp] +\begin{center} +\includegraphics[scale=0.4]{./seq_req/req18} +\caption{Diagramme de séquence de la fonctionnalité 18} +\label{fig:diag17} +\end{center} +\end{figure} +\FloatBarrier + +%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsubsection{Réaliser une mission} +%%%%%%%%%%%%%%%%%%%%%%%%%% + +TBD +%Les missions à effectuer consistent à déplacer le robot d'une position à une autre. Le choix de la destination se fait par l'utilisateur en cliquant sur l'image du moniteur puis en envoyant un message de type mission en la validant avec le bouton\og send mission \fg. +% +%Une mission est constituée de différents champs décrits dans un objet \texttt{DMission}. La position à atteindre peut être récupérée à l'aide de la méthode \texttt{d\_mission\_get\_position}. De plus, une mission est identifiée par un numéro contenu dans son champ \texttt{id}. +% +%La réalisation d'une mission s'effectue à l'aide des méthodes \texttt{d\_robot\_move} et \texttt{d\_robot\_turn}. Quand le point final est atteint, le superviseur doit envoyer un message de type mission portant l'identifiant de la mission. La méthode {\tt d\_message\_mission\_terminate} permet de construire un message portant les valeurs appropriées. +% +%Il est aussi possible pour l'utilisateur de mettre fin à une mission en cours en envoyant un message d'alerte (bouton \og Stop mission \fg). Ce message est de type {\tt MESSAGE\_TYPE\_MISSION} et porte \texttt{MISSION\_TYPE\_STOP} comme valeur dans le champ type. Dans ce cas le robot doit immédiatement s'arrêter puis le superviseur doit envoyer un message de fin de mission. +% +%Le diagramme~\ref{diag:seq_position} donne un aperçu de cette séquence.\\ +% +% \noindent\fcolorbox{black}{Fond}{% couleur du texte, couleur du fond +%\begin{minipage}{\textwidth} +%Réaliser la fonction qui permet d'effectuer une mission. Aucune méthode n'est fournie pour concevoir le déplacement, le plus simple étant de tourner le robot dans la direction du point à atteindre puis d'avancer de la distance souhaitée. +%\end{minipage} +%} diff --git a/doc/sujets/tex/specifications/src/plateforme.tex b/doc/sujets/tex/specifications/src/plateforme.tex new file mode 100644 index 0000000..6ccd1f5 --- /dev/null +++ b/doc/sujets/tex/specifications/src/plateforme.tex @@ -0,0 +1,105 @@ +\section{Vue générale de la plate-forme} + +Le projet {\it De Stijl} est une plate-forme de contrôle d'un robot mobile développée au département Génie \'Electronique et Informatique. Les éléments constituant la plate-forme sont fournis et ont été testés de manière unitaire, mais nous ne garantissons pas un fonctionnement parfait. Toutes suggestions, corrections et modifications seront appréciées pour faire évoluer ce TP. Vous pouvez soumettre vos corrections (sujet, code ou autre) via le dépôt \href{https://github.com/INSA-GEI/dumber/tree/stable}{GitHub}. + +\subsection{\'Eléments de la plate-forme} + +La plate-forme est constituée de quatre éléments (voir figure~\ref{fig:vue_gen}) : +\begin{enumerate} +\item {\bf L'arène :} Boîte rectangulaire de couleur grise, elle est le terrain dans lequel le robot évolue.% Deux zones de couleur y sont tracées pour représenter des objectifs à atteindre. +\item {\bf Le robot mobile :} Robot deux roues embarquant un microcontrôleur et un ensemble de composants matériels nécessaires à son déplacement. L'intelligence embarquée est volontairement limitée au contrôle de son déplacement (contrôle des moteurs) et à des fonctionnalités pour connaître son état. +\item {\bf Le superviseur :} Entité principale de la plate-forme, elle est dédiée au contrôle et à la supervision du robot. Elle est couplée à une Webcam fixée au-dessus du terrain afin d'en faire une acquisition visuelle et de localiser le robot. +\item {\bf Le moniteur :} Entité entièrement logicielle et distante, son rôle est d'offrir une interface de contrôle pour l'utilisateur.\\ + \end{enumerate} + +La communication entre les équipements est hétérogène et assurée par différents supports : +\begin{enumerate} +\item La communication entre le robot et le superviseur est réalisée par une liaison sans fils point à point à l'aide de modules XBee. Cette communication est vue comme une liaison série. +\item La communication entre le superviseur et le moniteur est réalisée par un socket. La liaison physique est assurée par WiFi. +\end{enumerate} + + +\begin{figure}[htbp] +\begin{center} +\includegraphics[scale=.6]{figures_pdf/schema_general2.pdf} +\caption{Vue générale de la plate-forme} +\label{fig:vue_gen} +\end{center} +\end{figure} +\FloatBarrier + + \subsubsection{Arène} + +L'arène (voir figure~\ref{fig:arene}) a été réalisée dans les ateliers du département par J. Perez. C'est une boîte de 60$\times$80 cm en Medium et recouverte d'une peinture uniforme grise. Les bords sont peints en blanc. Deux zones distinctes sont peintes sur les bords opposés. L'une étant de couleur verte (ou orange) et l'autre de couleur rouge. Actuellement ces zones ne servent pas. %Ces zones sont désignées comme étant des buts. + + \begin{figure}[htbp] +\begin{center} +\includegraphics[scale=.6]{figures_pdf/arene.pdf} +\caption{Vue schématique de l'arène} +\label{fig:arene} +\end{center} +\end{figure} +\FloatBarrier + + \subsubsection{Robot} + +La version 2.1 du robot a été conçue et réalisée par S. Di Mercurio. Schématiquement (figure~\ref{fig:robot}), le robot est constitué de deux moteurs, d'un microcontrôleur STM32F103RB et d'une puce Xbee assurant une liaison série point à point avec le superviseur. Chaque robot a un symbol différent sur le dos afin de l'identifier et de le localiser dans l'arène. + +Le robot est mobile sur deux roues avec un patin. Le contrôle de la trajectoire est assuré par le contrôle en vitesse des moteurs. + +Le code embarqué dans les robots a été produit par S. Di Mercurio et L. Senaneuch. Il offre tous les services nécessaires pour contrôler le robot. + + \begin{figure}[htbp] +\begin{center} +\includegraphics[scale=.6]{figures_pdf/schema_robot.pdf} +\caption{Vue schématique du robot} +\label{fig:robot} +\end{center} +\end{figure} +\FloatBarrier + +\noindent\framebox[\textwidth]{ +\begin{minipage}{0.9\textwidth} +{\bf Remarque :} L'application que vous allez réaliser sera celle du superviseur. Vous ne toucherez pas au code embarqué dans le robot. +\end{minipage} +}\\ + + \subsubsection{Superviseur} + + +Le superviseur orchestre le fonctionnement de la plate-forme en assurant le respect des contraintes temporelles du système. Il est déployé sur une Raspberry Pi 3B sur laquelle est installé un Ubuntu patché PREEMPT-RT avec l'extension mercury de Xenomai 3.0. Une Raspberry~Pi est un ordinateur à processeur ARM de taille réduite. La version 3B possède un processeur Broadcom BCM2837 64 bit à quatre cœurs ARM Cortex-A53 à 1,2 GHz, de puces WiFi 802.11n et Bluetooth 4.1. + +La webcam est intégrée au bloc du superviseur et est une caméra Raspberry. + +\subsubsection{Moniteur} + +Le moniteur permet à l'utilisateur de saisir les ordres que le robot doit réalisée et aussi de connaître l'état global du système. Il a été développé par S. Di~Mercurio en C\# à l'aide de \href{https://www.monodevelop.com}{MonoDevelop}. Le moniteur communique avec le superviseur via un socket. Le serveur est mis en place sur la superviseur et le moniteur en est le client. + +\subsection{Bibliothèques logicielles} + +\todo[inline]{Mettre à jour} + +\framebox[\textwidth]{ +\begin{minipage}{0.9\textwidth} +Votre travail consistera à concevoir uniquement l'architecture logicielle du superviseur. Toutes les fonctions de traitement (communication, vidéo, etc.) {\bf ont déjà été implémentées} par L. Senaneuch et S. Di Mercurio. Vous n'aurez pas à modifier ce code, simplement à faire appel aux fonctions. Il n'en reste pas moins un gros travail d'architecte logiciel à faire. +\end{minipage} +}\\ + + + +Le code est disponible sur la branche stage du dépôt \href{https://github.com/INSA-GEI/dumber/tree/stable}{GEI-INSA/dumber} sur GitHub . L'annexe~\ref{ann:diag_class} présente sous forme de diagramme de classes les fonctions disponibles dans les bibliothèques.\\ + +Les fonctions de traitement sont réparties en cinq bibliothèques : +\begin{itemize} + \item server : services permettant de mette en place le serveur de communication avec le moniteur. + \item monitor : services de communication entre le superviseur et le moniteur, + \item robot : services de communication entre le superviseur et le robot, + \item message : services définissant le format des messages entre le moniteur, le superviseur et le robot, + \item image : services réalisant tous les traitements vidéos.\\ +\end{itemize} + +\framebox[\textwidth]{ +\begin{minipage}{0.9\textwidth} +Toutes les bibliothèques ont été développées en C++, mais vous n'avez pas besoin de connaissances évoluées pour les utiliser (aucun support ne sera fourni par les encadrants pour le C++). Quelques explications sont fournies en annexe pour manipuler les bibliothèques, mais d'une manière générale, vous n'avez pas besoin de connaissances évoluées en programmation objet pour les utiliser. +\end{minipage} +} diff --git a/doc/sujets/tex/specifications/sujet_robot.tex b/doc/sujets/tex/specifications/sujet_robot.tex new file mode 100644 index 0000000..2e77772 --- /dev/null +++ b/doc/sujets/tex/specifications/sujet_robot.tex @@ -0,0 +1,141 @@ +\documentclass[11pt]{paper} +\usepackage[frenchb]{babel} + +\usepackage[T1]{fontenc} + +\usepackage{graphicx} +\usepackage{amssymb} +\usepackage{amstext} +\usepackage{amsmath} +\usepackage{a4wide,color} +\usepackage[utf8]{inputenc} +\usepackage{xspace} +\usepackage{anysize} +\usepackage{tabularx} +\usepackage{multirow} +\usepackage{fancybox} +\usepackage{fancyhdr} +\usepackage{bbding} + +\usepackage{threeparttable} +\usepackage{color} +\usepackage{float} + +\usepackage[toc,page]{appendix} +\usepackage{lscape} + +\usepackage{placeins} + +\usepackage{listingsutf8} + +\usepackage{todonotes} + +\lstset{% general command to set parameter(s) + basicstyle=\footnotesize, % print whole listing small + keywordstyle=\color{magenta}\bfseries, % underlined bold black keywords + identifierstyle=, % nothing happens + commentstyle=\color{black}, % white comments + stringstyle=\ttfamily, % typewriter type for strings + showstringspaces=false % no special string spaces +} + +\lstdefinelanguage{aald} + {morekeywords={system, implementation}, + sensitive=false, + morecomment=[l]{//}, + morecomment=[s]{/*}{*/}, + morestring=[b]", +} + +\usepackage[colorlinks=true]{hyperref} + +\usepackage[normalem]{ulem} +\usepackage{color} + +\definecolor{Fond}{gray}{0.9} + +\renewcommand{\floatpagefraction}{.99} +\renewcommand{\textfraction}{.01} +\newcommand{\modif}[1]{\textcolor{red}{\uline{#1}}} + +\newcounter{cptreq} +\newcommand{\req}[1]{ +\stepcounter{cptreq} + \noindent\fcolorbox{black}{Fond}{% couleur du texte, couleur du fond + \begin{minipage}[t]{\textwidth} + {\bf Fonctionnalité \thecptreq}\, : #1 + \end{minipage} + } +} + +\pagestyle{fancy} +\fancyhf{} +\fancyhead[RE,RO]{\thepage} +\fancyhead[LE]{} +\fancyhead[LO]{Programmation et conception de systémes temps réel -- 4éme année AE/IR} +\fancyfoot[LO]{INSA Toulouse — P.-E. Hladik} +\fancypagestyle{plain}{% + \fancyhf{} % get rid of headers + \renewcommand{\headrulewidth}{0pt} % and the line +} + +\newenvironment{maliste}% +{ \begin{list}% + {\ArrowBoldRightStrobe}% + {\setlength{\labelwidth}{30pt}% + \setlength{\leftmargin}{35pt}% + \setlength{\itemsep}{\parsep}}}% +{ \end{list} } + +\renewcommand{\appendixtocname}{Annexes} +\renewcommand{\appendixpagename}{Annexes} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\title{{\Huge Projet De Stijl 2.0} +{\small : Plateforme pour robots mobiles}\\ +{\scriptsize Programmation et conception de systémes temps réel -- 4éme année AE/IR}\\ +{\scriptsize Institut National des Sciences Appliquées de Toulouse}\\ +---\\ +Cahier des charges fonctionnel \\ +{\large Version 3.0.$\beta$ (\today)}\\ +{\scriptsize Référent pédagogique : P.-E. Hladik (\texttt{pehladik@insa-toulouse.fr})}\\ +{\scriptsize Référents plateforme : S. Di Mercurio (\texttt{dimercur@insa-toulouse.fr})}\\ +--- +} + + +\begin{document} +\maketitle + +%\tableofcontents +%\newpage + +\section*{Travail demandé} + +\begin{enumerate} + \item Le travail sera réalisé dans le cadre d'un groupe de trois ou quatre étudiants sur deux séances de TD et cinq séances de TP. + \item Le projet fera l'objet d'un rapport évalué ainsi qu'une démonstration (si l'emploi du temps le permet). Un squelette pour le rapport est disponible sur la page moodle de l'enseignement. + \item L'évaluation a pour but de juger de vos compétences pour rédiger un compte rendu, réaliser la conception d'une application temps réel et programmer sur un système temps réel, mais aussi sur vos connaissances plus générale des systèmes temps réel. + \item Le code réalisé devra être rendu sous forme d'archive ne comprenant que les codes sources modifiés. + \item Le rendu du rapport et du code se fera sous la forme d'une archive à envoyer à votre encadrant de TP. + \item La démonstration aura lieu la semaine qui suit la dernière séance de TP. +\end{enumerate} + +\section*{Ressources indispensables} +\begin{enumerate} + \item Page Moodle : \href{https://moodle.insa-toulouse.fr/course/view.php?id=235}{Programmation et conception sur exécutif temps réel} + \item Branche stable du dépôt GEI-INSA sur GitHub : \href{https://github.com/INSA-GEI/dumber/tree/stable}{dumber} +\end{enumerate} + +\newpage +\input{src/plateforme} + +\newpage +\input{src/besoins} + +\newpage +\input{src/annexes} + +\end{document} \ No newline at end of file diff --git a/hardware/0605-LED_Verde.STEP b/hardware/meca/0605-LED_Verde.STEP similarity index 100% rename from hardware/0605-LED_Verde.STEP rename to hardware/meca/0605-LED_Verde.STEP diff --git a/hardware/Batterie.ipt b/hardware/meca/Batterie.ipt similarity index 100% rename from hardware/Batterie.ipt rename to hardware/meca/Batterie.ipt diff --git a/hardware/Bloc roue.iam b/hardware/meca/Bloc roue.iam similarity index 100% rename from hardware/Bloc roue.iam rename to hardware/meca/Bloc roue.iam diff --git a/hardware/Chargeur/1593K PCB.dwg b/hardware/meca/Chargeur/1593K PCB.dwg similarity index 100% rename from hardware/Chargeur/1593K PCB.dwg rename to hardware/meca/Chargeur/1593K PCB.dwg diff --git a/hardware/Chargeur/1593K PCB.igs b/hardware/meca/Chargeur/1593K PCB.igs similarity index 100% rename from hardware/Chargeur/1593K PCB.igs rename to hardware/meca/Chargeur/1593K PCB.igs diff --git a/hardware/Chargeur/1593K PCB.ipt b/hardware/meca/Chargeur/1593K PCB.ipt similarity index 100% rename from hardware/Chargeur/1593K PCB.ipt rename to hardware/meca/Chargeur/1593K PCB.ipt diff --git a/hardware/Chargeur/1593K PCB.stl b/hardware/meca/Chargeur/1593K PCB.stl similarity index 100% rename from hardware/Chargeur/1593K PCB.stl rename to hardware/meca/Chargeur/1593K PCB.stl diff --git a/hardware/Chargeur/1593K PCB.stp b/hardware/meca/Chargeur/1593K PCB.stp similarity index 100% rename from hardware/Chargeur/1593K PCB.stp rename to hardware/meca/Chargeur/1593K PCB.stp diff --git a/hardware/Chargeur/Chargeur.iam b/hardware/meca/Chargeur/Chargeur.iam similarity index 100% rename from hardware/Chargeur/Chargeur.iam rename to hardware/meca/Chargeur/Chargeur.iam diff --git a/hardware/Chargeur/Chargeur_Dumber.ipj b/hardware/meca/Chargeur/Chargeur_Dumber.ipj similarity index 100% rename from hardware/Chargeur/Chargeur_Dumber.ipj rename to hardware/meca/Chargeur/Chargeur_Dumber.ipj diff --git a/hardware/Chargeur/Hammond/1593K.igs b/hardware/meca/Chargeur/Hammond/1593K.igs similarity index 100% rename from hardware/Chargeur/Hammond/1593K.igs rename to hardware/meca/Chargeur/Hammond/1593K.igs diff --git a/hardware/Chargeur/Hammond/1593K.stp b/hardware/meca/Chargeur/Hammond/1593K.stp similarity index 100% rename from hardware/Chargeur/Hammond/1593K.stp rename to hardware/meca/Chargeur/Hammond/1593K.stp diff --git a/hardware/Dumber 2015-2.ipj b/hardware/meca/Dumber 2015-2.ipj similarity index 100% rename from hardware/Dumber 2015-2.ipj rename to hardware/meca/Dumber 2015-2.ipj diff --git a/hardware/Dumber 2015.ipj b/hardware/meca/Dumber 2015.ipj similarity index 100% rename from hardware/Dumber 2015.ipj rename to hardware/meca/Dumber 2015.ipj diff --git a/hardware/Export/capot.stl b/hardware/meca/Export/capot.stl similarity index 100% rename from hardware/Export/capot.stl rename to hardware/meca/Export/capot.stl diff --git a/hardware/Export/capot.stp b/hardware/meca/Export/capot.stp similarity index 100% rename from hardware/Export/capot.stp rename to hardware/meca/Export/capot.stp diff --git a/hardware/Export/pied.stl b/hardware/meca/Export/pied.stl similarity index 100% rename from hardware/Export/pied.stl rename to hardware/meca/Export/pied.stl diff --git a/hardware/Export/pied.stp b/hardware/meca/Export/pied.stp similarity index 100% rename from hardware/Export/pied.stp rename to hardware/meca/Export/pied.stp diff --git a/hardware/Platine encodeur.ipt b/hardware/meca/Platine encodeur.ipt similarity index 100% rename from hardware/Platine encodeur.ipt rename to hardware/meca/Platine encodeur.ipt diff --git a/hardware/Pneu.ipt b/hardware/meca/Pneu.ipt similarity index 100% rename from hardware/Pneu.ipt rename to hardware/meca/Pneu.ipt diff --git a/hardware/Push Button Switch.STEP b/hardware/meca/Push Button Switch.STEP similarity index 100% rename from hardware/Push Button Switch.STEP rename to hardware/meca/Push Button Switch.STEP diff --git a/hardware/Robot.iam b/hardware/meca/Robot.iam similarity index 100% rename from hardware/Robot.iam rename to hardware/meca/Robot.iam diff --git a/hardware/Robot.pdf b/hardware/meca/Robot.pdf similarity index 100% rename from hardware/Robot.pdf rename to hardware/meca/Robot.pdf diff --git a/hardware/Roue.ipt b/hardware/meca/Roue.ipt similarity index 100% rename from hardware/Roue.ipt rename to hardware/meca/Roue.ipt diff --git a/hardware/USB_Mini_B_SMD_buchse.STEP b/hardware/meca/USB_Mini_B_SMD_buchse.STEP similarity index 100% rename from hardware/USB_Mini_B_SMD_buchse.STEP rename to hardware/meca/USB_Mini_B_SMD_buchse.STEP diff --git a/hardware/XBee Chip.STEP b/hardware/meca/XBee Chip.STEP similarity index 100% rename from hardware/XBee Chip.STEP rename to hardware/meca/XBee Chip.STEP diff --git a/hardware/axe.ipt b/hardware/meca/axe.ipt similarity index 100% rename from hardware/axe.ipt rename to hardware/meca/axe.ipt diff --git a/hardware/capot.ipt b/hardware/meca/capot.ipt similarity index 100% rename from hardware/capot.ipt rename to hardware/meca/capot.ipt diff --git a/hardware/connecteur 10.ipt b/hardware/meca/connecteur 10.ipt similarity index 100% rename from hardware/connecteur 10.ipt rename to hardware/meca/connecteur 10.ipt diff --git a/hardware/connecteur 6.ipt b/hardware/meca/connecteur 6.ipt similarity index 100% rename from hardware/connecteur 6.ipt rename to hardware/meca/connecteur 6.ipt diff --git a/hardware/fixation moteur.ipt b/hardware/meca/fixation moteur.ipt similarity index 100% rename from hardware/fixation moteur.ipt rename to hardware/meca/fixation moteur.ipt diff --git a/hardware/headers/2.54_base.SLDPRT b/hardware/meca/headers/2.54_base.SLDPRT similarity index 100% rename from hardware/headers/2.54_base.SLDPRT rename to hardware/meca/headers/2.54_base.SLDPRT diff --git a/hardware/headers/2.54_straight-header.SLDASM b/hardware/meca/headers/2.54_straight-header.SLDASM similarity index 100% rename from hardware/headers/2.54_straight-header.SLDASM rename to hardware/meca/headers/2.54_straight-header.SLDASM diff --git a/hardware/headers/2.54_straight-pin.SLDPRT b/hardware/meca/headers/2.54_straight-pin.SLDPRT similarity index 100% rename from hardware/headers/2.54_straight-pin.SLDPRT rename to hardware/meca/headers/2.54_straight-pin.SLDPRT diff --git a/hardware/headers/original.stl b/hardware/meca/headers/original.stl similarity index 100% rename from hardware/headers/original.stl rename to hardware/meca/headers/original.stl diff --git a/hardware/helice encodeur.ipt b/hardware/meca/helice encodeur.ipt similarity index 100% rename from hardware/helice encodeur.ipt rename to hardware/meca/helice encodeur.ipt diff --git a/hardware/mini usbl.ipt b/hardware/meca/mini usbl.ipt similarity index 100% rename from hardware/mini usbl.ipt rename to hardware/meca/mini usbl.ipt diff --git a/hardware/moteur.iam b/hardware/meca/moteur.iam similarity index 100% rename from hardware/moteur.iam rename to hardware/meca/moteur.iam diff --git a/hardware/moteur.ipt b/hardware/meca/moteur.ipt similarity index 100% rename from hardware/moteur.ipt rename to hardware/meca/moteur.ipt diff --git a/hardware/original.stl b/hardware/meca/original.stl similarity index 100% rename from hardware/original.stl rename to hardware/meca/original.stl diff --git a/hardware/pcb.ipt b/hardware/meca/pcb.ipt similarity index 100% rename from hardware/pcb.ipt rename to hardware/meca/pcb.ipt diff --git a/hardware/pied.ipt b/hardware/meca/pied.ipt similarity index 100% rename from hardware/pied.ipt rename to hardware/meca/pied.ipt diff --git a/hardware/plaque moteur.ipt b/hardware/meca/plaque moteur.ipt similarity index 100% rename from hardware/plaque moteur.ipt rename to hardware/meca/plaque moteur.ipt diff --git a/hardware/queue.ipt b/hardware/meca/queue.ipt similarity index 100% rename from hardware/queue.ipt rename to hardware/meca/queue.ipt diff --git a/hardware/reducteur.ipt b/hardware/meca/reducteur.ipt similarity index 100% rename from hardware/reducteur.ipt rename to hardware/meca/reducteur.ipt diff --git a/hardware/roue.iam b/hardware/meca/roue.iam similarity index 100% rename from hardware/roue.iam rename to hardware/meca/roue.iam diff --git a/hardware/tactileswitch-short.STEP b/hardware/meca/tactileswitch-short.STEP similarity index 100% rename from hardware/tactileswitch-short.STEP rename to hardware/meca/tactileswitch-short.STEP diff --git a/hardware/xbee.ipt b/hardware/meca/xbee.ipt similarity index 100% rename from hardware/xbee.ipt rename to hardware/meca/xbee.ipt diff --git a/pcb/.gitignore b/hardware/pcb/.gitignore similarity index 100% rename from pcb/.gitignore rename to hardware/pcb/.gitignore diff --git a/pcb/Chargeur/Chargeur.OutJob b/hardware/pcb/Chargeur/Chargeur.OutJob similarity index 100% rename from pcb/Chargeur/Chargeur.OutJob rename to hardware/pcb/Chargeur/Chargeur.OutJob diff --git a/pcb/Chargeur/Chargeur.PDF b/hardware/pcb/Chargeur/Chargeur.PDF similarity index 100% rename from pcb/Chargeur/Chargeur.PDF rename to hardware/pcb/Chargeur/Chargeur.PDF diff --git a/pcb/Chargeur/Chargeur.PcbDoc b/hardware/pcb/Chargeur/Chargeur.PcbDoc similarity index 100% rename from pcb/Chargeur/Chargeur.PcbDoc rename to hardware/pcb/Chargeur/Chargeur.PcbDoc diff --git a/pcb/Chargeur/Chargeur.PrjPcb b/hardware/pcb/Chargeur/Chargeur.PrjPcb similarity index 100% rename from pcb/Chargeur/Chargeur.PrjPcb rename to hardware/pcb/Chargeur/Chargeur.PrjPcb diff --git a/pcb/Chargeur/Chargeur.PrjPcbStructure b/hardware/pcb/Chargeur/Chargeur.PrjPcbStructure similarity index 100% rename from pcb/Chargeur/Chargeur.PrjPcbStructure rename to hardware/pcb/Chargeur/Chargeur.PrjPcbStructure diff --git a/pcb/Chargeur/Chargeur.SchDoc b/hardware/pcb/Chargeur/Chargeur.SchDoc similarity index 100% rename from pcb/Chargeur/Chargeur.SchDoc rename to hardware/pcb/Chargeur/Chargeur.SchDoc diff --git a/pcb/Chargeur/Chargeur_nucleo.PcbDoc b/hardware/pcb/Chargeur/Chargeur_nucleo.PcbDoc similarity index 100% rename from pcb/Chargeur/Chargeur_nucleo.PcbDoc rename to hardware/pcb/Chargeur/Chargeur_nucleo.PcbDoc diff --git a/pcb/Dumber-Cap/Cap.PcbDoc b/hardware/pcb/Dumber-Cap/Cap.PcbDoc similarity index 100% rename from pcb/Dumber-Cap/Cap.PcbDoc rename to hardware/pcb/Dumber-Cap/Cap.PcbDoc diff --git a/pcb/Dumber-Cap/Cap.SchDoc b/hardware/pcb/Dumber-Cap/Cap.SchDoc similarity index 100% rename from pcb/Dumber-Cap/Cap.SchDoc rename to hardware/pcb/Dumber-Cap/Cap.SchDoc diff --git a/pcb/Dumber-Cap/Dumber_Cap.PrjPcb b/hardware/pcb/Dumber-Cap/Dumber_Cap.PrjPcb similarity index 100% rename from pcb/Dumber-Cap/Dumber_Cap.PrjPcb rename to hardware/pcb/Dumber-Cap/Dumber_Cap.PrjPcb diff --git a/pcb/Dumber-Cap/Dumber_Cap.PrjPcbStructure b/hardware/pcb/Dumber-Cap/Dumber_Cap.PrjPcbStructure similarity index 100% rename from pcb/Dumber-Cap/Dumber_Cap.PrjPcbStructure rename to hardware/pcb/Dumber-Cap/Dumber_Cap.PrjPcbStructure diff --git a/pcb/Dumber/Dumber.CmpLib b/hardware/pcb/Dumber/Dumber.CmpLib similarity index 100% rename from pcb/Dumber/Dumber.CmpLib rename to hardware/pcb/Dumber/Dumber.CmpLib diff --git a/pcb/Dumber/Dumber.OutJob b/hardware/pcb/Dumber/Dumber.OutJob similarity index 100% rename from pcb/Dumber/Dumber.OutJob rename to hardware/pcb/Dumber/Dumber.OutJob diff --git a/pcb/Dumber/Dumber.PCB3DLib b/hardware/pcb/Dumber/Dumber.PCB3DLib similarity index 100% rename from pcb/Dumber/Dumber.PCB3DLib rename to hardware/pcb/Dumber/Dumber.PCB3DLib diff --git a/pcb/Dumber/Dumber.PDF b/hardware/pcb/Dumber/Dumber.PDF similarity index 100% rename from pcb/Dumber/Dumber.PDF rename to hardware/pcb/Dumber/Dumber.PDF diff --git a/pcb/Dumber/Dumber.PcbDoc b/hardware/pcb/Dumber/Dumber.PcbDoc similarity index 100% rename from pcb/Dumber/Dumber.PcbDoc rename to hardware/pcb/Dumber/Dumber.PcbDoc diff --git a/pcb/Dumber/Dumber.PcbLib b/hardware/pcb/Dumber/Dumber.PcbLib similarity index 100% rename from pcb/Dumber/Dumber.PcbLib rename to hardware/pcb/Dumber/Dumber.PcbLib diff --git a/pcb/Dumber/Dumber.PrjPCB b/hardware/pcb/Dumber/Dumber.PrjPCB similarity index 100% rename from pcb/Dumber/Dumber.PrjPCB rename to hardware/pcb/Dumber/Dumber.PrjPCB diff --git a/pcb/Dumber/Dumber.PrjPCBStructure b/hardware/pcb/Dumber/Dumber.PrjPCBStructure similarity index 100% rename from pcb/Dumber/Dumber.PrjPCBStructure rename to hardware/pcb/Dumber/Dumber.PrjPCBStructure diff --git a/pcb/Dumber/Dumber.RUL b/hardware/pcb/Dumber/Dumber.RUL similarity index 100% rename from pcb/Dumber/Dumber.RUL rename to hardware/pcb/Dumber/Dumber.RUL diff --git a/pcb/Dumber/Dumber.SchDoc b/hardware/pcb/Dumber/Dumber.SchDoc similarity index 100% rename from pcb/Dumber/Dumber.SchDoc rename to hardware/pcb/Dumber/Dumber.SchDoc diff --git a/pcb/Dumber/Dumber.SchLib b/hardware/pcb/Dumber/Dumber.SchLib similarity index 100% rename from pcb/Dumber/Dumber.SchLib rename to hardware/pcb/Dumber/Dumber.SchLib diff --git a/pcb/Dumber/Mecanique.SchDoc b/hardware/pcb/Dumber/Mecanique.SchDoc similarity index 100% rename from pcb/Dumber/Mecanique.SchDoc rename to hardware/pcb/Dumber/Mecanique.SchDoc diff --git a/pcb/Dumber/Power.SchDoc b/hardware/pcb/Dumber/Power.SchDoc similarity index 100% rename from pcb/Dumber/Power.SchDoc rename to hardware/pcb/Dumber/Power.SchDoc diff --git a/pcb/Dumber/cpu.SchDoc b/hardware/pcb/Dumber/cpu.SchDoc similarity index 100% rename from pcb/Dumber/cpu.SchDoc rename to hardware/pcb/Dumber/cpu.SchDoc diff --git a/pcb/Models/Batterie.stp b/hardware/pcb/Models/Batterie.stp similarity index 100% rename from pcb/Models/Batterie.stp rename to hardware/pcb/Models/Batterie.stp diff --git a/pcb/Models/Bloc roue.stp b/hardware/pcb/Models/Bloc roue.stp similarity index 100% rename from pcb/Models/Bloc roue.stp rename to hardware/pcb/Models/Bloc roue.stp diff --git a/pcb/Models/pcb.stl b/hardware/pcb/Models/pcb.stl similarity index 100% rename from pcb/Models/pcb.stl rename to hardware/pcb/Models/pcb.stl diff --git a/pcb/Models/pcb.stp b/hardware/pcb/Models/pcb.stp similarity index 100% rename from pcb/Models/pcb.stp rename to hardware/pcb/Models/pcb.stp diff --git a/pcb/README.md b/hardware/pcb/README.md similarity index 100% rename from pcb/README.md rename to hardware/pcb/README.md diff --git a/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PcbDoc b/hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PcbDoc similarity index 100% rename from pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PcbDoc rename to hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PcbDoc diff --git a/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcb b/hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcb similarity index 100% rename from pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcb rename to hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcb diff --git a/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcbStructure b/hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcbStructure similarity index 100% rename from pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcbStructure rename to hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.PrjPcbStructure diff --git a/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.SchDoc b/hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.SchDoc similarity index 100% rename from pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.SchDoc rename to hardware/pcb/Shield-Pi-Xbee/Shield_Pi_Xbee.SchDoc diff --git a/software/README.md b/software/README.md index a51a291..840ca5d 100644 --- a/software/README.md +++ b/software/README.md @@ -1,8 +1,8 @@ # Software -Dans ce repertoire se trouvent les logiciels pour les differentes parties du projet dumber -- robot: Contient le code source du firmware executé par le robot (STM32 / Keil) -- chargeur: Contient le code executé dans le boitier du chargeur de batterie du robot (STM32 / Keil) +Dans ce repertoire se trouvent les logiciels pour les differentes parties du projet de TP Temps reel (dumber) +- robot: Contient le code source du firmware executé par le robot (STM32 / TrueStudio) +- chargeur: Contient le code executé dans le boitier du chargeur de batterie du robot (STM32 / TrueStudio) - raspberry: Contient le code du superviseur temps reel s'executant sur la raspberry et en charge du controle de la camera, et du pilotage du robot (via la liaison serie) -- UserinterfaceWeb: interface Web pour la surveillance du systeme: connexion au superviseur RT, control et affichage de l'etat du robot, retour d'image. -- android: Application android pour le pilotage du robot via un module bluetooth à la place du module XBEE de base sur le robot. +- monitor: client C# pour la communication avec le superviseur +- install-opencv.sh: Script pour installer et deployer opencv avec support des aruco et bibliotheque raspicam diff --git a/software/install-opencv.sh b/software/install-opencv.sh new file mode 100755 index 0000000..9899e03 --- /dev/null +++ b/software/install-opencv.sh @@ -0,0 +1,88 @@ +#!/bin/bash + +###################################### +# INSTALL OPENCV ON UBUNTU OR DEBIAN # +###################################### + +# | THIS SCRIPT IS TESTED CORRECTLY ON | +# |------------------------------------------------------| +# | OS | OpenCV | Test | Last test | +# |------------------|--------------|------|-------------| +# | Ubuntu 18.04 LTS | OpenCV 3.4.2 | OK | 18 Jul 2018 | +# | Debian 9.5 | OpenCV 3.4.2 | OK | 18 Jul 2018 | +# |----------------------------------------------------- | +# | Debian 9.0 | OpenCV 3.2.0 | OK | 25 Jun 2017 | +# | Debian 8.8 | OpenCV 3.2.0 | OK | 20 May 2017 | +# | Ubuntu 16.04 LTS | OpenCV 3.2.0 | OK | 20 May 2017 | + + +# VERSION TO BE INSTALLED + +OPENCV_VERSION='3.4.2' + + +# 1. KEEP UBUNTU OR DEBIAN UP TO DATE + +sudo apt-get -y update +# sudo apt-get -y upgrade # Uncomment this line to install the newest versions of all packages currently installed +# sudo apt-get -y dist-upgrade # Uncomment this line to, in addition to 'upgrade', handles changing dependencies with new versions of packages +# sudo apt-get -y autoremove # Uncomment this line to remove packages that are now no longer needed + + +# 2. INSTALL THE DEPENDENCIES + +# Build tools: +sudo apt-get install -y build-essential cmake + +# GUI (if you want to use GTK instead of Qt, replace 'qt5-default' with 'libgtkglext1-dev' and remove '-DWITH_QT=ON' option in CMake): +#sudo apt-get install -y qt5-default libvtk6-dev +sudo apt-get install -y libgtkglext1-dev + +# Media I/O: +sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev libopenexr-dev libgdal-dev + +# Video I/O: +sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev + +# Parallelism and linear algebra libraries: +sudo apt-get install -y libtbb-dev libeigen3-dev + +# Python: +sudo apt-get install -y python-dev python-tk python-numpy python3-dev python3-tk python3-numpy + +# Java: +sudo apt-get install -y ant default-jdk + +# Documentation: +sudo apt-get install -y doxygen + + +# 3. INSTALL THE LIBRARY + +sudo apt-get install -y unzip wget +wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip + +unzip ${OPENCV_VERSION}.zip +rm ${OPENCV_VERSION}.zip +mv opencv-${OPENCV_VERSION} OpenCV + +# 3.5 Add Aruco +# Get opencv_contrib from github +# Copy aruco directory from /modules to /modules +wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip +mv ${OPENCV_VERSION}.zip opencv_contrib-${OPENCV_VERSION}.zip +unzip opencv_contrib-${OPENCV_VERSION}.zip + +cd OpenCV +mkdir build +cd build +# cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON -DWITH_XINE=ON -DBUILD_EXAMPLES=ON -DENABLE_PRECOMPILED_HEADERS=OFF .. +cmake -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON -DWITH_XINE=ON -DBUILD_EXAMPLES=ON -DENABLE_PRECOMPILED_HEADERS=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_JAVA=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-${OPENCV_VERSION}/modules -DBUILD_aruco=ON .. +make -j5 +sudo make install +sudo ldconfig + + +# 4. EXECUTE SOME OPENCV EXAMPLES AND COMPILE A DEMONSTRATION + +# To complete this step, please visit 'http://milq.github.io/install-opencv-ubuntu-debian'. diff --git a/software/monitor/monitor/Client.cs b/software/monitor/monitor/Client.cs index 48bb9c9..a2b7ecc 100644 --- a/software/monitor/monitor/Client.cs +++ b/software/monitor/monitor/Client.cs @@ -23,6 +23,8 @@ using System; using System.Net.Sockets; using System.Text; +using System.Threading; + namespace monitor { /// @@ -33,7 +35,7 @@ namespace monitor /// /// Default server name /// - public const string defaultIP = "localhost"; + public const string defaultIP = "10.105.1.13"; /// /// Default server port number @@ -53,32 +55,22 @@ namespace monitor /// /// Size of internal buffer used when reading data from server /// - private const int BufferMaxSize = 512; + private const int BufferMaxSize = 8*1024; /// /// Internal buffer used when reading data from server /// private static byte[] buffer = new byte[BufferMaxSize]; - /// - /// buffer containing received message from TCP server - /// Used to concatenate internal buffers into one - /// - private static byte[] receiveBuffer; - - private static int initialReceiveBufferIndex = 0; - /// /// String containing received message from tcp server /// private static StringBuilder message = new StringBuilder(); - private static int newLength = 1; - private static int packetCounter = 0; /// /// Callback to send received message to upper level /// - public delegate void ReadEvent(string msg, byte[] buffer); + public delegate void ReadEvent(string msg); public static ReadEvent readEvent = null; /// @@ -114,7 +106,7 @@ namespace monitor // received data are stored in buffer // Next reading will be done in ReadCallback method - stream.BeginRead(buffer, 0, newLength, new AsyncCallback(ReadCallback), message); + stream.BeginRead(buffer, 0, 1, new AsyncCallback(ReadCallback), message); } catch (ArgumentNullException e) { @@ -150,13 +142,16 @@ namespace monitor /// Not sure of what is it, but needed for terminate reading private static void ReadCallback(IAsyncResult ar) { + int newLength = 1; + int index = -1; + if (client.Connected) { int bytesRead; try { - // Termintae read operation, and get number of byte stored in buffer + // Terminate read operation, and get number of byte stored in buffer bytesRead = stream.EndRead(ar); } catch (ObjectDisposedException e) @@ -164,55 +159,94 @@ namespace monitor Console.WriteLine("Connection to server dropped: " + e.ToString()); return; } + catch (System.IO.IOException e) + { + Console.WriteLine("Connection to server dropped: " + e.ToString()); + return; + } newLength = 1; + index = -1; // if number of byte read is not 0, concatenate string and buffer if (bytesRead > 0) { - packetCounter++; - - if (packetCounter >= 3) - { - //Console.WriteLine("Supplementary packet " + packetCounter); - } + //Console.WriteLine("Receive " + bytesRead + " data"); // Append new data to current string (expecting data are ascii) message.Append(Encoding.ASCII.GetString(buffer, 0, bytesRead)); - - // Similarly, append received bytes to current buffer - if (receiveBuffer == null) receiveBuffer = new byte[bytesRead]; - else Array.Resize(ref receiveBuffer, initialReceiveBufferIndex + bytesRead); // resize currrent buffer - - System.Buffer.BlockCopy(buffer, 0, receiveBuffer, initialReceiveBufferIndex, bytesRead); // and add received data - initialReceiveBufferIndex = receiveBuffer.Length; // move last index of current buffer + index = SearchCarriageReturn(buffer, bytesRead); } // if it remains received data, prepare for a new reading (get another buffer to append to current one) - if (client.Available > 0) + if (index == -1) { - newLength = client.Available; - if (newLength > BufferMaxSize) newLength = BufferMaxSize; - else newLength = client.Available; + if (client.Available > 0) + { + newLength = client.Available; + if (newLength > BufferMaxSize) newLength = BufferMaxSize; + else newLength = client.Available; + } } else { + string s = message.ToString(); + // no more data to read, buffer and string can be send to upper level - readEvent?.Invoke(message.ToString(), receiveBuffer); + readEvent?.Invoke(s); message.Clear(); - receiveBuffer = null; - initialReceiveBufferIndex = 0; - packetCounter = 0; + + if (index != bytesRead - 1) + { + byte[] trailing=new byte[BufferMaxSize]; + + Array.Copy(buffer, index + 1, trailing, 0, bytesRead - index - 1); + message.Append(Encoding.ASCII.GetString(trailing, 0, bytesRead - index - 1)); + } } // Prepare for reading new data if (newLength> BufferMaxSize) newLength = BufferMaxSize; if (newLength <= 0) newLength = 1; - stream.BeginRead(buffer, 0, newLength, new AsyncCallback(ReadCallback), message); + + try + { + stream.BeginRead(buffer, 0, newLength, new AsyncCallback(ReadCallback), message); + } + catch (ObjectDisposedException e) + { + Console.WriteLine("Connection to server dropped: " + e.ToString()); + return; + } + catch (System.IO.IOException e) + { + Console.WriteLine("Connection to server dropped: " + e.ToString()); + return; + } } } + /// + /// Searchs the carriage return. + /// + /// Index of carriage return, if present, -1 otherwise. + /// Buffer of byte + /// Length of buffer + private static int SearchCarriageReturn(byte[] buf, int length) + { + int index = -1; + int i = 0; + + for (i = 0; i < length; i++) + { + if (buf[i] == (byte)'\n') break; + } + + if (i!= length) index = i; + return index; + } + /// /// Write a string to server /// @@ -224,7 +258,14 @@ namespace monitor { byte[] writeBuffer = Encoding.UTF8.GetBytes(mes); - stream.Write(writeBuffer, 0, mes.Length); + try + { + stream.Write(writeBuffer, 0, mes.Length); + } + catch (System.IO.IOException) { + Console.WriteLine("Server closed"); + client.Close(); + } } } } diff --git a/software/monitor/monitor/CommandManager.cs b/software/monitor/monitor/CommandManager.cs index 803e229..03efac1 100644 --- a/software/monitor/monitor/CommandManager.cs +++ b/software/monitor/monitor/CommandManager.cs @@ -33,7 +33,7 @@ namespace monitor /// /// Callback for sending received data to upper level /// - public delegate void CommandReceivedEvent(string msg, byte[] buffer); + public delegate void CommandReceivedEvent(string msg); public CommandReceivedEvent commandReceivedEvent = null; /// @@ -122,7 +122,7 @@ namespace monitor /// /// Message received from server /// Raw buffer reived from server - private void OnMessageReception(string message, byte[] buffer) + private void OnMessageReception(string message) { waitTimer.Stop(); // Stop timeout stopwatch @@ -144,7 +144,7 @@ namespace monitor waitForAcknowledge = false; - this.commandReceivedEvent?.Invoke(message, buffer); + this.commandReceivedEvent?.Invoke(message); } } @@ -158,7 +158,7 @@ namespace monitor messageReceived = null; // set buffer and message as null to indicate that no message was received // and call to OnMessagereception is due to timeout - OnMessageReception(messageReceived, null); + OnMessageReception(messageReceived); } /// diff --git a/software/monitor/monitor/DestijlCommandManager.cs b/software/monitor/monitor/DestijlCommandManager.cs index 2f85469..84b1bb9 100644 --- a/software/monitor/monitor/DestijlCommandManager.cs +++ b/software/monitor/monitor/DestijlCommandManager.cs @@ -19,7 +19,11 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// 15/01/2019 dimercur +// Demande #41: Modifier les messages envoyés par les flèches de direction + using System; +using System.Globalization; namespace monitor { @@ -28,46 +32,42 @@ namespace monitor /// public static class DestijlCommandList { - public const string HeaderMtsComDmb = "COM"; - public const string HeaderMtsDmbOrder = "DMB"; - public const string HeaderMtsCamera = "CAM"; - public const string HeaderMtsMessage = "MSG"; + public const string ANSWER_ACK = "AACK"; + public const string ANSWER_NACK = "ANAK"; + public const string ANSWER_COM_ERROR = "ACER"; + public const string ANSWER_TIMEOUT = "ATIM"; + public const string ANSWER_CMD_REJECTED = "ACRJ"; + public const string MESSAGE = "MSSG"; + public const string CAMERA_OPEN = "COPN"; + public const string CAMERA_CLOSE = "CCLS"; + public const string CAMERA_IMAGE = "CIMG"; + public const string CAMERA_ARENA_ASK = "CASA"; + public const string CAMERA_ARENA_INFIRM = "CAIN"; + public const string CAMERA_ARENA_CONFIRM = "CACO"; + public const string CAMERA_POSITION_COMPUTE = "CPCO"; + public const string CAMERA_POSITION_STOP = "CPST"; + public const string CAMERA_POSITION = "CPOS"; + public const string ROBOT_COM_OPEN = "ROPN"; + public const string ROBOT_COM_CLOSE = "RCLS"; + public const string ROBOT_PING = "RPIN"; + public const string ROBOT_RESET = "RRST"; + public const string ROBOT_START_WITHOUT_WD = "RSOW"; + public const string ROBOT_START_WITH_WD = "RSWW"; + public const string ROBOT_RELOAD_WD = "RLDW"; + public const string ROBOT_MOVE = "RMOV"; + public const string ROBOT_TURN = "RTRN"; + public const string ROBOT_GO_FORWARD = "RGFW"; + public const string ROBOT_GO_BACKWARD = "RGBW"; + public const string ROBOT_GO_LEFT = "RGLF"; + public const string ROBOT_GO_RIGHT = "RGRI"; + public const string ROBOT_STOP = "RSTP"; + public const string ROBOT_POWEROFF = "RPOF"; + public const string ROBOT_BATTERY_LEVEL = "RBLV"; + public const string ROBOT_GET_BATTERY = "RGBT"; + public const string ROBOT_GET_STATE = "RGST"; + public const string ROBOT_CURRENT_STATE = "RCST"; - public const string DataComOpen = "o"; - public const string DataComClose = "C"; - - public const string DataCamOpen = "A"; - public const string DataCamClose = "I"; - public const string DataCamAskArena = "y"; - public const string DataCamArenaConfirm = "x"; - public const string DataCamInfirm = "z"; - public const string DataCamComputePosition = "p"; - public const string DataCamStopComputePosition = "s"; - - public const string HeaderStmAck = "ACK"; - public const string HeaderStmNoAck = "NAK"; - public const string HeaderStmLostDmb = "LCD"; - public const string HeaderStmImage = "IMG"; - public const string HeaderStmPos = "POS"; - public const string HeaderStmMes = "MSG"; - public const string HeaderStmBat = "BAT"; - } - - /// - /// Commands used for robot messages - /// - public static class RobotCommandList - { - public const string RobotPing = "p"; - public const string RobotReset = "r"; - public const string RobotStartWithoutWatchdog = "u"; - public const string RobotStartWithWatchdog = "W"; - public const string RobotGetBattery = "v"; - public const string RobotGetBusyState = "b"; - public const string RobotMove = "M"; - public const string RobotTurn = "T"; - public const string RobotGetVersion = "V"; - public const string RobotPowerOff = "z"; + public const char SEPARATOR_CHAR = ':'; } /// @@ -93,7 +93,7 @@ namespace monitor /// /// Callback for sending received data to application level /// - public delegate void CommandReceivedEvent(string header, string data, byte[] buffer); + public delegate void CommandReceivedEvent(string header, string data); public CommandReceivedEvent commandReceivedEvent = null; /// @@ -114,6 +114,34 @@ namespace monitor CommunicationLostWithServer } + public struct Point { + public double x; + public double y; + } + + public class Position { + public int robotID; + public double angle; + public Point centre; + public Point direction; + + public Position() { + robotID = 0; + angle = 0.0; + centre.x = 0.0; + centre.y = 0.0; + direction.x = 0.0; + direction.y = 0.0; + } + + public override string ToString() { + string s = "ID: " + robotID + ", Angle: " + angle + + ", Centre (x: " + centre.x + ", y: " + centre.y + + "), Direction (x: " + direction.x + ", y: " + direction.y + ")"; + return s; + } + } + /// /// Initializes a new instance of the class. /// @@ -138,10 +166,13 @@ namespace monitor /// /// String containing received message /// Raw buffer to be used when data are not in ascii format (image for example) - private void OnCommandReceived(string msg, byte[] buffer) + private void OnCommandReceived(string msg) { - // Firstly, split message in (at least) two part : header, and data - string[] msgs = msg.Split(':'); + // Firstly, remove ending \n and everything after + string[] msgsCarriageReturn = msg.Split('\n'); + + // Second, split message in (at least) two part : header, and data + string[] msgs = msgsCarriageReturn[0].Split(DestijlCommandList.SEPARATOR_CHAR); // If it exist at least on element in string array, it should be command header if (msgs.Length >= 1) receivedHeader = msgs[0]; @@ -152,7 +183,7 @@ namespace monitor else receivedData = null; // when split is done, provide data to application - this.commandReceivedEvent?.Invoke(receivedHeader, receivedData, buffer); + this.commandReceivedEvent?.Invoke(receivedHeader, receivedData); } /// @@ -193,7 +224,17 @@ namespace monitor /// Data part of the command private string CreateCommand(string header, string data) { - return header + ":" + data; + return header + DestijlCommandList.SEPARATOR_CHAR + data+"\n"; + } + + /// + /// Creates the command to send to server, based on header + /// + /// The command string + /// Header part of the command + private string CreateCommand(string header) + { + return header + DestijlCommandList.SEPARATOR_CHAR+"\n"; } /// @@ -215,9 +256,9 @@ namespace monitor if (answer != null) { // if command is not acknowledged, return Rejected - if (answer.ToUpper().Contains(DestijlCommandList.HeaderStmNoAck)) status = CommandStatus.Rejected; + if (answer.ToUpper().Contains(DestijlCommandList.ANSWER_NACK)) status = CommandStatus.Rejected; // if communication is lost with robot, return CommunicationLostWithRobot - else if (answer.ToUpper().Contains(DestijlCommandList.HeaderStmLostDmb)) status = CommandStatus.CommunicationLostWithRobot; + else if (answer.ToUpper().Contains(DestijlCommandList.ANSWER_TIMEOUT)) status = CommandStatus.CommunicationLostWithRobot; // if answer is empty, communication with robot is lost else if (answer.Length == 0) status = CommandStatus.CommunicationLostWithServer; //else status = CommandStatus.InvalidAnswer; @@ -237,7 +278,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsComDmb, DestijlCommandList.DataComOpen), + CreateCommand(DestijlCommandList.ROBOT_COM_OPEN), out answer, this.timeout); @@ -254,7 +295,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsComDmb, DestijlCommandList.DataComClose), + CreateCommand(DestijlCommandList.ROBOT_COM_CLOSE), out answer, this.timeout); @@ -271,7 +312,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotPing), + CreateCommand(DestijlCommandList.ROBOT_PING), out answer, this.timeout); @@ -288,7 +329,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotReset), + CreateCommand(DestijlCommandList.ROBOT_RESET), out answer, 0); @@ -305,7 +346,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotStartWithWatchdog), + CreateCommand(DestijlCommandList.ROBOT_START_WITH_WD), out answer, this.timeout); @@ -322,7 +363,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotStartWithoutWatchdog), + CreateCommand(DestijlCommandList.ROBOT_START_WITHOUT_WD), out answer, this.timeout); @@ -330,17 +371,84 @@ namespace monitor } /// - /// Move robot forward or backward, for a distance expressed in millimeter + /// Move robot forward for an unlimited distance /// /// Command status (see DecodeStatus) - /// Distance of mouvment, in millimeter - public CommandStatus RobotMove(int distance) + public CommandStatus RobotGoForward() { CommandManager.CommandManagerStatus localStatus; string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotMove + "=" + distance), + CreateCommand(DestijlCommandList.ROBOT_GO_FORWARD), + out answer, + 0); + + return DecodeStatus(localStatus, answer); + } + + /// + /// Move robot backward for an unlimited distance + /// + /// Command status (see DecodeStatus) + public CommandStatus RobotGoBackward() + { + CommandManager.CommandManagerStatus localStatus; + string answer; + + localStatus = commandManager.SendCommand( + CreateCommand(DestijlCommandList.ROBOT_GO_BACKWARD), + out answer, + 0); + + return DecodeStatus(localStatus, answer); + } + + /// + /// Turn robot to the left for an unlimited number of turn + /// + /// Command status (see DecodeStatus) + public CommandStatus RobotGoLeft() + { + CommandManager.CommandManagerStatus localStatus; + string answer; + + localStatus = commandManager.SendCommand( + CreateCommand(DestijlCommandList.ROBOT_GO_LEFT), + out answer, + 0); + + return DecodeStatus(localStatus, answer); + } + + /// + /// Turn robot to the right for an unlimited number of turn + /// + /// Command status (see DecodeStatus) + public CommandStatus RobotGoRight() + { + CommandManager.CommandManagerStatus localStatus; + string answer; + + localStatus = commandManager.SendCommand( + CreateCommand(DestijlCommandList.ROBOT_GO_RIGHT), + out answer, + 0); + + return DecodeStatus(localStatus, answer); + } + + /// + /// Stop robot mouvement + /// + /// Command status (see DecodeStatus) + public CommandStatus RobotStop() + { + CommandManager.CommandManagerStatus localStatus; + string answer; + + localStatus = commandManager.SendCommand( + CreateCommand(DestijlCommandList.ROBOT_STOP), out answer, 0); @@ -358,7 +466,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotTurn + "=" + angle), + CreateCommand(DestijlCommandList.ROBOT_TURN, Convert.ToString(angle)), out answer, 0); @@ -375,48 +483,13 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotGetBattery), + CreateCommand(DestijlCommandList.ROBOT_GET_BATTERY), out answer, 0); return DecodeStatus(localStatus, answer); } - /// - /// Request robot firmware version - /// - /// Command status (see DecodeStatus) - /// todo - public CommandStatus RobotGetVersion(out string version) - { - CommandManager.CommandManagerStatus localStatus; - CommandStatus status = CommandStatus.Success; - version = ""; - - string answer; - - localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotGetVersion), - out answer, - this.timeout); - - if (localStatus == CommandManager.CommandManagerStatus.AnswerReceived) - { - string[] msg = answer.Split(':'); - - if (msg.Length > 1) - { - version = msg[1]; - } - } - else if (localStatus == CommandManager.CommandManagerStatus.Timeout) - { - status = CommandStatus.CommunicationLostWithServer; - } - - return status; - } - /// /// Power off robot /// @@ -427,7 +500,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsDmbOrder, RobotCommandList.RobotPowerOff), + CreateCommand(DestijlCommandList.ROBOT_POWEROFF), out answer, 0); @@ -444,7 +517,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsCamera, DestijlCommandList.DataCamOpen), + CreateCommand(DestijlCommandList.CAMERA_OPEN), out answer, this.timeout); @@ -461,7 +534,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsCamera, DestijlCommandList.DataCamClose), + CreateCommand(DestijlCommandList.CAMERA_CLOSE), out answer, 0); @@ -478,7 +551,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsCamera, DestijlCommandList.DataCamAskArena), + CreateCommand(DestijlCommandList.CAMERA_ARENA_ASK), out answer, 0); @@ -495,7 +568,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsCamera, DestijlCommandList.DataCamArenaConfirm), + CreateCommand(DestijlCommandList.CAMERA_ARENA_CONFIRM), out answer, 0); @@ -512,7 +585,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsCamera, DestijlCommandList.DataCamInfirm), + CreateCommand(DestijlCommandList.CAMERA_ARENA_INFIRM), out answer, 0); @@ -529,7 +602,7 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsCamera, DestijlCommandList.DataCamComputePosition), + CreateCommand(DestijlCommandList.CAMERA_POSITION_COMPUTE), out answer, 0); @@ -546,11 +619,82 @@ namespace monitor string answer; localStatus = commandManager.SendCommand( - CreateCommand(DestijlCommandList.HeaderMtsCamera, DestijlCommandList.DataCamStopComputePosition), + CreateCommand(DestijlCommandList.CAMERA_POSITION_STOP), out answer, 0); return DecodeStatus(localStatus, answer); } + + public static Position DecodePosition(string data) { + Position pos = new Position(); + + pos.robotID = 0; + pos.angle = 0.0; + pos.centre.x = 0.0; + pos.centre.y=0.0; + pos.direction.x = 0.0; + pos.direction.y = 0.0; + + string[] parts = data.Split(';'); + + NumberFormatInfo provider = new NumberFormatInfo(); + provider.NumberDecimalSeparator = "."; + provider.NumberGroupSeparator = ","; + provider.NumberGroupSizes = new int[] { 3 }; + + if (parts.Length == 6) { + pos.robotID = Convert.ToInt32(parts[0]); + + try + { + pos.angle = Convert.ToDouble(parts[1]); + } catch (FormatException) + { + pos.angle = Convert.ToDouble(parts[1],provider); + } + + try + { + pos.centre.x = Convert.ToDouble(parts[2]); + } catch (FormatException) + { + pos.centre.x = Convert.ToDouble(parts[2], provider); + } + + try + { + pos.centre.y = Convert.ToDouble(parts[3]); + } + catch (FormatException) + { + pos.centre.y = Convert.ToDouble(parts[3], provider); + } + + try + { + pos.direction.x = Convert.ToDouble(parts[4]); + } + catch (FormatException) + { + pos.direction.x = Convert.ToDouble(parts[4], provider); + } + + try + { + pos.direction.y = Convert.ToDouble(parts[5]); + } + catch (FormatException) + { + pos.direction.y = Convert.ToDouble(parts[5], provider); + } + + } else { + // misformatted data, return 0 filled position + Console.WriteLine("Misformated position"); + } + + return pos; + } } } diff --git a/software/monitor/monitor/ImageWidget.cs b/software/monitor/monitor/ImageWidget.cs new file mode 100644 index 0000000..05b4a20 --- /dev/null +++ b/software/monitor/monitor/ImageWidget.cs @@ -0,0 +1,304 @@ +// +// ImageWidget.cs +// +// Author: +// Di MERCURIO Sébastien +// +// Copyright (c) 2019 INSA - DGEI +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +// 15/10/2019 dimercur +// Demande #43: Migrer le code lié à la gestion des images dans sa propre classe widget + +using System; +using Gtk; +using Cairo; +using Gdk; + +using System.Timers; + +namespace monitor +{ + /// + /// Class used for video display + /// + public class ImageWidget + { + /// + /// Reference to GTK base widget + /// + private DrawingArea drawingArea; + + /// + /// Pixbuffer used for displaying image + /// + private Pixbuf drawingareaCameraPixbuf; + + /// + /// Indicate if position must be displayed or not + /// + public bool showPosition; + + /// + /// Indicate if FPS must be displayed or not + /// + private bool showFPS; + public bool ShowFPS + { + get + { + return showFPS; + } + + set + { + showFPS = value; + + if (value == true) + { + imageFPS = 0; + imageFPScounter = 0; + + fpsTimer.Start(); + } + else + { + fpsTimer.Stop(); + + Refresh(); + } + } + } + + /// + /// Counter used for FPS computation + /// + private int imageFPS = 0; + private int imageFPScounter = 0; + + /// + /// Timer for FPS request + /// + private System.Timers.Timer fpsTimer; + + /// + /// Hold position to be displayed + /// + private DestijlCommandManager.Position position; + public DestijlCommandManager.Position Position + { + get + { + return position; + } + + set + { + position = value; + Refresh(); + } + } + + /// + /// Request a refresh of drawing area + /// + private void Refresh() + { + Gtk.Application.Invoke(delegate + { + drawingArea.QueueDraw(); + }); + } + + /// + /// Initializes a new instance of ImageWidget class. + /// + /// Reference to GTK drawing area widget + public ImageWidget(DrawingArea area) + { + this.drawingArea = area; + // create new timer for FPS , every 1s + fpsTimer = new System.Timers.Timer(1000.0); + fpsTimer.Elapsed += OnFpsTimerElapsed; + + showPosition = false; + showFPS = false; + + drawingArea.ExposeEvent += OnDrawingAreaCameraExposeEvent; + } + + /// + /// Show an image from a ressource + /// + /// Ressource path + public void ShowImage(string ressource) + { + drawingareaCameraPixbuf = Pixbuf.LoadFromResource("monitor.ressources.missing_picture.png"); + imageFPScounter++; + + Refresh(); + } + + /// + /// Show an image from a byte array + /// + /// Byte array containing a valid image + public void ShowImage(byte[] image) + { + drawingareaCameraPixbuf = new Pixbuf(image); + imageFPScounter++; + + Refresh(); + } + + /// + /// Callback called when drawingarea need refresh + /// + /// Sender object + /// Expose arguments + protected void OnDrawingAreaCameraExposeEvent(object o, ExposeEventArgs args) + { + //Console.WriteLine("Event expose. Args = " + args.ToString()); + + DrawingArea area = (DrawingArea)o; + Gdk.Pixbuf displayPixbuf; + int areaWidth, areaHeight; + + // Get graphic context for background + Gdk.GC gc = area.Style.BackgroundGC(Gtk.StateType.Normal); + + // get size of drawingarea widget + area.GdkWindow.GetSize(out areaWidth, out areaHeight); + int width = drawingareaCameraPixbuf.Width; + int height = drawingareaCameraPixbuf.Height; + float ratio = (float)width / (float)height; + + // if widget is smaller than image, reduce it + if (areaWidth <= width) + { + width = areaWidth; + height = (int)(width / ratio); + } + + // if image is smaller than widget, enlarge it + if (width > areaWidth) + { + width = areaWidth; + } + + if (height > areaHeight) + { + height = areaHeight; + } + + //scale original picture and copy result in local pixbuf + displayPixbuf = drawingareaCameraPixbuf.ScaleSimple(width, height, InterpType.Bilinear); + + // draw local pixbuff centered on drawingarea + area.GdkWindow.DrawPixbuf(gc, displayPixbuf, + 0, 0, + (areaWidth - displayPixbuf.Width) / 2, + (areaHeight - displayPixbuf.Height) / 2, + displayPixbuf.Width, displayPixbuf.Height, + RgbDither.Normal, 0, 0); + + if (showPosition) + { + Cairo.Context cr = Gdk.CairoHelper.Create(area.GdkWindow); + Cairo.Color textFontColor = new Cairo.Color(0.8, 0, 0); + + cr.SelectFontFace("Cantarell", FontSlant.Normal, FontWeight.Bold); + cr.SetSourceColor(textFontColor); + cr.SetFontSize(16); + + if (position != null) + { + double space = 0.0; + + string text = "Direction (" + position.direction.x.ToString("0.##") + " ; " + position.direction.y.ToString("0.##") + ")"; + TextExtents te = cr.TextExtents(text); + cr.MoveTo(areaWidth - te.Width - 5, + areaHeight - te.Height - 5); + space = te.Height; + cr.ShowText(text); + + text = "Centre (" + position.centre.x.ToString("0.##") + " ; " + position.centre.y.ToString("0.##") + ")"; + te = cr.TextExtents(text); + cr.MoveTo(areaWidth - te.Width - 5, + areaHeight - te.Height - 5 - space - 5); + space = space + te.Height + 5; + cr.ShowText(text); + + text = "Angle: " + position.angle.ToString("0.##"); + te = cr.TextExtents(text); + cr.MoveTo(areaWidth - te.Width - 5, + areaHeight - te.Height - 5 - space - 5); + space = space + te.Height + 5; + cr.ShowText(text); + + text = "ID: " + position.robotID; + te = cr.TextExtents(text); + cr.MoveTo(areaWidth - te.Width - 5, + areaHeight - te.Height - 5 - space - 5); + + cr.ShowText(text); + } + else + { + string text = "Position (NULL)"; + TextExtents te = cr.TextExtents(text); + cr.MoveTo(areaWidth - te.Width - 5, + areaHeight - te.Height - 5); + + cr.ShowText(text); + } + + ((IDisposable)cr.GetTarget()).Dispose(); + ((IDisposable)cr).Dispose(); + } + + if (showFPS) + { + Cairo.Context cr = Gdk.CairoHelper.Create(area.GdkWindow); + Cairo.Color textFontColor = new Cairo.Color(0.8, 0, 0); + + cr.SelectFontFace("Cantarell", FontSlant.Normal, FontWeight.Bold); + cr.SetSourceColor(textFontColor); + cr.SetFontSize(16); + + string text = "FPS= " + imageFPS.ToString(); + TextExtents te = cr.TextExtents(text); + cr.MoveTo(10, 10 + te.Height); + cr.ShowText(text); + + ((IDisposable)cr.GetTarget()).Dispose(); + ((IDisposable)cr).Dispose(); + } + } + + /// + /// Timer used for FPS computation + /// + /// Sender object + /// unused parameter + private void OnFpsTimerElapsed(object sender, ElapsedEventArgs e) + { + imageFPS = imageFPScounter; + imageFPScounter = 0; + + Refresh(); + } + } +} diff --git a/software/monitor/monitor/MonitorUI.cs b/software/monitor/monitor/MonitorUI.cs index d042c15..f2f43e0 100644 --- a/software/monitor/monitor/MonitorUI.cs +++ b/software/monitor/monitor/MonitorUI.cs @@ -19,12 +19,19 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +// 15/01/2019 dimercur +// Demande #41: Modifier les messages envoyés par les flèches de direction + +// 15/10/2019 dimercur +// Demande #43: Migrer le code lié à la gestion des images dans sa propre classe widget using System; using Gtk; using Gdk; +using Cairo; using monitor; +using System.Timers; /// /// Main part of the program, behavior of main window @@ -37,9 +44,9 @@ public partial class MainWindow : Gtk.Window private DestijlCommandManager cmdManager; /// - /// Pixbuffer used for displaying image + /// Position used for displaying position /// - private Pixbuf drawingareaCameraPixbuf; + private DestijlCommandManager.Position position=new DestijlCommandManager.Position(); /// /// List of availble state for the application @@ -56,11 +63,19 @@ public partial class MainWindow : Gtk.Window /// private SystemState systemState = SystemState.NotConnected; + /// + /// Object used for displaying image on a valid DrawingArea widget + /// + private ImageWidget imageWidget; + /// /// Timer for battery request /// private System.Timers.Timer batteryTimer; + /// + /// Counter for image reception and detecting bad picture ratio + /// private int imageReceivedCounter = 0; private int badImageReceivedCounter = 0; @@ -73,6 +88,9 @@ public partial class MainWindow : Gtk.Window cmdManager = new DestijlCommandManager(OnCommandReceivedEvent); + // Init of image widget + imageWidget = new ImageWidget(drawingAreaCamera); + // create new timer for battery request, every 10s batteryTimer = new System.Timers.Timer(10000.0); batteryTimer.Elapsed += OnBatteryTimerElapsed; @@ -90,7 +108,7 @@ public partial class MainWindow : Gtk.Window ChangeState(SystemState.NotConnected); // Load "no picture" image from disque - drawingareaCameraPixbuf = Pixbuf.LoadFromResource("monitor.ressources.missing_picture.png"); + imageWidget.ShowImage("monitor.ressources.missing_picture.png"); // setup server controls entryServerName.Text = Client.defaultIP; @@ -120,6 +138,11 @@ public partial class MainWindow : Gtk.Window checkButtonCameraOn.Active = false; checkButtonRobotPosition.Active = false; + checkButtonFPS.Active = false; + + imageWidget.ShowFPS = false; + imageWidget.showPosition = false; + if (cmdManager != null) cmdManager.Close(); batteryTimer.Stop(); @@ -159,6 +182,10 @@ public partial class MainWindow : Gtk.Window checkButtonCameraOn.Active = false; checkButtonRobotPosition.Active = false; + checkButtonFPS.Active = false; + + imageWidget.ShowFPS = false; + imageWidget.showPosition = false; systemState = SystemState.NotConnected; @@ -177,11 +204,9 @@ public partial class MainWindow : Gtk.Window /// Message private void MessagePopup(MessageType type, ButtonsType buttons, string title, string message) { - MessageDialog md = new MessageDialog(this, DialogFlags.DestroyWithParent, type, buttons, message) - { - Title = title - }; + MessageDialog md = new MessageDialog(this, DialogFlags.DestroyWithParent, type, buttons, message); + md.Title = title; md.Run(); md.Destroy(); } @@ -200,26 +225,25 @@ public partial class MainWindow : Gtk.Window a.RetVal = true; } - private byte[] imageComplete; - private byte[] imageInProgress; - /// /// Callback called when new message is received from server /// /// Header of message /// Data of message - /// Raw buffer corresponding of received message - public void OnCommandReceivedEvent(string header, string data, byte[] buffer) + public void OnCommandReceivedEvent(string header, string data) { - if (buffer==null) + if (header == null) { // we have lost server ChangeState(SystemState.NotConnected); - MessagePopup(MessageType.Error, + Gtk.Application.Invoke(delegate + { + MessagePopup(MessageType.Error, ButtonsType.Ok, "Server lost", "Server is down: disconnecting"); - cmdManager.Close(); + cmdManager.Close(); + }); } // if we have received a valid message @@ -228,75 +252,71 @@ public partial class MainWindow : Gtk.Window #if DEBUG // print message content if (header.Length > 4) - Console.WriteLine("Bad header(" + buffer.Length + ")"); - else - Console.WriteLine("Received header (" + header.Length + "): " + header); - //if (header.ToUpper() != DestijlCommandList.HeaderStmImage) - //{ - // if (data != null) Console.WriteLine("Received data (" + data.Length + "): " + data); - //} + { + Console.WriteLine("Bad header(" + header.Length + ")"); + } #endif - // Image management - if (header == DestijlCommandList.HeaderStmImage) - { - imageComplete = imageInProgress; - imageInProgress = buffer; - } - else - { - if (imageInProgress == null) imageInProgress = buffer; - else - { - Array.Resize(ref imageInProgress, imageInProgress.Length + buffer.Length); - System.Buffer.BlockCopy(buffer, 0, imageInProgress, imageInProgress.Length - buffer.Length, buffer.Length); - } - } + // Depending on message received (based on header), launch correponding action + header = header.ToUpper(); - // depending on message received (based on header) - // launch correponding action - if (header.ToUpper() == DestijlCommandList.HeaderStmBat) + if (header == DestijlCommandList.ROBOT_BATTERY_LEVEL) { + string batLevel = ""; + switch (data[0]) { case '2': - labelBatteryLevel.Text = "High"; + batLevel = "High"; break; case '1': - labelBatteryLevel.Text = "Low"; + batLevel = "Low"; break; case '0': - labelBatteryLevel.Text = "Empty"; + batLevel = "Empty"; break; default: - labelBatteryLevel.Text = "Invalid value"; + batLevel = "Invalid value"; break; } - } - else if (header.ToUpper() == DestijlCommandList.HeaderStmImage) - { - // if message is an image, convert it to a pixbuf - // that can be displayed - if (imageComplete != null) - { - byte[] image = new byte[imageComplete.Length - 4]; - System.Buffer.BlockCopy(imageComplete, 4, image, 0, image.Length); - imageReceivedCounter++; - try - { - drawingareaCameraPixbuf = new Pixbuf(image); - drawingAreaCamera.QueueDraw(); - } - catch (GLib.GException) - { - badImageReceivedCounter++; -#if DEBUG - Console.WriteLine("Bad Image: " + badImageReceivedCounter + - " / " + imageReceivedCounter + - " (" + badImageReceivedCounter * 100 / imageReceivedCounter + "%)"); -#endif - } + Gtk.Application.Invoke(delegate + { + labelBatteryLevel.Text = batLevel; + }); + } + else if (header == DestijlCommandList.CAMERA_IMAGE) + { + imageReceivedCounter++; + + byte[] image = new byte[2]; + try + { + image = Convert.FromBase64String(data); } + catch (FormatException) + { + badImageReceivedCounter++; + Console.WriteLine("Unable to convert from base64 "); + } + + try + { + imageWidget.ShowImage(image); + } + catch (GLib.GException) + { + badImageReceivedCounter++; +#if DEBUG + Console.WriteLine("Bad Image: " + badImageReceivedCounter + + " / " + imageReceivedCounter + + " (" + badImageReceivedCounter * 100 / imageReceivedCounter + "%)"); +#endif + } + //} + } + else if (header == DestijlCommandList.CAMERA_POSITION) + { + imageWidget.Position = DestijlCommandManager.DecodePosition(data); } } } @@ -311,6 +331,7 @@ public partial class MainWindow : Gtk.Window Console.WriteLine("Bye bye 2"); if (cmdManager != null) cmdManager.Close(); this.Destroy(); + Application.Quit(); } @@ -417,10 +438,10 @@ public partial class MainWindow : Gtk.Window DestijlCommandManager.CommandStatus status; //if robot is not activated - if (buttonRobotActivation.Label == "Activate") + if (buttonRobotActivation.Label == "Activate") { // if a startup with watchdog is requested - if (radioButtonWithWatchdog.Active) + if (radioButtonWithWatchdog.Active) { status = cmdManager.RobotStartWithWatchdog(); } @@ -481,19 +502,23 @@ public partial class MainWindow : Gtk.Window // depending on button clicked, launch appropriate action if (sender == buttonRight) { - cmdManager.RobotTurn(90); + cmdManager.RobotGoRight(); } else if (sender == buttonLeft) { - cmdManager.RobotTurn(-90); + cmdManager.RobotGoLeft(); } else if (sender == buttonForward) { - cmdManager.RobotMove(100); + cmdManager.RobotGoForward(); } else if (sender == buttonDown) { - cmdManager.RobotMove(-100); + cmdManager.RobotGoBackward(); + } + else if (sender == buttonStop) + { + cmdManager.RobotStop(); } else { @@ -557,9 +582,7 @@ public partial class MainWindow : Gtk.Window { if (cmdManager.CameraClose() != DestijlCommandManager.CommandStatus.Success) { - MessagePopup(MessageType.Error, - ButtonsType.Ok, "Error", - "Error when closing camera: bad answer for supervisor or timeout"); + Console.WriteLine("Error when closing camera: bad answer for supervisor or timeout"); } } else // camera is not active, switch it on @@ -569,10 +592,8 @@ public partial class MainWindow : Gtk.Window if (cmdManager.CameraOpen() != DestijlCommandManager.CommandStatus.Success) { - MessagePopup(MessageType.Error, - ButtonsType.Ok, "Error", - "Error when opening camera: bad answer for supervisor or timeout"); - checkButtonCameraOn.Active = false; + Console.WriteLine("Error when opening camera: bad answer for supervisor or timeout"); + //checkButtonCameraOn.Active = false; } } } @@ -589,74 +610,20 @@ public partial class MainWindow : Gtk.Window { if (cmdManager.CameraStopComputePosition() != DestijlCommandManager.CommandStatus.Success) { - MessagePopup(MessageType.Error, - ButtonsType.Ok, "Error", - "Error when stopping position reception: bad answer for supervisor or timeout"); + Console.WriteLine("Error when stopping position reception: bad answer for supervisor or timeout"); } } else // start reception of robot position { if (cmdManager.CameraComputePosition() != DestijlCommandManager.CommandStatus.Success) { - MessagePopup(MessageType.Error, - ButtonsType.Ok, "Error", - "Error when starting getting robot position: bad answer for supervisor or timeout"); + Console.WriteLine("Error when starting getting robot position: bad answer for supervisor or timeout"); - checkButtonRobotPosition.Active = false; + //checkButtonRobotPosition.Active = false; } } - } - /// - /// Callback called when drawingarea need refresh - /// - /// Sender object - /// Expose arguments - protected void OnDrawingAreaCameraExposeEvent(object o, ExposeEventArgs args) - { - //Console.WriteLine("Event expose. Args = " + args.ToString()); - - DrawingArea area = (DrawingArea)o; - Gdk.Pixbuf displayPixbuf; - int areaWidth, areaHeight; - - // Get graphic context for background - Gdk.GC gc = area.Style.BackgroundGC(Gtk.StateType.Normal); - - // get size of drawingarea widget - area.GdkWindow.GetSize(out areaWidth, out areaHeight); - int width = drawingareaCameraPixbuf.Width; - int height = drawingareaCameraPixbuf.Height; - float ratio = (float)width / (float)height; - - // if widget is smaller than image, reduce it - if (areaWidth <= width) - { - width = areaWidth; - height = (int)(width / ratio); - } - - // if image is smaller than widget, enlarge it - if (width > areaWidth) - { - width = areaWidth; - } - - if (height > areaHeight) - { - height = areaHeight; - } - - //scale original picture and copy result in local pixbuf - displayPixbuf = drawingareaCameraPixbuf.ScaleSimple(width, height, InterpType.Bilinear); - - // draw local pixbuff centered on drawingarea - area.GdkWindow.DrawPixbuf(gc, displayPixbuf, - 0, 0, - (areaWidth - displayPixbuf.Width) / 2, - (areaHeight - displayPixbuf.Height) / 2, - displayPixbuf.Width, displayPixbuf.Height, - RgbDither.Normal, 0, 0); + imageWidget.showPosition = checkButtonRobotPosition.Active; } /// @@ -667,9 +634,8 @@ public partial class MainWindow : Gtk.Window DestijlCommandManager.CommandStatus status; MessageDialog md = new MessageDialog(this, DialogFlags.DestroyWithParent, MessageType.Question, ButtonsType.YesNo, "Arena is correct ?"); - { - Title = "Check arena"; - }; + + md.Title = "Check arena"; ResponseType result = (ResponseType)md.Run(); md.Destroy(); @@ -692,7 +658,7 @@ public partial class MainWindow : Gtk.Window } /// - /// Callback called when "detect Arena " button is clicked + /// Callback called when "Detect Arena" button is clicked /// /// Sender object /// Event @@ -710,4 +676,14 @@ public partial class MainWindow : Gtk.Window // show popup and wait for user to say if arena is ok or not DetectArena(); } + + /// + /// Callback function for FPS checkbutton + /// + /// Sender object + /// unused paramter + protected void OnCheckButtonFPSToggled(object sender, EventArgs e) + { + imageWidget.ShowFPS = checkButtonFPS.Active; + } } diff --git a/software/monitor/monitor/gtk-gui/MainWindow.cs b/software/monitor/monitor/gtk-gui/MainWindow.cs index d968bf5..466b549 100644 --- a/software/monitor/monitor/gtk-gui/MainWindow.cs +++ b/software/monitor/monitor/gtk-gui/MainWindow.cs @@ -21,14 +21,18 @@ public partial class MainWindow private global::Gtk.VBox boxCamera; + private global::Gtk.HBox hbox2; + private global::Gtk.Alignment alignment1; - private global::Gtk.HBox hbox2; + private global::Gtk.HBox hbox5; private global::Gtk.CheckButton checkButtonCameraOn; private global::Gtk.CheckButton checkButtonRobotPosition; + private global::Gtk.CheckButton checkButtonFPS; + private global::Gtk.Button buttonAskArena; private global::Gtk.DrawingArea drawingAreaCamera; @@ -113,6 +117,8 @@ public partial class MainWindow private global::Gtk.Button buttonRight; + private global::Gtk.Button buttonStop; + private global::Gtk.Table table3; private global::Gtk.Label label3; @@ -170,33 +176,51 @@ public partial class MainWindow this.boxCamera.Name = "boxCamera"; this.boxCamera.Spacing = 6; // Container child boxCamera.Gtk.Box+BoxChild - this.alignment1 = new global::Gtk.Alignment(0F, 0.5F, 0F, 1F); - this.alignment1.Name = "alignment1"; - this.alignment1.BorderWidth = ((uint)(6)); - // Container child alignment1.Gtk.Container+ContainerChild this.hbox2 = new global::Gtk.HBox(); this.hbox2.Name = "hbox2"; this.hbox2.Spacing = 6; // Container child hbox2.Gtk.Box+BoxChild + this.alignment1 = new global::Gtk.Alignment(0F, 0.5F, 0F, 1F); + this.alignment1.Name = "alignment1"; + this.alignment1.BorderWidth = ((uint)(6)); + // Container child alignment1.Gtk.Container+ContainerChild + this.hbox5 = new global::Gtk.HBox(); + this.hbox5.Name = "hbox5"; + this.hbox5.Spacing = 6; + // Container child hbox5.Gtk.Box+BoxChild this.checkButtonCameraOn = new global::Gtk.CheckButton(); this.checkButtonCameraOn.CanFocus = true; this.checkButtonCameraOn.Name = "checkButtonCameraOn"; this.checkButtonCameraOn.Label = global::Mono.Unix.Catalog.GetString("Camera On"); this.checkButtonCameraOn.DrawIndicator = true; this.checkButtonCameraOn.UseUnderline = true; - this.hbox2.Add(this.checkButtonCameraOn); - global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.checkButtonCameraOn])); + this.hbox5.Add(this.checkButtonCameraOn); + global::Gtk.Box.BoxChild w3 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.checkButtonCameraOn])); w3.Position = 0; - // Container child hbox2.Gtk.Box+BoxChild + // Container child hbox5.Gtk.Box+BoxChild this.checkButtonRobotPosition = new global::Gtk.CheckButton(); this.checkButtonRobotPosition.CanFocus = true; this.checkButtonRobotPosition.Name = "checkButtonRobotPosition"; - this.checkButtonRobotPosition.Label = global::Mono.Unix.Catalog.GetString("Robot Position"); + this.checkButtonRobotPosition.Label = global::Mono.Unix.Catalog.GetString("Show Position"); this.checkButtonRobotPosition.DrawIndicator = true; this.checkButtonRobotPosition.UseUnderline = true; - this.hbox2.Add(this.checkButtonRobotPosition); - global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.checkButtonRobotPosition])); + this.hbox5.Add(this.checkButtonRobotPosition); + global::Gtk.Box.BoxChild w4 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.checkButtonRobotPosition])); w4.Position = 1; + // Container child hbox5.Gtk.Box+BoxChild + this.checkButtonFPS = new global::Gtk.CheckButton(); + this.checkButtonFPS.CanFocus = true; + this.checkButtonFPS.Name = "checkButtonFPS"; + this.checkButtonFPS.Label = global::Mono.Unix.Catalog.GetString("Show FPS"); + this.checkButtonFPS.DrawIndicator = true; + this.checkButtonFPS.UseUnderline = true; + this.hbox5.Add(this.checkButtonFPS); + global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox5[this.checkButtonFPS])); + w5.Position = 2; + this.alignment1.Add(this.hbox5); + this.hbox2.Add(this.alignment1); + global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.alignment1])); + w7.Position = 0; // Container child hbox2.Gtk.Box+BoxChild this.buttonAskArena = new global::Gtk.Button(); this.buttonAskArena.CanFocus = true; @@ -204,26 +228,24 @@ public partial class MainWindow this.buttonAskArena.UseUnderline = true; this.buttonAskArena.Label = global::Mono.Unix.Catalog.GetString("Ask Arena..."); this.hbox2.Add(this.buttonAskArena); - global::Gtk.Box.BoxChild w5 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.buttonAskArena])); - w5.PackType = ((global::Gtk.PackType)(1)); - w5.Position = 2; - w5.Expand = false; - w5.Fill = false; - this.alignment1.Add(this.hbox2); - this.boxCamera.Add(this.alignment1); - global::Gtk.Box.BoxChild w7 = ((global::Gtk.Box.BoxChild)(this.boxCamera[this.alignment1])); - w7.Position = 0; - w7.Expand = false; - w7.Fill = false; + global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.hbox2[this.buttonAskArena])); + w8.Position = 2; + w8.Expand = false; + w8.Fill = false; + this.boxCamera.Add(this.hbox2); + global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.boxCamera[this.hbox2])); + w9.Position = 0; + w9.Expand = false; + w9.Fill = false; // Container child boxCamera.Gtk.Box+BoxChild this.drawingAreaCamera = new global::Gtk.DrawingArea(); this.drawingAreaCamera.Name = "drawingAreaCamera"; this.boxCamera.Add(this.drawingAreaCamera); - global::Gtk.Box.BoxChild w8 = ((global::Gtk.Box.BoxChild)(this.boxCamera[this.drawingAreaCamera])); - w8.Position = 1; + global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.boxCamera[this.drawingAreaCamera])); + w10.Position = 1; this.hbox1.Add(this.boxCamera); - global::Gtk.Box.BoxChild w9 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.boxCamera])); - w9.Position = 0; + global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.boxCamera])); + w11.Position = 0; // Container child hbox1.Gtk.Box+BoxChild this.hbox3 = new global::Gtk.HBox(); this.hbox3.Name = "hbox3"; @@ -232,10 +254,10 @@ public partial class MainWindow this.vseparator1 = new global::Gtk.VSeparator(); this.vseparator1.Name = "vseparator1"; this.hbox3.Add(this.vseparator1); - global::Gtk.Box.BoxChild w10 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.vseparator1])); - w10.Position = 0; - w10.Expand = false; - w10.Fill = false; + global::Gtk.Box.BoxChild w12 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.vseparator1])); + w12.Position = 0; + w12.Expand = false; + w12.Fill = false; // Container child hbox3.Gtk.Box+BoxChild this.alignment3 = new global::Gtk.Alignment(1F, 0F, 0F, 0F); this.alignment3.Name = "alignment3"; @@ -255,10 +277,10 @@ public partial class MainWindow this.labelServer.LabelProp = global::Mono.Unix.Catalog.GetString("Server connection"); this.labelServer.UseMarkup = true; this.vbox10.Add(this.labelServer); - global::Gtk.Box.BoxChild w11 = ((global::Gtk.Box.BoxChild)(this.vbox10[this.labelServer])); - w11.Position = 0; - w11.Expand = false; - w11.Fill = false; + global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vbox10[this.labelServer])); + w13.Position = 0; + w13.Expand = false; + w13.Fill = false; // Container child vbox10.Gtk.Box+BoxChild this.gtkAlignmentServer = new global::Gtk.Alignment(0F, 0F, 1F, 1F); this.gtkAlignmentServer.Name = "gtkAlignmentServer"; @@ -279,10 +301,10 @@ public partial class MainWindow this.entryServerName.IsEditable = true; this.entryServerName.InvisibleChar = '●'; this.table1.Add(this.entryServerName); - global::Gtk.Table.TableChild w12 = ((global::Gtk.Table.TableChild)(this.table1[this.entryServerName])); - w12.LeftAttach = ((uint)(1)); - w12.RightAttach = ((uint)(2)); - w12.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1[this.entryServerName])); + w14.LeftAttach = ((uint)(1)); + w14.RightAttach = ((uint)(2)); + w14.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.entryServerPort = new global::Gtk.Entry(); this.entryServerPort.CanFocus = true; @@ -290,12 +312,12 @@ public partial class MainWindow this.entryServerPort.IsEditable = true; this.entryServerPort.InvisibleChar = '●'; this.table1.Add(this.entryServerPort); - global::Gtk.Table.TableChild w13 = ((global::Gtk.Table.TableChild)(this.table1[this.entryServerPort])); - w13.TopAttach = ((uint)(1)); - w13.BottomAttach = ((uint)(2)); - w13.LeftAttach = ((uint)(1)); - w13.RightAttach = ((uint)(2)); - w13.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1[this.entryServerPort])); + w15.TopAttach = ((uint)(1)); + w15.BottomAttach = ((uint)(2)); + w15.LeftAttach = ((uint)(1)); + w15.RightAttach = ((uint)(2)); + w15.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.entryTimeout = new global::Gtk.Entry(); this.entryTimeout.CanFocus = true; @@ -303,12 +325,12 @@ public partial class MainWindow this.entryTimeout.IsEditable = true; this.entryTimeout.InvisibleChar = '●'; this.table1.Add(this.entryTimeout); - global::Gtk.Table.TableChild w14 = ((global::Gtk.Table.TableChild)(this.table1[this.entryTimeout])); - w14.TopAttach = ((uint)(2)); - w14.BottomAttach = ((uint)(3)); - w14.LeftAttach = ((uint)(1)); - w14.RightAttach = ((uint)(2)); - w14.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.table1[this.entryTimeout])); + w16.TopAttach = ((uint)(2)); + w16.BottomAttach = ((uint)(3)); + w16.LeftAttach = ((uint)(1)); + w16.RightAttach = ((uint)(2)); + w16.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.label1 = new global::Gtk.Label(); this.label1.Name = "label1"; @@ -316,9 +338,9 @@ public partial class MainWindow this.label1.LabelProp = global::Mono.Unix.Catalog.GetString("Server name:"); this.label1.Justify = ((global::Gtk.Justification)(1)); this.table1.Add(this.label1); - global::Gtk.Table.TableChild w15 = ((global::Gtk.Table.TableChild)(this.table1[this.label1])); - w15.XOptions = ((global::Gtk.AttachOptions)(4)); - w15.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1[this.label1])); + w17.XOptions = ((global::Gtk.AttachOptions)(4)); + w17.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.label2 = new global::Gtk.Label(); this.label2.Name = "label2"; @@ -326,26 +348,26 @@ public partial class MainWindow this.label2.LabelProp = global::Mono.Unix.Catalog.GetString("Server port:"); this.label2.Justify = ((global::Gtk.Justification)(1)); this.table1.Add(this.label2); - global::Gtk.Table.TableChild w16 = ((global::Gtk.Table.TableChild)(this.table1[this.label2])); - w16.TopAttach = ((uint)(1)); - w16.BottomAttach = ((uint)(2)); - w16.XOptions = ((global::Gtk.AttachOptions)(4)); - w16.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w18 = ((global::Gtk.Table.TableChild)(this.table1[this.label2])); + w18.TopAttach = ((uint)(1)); + w18.BottomAttach = ((uint)(2)); + w18.XOptions = ((global::Gtk.AttachOptions)(4)); + w18.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table1.Gtk.Table+TableChild this.label5 = new global::Gtk.Label(); this.label5.Name = "label5"; this.label5.LabelProp = global::Mono.Unix.Catalog.GetString("Timeout (ms):"); this.table1.Add(this.label5); - global::Gtk.Table.TableChild w17 = ((global::Gtk.Table.TableChild)(this.table1[this.label5])); - w17.TopAttach = ((uint)(2)); - w17.BottomAttach = ((uint)(3)); - w17.XOptions = ((global::Gtk.AttachOptions)(4)); - w17.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w19 = ((global::Gtk.Table.TableChild)(this.table1[this.label5])); + w19.TopAttach = ((uint)(2)); + w19.BottomAttach = ((uint)(3)); + w19.XOptions = ((global::Gtk.AttachOptions)(4)); + w19.YOptions = ((global::Gtk.AttachOptions)(4)); this.vbox6.Add(this.table1); - global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.table1])); - w18.Position = 0; - w18.Expand = false; - w18.Fill = false; + global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.table1])); + w20.Position = 0; + w20.Expand = false; + w20.Fill = false; // Container child vbox6.Gtk.Box+BoxChild this.buttonServerConnection = new global::Gtk.Button(); this.buttonServerConnection.CanFocus = true; @@ -353,30 +375,30 @@ public partial class MainWindow this.buttonServerConnection.UseUnderline = true; this.buttonServerConnection.Label = global::Mono.Unix.Catalog.GetString("Connect"); this.vbox6.Add(this.buttonServerConnection); - global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.buttonServerConnection])); - w19.PackType = ((global::Gtk.PackType)(1)); - w19.Position = 1; - w19.Expand = false; - w19.Fill = false; - this.gtkAlignmentServer.Add(this.vbox6); - this.vbox10.Add(this.gtkAlignmentServer); - global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox10[this.gtkAlignmentServer])); + global::Gtk.Box.BoxChild w21 = ((global::Gtk.Box.BoxChild)(this.vbox6[this.buttonServerConnection])); + w21.PackType = ((global::Gtk.PackType)(1)); w21.Position = 1; w21.Expand = false; w21.Fill = false; + this.gtkAlignmentServer.Add(this.vbox6); + this.vbox10.Add(this.gtkAlignmentServer); + global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox10[this.gtkAlignmentServer])); + w23.Position = 1; + w23.Expand = false; + w23.Fill = false; this.vbox5.Add(this.vbox10); - global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox10])); - w22.Position = 0; - w22.Expand = false; - w22.Fill = false; + global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox10])); + w24.Position = 0; + w24.Expand = false; + w24.Fill = false; // Container child vbox5.Gtk.Box+BoxChild this.hseparator1 = new global::Gtk.HSeparator(); this.hseparator1.Name = "hseparator1"; this.vbox5.Add(this.hseparator1); - global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.hseparator1])); - w23.Position = 1; - w23.Expand = false; - w23.Fill = false; + global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.hseparator1])); + w25.Position = 1; + w25.Expand = false; + w25.Fill = false; // Container child vbox5.Gtk.Box+BoxChild this.vbox11 = new global::Gtk.VBox(); this.vbox11.Name = "vbox11"; @@ -388,10 +410,10 @@ public partial class MainWindow this.labelRobot.LabelProp = global::Mono.Unix.Catalog.GetString("Robot Activation"); this.labelRobot.UseMarkup = true; this.vbox11.Add(this.labelRobot); - global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.labelRobot])); - w24.Position = 0; - w24.Expand = false; - w24.Fill = false; + global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.labelRobot])); + w26.Position = 0; + w26.Expand = false; + w26.Fill = false; // Container child vbox11.Gtk.Box+BoxChild this.alignment9 = new global::Gtk.Alignment(0.5F, 0.5F, 1F, 1F); this.alignment9.Name = "alignment9"; @@ -418,8 +440,8 @@ public partial class MainWindow this.radioButtonWithWatchdog.UseUnderline = true; this.radioButtonWithWatchdog.Group = new global::GLib.SList(global::System.IntPtr.Zero); this.hbox4.Add(this.radioButtonWithWatchdog); - global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.radioButtonWithWatchdog])); - w25.Position = 0; + global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.radioButtonWithWatchdog])); + w27.Position = 0; // Container child hbox4.Gtk.Box+BoxChild this.radioButtonWithoutWatchdog = new global::Gtk.RadioButton(global::Mono.Unix.Catalog.GetString("without watchdog")); this.radioButtonWithoutWatchdog.CanFocus = true; @@ -428,14 +450,14 @@ public partial class MainWindow this.radioButtonWithoutWatchdog.UseUnderline = true; this.radioButtonWithoutWatchdog.Group = this.radioButtonWithWatchdog.Group; this.hbox4.Add(this.radioButtonWithoutWatchdog); - global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.radioButtonWithoutWatchdog])); - w26.Position = 1; + global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.hbox4[this.radioButtonWithoutWatchdog])); + w28.Position = 1; this.alignment6.Add(this.hbox4); this.vbox8.Add(this.alignment6); - global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.vbox8[this.alignment6])); - w28.Position = 0; - w28.Expand = false; - w28.Fill = false; + global::Gtk.Box.BoxChild w30 = ((global::Gtk.Box.BoxChild)(this.vbox8[this.alignment6])); + w30.Position = 0; + w30.Expand = false; + w30.Fill = false; // Container child vbox8.Gtk.Box+BoxChild this.alignment5 = new global::Gtk.Alignment(0.5F, 0.5F, 1F, 1F); this.alignment5.Name = "alignment5"; @@ -451,30 +473,30 @@ public partial class MainWindow this.alignment7.Add(this.buttonRobotActivation); this.alignment5.Add(this.alignment7); this.vbox8.Add(this.alignment5); - global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.vbox8[this.alignment5])); - w31.Position = 1; - w31.Expand = false; - w31.Fill = false; + global::Gtk.Box.BoxChild w33 = ((global::Gtk.Box.BoxChild)(this.vbox8[this.alignment5])); + w33.Position = 1; + w33.Expand = false; + w33.Fill = false; this.gtkAlignmentRobot.Add(this.vbox8); this.alignment9.Add(this.gtkAlignmentRobot); this.vbox11.Add(this.alignment9); - global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.alignment9])); - w34.Position = 1; - w34.Expand = false; - w34.Fill = false; + global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.vbox11[this.alignment9])); + w36.Position = 1; + w36.Expand = false; + w36.Fill = false; this.vbox5.Add(this.vbox11); - global::Gtk.Box.BoxChild w35 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox11])); - w35.Position = 2; - w35.Expand = false; - w35.Fill = false; + global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox11])); + w37.Position = 2; + w37.Expand = false; + w37.Fill = false; // Container child vbox5.Gtk.Box+BoxChild this.hseparator2 = new global::Gtk.HSeparator(); this.hseparator2.Name = "hseparator2"; this.vbox5.Add(this.hseparator2); - global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.hseparator2])); - w36.Position = 3; - w36.Expand = false; - w36.Fill = false; + global::Gtk.Box.BoxChild w38 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.hseparator2])); + w38.Position = 3; + w38.Expand = false; + w38.Fill = false; // Container child vbox5.Gtk.Box+BoxChild this.vbox12 = new global::Gtk.VBox(); this.vbox12.Name = "vbox12"; @@ -486,10 +508,10 @@ public partial class MainWindow this.labelRobotControl.LabelProp = global::Mono.Unix.Catalog.GetString("Robot Controls and Status"); this.labelRobotControl.UseMarkup = true; this.vbox12.Add(this.labelRobotControl); - global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.labelRobotControl])); - w37.Position = 0; - w37.Expand = false; - w37.Fill = false; + global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.labelRobotControl])); + w39.Position = 0; + w39.Expand = false; + w39.Fill = false; // Container child vbox12.Gtk.Box+BoxChild this.gtkAlignmentRobotControl = new global::Gtk.Alignment(0F, 0F, 1F, 1F); this.gtkAlignmentRobotControl.Name = "gtkAlignmentRobotControl"; @@ -508,70 +530,92 @@ public partial class MainWindow this.table4.ColumnSpacing = ((uint)(6)); // Container child table4.Gtk.Table+TableChild this.buttonDown = new global::Gtk.Button(); + global::Gtk.Tooltips w40 = new Gtk.Tooltips(); + w40.SetTip(this.buttonDown, "Move robot backward", "Move robot backward"); this.buttonDown.CanFocus = true; this.buttonDown.Name = "buttonDown"; this.buttonDown.UseUnderline = true; - global::Gtk.Image w38 = new global::Gtk.Image(); - w38.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-down-symbolic.symbolic.png"); - this.buttonDown.Image = w38; + global::Gtk.Image w41 = new global::Gtk.Image(); + w41.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-down-symbolic.symbolic.png"); + this.buttonDown.Image = w41; this.table4.Add(this.buttonDown); - global::Gtk.Table.TableChild w39 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonDown])); - w39.TopAttach = ((uint)(2)); - w39.BottomAttach = ((uint)(3)); - w39.LeftAttach = ((uint)(1)); - w39.RightAttach = ((uint)(2)); - w39.XOptions = ((global::Gtk.AttachOptions)(4)); - w39.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w42 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonDown])); + w42.TopAttach = ((uint)(2)); + w42.BottomAttach = ((uint)(3)); + w42.LeftAttach = ((uint)(1)); + w42.RightAttach = ((uint)(2)); + w42.XOptions = ((global::Gtk.AttachOptions)(4)); + w42.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table4.Gtk.Table+TableChild this.buttonForward = new global::Gtk.Button(); + w40.SetTip(this.buttonForward, "Move robot forward", "Move robot forward"); this.buttonForward.CanFocus = true; this.buttonForward.Name = "buttonForward"; this.buttonForward.UseUnderline = true; - global::Gtk.Image w40 = new global::Gtk.Image(); - w40.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-up-symbolic.symbolic.png"); - this.buttonForward.Image = w40; + global::Gtk.Image w43 = new global::Gtk.Image(); + w43.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-up-symbolic.symbolic.png"); + this.buttonForward.Image = w43; this.table4.Add(this.buttonForward); - global::Gtk.Table.TableChild w41 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonForward])); - w41.LeftAttach = ((uint)(1)); - w41.RightAttach = ((uint)(2)); - w41.XOptions = ((global::Gtk.AttachOptions)(4)); - w41.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w44 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonForward])); + w44.LeftAttach = ((uint)(1)); + w44.RightAttach = ((uint)(2)); + w44.XOptions = ((global::Gtk.AttachOptions)(4)); + w44.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table4.Gtk.Table+TableChild this.buttonLeft = new global::Gtk.Button(); + w40.SetTip(this.buttonLeft, "Turn robot to the left", "Turn robot to the left"); this.buttonLeft.CanFocus = true; this.buttonLeft.Name = "buttonLeft"; this.buttonLeft.UseUnderline = true; - global::Gtk.Image w42 = new global::Gtk.Image(); - w42.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-start-symbolic.symbolic.png"); - this.buttonLeft.Image = w42; + global::Gtk.Image w45 = new global::Gtk.Image(); + w45.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-start-symbolic.symbolic.png"); + this.buttonLeft.Image = w45; this.table4.Add(this.buttonLeft); - global::Gtk.Table.TableChild w43 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonLeft])); - w43.TopAttach = ((uint)(1)); - w43.BottomAttach = ((uint)(2)); - w43.XOptions = ((global::Gtk.AttachOptions)(4)); - w43.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w46 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonLeft])); + w46.TopAttach = ((uint)(1)); + w46.BottomAttach = ((uint)(2)); + w46.XOptions = ((global::Gtk.AttachOptions)(4)); + w46.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table4.Gtk.Table+TableChild this.buttonRight = new global::Gtk.Button(); + w40.SetTip(this.buttonRight, "Turn robot to the right", "Turn robot to the right"); this.buttonRight.CanFocus = true; this.buttonRight.Name = "buttonRight"; this.buttonRight.UseUnderline = true; - global::Gtk.Image w44 = new global::Gtk.Image(); - w44.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-end-symbolic.symbolic.png"); - this.buttonRight.Image = w44; + global::Gtk.Image w47 = new global::Gtk.Image(); + w47.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.pan-end-symbolic.symbolic.png"); + this.buttonRight.Image = w47; this.table4.Add(this.buttonRight); - global::Gtk.Table.TableChild w45 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonRight])); - w45.TopAttach = ((uint)(1)); - w45.BottomAttach = ((uint)(2)); - w45.LeftAttach = ((uint)(2)); - w45.RightAttach = ((uint)(3)); - w45.XOptions = ((global::Gtk.AttachOptions)(4)); - w45.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonRight])); + w48.TopAttach = ((uint)(1)); + w48.BottomAttach = ((uint)(2)); + w48.LeftAttach = ((uint)(2)); + w48.RightAttach = ((uint)(3)); + w48.XOptions = ((global::Gtk.AttachOptions)(4)); + w48.YOptions = ((global::Gtk.AttachOptions)(4)); + // Container child table4.Gtk.Table+TableChild + this.buttonStop = new global::Gtk.Button(); + w40.SetTip(this.buttonStop, "Stop robot movements", "Stop robot movements"); + this.buttonStop.CanFocus = true; + this.buttonStop.Name = "buttonStop"; + this.buttonStop.UseUnderline = true; + global::Gtk.Image w49 = new global::Gtk.Image(); + w49.Pixbuf = global::Gdk.Pixbuf.LoadFromResource("monitor.ressources.hand-filled-32.png"); + this.buttonStop.Image = w49; + this.table4.Add(this.buttonStop); + global::Gtk.Table.TableChild w50 = ((global::Gtk.Table.TableChild)(this.table4[this.buttonStop])); + w50.TopAttach = ((uint)(1)); + w50.BottomAttach = ((uint)(2)); + w50.LeftAttach = ((uint)(1)); + w50.RightAttach = ((uint)(2)); + w50.XOptions = ((global::Gtk.AttachOptions)(4)); + w50.YOptions = ((global::Gtk.AttachOptions)(4)); this.alignment8.Add(this.table4); this.vbox9.Add(this.alignment8); - global::Gtk.Box.BoxChild w47 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.alignment8])); - w47.Position = 0; - w47.Expand = false; - w47.Fill = false; + global::Gtk.Box.BoxChild w52 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.alignment8])); + w52.Position = 0; + w52.Expand = false; + w52.Fill = false; // Container child vbox9.Gtk.Box+BoxChild this.table3 = new global::Gtk.Table(((uint)(1)), ((uint)(2)), false); this.table3.Name = "table3"; @@ -584,10 +628,10 @@ public partial class MainWindow this.label3.LabelProp = global::Mono.Unix.Catalog.GetString("Battery level:"); this.label3.Justify = ((global::Gtk.Justification)(1)); this.table3.Add(this.label3); - global::Gtk.Table.TableChild w48 = ((global::Gtk.Table.TableChild)(this.table3[this.label3])); - w48.YPadding = ((uint)(10)); - w48.XOptions = ((global::Gtk.AttachOptions)(4)); - w48.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w53 = ((global::Gtk.Table.TableChild)(this.table3[this.label3])); + w53.YPadding = ((uint)(10)); + w53.XOptions = ((global::Gtk.AttachOptions)(4)); + w53.YOptions = ((global::Gtk.AttachOptions)(4)); // Container child table3.Gtk.Table+TableChild this.labelBatteryLevel = new global::Gtk.Label(); this.labelBatteryLevel.Name = "labelBatteryLevel"; @@ -595,48 +639,49 @@ public partial class MainWindow this.labelBatteryLevel.Xalign = 0F; this.labelBatteryLevel.LabelProp = global::Mono.Unix.Catalog.GetString("Unknown"); this.table3.Add(this.labelBatteryLevel); - global::Gtk.Table.TableChild w49 = ((global::Gtk.Table.TableChild)(this.table3[this.labelBatteryLevel])); - w49.LeftAttach = ((uint)(1)); - w49.RightAttach = ((uint)(2)); - w49.YOptions = ((global::Gtk.AttachOptions)(4)); + global::Gtk.Table.TableChild w54 = ((global::Gtk.Table.TableChild)(this.table3[this.labelBatteryLevel])); + w54.LeftAttach = ((uint)(1)); + w54.RightAttach = ((uint)(2)); + w54.YOptions = ((global::Gtk.AttachOptions)(4)); this.vbox9.Add(this.table3); - global::Gtk.Box.BoxChild w50 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.table3])); - w50.Position = 2; - w50.Expand = false; - w50.Fill = false; + global::Gtk.Box.BoxChild w55 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.table3])); + w55.Position = 2; + w55.Expand = false; + w55.Fill = false; // Container child vbox9.Gtk.Box+BoxChild this.checkButtonGetBattery = new global::Gtk.CheckButton(); this.checkButtonGetBattery.CanFocus = true; this.checkButtonGetBattery.Name = "checkButtonGetBattery"; this.checkButtonGetBattery.Label = global::Mono.Unix.Catalog.GetString("Get battery level"); + this.checkButtonGetBattery.Active = true; this.checkButtonGetBattery.DrawIndicator = true; this.checkButtonGetBattery.UseUnderline = true; this.vbox9.Add(this.checkButtonGetBattery); - global::Gtk.Box.BoxChild w51 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.checkButtonGetBattery])); - w51.Position = 3; - w51.Expand = false; - w51.Fill = false; - this.gtkAlignmentRobotControl.Add(this.vbox9); - this.vbox12.Add(this.gtkAlignmentRobotControl); - global::Gtk.Box.BoxChild w53 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.gtkAlignmentRobotControl])); - w53.Position = 1; - this.vbox5.Add(this.vbox12); - global::Gtk.Box.BoxChild w54 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox12])); - w54.Position = 4; - this.alignment3.Add(this.vbox5); - this.hbox3.Add(this.alignment3); - global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.alignment3])); - w56.Position = 1; + global::Gtk.Box.BoxChild w56 = ((global::Gtk.Box.BoxChild)(this.vbox9[this.checkButtonGetBattery])); + w56.Position = 3; w56.Expand = false; w56.Fill = false; - this.hbox1.Add(this.hbox3); - global::Gtk.Box.BoxChild w57 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.hbox3])); - w57.Position = 1; - w57.Expand = false; - w57.Fill = false; - this.vbox1.Add(this.hbox1); - global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1])); + this.gtkAlignmentRobotControl.Add(this.vbox9); + this.vbox12.Add(this.gtkAlignmentRobotControl); + global::Gtk.Box.BoxChild w58 = ((global::Gtk.Box.BoxChild)(this.vbox12[this.gtkAlignmentRobotControl])); w58.Position = 1; + this.vbox5.Add(this.vbox12); + global::Gtk.Box.BoxChild w59 = ((global::Gtk.Box.BoxChild)(this.vbox5[this.vbox12])); + w59.Position = 4; + this.alignment3.Add(this.vbox5); + this.hbox3.Add(this.alignment3); + global::Gtk.Box.BoxChild w61 = ((global::Gtk.Box.BoxChild)(this.hbox3[this.alignment3])); + w61.Position = 1; + w61.Expand = false; + w61.Fill = false; + this.hbox1.Add(this.hbox3); + global::Gtk.Box.BoxChild w62 = ((global::Gtk.Box.BoxChild)(this.hbox1[this.hbox3])); + w62.Position = 1; + w62.Expand = false; + w62.Fill = false; + this.vbox1.Add(this.hbox1); + global::Gtk.Box.BoxChild w63 = ((global::Gtk.Box.BoxChild)(this.vbox1[this.hbox1])); + w63.Position = 1; this.Add(this.vbox1); if ((this.Child != null)) { @@ -650,10 +695,11 @@ public partial class MainWindow this.ShowLogWindowAction.Activated += new global::System.EventHandler(this.OnShowLogWindowActionActivated); this.checkButtonCameraOn.Clicked += new global::System.EventHandler(this.OnCheckButtonCameraOnClicked); this.checkButtonRobotPosition.Clicked += new global::System.EventHandler(this.OnCheckButtonRobotPositionClicked); + this.checkButtonFPS.Toggled += new global::System.EventHandler(this.OnCheckButtonFPSToggled); this.buttonAskArena.Clicked += new global::System.EventHandler(this.OnButtonAskArenaClicked); - this.drawingAreaCamera.ExposeEvent += new global::Gtk.ExposeEventHandler(this.OnDrawingAreaCameraExposeEvent); this.buttonServerConnection.Clicked += new global::System.EventHandler(this.OnButtonServerConnectionClicked); this.buttonRobotActivation.Clicked += new global::System.EventHandler(this.OnButtonRobotActivationClicked); + this.buttonStop.Clicked += new global::System.EventHandler(this.OnButtonMouvClicked); this.buttonRight.Clicked += new global::System.EventHandler(this.OnButtonMouvClicked); this.buttonLeft.Clicked += new global::System.EventHandler(this.OnButtonMouvClicked); this.buttonForward.Clicked += new global::System.EventHandler(this.OnButtonMouvClicked); diff --git a/software/monitor/monitor/gtk-gui/gui.stetic b/software/monitor/monitor/gtk-gui/gui.stetic index 15d9d94..25d7433 100644 --- a/software/monitor/monitor/gtk-gui/gui.stetic +++ b/software/monitor/monitor/gtk-gui/gui.stetic @@ -74,68 +74,95 @@ 6 - + - 0 - 0 - 6 + 6 - + - 6 + 0 + 0 + 6 - + - True - Camera On - True - True - True - + 6 + + + + True + Camera On + True + True + True + + + + 0 + True + + + + + + True + Show Position + True + True + True + + + + 1 + True + + + + + + True + Show FPS + True + True + True + + + + 2 + True + + - - 0 - True - - - - - - True - Robot Position - True - True - True - - - - 1 - True - - - - - - True - TextOnly - Ask Arena... - True - - - - End - 2 - True - False - False - + + 0 + True + + + + + + + + + True + TextOnly + Ask Arena... + True + + + + 2 + True + False + False + 0 - False + True False False @@ -143,7 +170,6 @@ - 1 @@ -583,12 +609,10 @@ - - - + Move robot backward True TextAndIcon resource:monitor.ressources.pan-down-symbolic.symbolic.png @@ -615,6 +639,7 @@ + Move robot forward True TextAndIcon resource:monitor.ressources.pan-up-symbolic.symbolic.png @@ -639,6 +664,7 @@ + Turn robot to the left True TextAndIcon resource:monitor.ressources.pan-start-symbolic.symbolic.png @@ -663,6 +689,7 @@ + Turn robot to the right True TextAndIcon resource:monitor.ressources.pan-end-symbolic.symbolic.png @@ -686,6 +713,33 @@ False + + + + Stop robot movements + True + TextAndIcon + resource:monitor.ressources.hand-filled-32.png + + True + + + + 1 + 2 + 1 + 2 + True + Fill + Fill + False + True + False + False + True + False + + diff --git a/software/monitor/monitor/monitor b/software/monitor/monitor/monitor index d65f28c..918885c 100755 Binary files a/software/monitor/monitor/monitor and b/software/monitor/monitor/monitor differ diff --git a/software/monitor/monitor/monitor.csproj b/software/monitor/monitor/monitor.csproj index 760c5f1..7a8ee15 100644 --- a/software/monitor/monitor/monitor.csproj +++ b/software/monitor/monitor/monitor.csproj @@ -70,6 +70,7 @@ + @@ -80,6 +81,7 @@ + diff --git a/software/monitor/monitor/ressources/hand-filled-32.png b/software/monitor/monitor/ressources/hand-filled-32.png new file mode 100644 index 0000000..5f113cf Binary files /dev/null and b/software/monitor/monitor/ressources/hand-filled-32.png differ diff --git a/software/raspberry/conception_robot_2018.pdf b/software/raspberry/conception_robot_2018.pdf deleted file mode 100644 index 65a39b3..0000000 Binary files a/software/raspberry/conception_robot_2018.pdf and /dev/null differ diff --git a/software/raspberry/sujet_robot_2018.pdf b/software/raspberry/sujet_robot_2018.pdf deleted file mode 100644 index e1467c6..0000000 Binary files a/software/raspberry/sujet_robot_2018.pdf and /dev/null differ diff --git a/software/raspberry/testeur/testeur/.dep.inc b/software/raspberry/superviseur-robot/.dep.inc similarity index 100% rename from software/raspberry/testeur/testeur/.dep.inc rename to software/raspberry/superviseur-robot/.dep.inc diff --git a/software/raspberry/superviseur-robot/.gitignore b/software/raspberry/superviseur-robot/.gitignore index 8ba92f7..9ae7fc1 100644 --- a/software/raspberry/superviseur-robot/.gitignore +++ b/software/raspberry/superviseur-robot/.gitignore @@ -2,10 +2,17 @@ build/ src.sav/ cmake-build-debug/ futur/ -build/ CMakeFiles/ Makefile *.cmake CMakeCache.txt +docs/ +doc/ + +workspace/ +dist/ +not_for_students/ + + diff --git a/software/raspberry/superviseur-robot/.idea/.name b/software/raspberry/superviseur-robot/.idea/.name deleted file mode 100644 index 02eef87..0000000 --- a/software/raspberry/superviseur-robot/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -ProjDestijl \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/.idea/codeStyles/Project.xml b/software/raspberry/superviseur-robot/.idea/codeStyles/Project.xml deleted file mode 100644 index 30aa626..0000000 --- a/software/raspberry/superviseur-robot/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/.idea/misc.xml b/software/raspberry/superviseur-robot/.idea/misc.xml deleted file mode 100644 index 8822db8..0000000 --- a/software/raspberry/superviseur-robot/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/.idea/modules.xml b/software/raspberry/superviseur-robot/.idea/modules.xml deleted file mode 100644 index 7a92ef3..0000000 --- a/software/raspberry/superviseur-robot/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/.idea/superviseur-robot.iml b/software/raspberry/superviseur-robot/.idea/superviseur-robot.iml deleted file mode 100644 index f08604b..0000000 --- a/software/raspberry/superviseur-robot/.idea/superviseur-robot.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/.idea/vcs.xml b/software/raspberry/superviseur-robot/.idea/vcs.xml deleted file mode 100644 index c2365ab..0000000 --- a/software/raspberry/superviseur-robot/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/.idea/workspace.xml b/software/raspberry/superviseur-robot/.idea/workspace.xml deleted file mode 100644 index 2579f0f..0000000 --- a/software/raspberry/superviseur-robot/.idea/workspace.xml +++ /dev/null @@ -1,864 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! - * jQuery UI 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI - */ -(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! - * jQuery UI Widget 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Widget - */ -(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! - * jQuery UI Mouse 1.8.18 - * - * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * http://docs.jquery.com/UI/Mouse - * - * Depends: - * jquery.ui.widget.js - */ -(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! - * jQuery hashchange event - v1.3 - 7/21/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' - - -
- -
-
message.cpp File Reference
-
-
- -

Functions for sending message to monitor. -More...

-
#include "message.h"
-
-Include dependency graph for message.cpp:
-
-
- - - -
-
-

Go to the source code of this file.

-
- - - - - - - - - -

-Functions

void set_msgToMon_header (MessageToMon *msg, char *header)
 
void set_msgToMon_data (MessageToMon *msg, void *data)
 
void free_msgToMon_data (MessageToMon *msg)
 
void print_msgToMon (MessageToMon *msg)
 
-

Detailed Description

-

Functions for sending message to monitor.

-
Author
PE.Hladik
-
Version
1.0
-
Date
06/06/2017
- -

Definition in file message.cpp.

-

Function Documentation

- -

◆ free_msgToMon_data()

- -
-
- - - - - - - - -
void free_msgToMon_data (MessageToMonmsg)
-
- -

Definition at line 40 of file message.cpp.

- -
-
- -

◆ print_msgToMon()

- -
-
- - - - - - - - -
void print_msgToMon (MessageToMonmsg)
-
- -

Definition at line 46 of file message.cpp.

- -
-
- -

◆ set_msgToMon_data()

- -
-
- - - - - - - - - - - - - - - - - - -
void set_msgToMon_data (MessageToMonmsg,
void * data 
)
-
- -

Definition at line 32 of file message.cpp.

- -
-
- -

◆ set_msgToMon_header()

- -
-
- - - - - - - - - - - - - - - - - - -
void set_msgToMon_header (MessageToMonmsg,
char * header 
)
-
- -

Definition at line 28 of file message.cpp.

- -
-
- - - - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp.js b/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp.js deleted file mode 100644 index 7291dec..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp.js +++ /dev/null @@ -1,7 +0,0 @@ -var message_8cpp = -[ - [ "free_msgToMon_data", "message_8cpp.html#a285193a5a9d3b142f3f1c53c471d3173", null ], - [ "print_msgToMon", "message_8cpp.html#ae409e822d69cee7483a2d41c62698a85", null ], - [ "set_msgToMon_data", "message_8cpp.html#aa938f8156bfca7379f533b751334ca6f", null ], - [ "set_msgToMon_header", "message_8cpp.html#a8c768ba3ccfd64ba1e39079c967aff26", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.map deleted file mode 100644 index de5e1b6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.md5 deleted file mode 100644 index 37edc4c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -a433a31a7bc3c2aef43f09a76b51be72 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.png deleted file mode 100644 index 128eb06..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp_source.html b/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp_source.html deleted file mode 100644 index 6286ab4..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8cpp_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -Bibliotheques TP RT: src/message.cpp Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
message.cpp
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #include "message.h"
27 
28 void set_msgToMon_header(MessageToMon *msg, char *header) {
29  memcpy(msg->header, header, sizeof (header));
30 }
31 
32 void set_msgToMon_data(MessageToMon *msg, void * data) {
33  if (msg->data != NULL) {
34  free(msg->data);
35  }
36  msg->data = malloc(sizeof (data));
37  memcpy(msg->data, data, sizeof (data));
38 }
39 
41  if (msg->data != NULL) {
42  free(msg->data);
43  }
44 }
45 
47  printf("header: %s\n", msg->header);
48  printf("data: %s\n", (char*)msg->data);
49 }
void * data
Definition: message.h:36
-
void set_msgToMon_header(MessageToMon *msg, char *header)
Definition: message.cpp:28
- -
Functions for sending message to monitor.
-
void free_msgToMon_data(MessageToMon *msg)
Definition: message.cpp:40
-
void set_msgToMon_data(MessageToMon *msg, void *data)
Definition: message.cpp:32
-
void print_msgToMon(MessageToMon *msg)
Definition: message.cpp:46
-
char header[4]
Definition: message.h:35
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h.html b/software/raspberry/superviseur-robot/lib/doc/html/message_8h.html deleted file mode 100644 index 60686fb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8h.html +++ /dev/null @@ -1,247 +0,0 @@ - - - - - - - -Bibliotheques TP RT: message.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
message.h File Reference
-
-
- -

Functions for sending message to monitor. -More...

-
#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-
-Include dependency graph for message.h:
-
-
-
-
-

Go to the source code of this file.

- - - - -

-Classes

struct  MessageToMon
 
- - - - - - - - - - - - - -

-Functions

void set_msgToMon_header (MessageToMon *msg, char *header)
 Set header part of monitor message. More...
 
void set_msgToMon_data (MessageToMon *msg, void *data)
 Set data part of monitor message. More...
 
void free_msgToMon_data (MessageToMon *msg)
 Dealocate moemory pointed by data part of message. More...
 
void print_msgToMon (MessageToMon *msg)
 Print message, header and data. More...
 
-

Detailed Description

-

Functions for sending message to monitor.

-
Author
PE.Hladik
-
Version
1.0
-
Date
06/06/2017
- -

Definition in file message.h.

-

Function Documentation

- -

◆ free_msgToMon_data()

- -
-
- - - - - - - - -
void free_msgToMon_data (MessageToMonmsg)
-
- -

Dealocate moemory pointed by data part of message.

- -
-
- -

◆ print_msgToMon()

- -
-
- - - - - - - - -
void print_msgToMon (MessageToMonmsg)
-
- -

Print message, header and data.

- -
-
- -

◆ set_msgToMon_data()

- -
-
- - - - - - - - - - - - - - - - - - -
void set_msgToMon_data (MessageToMonmsg,
void * data 
)
-
- -

Set data part of monitor message.

- -
-
- -

◆ set_msgToMon_header()

- -
-
- - - - - - - - - - - - - - - - - - -
void set_msgToMon_header (MessageToMonmsg,
char * header 
)
-
- -

Set header part of monitor message.

- -
-
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h.js b/software/raspberry/superviseur-robot/lib/doc/html/message_8h.js deleted file mode 100644 index f86e346..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8h.js +++ /dev/null @@ -1,8 +0,0 @@ -var message_8h = -[ - [ "MessageToMon", "struct_message_to_mon.html", "struct_message_to_mon" ], - [ "free_msgToMon_data", "message_8h.html#a285193a5a9d3b142f3f1c53c471d3173", null ], - [ "print_msgToMon", "message_8h.html#ae409e822d69cee7483a2d41c62698a85", null ], - [ "set_msgToMon_data", "message_8h.html#aa938f8156bfca7379f533b751334ca6f", null ], - [ "set_msgToMon_header", "message_8h.html#a8c768ba3ccfd64ba1e39079c967aff26", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.map deleted file mode 100644 index 060d5dc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.md5 deleted file mode 100644 index dfa0241..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c1360d1270504b5d3b306b1d19fd7c40 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.png deleted file mode 100644 index 8451547..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__dep__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.map deleted file mode 100644 index 4409cbb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.map +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.md5 deleted file mode 100644 index aabbc0c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ebcc455136b13afe425b1f9aff59117a \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.png deleted file mode 100644 index 243f16f..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/message_8h__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/message_8h_source.html b/software/raspberry/superviseur-robot/lib/doc/html/message_8h_source.html deleted file mode 100644 index c335eae..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/message_8h_source.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -Bibliotheques TP RT: message.h Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
message.h
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #ifndef MESSAGE_H
27 #define MESSAGE_H
28 
29 #include <stdio.h>
30 #include <stdlib.h>
31 #include <unistd.h>
32 #include <string.h>
33 
34 typedef struct {
35  char header[4];
36  void *data = NULL;
37 } MessageToMon;
38 
43 void set_msgToMon_header(MessageToMon *msg, char *header);
44 
48 void set_msgToMon_data(MessageToMon *msg, void *data);
49 
54 
58 void print_msgToMon(MessageToMon *msg);
59 
60 #endif /* MESSAGE_H */
61 
-
void set_msgToMon_header(MessageToMon *msg, char *header)
Set header part of monitor message.
-
void free_msgToMon_data(MessageToMon *msg)
Dealocate moemory pointed by data part of message.
-
void set_msgToMon_data(MessageToMon *msg, void *data)
Set data part of monitor message.
-
void print_msgToMon(MessageToMon *msg)
Print message, header and data.
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp.html b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp.html deleted file mode 100644 index 236cc89..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - - -Bibliotheques TP RT: src/monitor.cpp File Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
monitor.cpp File Reference
-
-
- -

Library for sending message to monitor or receiving message. -More...

-
#include "monitor.h"
-#include "server.h"
-
-Include dependency graph for monitor.cpp:
-
-
- - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - -

-Functions

string serverReceive (int size)
 
int sendMessage (const char *data, int dataLength)
 
int receive (char *data)
 
int send_message_to_monitor (const char *typeMessage, const void *data)
 Envoi d'un message vers l'interface graphique. More...
 
int receive_message_from_monitor (char *typeMessage, char *data)
 Réception d'un message. La fonction est bloquante et retourne par référence le type de message reçu (DMB pour un ordre au robot, ARN pour la détection des arènes et POS pour un calcul de position) ainsi que les données associées. More...
 
- - - - - - - -

-Variables

SOCKADDR_IN ssin
 
SOCKET sock
 
socklen_t recsize = sizeof (ssin)
 
-

Detailed Description

-

Library for sending message to monitor or receiving message.

-
Author
L.senaneuch
-
Version
1.0
-
Date
06/06/2017
- -

Definition in file monitor.cpp.

-

Function Documentation

- -

◆ receive()

- -
-
- - - - - - - - -
int receive (char * data)
-
- -

Definition at line 90 of file monitor.cpp.

- -
-
- -

◆ receive_message_from_monitor()

- -
-
- - - - - - - - - - - - - - - - - - -
int receive_message_from_monitor (char * typeMessage,
char * data 
)
-
- -

Réception d'un message. La fonction est bloquante et retourne par référence le type de message reçu (DMB pour un ordre au robot, ARN pour la détection des arènes et POS pour un calcul de position) ainsi que les données associées.

-
Parameters
- - - -
typeMessageType du message reçu : DMB pour un ordre au robot, ARN pour la demande de détection de l'arène, POS pour un calcul de position et MSG pour un message de l'interface
datadonnées associées au message reçu.
-
-
-
Returns
retourne 0 la taille du message reçu ou une valeur négative si la connexion est perdue.
- -

Definition at line 83 of file monitor.cpp.

- -
-
- -

◆ send_message_to_monitor()

- -
-
- - - - - - - - - - - - - - - - - - -
int send_message_to_monitor (const char * typeMessage,
const void * data = NULL 
)
-
- -

Envoi d'un message vers l'interface graphique.

-
Parameters
- - - -
typeMessageType du message envoyé. Les valeurs possibles sont IMG pour une image, MES pour un message à afficher dans la console, POS pour la position du robot, BAT pour une valeur de la batterie et ACK pour valider un message de l'interface.
datadonnées associées au message. Le type de la donnée doit correspondre au message : Image pour IMG, char * MES, Position pour POS, char * pour BAT et rien pour ACK. Attention, il n'y a aucune vérification a posterio.
-
-
-
Returns
retourne 0 si l'envoie a bien été réalisé et -1 en cas de problème.
- -

Definition at line 40 of file monitor.cpp.

- -
-
- -

◆ sendMessage()

- -
-
- - - - - - - - - - - - - - - - - - -
int sendMessage (const char * data,
int dataLength 
)
-
- -

Definition at line 97 of file monitor.cpp.

- -
-
- -

◆ serverReceive()

- -
-
- - - - - - - - -
string serverReceive (int size)
-
- -
-
-

Variable Documentation

- -

◆ recsize

- -
-
- - - - -
socklen_t recsize = sizeof (ssin)
-
- -

Definition at line 33 of file monitor.cpp.

- -
-
- -

◆ sock

- -
-
- - - - -
SOCKET sock
-
- -

Definition at line 32 of file monitor.cpp.

- -
-
- -

◆ ssin

- -
-
- - - - -
SOCKADDR_IN ssin
-
- -

Definition at line 31 of file monitor.cpp.

- -
-
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp.js b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp.js deleted file mode 100644 index f8cf8e1..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp.js +++ /dev/null @@ -1,11 +0,0 @@ -var monitor_8cpp = -[ - [ "receive", "monitor_8cpp.html#aef87d80a1e44bf1953b3282967282ef0", null ], - [ "receive_message_from_monitor", "monitor_8cpp.html#a61eca0d5b49118350db39583e1bd1032", null ], - [ "send_message_to_monitor", "monitor_8cpp.html#af49d46447ce41019bd13a2c07a000644", null ], - [ "sendMessage", "monitor_8cpp.html#a7265ec937de7d9ca68b81e5bd8203962", null ], - [ "serverReceive", "monitor_8cpp.html#a04c8d7ed93b301fafe6dcc08d64ba21b", null ], - [ "recsize", "monitor_8cpp.html#acd1a03adb2455aaacbd886642518d569", null ], - [ "sock", "monitor_8cpp.html#a6e91849780a994f2adde299b33642829", null ], - [ "ssin", "monitor_8cpp.html#a1f38ae3a59ce304779ebbca10378654a", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.map deleted file mode 100644 index 3ac074b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.md5 deleted file mode 100644 index 9e15c25..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4999ec1ece0fdb669cb1fb59d50df9ee \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.png deleted file mode 100644 index 9ef4963..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp_source.html b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp_source.html deleted file mode 100644 index 23bf7f4..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8cpp_source.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - -Bibliotheques TP RT: src/monitor.cpp Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
monitor.cpp
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #include "monitor.h"
27 #include "server.h"
28 
29 using namespace std;
30 
33 socklen_t recsize = sizeof (ssin);
34 
35 
36 string serverReceive(int size);
37 int sendMessage(const char *data, int dataLength);
38 int receive(char *data);
39 
40 int send_message_to_monitor(const char* typeMessage, const void * data) {
41  if ((string) typeMessage == HEADER_STM_IMAGE) {
42  Jpg * imgC = (Jpg*) data;
43  sendMessage("IMG", 3);
44  sendMessage((const char*) imgC->data(), imgC->size());
45  sendMessage("TRAME", 5);
46  return 0;
47  } else if ((string) typeMessage == HEADER_STM_POS) {
48  char buffer[400];
49  Position * maPosition = (Position*) data;
50  sprintf(buffer, "POScenter: %3d;%3d | %.1fTRAME", maPosition->center.x, maPosition->center.y, maPosition->angle);
51  sendMessage(buffer, strlen(buffer));
52  return 0;
53  } else if ((string) typeMessage == HEADER_STM_MES) {
54  char buffer[50];
55  sprintf(buffer, "MSG%sTRAME", (const char*) data);
56  sendMessage(buffer, strlen(buffer));
57  return 0;
58  } else if ((string) typeMessage == HEADER_STM_ACK) {
59  char buffer[50];
60  sprintf(buffer, "ACK%sTRAME", (const char*) data);
61  sendMessage(buffer, strlen(buffer));
62  return 0;
63  } else if ((string) typeMessage == HEADER_STM_BAT) {
64  char buffer[50];
65  sprintf(buffer, "BAT%sTRAME", (const char*) data);
66  sendMessage(buffer, strlen(buffer));
67  return 0;
68  } else if ((string) typeMessage == HEADER_STM_NO_ACK) {
69  char buffer[50];
70  sprintf(buffer, "NAK%sTRAME", (const char*) data);
71  sendMessage(buffer, strlen(buffer));
72  return 0;
73  } else if ((string) typeMessage == HEADER_STM_LOST_DMB) {
74  char buffer[50];
75  sprintf(buffer, "LCD%sTRAME", (const char*) data);
76  sendMessage(buffer, strlen(buffer));
77  return 0;
78  } else {
79  return -1;
80  }
81 }
82 
83 int receive_message_from_monitor(char *typeMessage, char *data) {
84  char buffer[20];
85  int tBuffer = receive(buffer);
86  sscanf(buffer, "%3s:%s", typeMessage, data);
87  return tBuffer;
88 }
89 
90 int receive(char *data) {
91  int result;
92  result = receiveDataFromServer(data, 20);
93  //cout <<"Data : " << data << endl;
94  return result;
95 }
96 
97 int sendMessage(const char *data, int dataLength) {
98  if (sendDataToServer((char*) data, dataLength) != dataLength) {
99  perror("Send failed : ");
100  return false;
101  }
102 
103  return true;
104 }
Point center
Definition: image.h:70
-
#define HEADER_STM_POS
Definition: monitor.h:43
-
float angle
Definition: image.h:72
-
int receive(char *data)
Definition: monitor.cpp:90
-
int SOCKET
Definition: monitor.h:70
-
#define HEADER_STM_NO_ACK
Definition: monitor.h:44
-
#define HEADER_STM_ACK
Definition: monitor.h:45
- -
int receive_message_from_monitor(char *typeMessage, char *data)
Réception d&#39;un message. La fonction est bloquante et retourne par référence le type de message reçu (...
Definition: monitor.cpp:83
-
int send_message_to_monitor(const char *typeMessage, const void *data)
Envoi d&#39;un message vers l&#39;interface graphique.
Definition: monitor.cpp:40
-
#define HEADER_STM_LOST_DMB
Definition: monitor.h:47
-
#define HEADER_STM_BAT
Definition: monitor.h:42
-
socklen_t recsize
Definition: monitor.cpp:33
- -
Definition: image.h:69
-
SOCKADDR_IN ssin
Definition: monitor.cpp:31
-
int sendMessage(const char *data, int dataLength)
Definition: monitor.cpp:97
-
vector< unsigned char > Jpg
Definition: image.h:67
-
int receiveDataFromServer(char *data, int size)
Definition: server.cpp:95
-
#define HEADER_STM_MES
Definition: monitor.h:46
-
int sendDataToServer(char *data, int length)
Definition: server.cpp:85
-
SOCKET sock
Definition: monitor.cpp:32
-
struct sockaddr_in SOCKADDR_IN
Definition: monitor.h:71
-
Library for sending message to monitor or receiving message.
-
string serverReceive(int size)
-
#define HEADER_STM_IMAGE
Definition: monitor.h:41
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h.html b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h.html deleted file mode 100644 index c5f6229..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h.html +++ /dev/null @@ -1,692 +0,0 @@ - - - - - - - -Bibliotheques TP RT: monitor.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
monitor.h File Reference
-
-
- -

Library for sending message to monitor or receiving message. -More...

-
#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <signal.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include "image.h"
-#include "definitions.h"
-
-Include dependency graph for monitor.h:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

struct  MessageFromMon
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Macros

#define HEADER_STM_IMAGE   "IMG"
 
#define HEADER_STM_BAT   "BAT"
 
#define HEADER_STM_POS   "POS"
 
#define HEADER_STM_NO_ACK   "NAK"
 
#define HEADER_STM_ACK   "ACK"
 
#define HEADER_STM_MES   "MSG"
 
#define HEADER_STM_LOST_DMB   "LCD"
 
#define HEADER_MTS_MSG   "MSG"
 
#define HEADER_MTS_DMB_ORDER   "DMB"
 
#define HEADER_MTS_COM_DMB   "COM"
 
#define HEADER_MTS_CAMERA   "CAM"
 
#define HEADER_MTS_STOP   "STO"
 
#define INVALID_SOCKET   -1
 
#define SOCKET_ERROR   -1
 
#define DEFAULT_PORT   8080
 
#define DEFAULT_PARITY   0
 
#define DETECT_ARENA   (1)
 
#define CHECK_ARENA   (2)
 
#define NO_ARENA   (3)
 
#define DEFAULT_NODEJS_PATH   "/usr/bin/nodejs"
 
#define DEFAULT_INTERFACE_FILE   "./interface.js"
 
#define closesocket(param)   close(param)
 
- - - - - - - -

-Typedefs

typedef int SOCKET
 
typedef struct sockaddr_in SOCKADDR_IN
 
typedef struct sockaddr SOCKADDR
 
- - - - - - - -

-Functions

int send_message_to_monitor (const char *typeMessage, const void *data=NULL)
 Envoi d'un message vers l'interface graphique. More...
 
int receive_message_from_monitor (char *typeMessage, char *data)
 Réception d'un message. La fonction est bloquante et retourne par référence le type de message reçu (DMB pour un ordre au robot, ARN pour la détection des arènes et POS pour un calcul de position) ainsi que les données associées. More...
 
-

Detailed Description

-

Library for sending message to monitor or receiving message.

-
Author
L.senaneuch
-
Version
1.0
-
Date
06/06/2017
- -

Definition in file monitor.h.

-

Macro Definition Documentation

- -

◆ CHECK_ARENA

- -
-
- - - - -
#define CHECK_ARENA   (2)
-
- -

Definition at line 62 of file monitor.h.

- -
-
- -

◆ closesocket

- -
-
- - - - - - - - -
#define closesocket( param)   close(param)
-
- -

Definition at line 68 of file monitor.h.

- -
-
- -

◆ DEFAULT_INTERFACE_FILE

- -
-
- - - - -
#define DEFAULT_INTERFACE_FILE   "./interface.js"
-
- -

Definition at line 66 of file monitor.h.

- -
-
- -

◆ DEFAULT_NODEJS_PATH

- -
-
- - - - -
#define DEFAULT_NODEJS_PATH   "/usr/bin/nodejs"
-
- -

Definition at line 65 of file monitor.h.

- -
-
- -

◆ DEFAULT_PARITY

- -
-
- - - - -
#define DEFAULT_PARITY   0
-
- -

Definition at line 59 of file monitor.h.

- -
-
- -

◆ DEFAULT_PORT

- -
-
- - - - -
#define DEFAULT_PORT   8080
-
- -

Definition at line 58 of file monitor.h.

- -
-
- -

◆ DETECT_ARENA

- -
-
- - - - -
#define DETECT_ARENA   (1)
-
- -

Definition at line 61 of file monitor.h.

- -
-
- -

◆ HEADER_MTS_CAMERA

- -
-
- - - - -
#define HEADER_MTS_CAMERA   "CAM"
-
- -

Definition at line 52 of file monitor.h.

- -
-
- -

◆ HEADER_MTS_COM_DMB

- -
-
- - - - -
#define HEADER_MTS_COM_DMB   "COM"
-
- -

Definition at line 51 of file monitor.h.

- -
-
- -

◆ HEADER_MTS_DMB_ORDER

- -
-
- - - - -
#define HEADER_MTS_DMB_ORDER   "DMB"
-
- -

Definition at line 50 of file monitor.h.

- -
-
- -

◆ HEADER_MTS_MSG

- -
-
- - - - -
#define HEADER_MTS_MSG   "MSG"
-
- -

Definition at line 49 of file monitor.h.

- -
-
- -

◆ HEADER_MTS_STOP

- -
-
- - - - -
#define HEADER_MTS_STOP   "STO"
-
- -

Definition at line 53 of file monitor.h.

- -
-
- -

◆ HEADER_STM_ACK

- -
-
- - - - -
#define HEADER_STM_ACK   "ACK"
-
- -

Definition at line 45 of file monitor.h.

- -
-
- -

◆ HEADER_STM_BAT

- -
-
- - - - -
#define HEADER_STM_BAT   "BAT"
-
- -

Definition at line 42 of file monitor.h.

- -
-
- -

◆ HEADER_STM_IMAGE

- -
-
- - - - -
#define HEADER_STM_IMAGE   "IMG"
-
- -

Definition at line 41 of file monitor.h.

- -
-
- -

◆ HEADER_STM_LOST_DMB

- -
-
- - - - -
#define HEADER_STM_LOST_DMB   "LCD"
-
- -

Definition at line 47 of file monitor.h.

- -
-
- -

◆ HEADER_STM_MES

- -
-
- - - - -
#define HEADER_STM_MES   "MSG"
-
- -

Definition at line 46 of file monitor.h.

- -
-
- -

◆ HEADER_STM_NO_ACK

- -
-
- - - - -
#define HEADER_STM_NO_ACK   "NAK"
-
- -

Definition at line 44 of file monitor.h.

- -
-
- -

◆ HEADER_STM_POS

- -
-
- - - - -
#define HEADER_STM_POS   "POS"
-
- -

Definition at line 43 of file monitor.h.

- -
-
- -

◆ INVALID_SOCKET

- -
-
- - - - -
#define INVALID_SOCKET   -1
-
- -

Definition at line 55 of file monitor.h.

- -
-
- -

◆ NO_ARENA

- -
-
- - - - -
#define NO_ARENA   (3)
-
- -

Definition at line 63 of file monitor.h.

- -
-
- -

◆ SOCKET_ERROR

- -
-
- - - - -
#define SOCKET_ERROR   -1
-
- -

Definition at line 56 of file monitor.h.

- -
-
-

Typedef Documentation

- -

◆ SOCKADDR

- -
-
- - - - -
typedef struct sockaddr SOCKADDR
-
- -

Definition at line 72 of file monitor.h.

- -
-
- -

◆ SOCKADDR_IN

- -
-
- - - - -
typedef struct sockaddr_in SOCKADDR_IN
-
- -

Definition at line 71 of file monitor.h.

- -
-
- -

◆ SOCKET

- -
-
- - - - -
typedef int SOCKET
-
- -

Definition at line 70 of file monitor.h.

- -
-
-

Function Documentation

- -

◆ receive_message_from_monitor()

- -
-
- - - - - - - - - - - - - - - - - - -
int receive_message_from_monitor (char * typeMessage,
char * data 
)
-
- -

Réception d'un message. La fonction est bloquante et retourne par référence le type de message reçu (DMB pour un ordre au robot, ARN pour la détection des arènes et POS pour un calcul de position) ainsi que les données associées.

-
Parameters
- - - -
typeMessageType du message reçu : DMB pour un ordre au robot, ARN pour la demande de détection de l'arène, POS pour un calcul de position et MSG pour un message de l'interface
datadonnées associées au message reçu.
-
-
-
Returns
Retourne 0 la taille du message reçu ou une valeur négative si la connexion est perdue.
- -
-
- -

◆ send_message_to_monitor()

- -
-
- - - - - - - - - - - - - - - - - - -
int send_message_to_monitor (const char * typeMessage,
const void * data = NULL 
)
-
- -

Envoi d'un message vers l'interface graphique.

-
Parameters
- - - -
typeMessageType du message envoyé. Les valeurs possibles sont IMG pour une image, MES pour un message à afficher dans la console, POS pour la position du robot, BAT pour une valeur de la batterie et ACK pour valider un message de l'interface.
datadonnées associées au message. Le type de la donnée doit correspondre au message : Image pour IMG, char * MES, Position pour POS, char * pour BAT et rien pour ACK. Attention, il n'y a aucune vérification a posterio.
-
-
-
Returns
Retourne 0 si l'envoie a bien été réalisé et -1 en cas de problème.
- -
-
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h.js b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h.js deleted file mode 100644 index 2b37a12..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h.js +++ /dev/null @@ -1,31 +0,0 @@ -var monitor_8h = -[ - [ "MessageFromMon", "struct_message_from_mon.html", "struct_message_from_mon" ], - [ "CHECK_ARENA", "monitor_8h.html#a22d20ac264e03c59d6941cb11386aa89", null ], - [ "closesocket", "monitor_8h.html#ab6b45251e218af8f09c5d627b5262398", null ], - [ "DEFAULT_INTERFACE_FILE", "monitor_8h.html#af533d8bd7d6a1d9f9efba3b259280e32", null ], - [ "DEFAULT_NODEJS_PATH", "monitor_8h.html#a2c47b710f0858fe41c544517c6b2a2fd", null ], - [ "DEFAULT_PARITY", "monitor_8h.html#a939612a13947b5bb9fc848e3222a231d", null ], - [ "DEFAULT_PORT", "monitor_8h.html#a16b710f592bf8f7900666392adc444dc", null ], - [ "DETECT_ARENA", "monitor_8h.html#ab3be9ae187e8b98bb000ca0bca68e982", null ], - [ "HEADER_MTS_CAMERA", "monitor_8h.html#a91e2658cf20010646211ba748885c180", null ], - [ "HEADER_MTS_COM_DMB", "monitor_8h.html#a0c829d92889c5c9b2d485964ce933fab", null ], - [ "HEADER_MTS_DMB_ORDER", "monitor_8h.html#a5ccd30e6502bb94eaa13a597edb1f156", null ], - [ "HEADER_MTS_MSG", "monitor_8h.html#a980e8f9457e30018fddcd4d997f17a85", null ], - [ "HEADER_MTS_STOP", "monitor_8h.html#a2be30c9a3e65eaf5502b8542a6ac6259", null ], - [ "HEADER_STM_ACK", "monitor_8h.html#af2325d19ae9da4310eb608c744149f53", null ], - [ "HEADER_STM_BAT", "monitor_8h.html#a0de226ae5af8b83f3b163ff4413eef95", null ], - [ "HEADER_STM_IMAGE", "monitor_8h.html#ad62b697bd25a71d171db46740aef2830", null ], - [ "HEADER_STM_LOST_DMB", "monitor_8h.html#afe29ce74d16751828da8aec7e13ad06b", null ], - [ "HEADER_STM_MES", "monitor_8h.html#ac1034bccb09918cccd3ba142377a6788", null ], - [ "HEADER_STM_NO_ACK", "monitor_8h.html#ac2e64478522da4e3b45c139c0c72557f", null ], - [ "HEADER_STM_POS", "monitor_8h.html#a6a07aae2539981459edc8070a0f019db", null ], - [ "INVALID_SOCKET", "monitor_8h.html#a26769957ec1a2beaf223f33b66ee64ab", null ], - [ "NO_ARENA", "monitor_8h.html#a1d58e03abc2a587c7f0a0665c94c0e68", null ], - [ "SOCKET_ERROR", "monitor_8h.html#a633b0396ff93d336a088412a190a5072", null ], - [ "SOCKADDR", "monitor_8h.html#ae334b73cedf7204187dce3f817576009", null ], - [ "SOCKADDR_IN", "monitor_8h.html#a29046dc0232f0e5c70adbc25090d77b8", null ], - [ "SOCKET", "monitor_8h.html#a8dc8083897335125630f1af5dafd5831", null ], - [ "receive_message_from_monitor", "monitor_8h.html#a61eca0d5b49118350db39583e1bd1032", null ], - [ "send_message_to_monitor", "monitor_8h.html#ac3d876b96642b6ee46f6a96b7ffcb864", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.map deleted file mode 100644 index a3a58b4..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.md5 deleted file mode 100644 index 2f64a62..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d46874b82f54f2c9defe2fbbe4cec067 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.png deleted file mode 100644 index 8680c1c..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__dep__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.map deleted file mode 100644 index 89823df..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.md5 deleted file mode 100644 index 87065f1..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c1de6fe6f1b534c65a34631cbb9641a2 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.png deleted file mode 100644 index 2ab2aec..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h_source.html b/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h_source.html deleted file mode 100644 index 04399a2..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/monitor_8h_source.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -Bibliotheques TP RT: monitor.h Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
monitor.h
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #ifndef _MONITOR_H_
27 #define _MONITOR_H_
28 
29 #include <sys/types.h>
30 #include <sys/socket.h>
31 #include <netinet/in.h>
32 #include <arpa/inet.h>
33 #include <unistd.h>
34 #include <signal.h>
35 #include <stdlib.h>
36 #include <stdio.h>
37 #include <string.h>
38 #include "image.h"
39 #include "definitions.h"
40 
41 #define HEADER_STM_IMAGE "IMG" // Envoi d'une image
42 #define HEADER_STM_BAT "BAT" // Envoi de l'état de la batterie
43 #define HEADER_STM_POS "POS" // Envoi de la position
44 #define HEADER_STM_NO_ACK "NAK" // Acquittement d'un échec
45 #define HEADER_STM_ACK "ACK" // Acquittement d'un succès
46 #define HEADER_STM_MES "MSG" // Message textuel
47 #define HEADER_STM_LOST_DMB "LCD" // Perte de la communication avec le robot
48 
49 #define HEADER_MTS_MSG "MSG" // Message directe pour Console Dumber
50 #define HEADER_MTS_DMB_ORDER "DMB" // Message d'ordre pour le robot
51 #define HEADER_MTS_COM_DMB "COM" // Message de gestion de la communication avec le robot
52 #define HEADER_MTS_CAMERA "CAM" // Message de gestion de la camera
53 #define HEADER_MTS_STOP "STO" // Message d'arrêt du system
54 
55 #define INVALID_SOCKET -1
56 #define SOCKET_ERROR -1
57 
58 #define DEFAULT_PORT 8080
59 #define DEFAULT_PARITY 0
60 
61 #define DETECT_ARENA (1)
62 #define CHECK_ARENA (2)
63 #define NO_ARENA (3)
64 
65 #define DEFAULT_NODEJS_PATH "/usr/bin/nodejs"
66 #define DEFAULT_INTERFACE_FILE "./interface.js"
67 
68 #define closesocket(param) close(param)
69 
70 typedef int SOCKET;
71 typedef struct sockaddr_in SOCKADDR_IN;
72 typedef struct sockaddr SOCKADDR;
73 
74 typedef struct {
75  char header[4];
76  char data[100];
78 
91 int send_message_to_monitor(const char* typeMessage, const void * data = NULL);
92 
105 int receive_message_from_monitor(char *typeMessage, char *data);
106 
107 
108 #endif // _MONITOR_H_
int send_message_to_monitor(const char *typeMessage, const void *data=NULL)
Envoi d&#39;un message vers l&#39;interface graphique.
-
int SOCKET
Definition: monitor.h:70
-
struct sockaddr SOCKADDR
Definition: monitor.h:72
-
Functions for image treatment.
-
int receive_message_from_monitor(char *typeMessage, char *data)
Réception d&#39;un message. La fonction est bloquante et retourne par référence le type de message reçu (...
-
Various constants used in destjil project.
- -
struct sockaddr_in SOCKADDR_IN
Definition: monitor.h:71
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/nav_f.png b/software/raspberry/superviseur-robot/lib/doc/html/nav_f.png deleted file mode 100644 index 72a58a5..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/nav_f.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/nav_g.png b/software/raspberry/superviseur-robot/lib/doc/html/nav_g.png deleted file mode 100644 index 2093a23..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/nav_g.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/nav_h.png b/software/raspberry/superviseur-robot/lib/doc/html/nav_h.png deleted file mode 100644 index 33389b1..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/nav_h.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/navtree.css b/software/raspberry/superviseur-robot/lib/doc/html/navtree.css deleted file mode 100644 index 0cc7e77..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/navtree.css +++ /dev/null @@ -1,146 +0,0 @@ -#nav-tree .children_ul { - margin:0; - padding:4px; -} - -#nav-tree ul { - list-style:none outside none; - margin:0px; - padding:0px; -} - -#nav-tree li { - white-space:nowrap; - margin:0px; - padding:0px; -} - -#nav-tree .plus { - margin:0px; -} - -#nav-tree .selected { - background-image: url('tab_a.png'); - background-repeat:repeat-x; - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} - -#nav-tree img { - margin:0px; - padding:0px; - border:0px; - vertical-align: middle; -} - -#nav-tree a { - text-decoration:none; - padding:0px; - margin:0px; - outline:none; -} - -#nav-tree .label { - margin:0px; - padding:0px; - font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; -} - -#nav-tree .label a { - padding:2px; -} - -#nav-tree .selected a { - text-decoration:none; - color:#fff; -} - -#nav-tree .children_ul { - margin:0px; - padding:0px; -} - -#nav-tree .item { - margin:0px; - padding:0px; -} - -#nav-tree { - padding: 0px 0px; - background-color: #FAFAFF; - font-size:14px; - overflow:auto; -} - -#doc-content { - overflow:auto; - display:block; - padding:0px; - margin:0px; - -webkit-overflow-scrolling : touch; /* iOS 5+ */ -} - -#side-nav { - padding:0 6px 0 0; - margin: 0px; - display:block; - position: absolute; - left: 0px; - width: 250px; -} - -.ui-resizable .ui-resizable-handle { - display:block; -} - -.ui-resizable-e { - background-image:url("splitbar.png"); - background-size:100%; - background-repeat:no-repeat; - background-attachment: scroll; - cursor:ew-resize; - height:100%; - right:0; - top:0; - width:6px; -} - -.ui-resizable-handle { - display:none; - font-size:0.1px; - position:absolute; - z-index:1; -} - -#nav-tree-contents { - margin: 6px 0px 0px 0px; -} - -#nav-tree { - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - -webkit-overflow-scrolling : touch; /* iOS 5+ */ -} - -#nav-sync { - position:absolute; - top:5px; - right:24px; - z-index:0; -} - -#nav-sync img { - opacity:0.3; -} - -#nav-sync img:hover { - opacity:0.9; -} - -@media print -{ - #nav-tree { display: none; } - div.ui-resizable-handle { display: none; position: relative; } -} - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/navtree.js b/software/raspberry/superviseur-robot/lib/doc/html/navtree.js deleted file mode 100644 index e6d31b0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/navtree.js +++ /dev/null @@ -1,517 +0,0 @@ -var navTreeSubIndices = new Array(); -var arrowDown = '▼'; -var arrowRight = '►'; - -function getData(varName) -{ - var i = varName.lastIndexOf('/'); - var n = i>=0 ? varName.substring(i+1) : varName; - return eval(n.replace(/\-/g,'_')); -} - -function stripPath(uri) -{ - return uri.substring(uri.lastIndexOf('/')+1); -} - -function stripPath2(uri) -{ - var i = uri.lastIndexOf('/'); - var s = uri.substring(i+1); - var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); - return m ? uri.substring(i-6) : s; -} - -function hashValue() -{ - return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); -} - -function hashUrl() -{ - return '#'+hashValue(); -} - -function pathName() -{ - return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); -} - -function localStorageSupported() -{ - try { - return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; - } - catch(e) { - return false; - } -} - - -function storeLink(link) -{ - if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { - window.localStorage.setItem('navpath',link); - } -} - -function deleteLink() -{ - if (localStorageSupported()) { - window.localStorage.setItem('navpath',''); - } -} - -function cachedLink() -{ - if (localStorageSupported()) { - return window.localStorage.getItem('navpath'); - } else { - return ''; - } -} - -function getScript(scriptName,func,show) -{ - var head = document.getElementsByTagName("head")[0]; - var script = document.createElement('script'); - script.id = scriptName; - script.type = 'text/javascript'; - script.onload = func; - script.src = scriptName+'.js'; - if ($.browser.msie && $.browser.version<=8) { - // script.onload does not work with older versions of IE - script.onreadystatechange = function() { - if (script.readyState=='complete' || script.readyState=='loaded') { - func(); if (show) showRoot(); - } - } - } - head.appendChild(script); -} - -function createIndent(o,domNode,node,level) -{ - var level=-1; - var n = node; - while (n.parentNode) { level++; n=n.parentNode; } - if (node.childrenData) { - var imgNode = document.createElement("span"); - imgNode.className = 'arrow'; - imgNode.style.paddingLeft=(16*level).toString()+'px'; - imgNode.innerHTML=arrowRight; - node.plus_img = imgNode; - node.expandToggle = document.createElement("a"); - node.expandToggle.href = "javascript:void(0)"; - node.expandToggle.onclick = function() { - if (node.expanded) { - $(node.getChildrenUL()).slideUp("fast"); - node.plus_img.innerHTML=arrowRight; - node.expanded = false; - } else { - expandNode(o, node, false, false); - } - } - node.expandToggle.appendChild(imgNode); - domNode.appendChild(node.expandToggle); - } else { - var span = document.createElement("span"); - span.className = 'arrow'; - span.style.width = 16*(level+1)+'px'; - span.innerHTML = ' '; - domNode.appendChild(span); - } -} - -var animationInProgress = false; - -function gotoAnchor(anchor,aname,updateLocation) -{ - var pos, docContent = $('#doc-content'); - var ancParent = $(anchor.parent()); - if (ancParent.hasClass('memItemLeft') || - ancParent.hasClass('fieldname') || - ancParent.hasClass('fieldtype') || - ancParent.is(':header')) - { - pos = ancParent.position().top; - } else if (anchor.position()) { - pos = anchor.position().top; - } - if (pos) { - var dist = Math.abs(Math.min( - pos-docContent.offset().top, - docContent[0].scrollHeight- - docContent.height()-docContent.scrollTop())); - animationInProgress=true; - docContent.animate({ - scrollTop: pos + docContent.scrollTop() - docContent.offset().top - },Math.max(50,Math.min(500,dist)),function(){ - if (updateLocation) window.location.href=aname; - animationInProgress=false; - }); - } -} - -function newNode(o, po, text, link, childrenData, lastNode) -{ - var node = new Object(); - node.children = Array(); - node.childrenData = childrenData; - node.depth = po.depth + 1; - node.relpath = po.relpath; - node.isLast = lastNode; - - node.li = document.createElement("li"); - po.getChildrenUL().appendChild(node.li); - node.parentNode = po; - - node.itemDiv = document.createElement("div"); - node.itemDiv.className = "item"; - - node.labelSpan = document.createElement("span"); - node.labelSpan.className = "label"; - - createIndent(o,node.itemDiv,node,0); - node.itemDiv.appendChild(node.labelSpan); - node.li.appendChild(node.itemDiv); - - var a = document.createElement("a"); - node.labelSpan.appendChild(a); - node.label = document.createTextNode(text); - node.expanded = false; - a.appendChild(node.label); - if (link) { - var url; - if (link.substring(0,1)=='^') { - url = link.substring(1); - link = url; - } else { - url = node.relpath+link; - } - a.className = stripPath(link.replace('#',':')); - if (link.indexOf('#')!=-1) { - var aname = '#'+link.split('#')[1]; - var srcPage = stripPath(pathName()); - var targetPage = stripPath(link.split('#')[0]); - a.href = srcPage!=targetPage ? url : "javascript:void(0)"; - a.onclick = function(){ - storeLink(link); - if (!$(a).parent().parent().hasClass('selected')) - { - $('.item').removeClass('selected'); - $('.item').removeAttr('id'); - $(a).parent().parent().addClass('selected'); - $(a).parent().parent().attr('id','selected'); - } - var anchor = $(aname); - gotoAnchor(anchor,aname,true); - }; - } else { - a.href = url; - a.onclick = function() { storeLink(link); } - } - } else { - if (childrenData != null) - { - a.className = "nolink"; - a.href = "javascript:void(0)"; - a.onclick = node.expandToggle.onclick; - } - } - - node.childrenUL = null; - node.getChildrenUL = function() { - if (!node.childrenUL) { - node.childrenUL = document.createElement("ul"); - node.childrenUL.className = "children_ul"; - node.childrenUL.style.display = "none"; - node.li.appendChild(node.childrenUL); - } - return node.childrenUL; - }; - - return node; -} - -function showRoot() -{ - var headerHeight = $("#top").height(); - var footerHeight = $("#nav-path").height(); - var windowHeight = $(window).height() - headerHeight - footerHeight; - (function (){ // retry until we can scroll to the selected item - try { - var navtree=$('#nav-tree'); - navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); - } catch (err) { - setTimeout(arguments.callee, 0); - } - })(); -} - -function expandNode(o, node, imm, showRoot) -{ - if (node.childrenData && !node.expanded) { - if (typeof(node.childrenData)==='string') { - var varName = node.childrenData; - getScript(node.relpath+varName,function(){ - node.childrenData = getData(varName); - expandNode(o, node, imm, showRoot); - }, showRoot); - } else { - if (!node.childrenVisited) { - getNode(o, node); - } if (imm || ($.browser.msie && $.browser.version>8)) { - // somehow slideDown jumps to the start of tree for IE9 :-( - $(node.getChildrenUL()).show(); - } else { - $(node.getChildrenUL()).slideDown("fast"); - } - node.plus_img.innerHTML = arrowDown; - node.expanded = true; - } - } -} - -function glowEffect(n,duration) -{ - n.addClass('glow').delay(duration).queue(function(next){ - $(this).removeClass('glow');next(); - }); -} - -function highlightAnchor() -{ - var aname = hashUrl(); - var anchor = $(aname); - if (anchor.parent().attr('class')=='memItemLeft'){ - var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); - glowEffect(rows.children(),300); // member without details - } else if (anchor.parent().attr('class')=='fieldname'){ - glowEffect(anchor.parent().parent(),1000); // enum value - } else if (anchor.parent().attr('class')=='fieldtype'){ - glowEffect(anchor.parent().parent(),1000); // struct field - } else if (anchor.parent().is(":header")) { - glowEffect(anchor.parent(),1000); // section header - } else { - glowEffect(anchor.next(),1000); // normal member - } - gotoAnchor(anchor,aname,false); -} - -function selectAndHighlight(hash,n) -{ - var a; - if (hash) { - var link=stripPath(pathName())+':'+hash.substring(1); - a=$('.item a[class$="'+link+'"]'); - } - if (a && a.length) { - a.parent().parent().addClass('selected'); - a.parent().parent().attr('id','selected'); - highlightAnchor(); - } else if (n) { - $(n.itemDiv).addClass('selected'); - $(n.itemDiv).attr('id','selected'); - } - if ($('#nav-tree-contents .item:first').hasClass('selected')) { - $('#nav-sync').css('top','30px'); - } else { - $('#nav-sync').css('top','5px'); - } - showRoot(); -} - -function showNode(o, node, index, hash) -{ - if (node && node.childrenData) { - if (typeof(node.childrenData)==='string') { - var varName = node.childrenData; - getScript(node.relpath+varName,function(){ - node.childrenData = getData(varName); - showNode(o,node,index,hash); - },true); - } else { - if (!node.childrenVisited) { - getNode(o, node); - } - $(node.getChildrenUL()).css({'display':'block'}); - node.plus_img.innerHTML = arrowDown; - node.expanded = true; - var n = node.children[o.breadcrumbs[index]]; - if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); - else hash=''; - } - if (hash.match(/^#l\d+$/)) { - var anchor=$('a[name='+hash.substring(1)+']'); - glowEffect(anchor.parent(),1000); // line number - hash=''; // strip line number anchors - } - var url=root+hash; - var i=-1; - while (NAVTREEINDEX[i+1]<=url) i++; - if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath) - } else { - getScript(relpath+'navtreeindex'+i,function(){ - navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); - if (navTreeSubIndices[i]) { - gotoNode(o,i,root,hash,relpath); - } - },true); - } -} - -function showSyncOff(n,relpath) -{ - n.html(''); -} - -function showSyncOn(n,relpath) -{ - n.html(''); -} - -function toggleSyncButton(relpath) -{ - var navSync = $('#nav-sync'); - if (navSync.hasClass('sync')) { - navSync.removeClass('sync'); - showSyncOff(navSync,relpath); - storeLink(stripPath2(pathName())+hashUrl()); - } else { - navSync.addClass('sync'); - showSyncOn(navSync,relpath); - deleteLink(); - } -} - -function initNavTree(toroot,relpath) -{ - var o = new Object(); - o.toroot = toroot; - o.node = new Object(); - o.node.li = document.getElementById("nav-tree-contents"); - o.node.childrenData = NAVTREE; - o.node.children = new Array(); - o.node.childrenUL = document.createElement("ul"); - o.node.getChildrenUL = function() { return o.node.childrenUL; }; - o.node.li.appendChild(o.node.childrenUL); - o.node.depth = 0; - o.node.relpath = relpath; - o.node.expanded = false; - o.node.isLast = true; - o.node.plus_img = document.createElement("span"); - o.node.plus_img.className = 'arrow'; - o.node.plus_img.innerHTML = arrowRight; - - if (localStorageSupported()) { - var navSync = $('#nav-sync'); - if (cachedLink()) { - showSyncOff(navSync,relpath); - navSync.removeClass('sync'); - } else { - showSyncOn(navSync,relpath); - } - navSync.click(function(){ toggleSyncButton(relpath); }); - } - - $(window).load(function(){ - navTo(o,toroot,hashUrl(),relpath); - showRoot(); - }); - - $(window).bind('hashchange', function(){ - if (window.location.hash && window.location.hash.length>1){ - var a; - if ($(location).attr('hash')){ - var clslink=stripPath(pathName())+':'+hashValue(); - a=$('.item a[class$="'+clslink.replace(/=desktop_vp) { - if (!collapsed) { - collapseExpand(); - } - } else if (width>desktop_vp && collapsedWidth0) { - restoreWidth(0); - collapsed=true; - } - else { - var width = readCookie('width'); - if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } - collapsed=false; - } - } - - header = $("#top"); - sidenav = $("#side-nav"); - content = $("#doc-content"); - navtree = $("#nav-tree"); - footer = $("#nav-path"); - $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); - $(sidenav).resizable({ minWidth: 0 }); - $(window).resize(function() { resizeHeight(); }); - var device = navigator.userAgent.toLowerCase(); - var touch_device = device.match(/(iphone|ipod|ipad|android)/); - if (touch_device) { /* wider split bar for touch only devices */ - $(sidenav).css({ paddingRight:'20px' }); - $('.ui-resizable-e').css({ width:'20px' }); - $('#nav-sync').css({ right:'34px' }); - barWidth=20; - } - var width = readCookie('width'); - if (width) { restoreWidth(width); } else { resizeWidth(); } - resizeHeight(); - var url = location.href; - var i=url.indexOf("#"); - if (i>=0) window.location.hash=url.substr(i); - var _preventDefault = function(evt) { evt.preventDefault(); }; - $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); - $(".ui-resizable-handle").dblclick(collapseExpand); - $(window).load(resizeHeight); -} - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot-icon.resized.png b/software/raspberry/superviseur-robot/lib/doc/html/robot-icon.resized.png deleted file mode 100644 index e464bd0..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/robot-icon.resized.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp.html b/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp.html deleted file mode 100644 index 16ff475..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - -Bibliotheques TP RT: src/robot.cpp File Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
robot.cpp File Reference
-
-
-
#include "robot.h"
-
-Include dependency graph for robot.cpp:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - -

-Functions

int getChar (char *c)
 
int readSerial (char *msg)
 
char checkSumGO (char *msg)
 
int receiveMsg (void)
 
int sendCmd (char cmd, const char *arg)
 
int open_communication_robot (const char *path)
 Ouvre la communication avec le robot. More...
 
int close_communication_robot (void)
 Ferme la communication avec le robot. More...
 
int send_command_to_robot (char cmd, const char *arg)
 Envoi une commande au robot et attends sa réponse. More...
 
- - - -

-Variables

int fd
 
-

Function Documentation

- -

◆ checkSumGO()

- -
-
- - - - - - - - -
char checkSumGO (char * msg)
-
- -

Definition at line 237 of file robot.cpp.

- -
-
- -

◆ close_communication_robot()

- -
-
- - - - - - - - -
int close_communication_robot (void )
-
- -

Ferme la communication avec le robot.

-

Ferme le descripteur de fichier du port serie contrôlant le robot.

-
Parameters
- - -
voidaucun
-
-
-
Returns
Retourne -1 en cas d'erreur ou 0 en cas de fermeture effectué
- -

Definition at line 64 of file robot.cpp.

- -
-
- -

◆ getChar()

- -
-
- - - - - - - - -
int getChar (char * c)
-
- -

Definition at line 199 of file robot.cpp.

- -
-
- -

◆ open_communication_robot()

- -
-
- - - - - - - - -
int open_communication_robot (const char * path = serialPort)
-
- -

Ouvre la communication avec le robot.

-

Ouvre le serial port passé en paramétre. Par defaut cette fonction ouvre le port ttySO connecté au module xbee.

-
Parameters
- - -
*pathchaine de caractère indiquant le path du port serie à ouvrir.
-
-
-
Returns
Return -1 si l'ouverture c'est mal passé et 0 si le port est ouvert.
- -

Definition at line 36 of file robot.cpp.

- -
-
- -

◆ readSerial()

- -
-
- - - - - - - - -
int readSerial (char * msg)
-
- -

Definition at line 216 of file robot.cpp.

- -
-
- -

◆ receiveMsg()

- -
-
- - - - - - - - -
int receiveMsg (void )
-
- -

Definition at line 168 of file robot.cpp.

- -
-
- -

◆ send_command_to_robot()

- -
-
- - - - - - - - - - - - - - - - - - -
int send_command_to_robot (char cmd,
const char * arg = NULL 
)
-
- -

Envoi une commande au robot et attends sa réponse.

-

Envoi une commande au robot en ajoutant le checksum et lis la réponse du robot en verifiant le checksum. Le premier paramétre cmd correspond au type de commande ex : PING, SETMOVE ... Le second paramétre *arg correspond aux arguments à la commande ex : SETMOVE, "100" La fonction retourne un code confirmation transmise par le robot (ROBOT_CHEKSUM, ROBOT_ERROR, ROBOT_TIMED_OUT, ROBOT_OK, ROBOT_UKNOW_CMD)

-
Parameters
- - - -
cmdEntête de la commande
*argArgument de la commande
-
-
-
Returns
retourne un code confirmation.
- -

Definition at line 74 of file robot.cpp.

- -
-
- -

◆ sendCmd()

- -
-
- - - - - - - - - - - - - - - - - - -
int sendCmd (char cmd,
const char * arg 
)
-
- -

Definition at line 138 of file robot.cpp.

- -
-
-

Variable Documentation

- -

◆ fd

- -
-
- - - - -
int fd
-
- -

Definition at line 28 of file robot.cpp.

- -
-
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp.js b/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp.js deleted file mode 100644 index 627339f..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp.js +++ /dev/null @@ -1,12 +0,0 @@ -var robot_8cpp = -[ - [ "checkSumGO", "robot_8cpp.html#ab87123df26d91967d4d7507ad10326ac", null ], - [ "close_communication_robot", "robot_8cpp.html#a3fbce7530a62f9287f8a3b85b9c7e4d7", null ], - [ "getChar", "robot_8cpp.html#a116eceb372bf4bda7e6a360286e762b1", null ], - [ "open_communication_robot", "robot_8cpp.html#a9360e75fe324da14faaa87105771140e", null ], - [ "readSerial", "robot_8cpp.html#a2e1339c58b604c970f67096c7d143c2a", null ], - [ "receiveMsg", "robot_8cpp.html#adf885bd17005f841896acf2e49350db7", null ], - [ "send_command_to_robot", "robot_8cpp.html#a68c01c5d6226d21fc0d141f681806677", null ], - [ "sendCmd", "robot_8cpp.html#ac9d64c6d05c20ae9fdb8c158e2ee7098", null ], - [ "fd", "robot_8cpp.html#a6f8059414f0228f0256115e024eeed4b", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.map deleted file mode 100644 index 26cd87c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.md5 deleted file mode 100644 index 6738806..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6d74266766829eaadc434cde424d0c03 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.png deleted file mode 100644 index febe531..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp_source.html b/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp_source.html deleted file mode 100644 index 37a66e7..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8cpp_source.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -Bibliotheques TP RT: src/robot.cpp Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
robot.cpp
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #include "robot.h"
27 
28 int fd;
29 
30 int getChar(char * c);
31 int readSerial(char * msg);
32 char checkSumGO(char * msg);
33 int receiveMsg(void);
34 int sendCmd(char cmd, const char * arg);
35 
36 int open_communication_robot(const char * path)
37 {
38 #ifndef __STUB__
39  struct termios options;
40  fd = open(path, O_RDWR | O_NOCTTY | O_NDELAY);
41  if(fd !=-1)
42  {
43  fcntl(fd, F_SETFL, 0);
44  tcgetattr(fd, &options);
45  options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
46  cfsetospeed (&options, B9600);
47  cfsetispeed (&options, B9600);
48  options.c_cc[VMIN]=0;
49  options.c_cc[VTIME]=0;
50  tcsetattr(fd, TCSANOW, &options);
51  return 0;
52  }
53  else
54  {
55  perror("can't openSerial");
56  return -1;
57  }
58 #else
59  return 0;
60 #endif
61 }
62 
63 
65 {
66 #ifndef __STUB__
67  return close(fd);
68 #else
69  return 0;
70 #endif
71 }
72 
73 
74 int send_command_to_robot(char cmd, const char * arg)
75 {
76 #ifndef __STUB__
77  sendCmd(cmd,arg);
78  // TODO : check return from sendCmd
79  return receiveMsg();
80 #else
81  int reponse;
82  switch(cmd)
83  {
84  case DMB_PING:
85  reponse = 0;
86  break;
87  case DMB_IDLE:
88  reponse = 0;
89  break;
90  case DMB_START_WITH_WD:
91  reponse = 0;
92  break;
93  case DMB_RELOAD_WD:
94  reponse = 0;
95  break;
96  case DMB_GET_VBAT:
97  reponse = 2;
98  break;
99  case DMB_IS_BUSY:
100  reponse = 1;
101  break;
103  reponse = 0;
104  break;
105  case DMB_MOVE:
106  reponse = 0;
107  break;
108  case DMB_TURN:
109  reponse = 0;
110  break;
111  case DMB_GO_FORWARD:
112  reponse = 0;
113  break;
114  case DMB_GO_BACK:
115  reponse = 0;
116  break;
117  case DMB_GO_LEFT:
118  reponse = 0;
119  break;
120  case DMB_GO_RIGHT:
121  reponse = 0;
122  break;
123  case DMB_STOP_MOVE:
124  reponse = 0;
125  break;
126  default:
127  reponse = 0;
128  break;
129  }
130  return reponse;
131 #endif
132 }
133 
134 /****************************/
135 /* PRIVATE */
136 /****************************/
137 
138 int sendCmd(char cmd, const char * arg)
139 {
140  char cmdWithArg[20]={};
141  cmdWithArg[0]=cmd;
142  switch(cmd)
143  {
144  case DMB_GO_FORWARD: strcpy(cmdWithArg,"M=+64000");
145  break;
146  case DMB_GO_BACK: strcpy(cmdWithArg,"M=-64000");
147  break;
148  case DMB_GO_LEFT: strcpy(cmdWithArg,"T=+64000");
149  break;
150  case DMB_GO_RIGHT: strcpy(cmdWithArg,"T=-64000");
151  break;
152  case DMB_STOP_MOVE: strcpy(cmdWithArg,"M=0");
153  break;
154  case DMB_MOVE: strcat(cmdWithArg,"=");
155  strcat(cmdWithArg,arg);
156  break;
157  case DMB_TURN: strcat(cmdWithArg,"=");
158  strcat(cmdWithArg,arg);
159  break;
160  }
161  int sizeCmd = strlen(cmdWithArg);
162  cmdWithArg[sizeCmd] = checkSumGO(cmdWithArg);
163  cmdWithArg[sizeCmd+1] = '\r';
164  cmdWithArg[sizeCmd+2] = '\0';
165  return write(fd,cmdWithArg,strlen(cmdWithArg));
166 }
167 
168 int receiveMsg(void)
169 {
170  char msg[20];
171  int b;
172  if((b = readSerial(msg))!=ROBOT_TIMED_OUT)
173  {
174  int taille = strlen(msg);
175  char checksum = msg[taille-2];
176  msg[taille-1] = 0;
177  msg[taille-2] = 0;
178  if(checksum!=checkSumGO(msg))
179  {
180  return ROBOT_CHECKSUM;
181  }
182  else
183  {
184  switch(msg[0])
185  {
186  case 'O' : return 0;
187  case 'E' : return ROBOT_ERROR;
188  case 'C' : return ROBOT_UKNOWN_CMD;
189  default : return atoi(&msg[0]);
190  }
191  }
192  }
193  else
194  {
195  return ROBOT_TIMED_OUT;
196  }
197 }
198 
199 int getChar(char * c)
200 {
201  int n =0;
202  int delay =0;
203  while((n=read(fd,c,1)) <=0)
204  {
205  usleep(5000);
206  delay++;
207  if(delay > 10)
208  {
209  return ROBOT_TIMED_OUT;
210  }
211 
212  }
213  return n;
214 }
215 
216 int readSerial(char * msg)
217 {
218  char car=0;
219  int i=0;
220  for(int j = 0 ; j < 20 ; j++)
221  msg[j]=0;
222 
223  while(car !='\r' && car!='\n') {
224  if(i>=20)
225  return -5;
226 
227  if(getChar(&car)==ROBOT_TIMED_OUT) {
228  return ROBOT_TIMED_OUT;
229  }
230 
231  msg[i] = car;
232  i++;
233  }
234  return i;
235 }
236 
237 char checkSumGO(char * msg)
238 {
239  char resultat = 0;
240  int i = 0;
241  int taille = strlen(msg);
242  for(i=0;i<taille;i++)
243  {
244  resultat^=msg[i];
245  }
246  return resultat;
247 
248 }
249 
250 
251 
#define DMB_PING
Definition: definitions.h:33
-
#define DMB_RELOAD_WD
Definition: definitions.h:37
-
#define DMB_GO_LEFT
Definition: definitions.h:44
-
#define DMB_START_WITH_WD
Definition: definitions.h:36
-
#define DMB_GO_BACK
Definition: definitions.h:43
-
Fonctions for communicating with robot.
-
char checkSumGO(char *msg)
Definition: robot.cpp:237
-
int readSerial(char *msg)
Definition: robot.cpp:216
-
#define ROBOT_ERROR
Definition: definitions.h:50
-
#define ROBOT_CHECKSUM
Definition: definitions.h:51
-
#define DMB_START_WITHOUT_WD
Definition: definitions.h:35
-
int receiveMsg(void)
Definition: robot.cpp:168
-
int getChar(char *c)
Definition: robot.cpp:199
-
#define ROBOT_UKNOWN_CMD
Definition: definitions.h:49
-
#define DMB_IDLE
Definition: definitions.h:34
-
#define DMB_GO_RIGHT
Definition: definitions.h:45
-
int sendCmd(char cmd, const char *arg)
Definition: robot.cpp:138
-
#define DMB_IS_BUSY
Definition: definitions.h:39
-
#define DMB_GET_VBAT
Definition: definitions.h:38
-
#define ROBOT_TIMED_OUT
Definition: definitions.h:48
-
#define DMB_GO_FORWARD
Definition: definitions.h:42
-
int send_command_to_robot(char cmd, const char *arg)
Envoi une commande au robot et attends sa réponse.
Definition: robot.cpp:74
-
int fd
Definition: robot.cpp:28
-
int open_communication_robot(const char *path)
Ouvre la communication avec le robot.
Definition: robot.cpp:36
-
#define DMB_STOP_MOVE
Definition: definitions.h:46
-
int close_communication_robot(void)
Ferme la communication avec le robot.
Definition: robot.cpp:64
-
#define DMB_TURN
Definition: definitions.h:41
-
#define DMB_MOVE
Definition: definitions.h:40
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h.html b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h.html deleted file mode 100644 index 258c699..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - -Bibliotheques TP RT: robot.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
robot.h File Reference
-
-
- -

Fonctions for communicating with robot. -More...

-
#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <termios.h>
-#include <string.h>
-#include <stdlib.h>
-#include "definitions.h"
-
-Include dependency graph for robot.h:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - -

-Classes

struct  MessageToRobot
 
- - - -

-Macros

#define serialPort   "/dev/ttyS0"
 
- - - - - - - - - - -

-Functions

int open_communication_robot (const char *path=serialPort)
 Ouvre la communication avec le robot. More...
 
int close_communication_robot (void)
 Ferme la communication avec le robot. More...
 
int send_command_to_robot (char cmd, const char *arg=NULL)
 Envoi une commande au robot et attends sa réponse. More...
 
-

Detailed Description

-

Fonctions for communicating with robot.

-
Author
L.Senaneuch
-
Version
1.0
-
Date
06/06/2017
- -

Definition in file robot.h.

-

Macro Definition Documentation

- -

◆ serialPort

- -
-
- - - - -
#define serialPort   "/dev/ttyS0"
-
- -

Definition at line 40 of file robot.h.

- -
-
-

Function Documentation

- -

◆ close_communication_robot()

- -
-
- - - - - - - - -
int close_communication_robot (void )
-
- -

Ferme la communication avec le robot.

-

Ferme le descripteur de fichier du port serie contrôlant le robot.

-
Returns
Retourne -1 en cas d'erreur ou 0 en cas de fermeture effectué
- -
-
- -

◆ open_communication_robot()

- -
-
- - - - - - - - -
int open_communication_robot (const char * path = serialPort)
-
- -

Ouvre la communication avec le robot.

-

Ouvre le serial port passé en paramétre. Par defaut cette fonction ouvre le port ttySO connecté au module xbee.

-
Parameters
- - -
pathChaine de caractère contenant le path du port serie à ouvrir.
-
-
-
Returns
Return -1 si l'ouverture c'est mal passé et 0 si le port est ouvert.
- -
-
- -

◆ send_command_to_robot()

- -
-
- - - - - - - - - - - - - - - - - - -
int send_command_to_robot (char cmd,
const char * arg = NULL 
)
-
- -

Envoi une commande au robot et attends sa réponse.

-

Envoi une commande au robot en ajoutant le checksum et lis la réponse du robot en verifiant le checksum. Le premier paramétre cmd correspond au type de commande ex : PING, SETMOVE ... Le second paramétre *arg correspond aux arguments à la commande ex : SETMOVE, "100" La fonction retourne un code confirmation transmise par le robot (ROBOT_CHEKSUM, ROBOT_ERROR, ROBOT_TIMED_OUT, ROBOT_OK, ROBOT_UKNOW_CMD)

-
Parameters
- - - -
cmdEntête de la commande
argArgument de la commande
-
-
-
Returns
Retourne un code confirmation.
- -
-
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h.js b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h.js deleted file mode 100644 index 9c39a86..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h.js +++ /dev/null @@ -1,8 +0,0 @@ -var robot_8h = -[ - [ "MessageToRobot", "struct_message_to_robot.html", "struct_message_to_robot" ], - [ "serialPort", "robot_8h.html#a32c8768c18732c59b503f8ee7515a693", null ], - [ "close_communication_robot", "robot_8h.html#a3fbce7530a62f9287f8a3b85b9c7e4d7", null ], - [ "open_communication_robot", "robot_8h.html#a0e70fa821a04d349552b8bd54f6935db", null ], - [ "send_command_to_robot", "robot_8h.html#abe88fd581be321a9d86ae7063abd2f65", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.map deleted file mode 100644 index 5726183..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.md5 deleted file mode 100644 index bfa5d8b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9dee0b0a6e7c8cd2ba54606b5bd229ef \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.png deleted file mode 100644 index a9d0df2..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__dep__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.map deleted file mode 100644 index 5487954..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.md5 deleted file mode 100644 index fc67b70..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ae0d08dc648656936c7f6ca3272fd6a3 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.png deleted file mode 100644 index 28bfa1c..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h_source.html b/software/raspberry/superviseur-robot/lib/doc/html/robot_8h_source.html deleted file mode 100644 index 4692fe3..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/robot_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -Bibliotheques TP RT: robot.h Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
robot.h
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #ifndef _ROBOT_H_
27 #define _ROBOT_H_
28 
29 #include <stdio.h>
30 #include <unistd.h>
31 #include <fcntl.h>
32 #include <termios.h>
33 #include <string.h>
34 #include <stdlib.h>
35 #include "definitions.h"
36 
37 #ifdef __FOR_PC__
38 #define serialPort "/dev/ttyUSB0"
39 #else
40 #define serialPort "/dev/ttyS0"
41 #endif /* __FOR_PC__ */
42 
43 typedef struct
44  {
45  char header[4];
46  char data[20];
48 
56 int open_communication_robot(const char * path=serialPort);
57 
65 
77 int send_command_to_robot(char cmd, const char * arg=NULL);
78 
79 #endif //_ROBOT_H_
int close_communication_robot(void)
Ferme la communication avec le robot.
-
#define serialPort
Definition: robot.h:40
- -
Various constants used in destjil project.
-
int open_communication_robot(const char *path=serialPort)
Ouvre la communication avec le robot.
-
int send_command_to_robot(char cmd, const char *arg=NULL)
Envoi une commande au robot et attends sa réponse.
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_0.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_0.html deleted file mode 100644 index f25360b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_0.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_0.js deleted file mode 100644 index f3a2382..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['acceptclient',['acceptClient',['../server_8h.html#abff9f8e931ecce919588b371dc511857',1,'server.h']]], - ['angle',['angle',['../struct_position.html#a733540df6c0f832676dc0846b34bb1e2',1,'Position']]], - ['arene',['Arene',['../image_8h.html#aa856a7cb8a1535c9f13096bede6c8586',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_1.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_1.html deleted file mode 100644 index b13f0f7..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_1.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_1.js deleted file mode 100644 index bc0e698..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_1.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['cam_5farena_5fconfirm',['CAM_ARENA_CONFIRM',['../definitions_8h.html#a15d9063cd3c60755685ceb75df4a7354',1,'definitions.h']]], - ['cam_5farena_5finfirm',['CAM_ARENA_INFIRM',['../definitions_8h.html#ac836c6abc7e32d2cf7f59ed2a8383ca7',1,'definitions.h']]], - ['cam_5fask_5farena',['CAM_ASK_ARENA',['../definitions_8h.html#a6418778d1f34e618aebd9ca1861ab500',1,'definitions.h']]], - ['cam_5fclose',['CAM_CLOSE',['../definitions_8h.html#a675009273c3923e8ad1a6d2818063b61',1,'definitions.h']]], - ['cam_5fcompute_5fposition',['CAM_COMPUTE_POSITION',['../definitions_8h.html#a74fdb9d00556feb699d3c72bd7b5d5e5',1,'definitions.h']]], - ['cam_5fopen',['CAM_OPEN',['../definitions_8h.html#a2a7149bbe097fae8e799ce2ab6f69390',1,'definitions.h']]], - ['cam_5fstop_5fcompute_5fposition',['CAM_STOP_COMPUTE_POSITION',['../definitions_8h.html#ae864cfaefbf5a210e67678b2144a289f',1,'definitions.h']]], - ['camera',['Camera',['../image_8h.html#a739dda3f6f6ddbab22617837b43a692a',1,'image.h']]], - ['center',['center',['../struct_position.html#aa56444be37071311cfa11aae3e2c2f64',1,'Position']]], - ['check_5farena',['CHECK_ARENA',['../monitor_8h.html#a22d20ac264e03c59d6941cb11386aa89',1,'monitor.h']]], - ['close_5fcamera',['close_camera',['../image_8h.html#a19eac11a04cb4b86fd32e6a36445ad5d',1,'image.h']]], - ['close_5fcom_5fdmb',['CLOSE_COM_DMB',['../definitions_8h.html#a1b18773c1ce9068c4d38c2cbd2900263',1,'definitions.h']]], - ['close_5fcommunication_5frobot',['close_communication_robot',['../robot_8h.html#a3fbce7530a62f9287f8a3b85b9c7e4d7',1,'robot.h']]], - ['closeserver',['closeServer',['../server_8h.html#ab65b2df50051036defe0f35366f5a3d6',1,'server.h']]], - ['closesocket',['closesocket',['../monitor_8h.html#ab6b45251e218af8f09c5d627b5262398',1,'monitor.h']]], - ['compress_5fimage',['compress_image',['../image_8h.html#a909ca7577f0ac2e4bd0ea21291690dce',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_2.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_2.html deleted file mode 100644 index 9543c57..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_2.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_2.js deleted file mode 100644 index 6d49e77..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_2.js +++ /dev/null @@ -1,34 +0,0 @@ -var searchData= -[ - ['data',['data',['../struct_message_to_mon.html#a4e5977ba9fb3fa07d435155731944d15',1,'MessageToMon::data()'],['../struct_message_from_mon.html#a1aea445500b0fa020a1b08eaff791107',1,'MessageFromMon::data()'],['../struct_message_to_robot.html#abf7dafbba72784855abd50469ba82705',1,'MessageToRobot::data()']]], - ['default_5finterface_5ffile',['DEFAULT_INTERFACE_FILE',['../monitor_8h.html#af533d8bd7d6a1d9f9efba3b259280e32',1,'monitor.h']]], - ['default_5fnodejs_5fpath',['DEFAULT_NODEJS_PATH',['../monitor_8h.html#a2c47b710f0858fe41c544517c6b2a2fd',1,'monitor.h']]], - ['default_5fparity',['DEFAULT_PARITY',['../monitor_8h.html#a939612a13947b5bb9fc848e3222a231d',1,'monitor.h']]], - ['default_5fport',['DEFAULT_PORT',['../monitor_8h.html#a16b710f592bf8f7900666392adc444dc',1,'monitor.h']]], - ['default_5fserver_5fport',['DEFAULT_SERVER_PORT',['../server_8h.html#af257e2a3e091629829857a2eb8931a7a',1,'server.h']]], - ['definitions_2eh',['definitions.h',['../definitions_8h.html',1,'']]], - ['detect_5farena',['detect_arena',['../image_8h.html#acad45df4061a55f17be0db97c1406249',1,'detect_arena(Image *monImage, Arene *rectangle): image.h'],['../monitor_8h.html#ab3be9ae187e8b98bb000ca0bca68e982',1,'DETECT_ARENA(): monitor.h']]], - ['detect_5fposition',['detect_position',['../image_8h.html#af9f6e2dd4409486f2f6446d1a8a02c40',1,'image.h']]], - ['direction',['direction',['../struct_position.html#a780d124971951424c0c63f6d81bb4d92',1,'Position']]], - ['dmb_5fbat_5fhigh',['DMB_BAT_HIGH',['../definitions_8h.html#ab34c46794a9de6746a96752668c73754',1,'definitions.h']]], - ['dmb_5fbat_5flow',['DMB_BAT_LOW',['../definitions_8h.html#a66c0c4960c1e81c8da8c8e1d4a202352',1,'definitions.h']]], - ['dmb_5fbat_5fmedium',['DMB_BAT_MEDIUM',['../definitions_8h.html#aea6ef1c13db1a8a4a29b065d0c3f73e4',1,'definitions.h']]], - ['dmb_5fbusy',['DMB_BUSY',['../definitions_8h.html#a3327443cd321f0c356a5d3d74377892b',1,'definitions.h']]], - ['dmb_5fdo_5fnothing',['DMB_DO_NOTHING',['../definitions_8h.html#a07650c5f6647c5143bac535fdbeb77d5',1,'definitions.h']]], - ['dmb_5fget_5fvbat',['DMB_GET_VBAT',['../definitions_8h.html#af1737e8fe4da4e8bc2d5db9d26c42462',1,'definitions.h']]], - ['dmb_5fgo_5fback',['DMB_GO_BACK',['../definitions_8h.html#a499f41cc19a4459de033687049cbbe71',1,'definitions.h']]], - ['dmb_5fgo_5fforward',['DMB_GO_FORWARD',['../definitions_8h.html#ae363a29a4961cd8a646a0ca9199bc6cf',1,'definitions.h']]], - ['dmb_5fgo_5fleft',['DMB_GO_LEFT',['../definitions_8h.html#aefcb838e73a335f1a2a6c914ee2ff752',1,'definitions.h']]], - ['dmb_5fgo_5fright',['DMB_GO_RIGHT',['../definitions_8h.html#ad681962f7b8cf4797ebd48be0405d1b9',1,'definitions.h']]], - ['dmb_5fidle',['DMB_IDLE',['../definitions_8h.html#a82b279c49221d3cd3d875d521dfb97b9',1,'definitions.h']]], - ['dmb_5fis_5fbusy',['DMB_IS_BUSY',['../definitions_8h.html#ad58c241121e685f26a291aa4bd5f9c80',1,'definitions.h']]], - ['dmb_5fmove',['DMB_MOVE',['../definitions_8h.html#ac48dee90eb71d036d001321674abbb8b',1,'definitions.h']]], - ['dmb_5fping',['DMB_PING',['../definitions_8h.html#acf7d51360dcb103fc57604725ec2816d',1,'definitions.h']]], - ['dmb_5freload_5fwd',['DMB_RELOAD_WD',['../definitions_8h.html#a2ca219902014ffb39aab27cca08a948f',1,'definitions.h']]], - ['dmb_5fstart_5fwith_5fwd',['DMB_START_WITH_WD',['../definitions_8h.html#adee1628bbc796ba55f4a349895f4e0fa',1,'definitions.h']]], - ['dmb_5fstart_5fwithout_5fwd',['DMB_START_WITHOUT_WD',['../definitions_8h.html#a5ebbd37042a6244b4f9d473ae7132780',1,'definitions.h']]], - ['dmb_5fstop_5fmove',['DMB_STOP_MOVE',['../definitions_8h.html#a7308179907a0a2989c162865e7a7979a',1,'definitions.h']]], - ['dmb_5fturn',['DMB_TURN',['../definitions_8h.html#ac6c5492c8100e73f8d30ed36072684db',1,'definitions.h']]], - ['draw_5farena',['draw_arena',['../image_8h.html#a5ffd032a466af45a505fb46252194bbf',1,'image.h']]], - ['draw_5fposition',['draw_position',['../image_8h.html#a869c3946d4a414b8730ca4f91fbd9556',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_3.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_3.html deleted file mode 100644 index 03405c0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_3.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_3.js deleted file mode 100644 index 8d4acc0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['free_5fmsgtomon_5fdata',['free_msgToMon_data',['../message_8h.html#a285193a5a9d3b142f3f1c53c471d3173',1,'message.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_4.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_4.html deleted file mode 100644 index 8e1f4b9..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_4.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_4.js deleted file mode 100644 index 55d5041..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['get_5fimage',['get_image',['../image_8h.html#ad904f3348c2d44f9c82435c94cd83844',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_5.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_5.html deleted file mode 100644 index 89a879e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_5.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_5.js deleted file mode 100644 index 51ee71d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_5.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['header',['header',['../struct_message_to_mon.html#acb1096bef5e5c300f3d795556fda852a',1,'MessageToMon::header()'],['../struct_message_from_mon.html#ad46f6e6dd24be5cb2bc5eae5b3cdd095',1,'MessageFromMon::header()'],['../struct_message_to_robot.html#ab00202c6cfdd86ea4cd891c972405db6',1,'MessageToRobot::header()']]], - ['header_5fmts_5fcamera',['HEADER_MTS_CAMERA',['../monitor_8h.html#a91e2658cf20010646211ba748885c180',1,'monitor.h']]], - ['header_5fmts_5fcom_5fdmb',['HEADER_MTS_COM_DMB',['../monitor_8h.html#a0c829d92889c5c9b2d485964ce933fab',1,'monitor.h']]], - ['header_5fmts_5fdmb_5forder',['HEADER_MTS_DMB_ORDER',['../monitor_8h.html#a5ccd30e6502bb94eaa13a597edb1f156',1,'monitor.h']]], - ['header_5fmts_5fmsg',['HEADER_MTS_MSG',['../monitor_8h.html#a980e8f9457e30018fddcd4d997f17a85',1,'monitor.h']]], - ['header_5fmts_5fstop',['HEADER_MTS_STOP',['../monitor_8h.html#a2be30c9a3e65eaf5502b8542a6ac6259',1,'monitor.h']]], - ['header_5fstm_5fack',['HEADER_STM_ACK',['../monitor_8h.html#af2325d19ae9da4310eb608c744149f53',1,'monitor.h']]], - ['header_5fstm_5fbat',['HEADER_STM_BAT',['../monitor_8h.html#a0de226ae5af8b83f3b163ff4413eef95',1,'monitor.h']]], - ['header_5fstm_5fimage',['HEADER_STM_IMAGE',['../monitor_8h.html#ad62b697bd25a71d171db46740aef2830',1,'monitor.h']]], - ['header_5fstm_5flost_5fdmb',['HEADER_STM_LOST_DMB',['../monitor_8h.html#afe29ce74d16751828da8aec7e13ad06b',1,'monitor.h']]], - ['header_5fstm_5fmes',['HEADER_STM_MES',['../monitor_8h.html#ac1034bccb09918cccd3ba142377a6788',1,'monitor.h']]], - ['header_5fstm_5fno_5fack',['HEADER_STM_NO_ACK',['../monitor_8h.html#ac2e64478522da4e3b45c139c0c72557f',1,'monitor.h']]], - ['header_5fstm_5fpos',['HEADER_STM_POS',['../monitor_8h.html#a6a07aae2539981459edc8070a0f019db',1,'monitor.h']]], - ['height',['HEIGHT',['../image_8h.html#aed89bd71aee8be823e8a20ec4e093c1e',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_6.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_6.html deleted file mode 100644 index 6afac06..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_6.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_6.js deleted file mode 100644 index e32b970..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['image',['Image',['../image_8h.html#a466446fef9c0348568bc6743186d1a38',1,'image.h']]], - ['image_2eh',['image.h',['../image_8h.html',1,'']]], - ['invalid_5fsocket',['INVALID_SOCKET',['../monitor_8h.html#a26769957ec1a2beaf223f33b66ee64ab',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_7.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_7.html deleted file mode 100644 index de19107..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_7.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_7.js deleted file mode 100644 index 2199e13..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jpg',['Jpg',['../image_8h.html#a9ac2855e21920c676a108df386ff9415',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_8.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_8.html deleted file mode 100644 index 11e27cd..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_8.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_8.js deleted file mode 100644 index 89bc51f..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_8.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['message_2eh',['message.h',['../message_8h.html',1,'']]], - ['messagefrommon',['MessageFromMon',['../struct_message_from_mon.html',1,'']]], - ['messagetomon',['MessageToMon',['../struct_message_to_mon.html',1,'']]], - ['messagetorobot',['MessageToRobot',['../struct_message_to_robot.html',1,'']]], - ['monitor_2eh',['monitor.h',['../monitor_8h.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_9.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_9.html deleted file mode 100644 index f8abbbe..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_9.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_9.js deleted file mode 100644 index 052c117..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['no_5farena',['NO_ARENA',['../monitor_8h.html#a1d58e03abc2a587c7f0a0665c94c0e68',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_a.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_a.html deleted file mode 100644 index 9601fce..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_a.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_a.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_a.js deleted file mode 100644 index dea0584..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_a.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['open_5fcamera',['open_camera',['../image_8h.html#aca0662ab31eac7fdb2d64fecc52ff1da',1,'image.h']]], - ['open_5fcom_5fdmb',['OPEN_COM_DMB',['../definitions_8h.html#aac798eaf6994ddcadd8a38ad8aba234f',1,'definitions.h']]], - ['open_5fcommunication_5frobot',['open_communication_robot',['../robot_8h.html#a0e70fa821a04d349552b8bd54f6935db',1,'robot.h']]], - ['openserver',['openServer',['../server_8h.html#a99b54d5b3404766f906f49605a4aa0e3',1,'server.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_b.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_b.html deleted file mode 100644 index 0814e4e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_b.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_b.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_b.js deleted file mode 100644 index 3648385..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_b.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['position',['Position',['../struct_position.html',1,'']]], - ['print_5fmsgtomon',['print_msgToMon',['../message_8h.html#ae409e822d69cee7483a2d41c62698a85',1,'message.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_c.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_c.html deleted file mode 100644 index da08c38..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_c.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_c.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_c.js deleted file mode 100644 index 4ce452a..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_c.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['receive_5fmessage_5ffrom_5fmonitor',['receive_message_from_monitor',['../monitor_8h.html#a61eca0d5b49118350db39583e1bd1032',1,'monitor.h']]], - ['receivedatafromserver',['receiveDataFromServer',['../server_8h.html#a8b66a2007f3f9ed8538428a309c9d368',1,'server.h']]], - ['receivedatafromserverfromclient',['receiveDataFromServerFromClient',['../server_8h.html#a247e0124af257d0cc7abc25a7c448d1b',1,'server.h']]], - ['robot_2eh',['robot.h',['../robot_8h.html',1,'']]], - ['robot_5fchecksum',['ROBOT_CHECKSUM',['../definitions_8h.html#af1118b8a83d446b4965347bba126a488',1,'definitions.h']]], - ['robot_5ferror',['ROBOT_ERROR',['../definitions_8h.html#a4aefbbdd5d35999aa0575ab7183148d4',1,'definitions.h']]], - ['robot_5fok',['ROBOT_OK',['../definitions_8h.html#ad7b2f95c0b423fb9784acb897b910c36',1,'definitions.h']]], - ['robot_5ftimed_5fout',['ROBOT_TIMED_OUT',['../definitions_8h.html#a624686d3af63394ee02f0a197967d44a',1,'definitions.h']]], - ['robot_5fuknown_5fcmd',['ROBOT_UKNOWN_CMD',['../definitions_8h.html#a70a2d5db14b900843364adb7cfe53ac8',1,'definitions.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_d.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_d.html deleted file mode 100644 index 9986c9c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_d.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_d.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_d.js deleted file mode 100644 index 6238e8a..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_d.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['send_5fcommand_5fto_5frobot',['send_command_to_robot',['../robot_8h.html#abe88fd581be321a9d86ae7063abd2f65',1,'robot.h']]], - ['send_5fmessage_5fto_5fmonitor',['send_message_to_monitor',['../monitor_8h.html#ac3d876b96642b6ee46f6a96b7ffcb864',1,'monitor.h']]], - ['senddatatoserver',['sendDataToServer',['../server_8h.html#a8d865d29914b980fd71ed8d347e4ec50',1,'server.h']]], - ['senddatatoserverforclient',['sendDataToServerForClient',['../server_8h.html#a4c2df7961aa7379ac79d80980a1c537b',1,'server.h']]], - ['sendimage',['sendImage',['../server_8h.html#a51b9372f5467705aa81d76ae034c7628',1,'server.h']]], - ['serialport',['serialPort',['../robot_8h.html#a32c8768c18732c59b503f8ee7515a693',1,'robot.h']]], - ['server_2eh',['server.h',['../server_8h.html',1,'']]], - ['set_5fmsgtomon_5fdata',['set_msgToMon_data',['../message_8h.html#aa938f8156bfca7379f533b751334ca6f',1,'message.h']]], - ['set_5fmsgtomon_5fheader',['set_msgToMon_header',['../message_8h.html#a8c768ba3ccfd64ba1e39079c967aff26',1,'message.h']]], - ['sockaddr',['SOCKADDR',['../monitor_8h.html#ae334b73cedf7204187dce3f817576009',1,'monitor.h']]], - ['sockaddr_5fin',['SOCKADDR_IN',['../monitor_8h.html#a29046dc0232f0e5c70adbc25090d77b8',1,'monitor.h']]], - ['socket',['SOCKET',['../monitor_8h.html#a8dc8083897335125630f1af5dafd5831',1,'monitor.h']]], - ['socket_5ferror',['SOCKET_ERROR',['../monitor_8h.html#a633b0396ff93d336a088412a190a5072',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_e.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_e.html deleted file mode 100644 index 9fa42bb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_e.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_e.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_e.js deleted file mode 100644 index 247fadb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_e.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['width',['WIDTH',['../image_8h.html#a241aeeb764887ae5e3de58b98f04b16d',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_f.html b/software/raspberry/superviseur-robot/lib/doc/html/search/all_f.html deleted file mode 100644 index 6ecfc0e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_f.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/all_f.js b/software/raspberry/superviseur-robot/lib/doc/html/search/all_f.js deleted file mode 100644 index 247fadb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/all_f.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['width',['WIDTH',['../image_8h.html#a241aeeb764887ae5e3de58b98f04b16d',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_0.html b/software/raspberry/superviseur-robot/lib/doc/html/search/classes_0.html deleted file mode 100644 index 1c3e406..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_0.js b/software/raspberry/superviseur-robot/lib/doc/html/search/classes_0.js deleted file mode 100644 index 380aa44..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['messagefrommon',['MessageFromMon',['../struct_message_from_mon.html',1,'']]], - ['messagetomon',['MessageToMon',['../struct_message_to_mon.html',1,'']]], - ['messagetorobot',['MessageToRobot',['../struct_message_to_robot.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_1.html b/software/raspberry/superviseur-robot/lib/doc/html/search/classes_1.html deleted file mode 100644 index a8e7069..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_1.js b/software/raspberry/superviseur-robot/lib/doc/html/search/classes_1.js deleted file mode 100644 index c314d7e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/classes_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['position',['Position',['../struct_position.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/close.png b/software/raspberry/superviseur-robot/lib/doc/html/search/close.png deleted file mode 100644 index 9342d3d..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/search/close.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_0.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_0.html deleted file mode 100644 index 5b25204..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_0.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_0.js deleted file mode 100644 index 389746a..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_0.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['cam_5farena_5fconfirm',['CAM_ARENA_CONFIRM',['../definitions_8h.html#a15d9063cd3c60755685ceb75df4a7354',1,'definitions.h']]], - ['cam_5farena_5finfirm',['CAM_ARENA_INFIRM',['../definitions_8h.html#ac836c6abc7e32d2cf7f59ed2a8383ca7',1,'definitions.h']]], - ['cam_5fask_5farena',['CAM_ASK_ARENA',['../definitions_8h.html#a6418778d1f34e618aebd9ca1861ab500',1,'definitions.h']]], - ['cam_5fclose',['CAM_CLOSE',['../definitions_8h.html#a675009273c3923e8ad1a6d2818063b61',1,'definitions.h']]], - ['cam_5fcompute_5fposition',['CAM_COMPUTE_POSITION',['../definitions_8h.html#a74fdb9d00556feb699d3c72bd7b5d5e5',1,'definitions.h']]], - ['cam_5fopen',['CAM_OPEN',['../definitions_8h.html#a2a7149bbe097fae8e799ce2ab6f69390',1,'definitions.h']]], - ['cam_5fstop_5fcompute_5fposition',['CAM_STOP_COMPUTE_POSITION',['../definitions_8h.html#ae864cfaefbf5a210e67678b2144a289f',1,'definitions.h']]], - ['check_5farena',['CHECK_ARENA',['../monitor_8h.html#a22d20ac264e03c59d6941cb11386aa89',1,'monitor.h']]], - ['close_5fcom_5fdmb',['CLOSE_COM_DMB',['../definitions_8h.html#a1b18773c1ce9068c4d38c2cbd2900263',1,'definitions.h']]], - ['closesocket',['closesocket',['../monitor_8h.html#ab6b45251e218af8f09c5d627b5262398',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_1.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_1.html deleted file mode 100644 index 91488cb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_1.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_1.js deleted file mode 100644 index 8a476cc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_1.js +++ /dev/null @@ -1,28 +0,0 @@ -var searchData= -[ - ['default_5finterface_5ffile',['DEFAULT_INTERFACE_FILE',['../monitor_8h.html#af533d8bd7d6a1d9f9efba3b259280e32',1,'monitor.h']]], - ['default_5fnodejs_5fpath',['DEFAULT_NODEJS_PATH',['../monitor_8h.html#a2c47b710f0858fe41c544517c6b2a2fd',1,'monitor.h']]], - ['default_5fparity',['DEFAULT_PARITY',['../monitor_8h.html#a939612a13947b5bb9fc848e3222a231d',1,'monitor.h']]], - ['default_5fport',['DEFAULT_PORT',['../monitor_8h.html#a16b710f592bf8f7900666392adc444dc',1,'monitor.h']]], - ['default_5fserver_5fport',['DEFAULT_SERVER_PORT',['../server_8h.html#af257e2a3e091629829857a2eb8931a7a',1,'server.h']]], - ['detect_5farena',['DETECT_ARENA',['../monitor_8h.html#ab3be9ae187e8b98bb000ca0bca68e982',1,'monitor.h']]], - ['dmb_5fbat_5fhigh',['DMB_BAT_HIGH',['../definitions_8h.html#ab34c46794a9de6746a96752668c73754',1,'definitions.h']]], - ['dmb_5fbat_5flow',['DMB_BAT_LOW',['../definitions_8h.html#a66c0c4960c1e81c8da8c8e1d4a202352',1,'definitions.h']]], - ['dmb_5fbat_5fmedium',['DMB_BAT_MEDIUM',['../definitions_8h.html#aea6ef1c13db1a8a4a29b065d0c3f73e4',1,'definitions.h']]], - ['dmb_5fbusy',['DMB_BUSY',['../definitions_8h.html#a3327443cd321f0c356a5d3d74377892b',1,'definitions.h']]], - ['dmb_5fdo_5fnothing',['DMB_DO_NOTHING',['../definitions_8h.html#a07650c5f6647c5143bac535fdbeb77d5',1,'definitions.h']]], - ['dmb_5fget_5fvbat',['DMB_GET_VBAT',['../definitions_8h.html#af1737e8fe4da4e8bc2d5db9d26c42462',1,'definitions.h']]], - ['dmb_5fgo_5fback',['DMB_GO_BACK',['../definitions_8h.html#a499f41cc19a4459de033687049cbbe71',1,'definitions.h']]], - ['dmb_5fgo_5fforward',['DMB_GO_FORWARD',['../definitions_8h.html#ae363a29a4961cd8a646a0ca9199bc6cf',1,'definitions.h']]], - ['dmb_5fgo_5fleft',['DMB_GO_LEFT',['../definitions_8h.html#aefcb838e73a335f1a2a6c914ee2ff752',1,'definitions.h']]], - ['dmb_5fgo_5fright',['DMB_GO_RIGHT',['../definitions_8h.html#ad681962f7b8cf4797ebd48be0405d1b9',1,'definitions.h']]], - ['dmb_5fidle',['DMB_IDLE',['../definitions_8h.html#a82b279c49221d3cd3d875d521dfb97b9',1,'definitions.h']]], - ['dmb_5fis_5fbusy',['DMB_IS_BUSY',['../definitions_8h.html#ad58c241121e685f26a291aa4bd5f9c80',1,'definitions.h']]], - ['dmb_5fmove',['DMB_MOVE',['../definitions_8h.html#ac48dee90eb71d036d001321674abbb8b',1,'definitions.h']]], - ['dmb_5fping',['DMB_PING',['../definitions_8h.html#acf7d51360dcb103fc57604725ec2816d',1,'definitions.h']]], - ['dmb_5freload_5fwd',['DMB_RELOAD_WD',['../definitions_8h.html#a2ca219902014ffb39aab27cca08a948f',1,'definitions.h']]], - ['dmb_5fstart_5fwith_5fwd',['DMB_START_WITH_WD',['../definitions_8h.html#adee1628bbc796ba55f4a349895f4e0fa',1,'definitions.h']]], - ['dmb_5fstart_5fwithout_5fwd',['DMB_START_WITHOUT_WD',['../definitions_8h.html#a5ebbd37042a6244b4f9d473ae7132780',1,'definitions.h']]], - ['dmb_5fstop_5fmove',['DMB_STOP_MOVE',['../definitions_8h.html#a7308179907a0a2989c162865e7a7979a',1,'definitions.h']]], - ['dmb_5fturn',['DMB_TURN',['../definitions_8h.html#ac6c5492c8100e73f8d30ed36072684db',1,'definitions.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_2.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_2.html deleted file mode 100644 index 8655993..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_2.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_2.js deleted file mode 100644 index 25b8007..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_2.js +++ /dev/null @@ -1,16 +0,0 @@ -var searchData= -[ - ['header_5fmts_5fcamera',['HEADER_MTS_CAMERA',['../monitor_8h.html#a91e2658cf20010646211ba748885c180',1,'monitor.h']]], - ['header_5fmts_5fcom_5fdmb',['HEADER_MTS_COM_DMB',['../monitor_8h.html#a0c829d92889c5c9b2d485964ce933fab',1,'monitor.h']]], - ['header_5fmts_5fdmb_5forder',['HEADER_MTS_DMB_ORDER',['../monitor_8h.html#a5ccd30e6502bb94eaa13a597edb1f156',1,'monitor.h']]], - ['header_5fmts_5fmsg',['HEADER_MTS_MSG',['../monitor_8h.html#a980e8f9457e30018fddcd4d997f17a85',1,'monitor.h']]], - ['header_5fmts_5fstop',['HEADER_MTS_STOP',['../monitor_8h.html#a2be30c9a3e65eaf5502b8542a6ac6259',1,'monitor.h']]], - ['header_5fstm_5fack',['HEADER_STM_ACK',['../monitor_8h.html#af2325d19ae9da4310eb608c744149f53',1,'monitor.h']]], - ['header_5fstm_5fbat',['HEADER_STM_BAT',['../monitor_8h.html#a0de226ae5af8b83f3b163ff4413eef95',1,'monitor.h']]], - ['header_5fstm_5fimage',['HEADER_STM_IMAGE',['../monitor_8h.html#ad62b697bd25a71d171db46740aef2830',1,'monitor.h']]], - ['header_5fstm_5flost_5fdmb',['HEADER_STM_LOST_DMB',['../monitor_8h.html#afe29ce74d16751828da8aec7e13ad06b',1,'monitor.h']]], - ['header_5fstm_5fmes',['HEADER_STM_MES',['../monitor_8h.html#ac1034bccb09918cccd3ba142377a6788',1,'monitor.h']]], - ['header_5fstm_5fno_5fack',['HEADER_STM_NO_ACK',['../monitor_8h.html#ac2e64478522da4e3b45c139c0c72557f',1,'monitor.h']]], - ['header_5fstm_5fpos',['HEADER_STM_POS',['../monitor_8h.html#a6a07aae2539981459edc8070a0f019db',1,'monitor.h']]], - ['height',['HEIGHT',['../image_8h.html#aed89bd71aee8be823e8a20ec4e093c1e',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_3.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_3.html deleted file mode 100644 index a55d3ff..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_3.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_3.js deleted file mode 100644 index 8b56e7a..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['invalid_5fsocket',['INVALID_SOCKET',['../monitor_8h.html#a26769957ec1a2beaf223f33b66ee64ab',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_4.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_4.html deleted file mode 100644 index 54da39a..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_4.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_4.js deleted file mode 100644 index 052c117..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['no_5farena',['NO_ARENA',['../monitor_8h.html#a1d58e03abc2a587c7f0a0665c94c0e68',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_5.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_5.html deleted file mode 100644 index dd7bfdc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_5.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_5.js deleted file mode 100644 index 5761a1f..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['open_5fcom_5fdmb',['OPEN_COM_DMB',['../definitions_8h.html#aac798eaf6994ddcadd8a38ad8aba234f',1,'definitions.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_6.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_6.html deleted file mode 100644 index 58d00e9..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_6.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_6.js deleted file mode 100644 index b08650f..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_6.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['robot_5fchecksum',['ROBOT_CHECKSUM',['../definitions_8h.html#af1118b8a83d446b4965347bba126a488',1,'definitions.h']]], - ['robot_5ferror',['ROBOT_ERROR',['../definitions_8h.html#a4aefbbdd5d35999aa0575ab7183148d4',1,'definitions.h']]], - ['robot_5fok',['ROBOT_OK',['../definitions_8h.html#ad7b2f95c0b423fb9784acb897b910c36',1,'definitions.h']]], - ['robot_5ftimed_5fout',['ROBOT_TIMED_OUT',['../definitions_8h.html#a624686d3af63394ee02f0a197967d44a',1,'definitions.h']]], - ['robot_5fuknown_5fcmd',['ROBOT_UKNOWN_CMD',['../definitions_8h.html#a70a2d5db14b900843364adb7cfe53ac8',1,'definitions.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_7.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_7.html deleted file mode 100644 index 275e1b3..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_7.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_7.js deleted file mode 100644 index 691f001..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_7.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['serialport',['serialPort',['../robot_8h.html#a32c8768c18732c59b503f8ee7515a693',1,'robot.h']]], - ['socket_5ferror',['SOCKET_ERROR',['../monitor_8h.html#a633b0396ff93d336a088412a190a5072',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_8.html b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_8.html deleted file mode 100644 index de651d9..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_8.js b/software/raspberry/superviseur-robot/lib/doc/html/search/defines_8.js deleted file mode 100644 index 247fadb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/defines_8.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['width',['WIDTH',['../image_8h.html#a241aeeb764887ae5e3de58b98f04b16d',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_0.html b/software/raspberry/superviseur-robot/lib/doc/html/search/files_0.html deleted file mode 100644 index 4f272b8..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_0.js b/software/raspberry/superviseur-robot/lib/doc/html/search/files_0.js deleted file mode 100644 index 2d98f03..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['definitions_2eh',['definitions.h',['../definitions_8h.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_1.html b/software/raspberry/superviseur-robot/lib/doc/html/search/files_1.html deleted file mode 100644 index dcce422..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_1.js b/software/raspberry/superviseur-robot/lib/doc/html/search/files_1.js deleted file mode 100644 index a609633..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['image_2eh',['image.h',['../image_8h.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_2.html b/software/raspberry/superviseur-robot/lib/doc/html/search/files_2.html deleted file mode 100644 index d5c6c3b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_2.js b/software/raspberry/superviseur-robot/lib/doc/html/search/files_2.js deleted file mode 100644 index e3d443c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['message_2eh',['message.h',['../message_8h.html',1,'']]], - ['monitor_2eh',['monitor.h',['../monitor_8h.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_3.html b/software/raspberry/superviseur-robot/lib/doc/html/search/files_3.html deleted file mode 100644 index d5a9528..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_3.js b/software/raspberry/superviseur-robot/lib/doc/html/search/files_3.js deleted file mode 100644 index afe17a9..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['robot_2eh',['robot.h',['../robot_8h.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_4.html b/software/raspberry/superviseur-robot/lib/doc/html/search/files_4.html deleted file mode 100644 index 7b4c42a..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/files_4.js b/software/raspberry/superviseur-robot/lib/doc/html/search/files_4.js deleted file mode 100644 index ef3bc5e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['server_2eh',['server.h',['../server_8h.html',1,'']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_0.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_0.html deleted file mode 100644 index 4e6d87d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_0.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_0.js deleted file mode 100644 index e82f937..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['acceptclient',['acceptClient',['../server_8h.html#abff9f8e931ecce919588b371dc511857',1,'server.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_1.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_1.html deleted file mode 100644 index b343e2d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_1.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_1.js deleted file mode 100644 index 07615ce..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_1.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['close_5fcamera',['close_camera',['../image_8h.html#a19eac11a04cb4b86fd32e6a36445ad5d',1,'image.h']]], - ['close_5fcommunication_5frobot',['close_communication_robot',['../robot_8h.html#a3fbce7530a62f9287f8a3b85b9c7e4d7',1,'robot.h']]], - ['closeserver',['closeServer',['../server_8h.html#ab65b2df50051036defe0f35366f5a3d6',1,'server.h']]], - ['compress_5fimage',['compress_image',['../image_8h.html#a909ca7577f0ac2e4bd0ea21291690dce',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_2.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_2.html deleted file mode 100644 index ecce2f3..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_2.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_2.js deleted file mode 100644 index 36d5731..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_2.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['detect_5farena',['detect_arena',['../image_8h.html#acad45df4061a55f17be0db97c1406249',1,'image.h']]], - ['detect_5fposition',['detect_position',['../image_8h.html#af9f6e2dd4409486f2f6446d1a8a02c40',1,'image.h']]], - ['draw_5farena',['draw_arena',['../image_8h.html#a5ffd032a466af45a505fb46252194bbf',1,'image.h']]], - ['draw_5fposition',['draw_position',['../image_8h.html#a869c3946d4a414b8730ca4f91fbd9556',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_3.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_3.html deleted file mode 100644 index 15f06ab..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_3.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_3.js deleted file mode 100644 index 8d4acc0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['free_5fmsgtomon_5fdata',['free_msgToMon_data',['../message_8h.html#a285193a5a9d3b142f3f1c53c471d3173',1,'message.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_4.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_4.html deleted file mode 100644 index 8985ff2..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_4.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_4.js deleted file mode 100644 index 55d5041..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['get_5fimage',['get_image',['../image_8h.html#ad904f3348c2d44f9c82435c94cd83844',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_5.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_5.html deleted file mode 100644 index 0314918..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_5.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_5.js deleted file mode 100644 index 74d8e89..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_5.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['open_5fcamera',['open_camera',['../image_8h.html#aca0662ab31eac7fdb2d64fecc52ff1da',1,'image.h']]], - ['open_5fcommunication_5frobot',['open_communication_robot',['../robot_8h.html#a0e70fa821a04d349552b8bd54f6935db',1,'robot.h']]], - ['openserver',['openServer',['../server_8h.html#a99b54d5b3404766f906f49605a4aa0e3',1,'server.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_6.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_6.html deleted file mode 100644 index c506123..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_6.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_6.js deleted file mode 100644 index 1efaebf..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['print_5fmsgtomon',['print_msgToMon',['../message_8h.html#ae409e822d69cee7483a2d41c62698a85',1,'message.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_7.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_7.html deleted file mode 100644 index 83a7b84..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_7.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_7.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_7.js deleted file mode 100644 index c0610c4..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_7.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['receive_5fmessage_5ffrom_5fmonitor',['receive_message_from_monitor',['../monitor_8h.html#a61eca0d5b49118350db39583e1bd1032',1,'monitor.h']]], - ['receivedatafromserver',['receiveDataFromServer',['../server_8h.html#a8b66a2007f3f9ed8538428a309c9d368',1,'server.h']]], - ['receivedatafromserverfromclient',['receiveDataFromServerFromClient',['../server_8h.html#a247e0124af257d0cc7abc25a7c448d1b',1,'server.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_8.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_8.html deleted file mode 100644 index b55f0e6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_8.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_8.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_8.js deleted file mode 100644 index 116bbfc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_8.js +++ /dev/null @@ -1,10 +0,0 @@ -var searchData= -[ - ['send_5fcommand_5fto_5frobot',['send_command_to_robot',['../robot_8h.html#abe88fd581be321a9d86ae7063abd2f65',1,'robot.h']]], - ['send_5fmessage_5fto_5fmonitor',['send_message_to_monitor',['../monitor_8h.html#ac3d876b96642b6ee46f6a96b7ffcb864',1,'monitor.h']]], - ['senddatatoserver',['sendDataToServer',['../server_8h.html#a8d865d29914b980fd71ed8d347e4ec50',1,'server.h']]], - ['senddatatoserverforclient',['sendDataToServerForClient',['../server_8h.html#a4c2df7961aa7379ac79d80980a1c537b',1,'server.h']]], - ['sendimage',['sendImage',['../server_8h.html#a51b9372f5467705aa81d76ae034c7628',1,'server.h']]], - ['set_5fmsgtomon_5fdata',['set_msgToMon_data',['../message_8h.html#aa938f8156bfca7379f533b751334ca6f',1,'message.h']]], - ['set_5fmsgtomon_5fheader',['set_msgToMon_header',['../message_8h.html#a8c768ba3ccfd64ba1e39079c967aff26',1,'message.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_9.html b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_9.html deleted file mode 100644 index c73f07b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_9.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_9.js b/software/raspberry/superviseur-robot/lib/doc/html/search/functions_9.js deleted file mode 100644 index 229021e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/functions_9.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['send_5fcommand_5fto_5frobot',['send_command_to_robot',['../robot_8h.html#abe88fd581be321a9d86ae7063abd2f65',1,'send_command_to_robot(char cmd, const char *arg=NULL): robot.cpp'],['../robot_8cpp.html#a68c01c5d6226d21fc0d141f681806677',1,'send_command_to_robot(char cmd, const char *arg): robot.cpp']]], - ['send_5fmessage_5fto_5fmonitor',['send_message_to_monitor',['../monitor_8h.html#ac3d876b96642b6ee46f6a96b7ffcb864',1,'send_message_to_monitor(const char *typeMessage, const void *data=NULL): monitor.cpp'],['../monitor_8cpp.html#af49d46447ce41019bd13a2c07a000644',1,'send_message_to_monitor(const char *typeMessage, const void *data): monitor.cpp']]], - ['sendcmd',['sendCmd',['../robot_8cpp.html#ac9d64c6d05c20ae9fdb8c158e2ee7098',1,'robot.cpp']]], - ['senddatatoserver',['sendDataToServer',['../server_8h.html#a8d865d29914b980fd71ed8d347e4ec50',1,'sendDataToServer(char *data, int length): server.cpp'],['../server_8cpp.html#a8d865d29914b980fd71ed8d347e4ec50',1,'sendDataToServer(char *data, int length): server.cpp']]], - ['senddatatoserverforclient',['sendDataToServerForClient',['../server_8h.html#a4c2df7961aa7379ac79d80980a1c537b',1,'sendDataToServerForClient(int client, char *data, int length): server.cpp'],['../server_8cpp.html#a4c2df7961aa7379ac79d80980a1c537b',1,'sendDataToServerForClient(int client, char *data, int length): server.cpp']]], - ['sendmessage',['sendMessage',['../monitor_8cpp.html#a7265ec937de7d9ca68b81e5bd8203962',1,'monitor.cpp']]], - ['serverreceive',['serverReceive',['../monitor_8cpp.html#a04c8d7ed93b301fafe6dcc08d64ba21b',1,'monitor.cpp']]], - ['set_5fmsgtomon_5fdata',['set_msgToMon_data',['../message_8h.html#aa938f8156bfca7379f533b751334ca6f',1,'set_msgToMon_data(MessageToMon *msg, void *data): message.cpp'],['../message_8cpp.html#aa938f8156bfca7379f533b751334ca6f',1,'set_msgToMon_data(MessageToMon *msg, void *data): message.cpp']]], - ['set_5fmsgtomon_5fheader',['set_msgToMon_header',['../message_8h.html#a8c768ba3ccfd64ba1e39079c967aff26',1,'set_msgToMon_header(MessageToMon *msg, char *header): message.cpp'],['../message_8cpp.html#a8c768ba3ccfd64ba1e39079c967aff26',1,'set_msgToMon_header(MessageToMon *msg, char *header): message.cpp']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/mag_sel.png b/software/raspberry/superviseur-robot/lib/doc/html/search/mag_sel.png deleted file mode 100644 index 81f6040..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/search/mag_sel.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/nomatches.html b/software/raspberry/superviseur-robot/lib/doc/html/search/nomatches.html deleted file mode 100644 index b1ded27..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
-
No Matches
-
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/search.css b/software/raspberry/superviseur-robot/lib/doc/html/search/search.css deleted file mode 100644 index 3cf9df9..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/search.js b/software/raspberry/superviseur-robot/lib/doc/html/search/search.js deleted file mode 100644 index dedce3b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/search.js +++ /dev/null @@ -1,791 +0,0 @@ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_0.js b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_0.js deleted file mode 100644 index 3df5a05..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['arene',['Arene',['../image_8h.html#aa856a7cb8a1535c9f13096bede6c8586',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_1.html b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_1.html deleted file mode 100644 index b77c533..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_1.js b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_1.js deleted file mode 100644 index 3c0e5c9..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['camera',['Camera',['../image_8h.html#a739dda3f6f6ddbab22617837b43a692a',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_2.html b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_2.html deleted file mode 100644 index 076311d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_2.js b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_2.js deleted file mode 100644 index a5f6dfc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_2.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['image',['Image',['../image_8h.html#a466446fef9c0348568bc6743186d1a38',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_3.html b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_3.html deleted file mode 100644 index a4a727f..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_3.js b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_3.js deleted file mode 100644 index 2199e13..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['jpg',['Jpg',['../image_8h.html#a9ac2855e21920c676a108df386ff9415',1,'image.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_4.html b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_4.html deleted file mode 100644 index be033cd..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_4.js b/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_4.js deleted file mode 100644 index a21c8be..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/typedefs_4.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['sockaddr',['SOCKADDR',['../monitor_8h.html#ae334b73cedf7204187dce3f817576009',1,'monitor.h']]], - ['sockaddr_5fin',['SOCKADDR_IN',['../monitor_8h.html#a29046dc0232f0e5c70adbc25090d77b8',1,'monitor.h']]], - ['socket',['SOCKET',['../monitor_8h.html#a8dc8083897335125630f1af5dafd5831',1,'monitor.h']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_0.html b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_0.html deleted file mode 100644 index 74ce807..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_0.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_0.js b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_0.js deleted file mode 100644 index 5d2223d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['angle',['angle',['../struct_position.html#a733540df6c0f832676dc0846b34bb1e2',1,'Position']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_1.html b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_1.html deleted file mode 100644 index 84237b6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_1.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_1.js b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_1.js deleted file mode 100644 index bb7f6a4..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_1.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['center',['center',['../struct_position.html#aa56444be37071311cfa11aae3e2c2f64',1,'Position']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_2.html b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_2.html deleted file mode 100644 index 5c9de1a..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_2.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_2.js b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_2.js deleted file mode 100644 index 1abf9b6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['data',['data',['../struct_message_to_mon.html#a4e5977ba9fb3fa07d435155731944d15',1,'MessageToMon::data()'],['../struct_message_from_mon.html#a1aea445500b0fa020a1b08eaff791107',1,'MessageFromMon::data()'],['../struct_message_to_robot.html#abf7dafbba72784855abd50469ba82705',1,'MessageToRobot::data()']]], - ['direction',['direction',['../struct_position.html#a780d124971951424c0c63f6d81bb4d92',1,'Position']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_3.html b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_3.html deleted file mode 100644 index f95e34c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_3.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_3.js b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_3.js deleted file mode 100644 index 1a30264..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['header',['header',['../struct_message_to_mon.html#acb1096bef5e5c300f3d795556fda852a',1,'MessageToMon::header()'],['../struct_message_from_mon.html#ad46f6e6dd24be5cb2bc5eae5b3cdd095',1,'MessageFromMon::header()'],['../struct_message_to_robot.html#ab00202c6cfdd86ea4cd891c972405db6',1,'MessageToRobot::header()']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_4.html b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_4.html deleted file mode 100644 index d7db285..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_4.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_4.js b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_4.js deleted file mode 100644 index 1a30264..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['header',['header',['../struct_message_to_mon.html#acb1096bef5e5c300f3d795556fda852a',1,'MessageToMon::header()'],['../struct_message_from_mon.html#ad46f6e6dd24be5cb2bc5eae5b3cdd095',1,'MessageFromMon::header()'],['../struct_message_to_robot.html#ab00202c6cfdd86ea4cd891c972405db6',1,'MessageToRobot::header()']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_5.html b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_5.html deleted file mode 100644 index 7bbceeb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_5.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_5.js b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_5.js deleted file mode 100644 index 35e2e9d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['recsize',['recsize',['../monitor_8cpp.html#acd1a03adb2455aaacbd886642518d569',1,'monitor.cpp']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_6.html b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_6.html deleted file mode 100644 index 4eb162d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_6.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
-
Loading...
-
- -
Searching...
-
No Matches
- -
- - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_6.js b/software/raspberry/superviseur-robot/lib/doc/html/search/variables_6.js deleted file mode 100644 index 3eb3616..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/search/variables_6.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['sock',['sock',['../monitor_8cpp.html#a6e91849780a994f2adde299b33642829',1,'monitor.cpp']]], - ['socketfd',['socketFD',['../server_8cpp.html#a67917b0d31c20024dba33363eb8db5a2',1,'server.cpp']]], - ['ssin',['ssin',['../monitor_8cpp.html#a1f38ae3a59ce304779ebbca10378654a',1,'monitor.cpp']]] -]; diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp.html b/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp.html deleted file mode 100644 index 239257b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp.html +++ /dev/null @@ -1,403 +0,0 @@ - - - - - - - -Bibliotheques TP RT: src/server.cpp File Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
server.cpp File Reference
-
-
- -

Library for opening a TCP server, receiving data and sending message to monitor. -More...

-
#include "server.h"
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netinet/in.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-Include dependency graph for server.cpp:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - -

-Macros

#define NB_CONNECTION_MAX   1
 
- - - - - - - - - - - - - - - -

-Functions

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)
 
- - - - - -

-Variables

int socketFD = -1
 
int clientID = -1
 
-

Detailed Description

-

Library for opening a TCP server, receiving data and sending message to monitor.

-
Author
PE.Hladik
-
Version
1.0
-
Date
06/06/2017
- -

Definition in file server.cpp.

-

Macro Definition Documentation

- -

◆ NB_CONNECTION_MAX

- -
-
- - - - -
#define NB_CONNECTION_MAX   1
-
- -

Definition at line 35 of file server.cpp.

- -
-
-

Function Documentation

- -

◆ acceptClient()

- -
-
- - - - - - - -
int acceptClient ()
-
- -

Definition at line 71 of file server.cpp.

- -
-
- -

◆ closeServer()

- -
-
- - - - - - - -
int closeServer ()
-
- -

Definition at line 63 of file server.cpp.

- -
-
- -

◆ openServer()

- -
-
- - - - - - - - -
int openServer (int port)
-
- -

Definition at line 40 of file server.cpp.

- -
-
- -

◆ receiveDataFromServer()

- -
-
- - - - - - - - - - - - - - - - - - -
int receiveDataFromServer (char * data,
int size 
)
-
- -

Definition at line 95 of file server.cpp.

- -
-
- -

◆ receiveDataFromServerFromClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int receiveDataFromServerFromClient (int client,
char * data,
int size 
)
-
- -

Definition at line 99 of file server.cpp.

- -
-
- -

◆ sendDataToServer()

- -
-
- - - - - - - - - - - - - - - - - - -
int sendDataToServer (char * data,
int length 
)
-
- -

Definition at line 85 of file server.cpp.

- -
-
- -

◆ sendDataToServerForClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int sendDataToServerForClient (int client,
char * data,
int length 
)
-
- -

Definition at line 89 of file server.cpp.

- -
-
-

Variable Documentation

- -

◆ clientID

- -
-
- - - - -
int clientID = -1
-
- -

Definition at line 38 of file server.cpp.

- -
-
- -

◆ socketFD

- -
-
- - - - -
int socketFD = -1
-
- -

Definition at line 37 of file server.cpp.

- -
-
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp.js b/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp.js deleted file mode 100644 index c22f2e6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp.js +++ /dev/null @@ -1,13 +0,0 @@ -var server_8cpp = -[ - [ "NB_CONNECTION_MAX", "server_8cpp.html#ad1106125b13c36a78d012177dc2aa67c", null ], - [ "acceptClient", "server_8cpp.html#abff9f8e931ecce919588b371dc511857", null ], - [ "closeServer", "server_8cpp.html#ab65b2df50051036defe0f35366f5a3d6", null ], - [ "openServer", "server_8cpp.html#a99b54d5b3404766f906f49605a4aa0e3", null ], - [ "receiveDataFromServer", "server_8cpp.html#a8b66a2007f3f9ed8538428a309c9d368", null ], - [ "receiveDataFromServerFromClient", "server_8cpp.html#a247e0124af257d0cc7abc25a7c448d1b", null ], - [ "sendDataToServer", "server_8cpp.html#a8d865d29914b980fd71ed8d347e4ec50", null ], - [ "sendDataToServerForClient", "server_8cpp.html#a4c2df7961aa7379ac79d80980a1c537b", null ], - [ "clientID", "server_8cpp.html#a2e938cd63a2404d0902c57205706872a", null ], - [ "socketFD", "server_8cpp.html#a67917b0d31c20024dba33363eb8db5a2", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.map deleted file mode 100644 index 8d35f84..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.md5 deleted file mode 100644 index 1a78bf6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -51d07197f818cd5682cf375b3f0bed2e \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.png deleted file mode 100644 index d75f091..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp_source.html b/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp_source.html deleted file mode 100644 index 2daf759..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8cpp_source.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -Bibliotheques TP RT: src/server.cpp Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
server.cpp
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #include "server.h"
27 #include <sys/socket.h>
28 #include <arpa/inet.h>
29 #include <netinet/in.h>
30 
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include <unistd.h>
34 
35 #define NB_CONNECTION_MAX 1
36 
37 int socketFD = -1;
38 int clientID = -1;
39 
40 int openServer(int port) {
41  struct sockaddr_in server;
42 
43  socketFD = socket(AF_INET, SOCK_STREAM, 0);
44  if (socketFD < 0) {
45  perror("Can not create socket");
46  exit(-1);
47  }
48 
49  server.sin_addr.s_addr = INADDR_ANY;
50  server.sin_family = AF_INET;
51  server.sin_port = htons(port);
52 
53  if (bind(socketFD, (struct sockaddr *) &server, sizeof (server)) < 0) {
54  perror("Can not bind socket");
55  exit(-1);
56  }
57 
58  listen(socketFD, NB_CONNECTION_MAX);
59 
60  return socketFD;
61 }
62 
63 int closeServer() {
64  close(socketFD);
65 
66  socketFD = -1;
67 
68  return 0;
69 }
70 
71 int acceptClient() {
72  struct sockaddr_in client;
73  int c = sizeof (struct sockaddr_in);
74 
75  clientID = accept(socketFD, (struct sockaddr *) &client, (socklen_t*) & c);
76 
77  if (clientID < 0) {
78  perror("Accept failed in acceptClient");
79  exit(-1);
80  }
81 
82  return clientID;
83 }
84 
85 int sendDataToServer(char *data, int length) {
86  return sendDataToServerForClient(clientID, data, length);
87 }
88 
89 int sendDataToServerForClient(int client, char *data, int length) {
90  if (client >= 0)
91  return write(client, (void*)data, length);
92  else return 0;
93 }
94 
95 int receiveDataFromServer(char *data, int size) {
96  return receiveDataFromServerFromClient(clientID, data, size);
97 }
98 
99 int receiveDataFromServerFromClient(int client, char *data, int size) {
100  char length = 0;
101 
102  if (client > 0) {
103  if ((length = recv(client, (void*)data, size, 0)) > 0) {
104  data[length] = 0;
105  }
106  }
107 
108  return length;
109 }
110 
111 
112 
113 
int receiveDataFromServerFromClient(int client, char *data, int size)
Definition: server.cpp:99
-
int closeServer()
Definition: server.cpp:63
-
#define NB_CONNECTION_MAX
Definition: server.cpp:35
-
int clientID
Definition: server.cpp:38
- -
int receiveDataFromServer(char *data, int size)
Definition: server.cpp:95
-
int openServer(int port)
Definition: server.cpp:40
-
int acceptClient()
Definition: server.cpp:71
-
int socketFD
Definition: server.cpp:37
-
int sendDataToServerForClient(int client, char *data, int length)
Definition: server.cpp:89
-
int sendDataToServer(char *data, int length)
Definition: server.cpp:85
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h.html b/software/raspberry/superviseur-robot/lib/doc/html/server_8h.html deleted file mode 100644 index d060c12..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8h.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - - -Bibliotheques TP RT: server.h File Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
server.h File Reference
-
-
- -

Library for opening a TCP server, receiving data and sending message to monitor. -More...

-
#include "image.h"
-
-Include dependency graph for server.h:
-
-
- - - -
-
-

Go to the source code of this file.

- - - - -

-Macros

#define DEFAULT_SERVER_PORT   2323
 
- - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

int openServer (int port)
 Open server port, connect and listen to given port. More...
 
int closeServer ()
 Close server. More...
 
int acceptClient ()
 Wait for a client to connect. More...
 
int sendDataToServer (char *data, int length)
 Send given data to monitor. More...
 
int sendDataToServerForClient (int client, char *data, int length)
 Send given data to monitor, using specific client ID. More...
 
int receiveDataFromServer (char *data, int size)
 Read data from monitor. More...
 
int receiveDataFromServerFromClient (int client, char *data, int size)
 Read data from monitor, using specific client ID. More...
 
int sendImage (Jpg *image)
 Send image to monitor using default client ID. More...
 
-

Detailed Description

-

Library for opening a TCP server, receiving data and sending message to monitor.

-
Author
PE.Hladik
-
Version
1.0
-
Date
06/06/2017
- -

Definition in file server.h.

-

Macro Definition Documentation

- -

◆ DEFAULT_SERVER_PORT

- -
-
- - - - -
#define DEFAULT_SERVER_PORT   2323
-
- -

Definition at line 30 of file server.h.

- -
-
-

Function Documentation

- -

◆ acceptClient()

- -
-
- - - - - - - -
int acceptClient ()
-
- -

Wait for a client to connect.

-
Returns
Return client Id or -1 if it failed
- -
-
- -

◆ closeServer()

- -
-
- - - - - - - -
int closeServer ()
-
- -

Close server.

-
Returns
-1 if closing failed , 0 otherwise
- -
-
- -

◆ openServer()

- -
-
- - - - - - - - -
int openServer (int port)
-
- -

Open server port, connect and listen to given port.

-
Parameters
- - -
portA valid port number (1024 - 65535)
-
-
-
Returns
-1 if opening failed or the socket number
- -
-
- -

◆ receiveDataFromServer()

- -
-
- - - - - - - - - - - - - - - - - - -
int receiveDataFromServer (char * data,
int size 
)
-
- -

Read data from monitor.

-

Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough.

-
Parameters
- - - -
dataA valid pointer to a buffer
sizeAmount of data to read
-
-
-
Returns
Return amount of data really received. 0 if communication is broken
- -
-
- -

◆ receiveDataFromServerFromClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int receiveDataFromServerFromClient (int client,
char * data,
int size 
)
-
- -

Read data from monitor, using specific client ID.

-

Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough.

-
Parameters
- - - - -
clientClient Id to receive from
dataA valid pointer to a buffer
sizeAmount of data to read
-
-
-
Returns
Return amount of data really received. 0 if communication is broken
- -
-
- -

◆ sendDataToServer()

- -
-
- - - - - - - - - - - - - - - - - - -
int sendDataToServer (char * data,
int length 
)
-
- -

Send given data to monitor.

-

Send given data to monitor using default client ID

-
Parameters
- - - -
dataA valid pointer to a buffer
lengthAmount of data to send
-
-
-
Returns
Return amount of data really written. 0 if communication is broken
- -
-
- -

◆ sendDataToServerForClient()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
int sendDataToServerForClient (int client,
char * data,
int length 
)
-
- -

Send given data to monitor, using specific client ID.

-

Send given data to monitor using given client ID.

-
Parameters
- - - - -
clientClient Id to send data to
dataA valid pointer to a buffer
lengthAmount of data to send
-
-
-
Returns
Return amount of data really written. 0 if communication is broken
- -
-
- -

◆ sendImage()

- -
-
- - - - - - - - -
int sendImage (Jpgimage)
-
- -

Send image to monitor using default client ID.

-

Convert image to raw data, and add correct header before sending to monitor

-
Parameters
- - -
imageAn image object after compression
-
-
-
Returns
Return amount of data really received. 0 if communication is broken
- -
-
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h.js b/software/raspberry/superviseur-robot/lib/doc/html/server_8h.js deleted file mode 100644 index 02acab3..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8h.js +++ /dev/null @@ -1,12 +0,0 @@ -var server_8h = -[ - [ "DEFAULT_SERVER_PORT", "server_8h.html#af257e2a3e091629829857a2eb8931a7a", null ], - [ "acceptClient", "server_8h.html#abff9f8e931ecce919588b371dc511857", null ], - [ "closeServer", "server_8h.html#ab65b2df50051036defe0f35366f5a3d6", null ], - [ "openServer", "server_8h.html#a99b54d5b3404766f906f49605a4aa0e3", null ], - [ "receiveDataFromServer", "server_8h.html#a8b66a2007f3f9ed8538428a309c9d368", null ], - [ "receiveDataFromServerFromClient", "server_8h.html#a247e0124af257d0cc7abc25a7c448d1b", null ], - [ "sendDataToServer", "server_8h.html#a8d865d29914b980fd71ed8d347e4ec50", null ], - [ "sendDataToServerForClient", "server_8h.html#a4c2df7961aa7379ac79d80980a1c537b", null ], - [ "sendImage", "server_8h.html#a51b9372f5467705aa81d76ae034c7628", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.map deleted file mode 100644 index 363b09e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.md5 deleted file mode 100644 index 9f4d061..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2b1d20aa36893ad804427c79a70e4ebe \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.png deleted file mode 100644 index c1e4185..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__dep__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.map b/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.map deleted file mode 100644 index 70c40e7..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.map +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.md5 deleted file mode 100644 index bafbd82..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d7f1f00c08ba5d2485254fbdd765c26a \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.png b/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.png deleted file mode 100644 index 1d0f122..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/server_8h__incl.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/server_8h_source.html b/software/raspberry/superviseur-robot/lib/doc/html/server_8h_source.html deleted file mode 100644 index 0d9d1a3..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/server_8h_source.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -Bibliotheques TP RT: server.h Source File - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
server.h
-
-
-Go to the documentation of this file.
1 /*
2  * Copyright (C) 2018 dimercur
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
26 #ifndef _SERVER_H_
27 #define _SERVER_H_
28 
29 #include "image.h"
30 #define DEFAULT_SERVER_PORT 2323
31 
38 int openServer (int port);
39 
45 int closeServer();
46 
52 int acceptClient();
53 
62 int sendDataToServer(char *data, int length);
63 
73 int sendDataToServerForClient(int client, char *data, int length);
74 
83 int receiveDataFromServer(char *data, int size);
84 
94 int receiveDataFromServerFromClient(int client, char *data, int size);
95 
103 int sendImage(Jpg *image);
104 #endif /* _SERVER_H_ */
105 
int openServer(int port)
Open server port, connect and listen to given port.
-
Functions for image treatment.
-
int closeServer()
Close server.
-
int sendImage(Jpg *image)
Send image to monitor using default client ID.
-
vector< unsigned char > Jpg
Definition: image.h:67
-
int receiveDataFromServerFromClient(int client, char *data, int size)
Read data from monitor, using specific client ID.
-
int receiveDataFromServer(char *data, int size)
Read data from monitor.
-
int sendDataToServer(char *data, int length)
Send given data to monitor.
-
int sendDataToServerForClient(int client, char *data, int length)
Send given data to monitor, using specific client ID.
-
int acceptClient()
Wait for a client to connect.
-
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/splitbar.png b/software/raspberry/superviseur-robot/lib/doc/html/splitbar.png deleted file mode 100644 index fe895f2..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/splitbar.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon-members.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon-members.html deleted file mode 100644 index 432e716..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -Bibliotheques TP RT: Member List - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
MessageFromMon Member List
-
-
- -

This is the complete list of members for MessageFromMon, including all inherited members.

- - - -
dataMessageFromMon
headerMessageFromMon
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon.html deleted file mode 100644 index c1ea325..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -Bibliotheques TP RT: MessageFromMon Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
MessageFromMon Struct Reference
-
-
- -

#include <monitor.h>

- - - - - - -

-Public Attributes

char header [4]
 
char data [100]
 
-

Detailed Description

-
-

Definition at line 74 of file monitor.h.

-

Member Data Documentation

- -

◆ data

- -
-
- - - - -
char MessageFromMon::data[100]
-
- -

Definition at line 76 of file monitor.h.

- -
-
- -

◆ header

- -
-
- - - - -
char MessageFromMon::header[4]
-
- -

Definition at line 75 of file monitor.h.

- -
-
-
The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon.js b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon.js deleted file mode 100644 index d4dc39f..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_from_mon.js +++ /dev/null @@ -1,5 +0,0 @@ -var struct_message_from_mon = -[ - [ "data", "struct_message_from_mon.html#a1aea445500b0fa020a1b08eaff791107", null ], - [ "header", "struct_message_from_mon.html#ad46f6e6dd24be5cb2bc5eae5b3cdd095", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon-members.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon-members.html deleted file mode 100644 index 5205875..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -Bibliotheques TP RT: Member List - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
MessageToMon Member List
-
-
- -

This is the complete list of members for MessageToMon, including all inherited members.

- - - -
dataMessageToMon
headerMessageToMon
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon.html deleted file mode 100644 index 586e861..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -Bibliotheques TP RT: MessageToMon Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
MessageToMon Struct Reference
-
-
- -

#include <message.h>

- - - - - - -

-Public Attributes

char header [4]
 
void * data = NULL
 
-

Detailed Description

-
-

Definition at line 34 of file message.h.

-

Member Data Documentation

- -

◆ data

- -
-
- - - - -
void* MessageToMon::data = NULL
-
- -

Definition at line 36 of file message.h.

- -
-
- -

◆ header

- -
-
- - - - -
char MessageToMon::header[4]
-
- -

Definition at line 35 of file message.h.

- -
-
-
The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon.js b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon.js deleted file mode 100644 index 6e05a04..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_mon.js +++ /dev/null @@ -1,5 +0,0 @@ -var struct_message_to_mon = -[ - [ "data", "struct_message_to_mon.html#a4e5977ba9fb3fa07d435155731944d15", null ], - [ "header", "struct_message_to_mon.html#acb1096bef5e5c300f3d795556fda852a", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot-members.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot-members.html deleted file mode 100644 index edcc384..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot-members.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -Bibliotheques TP RT: Member List - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
MessageToRobot Member List
-
-
- -

This is the complete list of members for MessageToRobot, including all inherited members.

- - - -
dataMessageToRobot
headerMessageToRobot
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot.html deleted file mode 100644 index fca57de..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - -Bibliotheques TP RT: MessageToRobot Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
MessageToRobot Struct Reference
-
-
- -

#include <robot.h>

- - - - - - -

-Public Attributes

char header [4]
 
char data [20]
 
-

Detailed Description

-
-

Definition at line 43 of file robot.h.

-

Member Data Documentation

- -

◆ data

- -
-
- - - - -
char MessageToRobot::data[20]
-
- -

Definition at line 46 of file robot.h.

- -
-
- -

◆ header

- -
-
- - - - -
char MessageToRobot::header[4]
-
- -

Definition at line 45 of file robot.h.

- -
-
-
The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot.js b/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot.js deleted file mode 100644 index a544900..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_message_to_robot.js +++ /dev/null @@ -1,5 +0,0 @@ -var struct_message_to_robot = -[ - [ "data", "struct_message_to_robot.html#abf7dafbba72784855abd50469ba82705", null ], - [ "header", "struct_message_to_robot.html#ab00202c6cfdd86ea4cd891c972405db6", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_position-members.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_position-members.html deleted file mode 100644 index 66b16f0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_position-members.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -Bibliotheques TP RT: Member List - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
-
-
Position Member List
-
-
- -

This is the complete list of members for Position, including all inherited members.

- - - - -
anglePosition
centerPosition
directionPosition
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_position.html b/software/raspberry/superviseur-robot/lib/doc/html/struct_position.html deleted file mode 100644 index cfcb856..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_position.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - -Bibliotheques TP RT: Position Struct Reference - - - - - - - - - - - - - - -
-
- - - - - - - -
-
Bibliotheques TP RT -  1.0 -
-
Bibliotheque de support pour TP/RT
-
-
- - - - - - - -
-
- -
-
-
- -
- -
-
- - -
- -
- -
- -
-
Position Struct Reference
-
-
- -

#include <image.h>

- - - - - - - - -

-Public Attributes

Point center
 
Point direction
 
float angle
 
-

Detailed Description

-
-

Definition at line 69 of file image.h.

-

Member Data Documentation

- -

◆ angle

- -
-
- - - - -
float Position::angle
-
- -

Definition at line 72 of file image.h.

- -
-
- -

◆ center

- -
-
- - - - -
Point Position::center
-
- -

Definition at line 70 of file image.h.

- -
-
- -

◆ direction

- -
-
- - - - -
Point Position::direction
-
- -

Definition at line 71 of file image.h.

- -
-
-
The documentation for this struct was generated from the following file: -
-
- - - - diff --git a/software/raspberry/superviseur-robot/lib/doc/html/struct_position.js b/software/raspberry/superviseur-robot/lib/doc/html/struct_position.js deleted file mode 100644 index f2d0da1..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/struct_position.js +++ /dev/null @@ -1,6 +0,0 @@ -var struct_position = -[ - [ "angle", "struct_position.html#a733540df6c0f832676dc0846b34bb1e2", null ], - [ "center", "struct_position.html#aa56444be37071311cfa11aae3e2c2f64", null ], - [ "direction", "struct_position.html#a780d124971951424c0c63f6d81bb4d92", null ] -]; \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/html/sync_off.png b/software/raspberry/superviseur-robot/lib/doc/html/sync_off.png deleted file mode 100644 index 3b443fc..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/sync_off.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/sync_on.png b/software/raspberry/superviseur-robot/lib/doc/html/sync_on.png deleted file mode 100644 index e08320f..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/sync_on.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/tab_a.png b/software/raspberry/superviseur-robot/lib/doc/html/tab_a.png deleted file mode 100644 index 3b725c4..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/tab_a.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/tab_b.png b/software/raspberry/superviseur-robot/lib/doc/html/tab_b.png deleted file mode 100644 index e2b4a86..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/tab_b.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/tab_h.png b/software/raspberry/superviseur-robot/lib/doc/html/tab_h.png deleted file mode 100644 index fd5cb70..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/tab_h.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/tab_s.png b/software/raspberry/superviseur-robot/lib/doc/html/tab_s.png deleted file mode 100644 index ab478c9..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/html/tab_s.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/html/tabs.css b/software/raspberry/superviseur-robot/lib/doc/html/tabs.css deleted file mode 100644 index bbde11e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/annotated.tex b/software/raspberry/superviseur-robot/lib/doc/latex/annotated.tex deleted file mode 100644 index cbbe8b0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/annotated.tex +++ /dev/null @@ -1,7 +0,0 @@ -\section{Class List} -Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{\hyperlink{struct_message_from_mon}{Message\+From\+Mon} }{\pageref{struct_message_from_mon}}{} -\item\contentsline{section}{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} }{\pageref{struct_message_to_mon}}{} -\item\contentsline{section}{\hyperlink{struct_message_to_robot}{Message\+To\+Robot} }{\pageref{struct_message_to_robot}}{} -\item\contentsline{section}{\hyperlink{struct_position}{Position} }{\pageref{struct_position}}{} -\end{DoxyCompactList} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h.tex b/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h.tex deleted file mode 100644 index aaba1f1..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h.tex +++ /dev/null @@ -1,430 +0,0 @@ -\hypertarget{definitions_8h}{}\section{definitions.\+h File Reference} -\label{definitions_8h}\index{definitions.\+h@{definitions.\+h}} - - -Various constants used in destjil project. - - -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=202pt]{definitions_8h__dep__incl} -\end{center} -\end{figure} -\subsection*{Macros} -\begin{DoxyCompactItemize} -\item -\#define \hyperlink{definitions_8h_aac798eaf6994ddcadd8a38ad8aba234f}{O\+P\+E\+N\+\_\+\+C\+O\+M\+\_\+\+D\+MB}~\textquotesingle{}o\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a1b18773c1ce9068c4d38c2cbd2900263}{C\+L\+O\+S\+E\+\_\+\+C\+O\+M\+\_\+\+D\+MB}~\textquotesingle{}C\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_acf7d51360dcb103fc57604725ec2816d}{D\+M\+B\+\_\+\+P\+I\+NG}~\textquotesingle{}p\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a82b279c49221d3cd3d875d521dfb97b9}{D\+M\+B\+\_\+\+I\+D\+LE}~\textquotesingle{}r\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a5ebbd37042a6244b4f9d473ae7132780}{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+O\+U\+T\+\_\+\+WD}~\textquotesingle{}u\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_adee1628bbc796ba55f4a349895f4e0fa}{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+\_\+\+WD}~\textquotesingle{}W\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a2ca219902014ffb39aab27cca08a948f}{D\+M\+B\+\_\+\+R\+E\+L\+O\+A\+D\+\_\+\+WD}~\textquotesingle{}w\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_af1737e8fe4da4e8bc2d5db9d26c42462}{D\+M\+B\+\_\+\+G\+E\+T\+\_\+\+V\+B\+AT}~\textquotesingle{}v\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_ad58c241121e685f26a291aa4bd5f9c80}{D\+M\+B\+\_\+\+I\+S\+\_\+\+B\+U\+SY}~\textquotesingle{}b\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_ac48dee90eb71d036d001321674abbb8b}{D\+M\+B\+\_\+\+M\+O\+VE}~\textquotesingle{}M\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_ac6c5492c8100e73f8d30ed36072684db}{D\+M\+B\+\_\+\+T\+U\+RN}~\textquotesingle{}T\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_ae363a29a4961cd8a646a0ca9199bc6cf}{D\+M\+B\+\_\+\+G\+O\+\_\+\+F\+O\+R\+W\+A\+RD}~\textquotesingle{}F\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a499f41cc19a4459de033687049cbbe71}{D\+M\+B\+\_\+\+G\+O\+\_\+\+B\+A\+CK}~\textquotesingle{}B\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_aefcb838e73a335f1a2a6c914ee2ff752}{D\+M\+B\+\_\+\+G\+O\+\_\+\+L\+E\+FT}~\textquotesingle{}L\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_ad681962f7b8cf4797ebd48be0405d1b9}{D\+M\+B\+\_\+\+G\+O\+\_\+\+R\+I\+G\+HT}~\textquotesingle{}R\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a7308179907a0a2989c162865e7a7979a}{D\+M\+B\+\_\+\+S\+T\+O\+P\+\_\+\+M\+O\+VE}~\textquotesingle{}S\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a624686d3af63394ee02f0a197967d44a}{R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT}~-\/3 -\item -\#define \hyperlink{definitions_8h_a70a2d5db14b900843364adb7cfe53ac8}{R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+N\+\_\+\+C\+MD}~-\/2 -\item -\#define \hyperlink{definitions_8h_a4aefbbdd5d35999aa0575ab7183148d4}{R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR}~-\/1 -\item -\#define \hyperlink{definitions_8h_af1118b8a83d446b4965347bba126a488}{R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+C\+K\+S\+UM}~-\/4 -\item -\#define \hyperlink{definitions_8h_ad7b2f95c0b423fb9784acb897b910c36}{R\+O\+B\+O\+T\+\_\+\+OK}~0 -\item -\#define \hyperlink{definitions_8h_a2a7149bbe097fae8e799ce2ab6f69390}{C\+A\+M\+\_\+\+O\+P\+EN}~\textquotesingle{}A\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a675009273c3923e8ad1a6d2818063b61}{C\+A\+M\+\_\+\+C\+L\+O\+SE}~\textquotesingle{}I\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a6418778d1f34e618aebd9ca1861ab500}{C\+A\+M\+\_\+\+A\+S\+K\+\_\+\+A\+R\+E\+NA}~\textquotesingle{}y\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a15d9063cd3c60755685ceb75df4a7354}{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+C\+O\+N\+F\+I\+RM}~\textquotesingle{}x\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_ac836c6abc7e32d2cf7f59ed2a8383ca7}{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+I\+N\+F\+I\+RM}~\textquotesingle{}z\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a74fdb9d00556feb699d3c72bd7b5d5e5}{C\+A\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}~\textquotesingle{}p\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_ae864cfaefbf5a210e67678b2144a289f}{C\+A\+M\+\_\+\+S\+T\+O\+P\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}~\textquotesingle{}s\textquotesingle{} -\item -\#define \hyperlink{definitions_8h_a66c0c4960c1e81c8da8c8e1d4a202352}{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+L\+OW}~0 -\item -\#define \hyperlink{definitions_8h_aea6ef1c13db1a8a4a29b065d0c3f73e4}{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+M\+E\+D\+I\+UM}~1 -\item -\#define \hyperlink{definitions_8h_ab34c46794a9de6746a96752668c73754}{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+H\+I\+GH}~2 -\item -\#define \hyperlink{definitions_8h_a3327443cd321f0c356a5d3d74377892b}{D\+M\+B\+\_\+\+B\+U\+SY}~1 -\item -\#define \hyperlink{definitions_8h_a07650c5f6647c5143bac535fdbeb77d5}{D\+M\+B\+\_\+\+D\+O\+\_\+\+N\+O\+T\+H\+I\+NG}~0 -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Various constants used in destjil project. - -\begin{DoxyAuthor}{Author} -P\+E.\+Hladik -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Macro Definition Documentation} -\mbox{\Hypertarget{definitions_8h_a15d9063cd3c60755685ceb75df4a7354}\label{definitions_8h_a15d9063cd3c60755685ceb75df4a7354}} -\index{definitions.\+h@{definitions.\+h}!C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+C\+O\+N\+F\+I\+RM@{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+C\+O\+N\+F\+I\+RM}} -\index{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+C\+O\+N\+F\+I\+RM@{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+C\+O\+N\+F\+I\+RM}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+C\+O\+N\+F\+I\+RM}{CAM\_ARENA\_CONFIRM}} -{\footnotesize\ttfamily \#define C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+C\+O\+N\+F\+I\+RM~\textquotesingle{}x\textquotesingle{}} - - - -Definition at line 57 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ac836c6abc7e32d2cf7f59ed2a8383ca7}\label{definitions_8h_ac836c6abc7e32d2cf7f59ed2a8383ca7}} -\index{definitions.\+h@{definitions.\+h}!C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+I\+N\+F\+I\+RM@{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+I\+N\+F\+I\+RM}} -\index{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+I\+N\+F\+I\+RM@{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+I\+N\+F\+I\+RM}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+I\+N\+F\+I\+RM}{CAM\_ARENA\_INFIRM}} -{\footnotesize\ttfamily \#define C\+A\+M\+\_\+\+A\+R\+E\+N\+A\+\_\+\+I\+N\+F\+I\+RM~\textquotesingle{}z\textquotesingle{}} - - - -Definition at line 58 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a6418778d1f34e618aebd9ca1861ab500}\label{definitions_8h_a6418778d1f34e618aebd9ca1861ab500}} -\index{definitions.\+h@{definitions.\+h}!C\+A\+M\+\_\+\+A\+S\+K\+\_\+\+A\+R\+E\+NA@{C\+A\+M\+\_\+\+A\+S\+K\+\_\+\+A\+R\+E\+NA}} -\index{C\+A\+M\+\_\+\+A\+S\+K\+\_\+\+A\+R\+E\+NA@{C\+A\+M\+\_\+\+A\+S\+K\+\_\+\+A\+R\+E\+NA}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+A\+M\+\_\+\+A\+S\+K\+\_\+\+A\+R\+E\+NA}{CAM\_ASK\_ARENA}} -{\footnotesize\ttfamily \#define C\+A\+M\+\_\+\+A\+S\+K\+\_\+\+A\+R\+E\+NA~\textquotesingle{}y\textquotesingle{}} - - - -Definition at line 56 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a675009273c3923e8ad1a6d2818063b61}\label{definitions_8h_a675009273c3923e8ad1a6d2818063b61}} -\index{definitions.\+h@{definitions.\+h}!C\+A\+M\+\_\+\+C\+L\+O\+SE@{C\+A\+M\+\_\+\+C\+L\+O\+SE}} -\index{C\+A\+M\+\_\+\+C\+L\+O\+SE@{C\+A\+M\+\_\+\+C\+L\+O\+SE}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+A\+M\+\_\+\+C\+L\+O\+SE}{CAM\_CLOSE}} -{\footnotesize\ttfamily \#define C\+A\+M\+\_\+\+C\+L\+O\+SE~\textquotesingle{}I\textquotesingle{}} - - - -Definition at line 55 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a74fdb9d00556feb699d3c72bd7b5d5e5}\label{definitions_8h_a74fdb9d00556feb699d3c72bd7b5d5e5}} -\index{definitions.\+h@{definitions.\+h}!C\+A\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON@{C\+A\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}} -\index{C\+A\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON@{C\+A\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+A\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}{CAM\_COMPUTE\_POSITION}} -{\footnotesize\ttfamily \#define C\+A\+M\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON~\textquotesingle{}p\textquotesingle{}} - - - -Definition at line 59 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a2a7149bbe097fae8e799ce2ab6f69390}\label{definitions_8h_a2a7149bbe097fae8e799ce2ab6f69390}} -\index{definitions.\+h@{definitions.\+h}!C\+A\+M\+\_\+\+O\+P\+EN@{C\+A\+M\+\_\+\+O\+P\+EN}} -\index{C\+A\+M\+\_\+\+O\+P\+EN@{C\+A\+M\+\_\+\+O\+P\+EN}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+A\+M\+\_\+\+O\+P\+EN}{CAM\_OPEN}} -{\footnotesize\ttfamily \#define C\+A\+M\+\_\+\+O\+P\+EN~\textquotesingle{}A\textquotesingle{}} - - - -Definition at line 54 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ae864cfaefbf5a210e67678b2144a289f}\label{definitions_8h_ae864cfaefbf5a210e67678b2144a289f}} -\index{definitions.\+h@{definitions.\+h}!C\+A\+M\+\_\+\+S\+T\+O\+P\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON@{C\+A\+M\+\_\+\+S\+T\+O\+P\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}} -\index{C\+A\+M\+\_\+\+S\+T\+O\+P\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON@{C\+A\+M\+\_\+\+S\+T\+O\+P\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+A\+M\+\_\+\+S\+T\+O\+P\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON}{CAM\_STOP\_COMPUTE\_POSITION}} -{\footnotesize\ttfamily \#define C\+A\+M\+\_\+\+S\+T\+O\+P\+\_\+\+C\+O\+M\+P\+U\+T\+E\+\_\+\+P\+O\+S\+I\+T\+I\+ON~\textquotesingle{}s\textquotesingle{}} - - - -Definition at line 60 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a1b18773c1ce9068c4d38c2cbd2900263}\label{definitions_8h_a1b18773c1ce9068c4d38c2cbd2900263}} -\index{definitions.\+h@{definitions.\+h}!C\+L\+O\+S\+E\+\_\+\+C\+O\+M\+\_\+\+D\+MB@{C\+L\+O\+S\+E\+\_\+\+C\+O\+M\+\_\+\+D\+MB}} -\index{C\+L\+O\+S\+E\+\_\+\+C\+O\+M\+\_\+\+D\+MB@{C\+L\+O\+S\+E\+\_\+\+C\+O\+M\+\_\+\+D\+MB}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{C\+L\+O\+S\+E\+\_\+\+C\+O\+M\+\_\+\+D\+MB}{CLOSE\_COM\_DMB}} -{\footnotesize\ttfamily \#define C\+L\+O\+S\+E\+\_\+\+C\+O\+M\+\_\+\+D\+MB~\textquotesingle{}C\textquotesingle{}} - - - -Definition at line 31 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ab34c46794a9de6746a96752668c73754}\label{definitions_8h_ab34c46794a9de6746a96752668c73754}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+H\+I\+GH@{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+H\+I\+GH}} -\index{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+H\+I\+GH@{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+H\+I\+GH}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+H\+I\+GH}{DMB\_BAT\_HIGH}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+H\+I\+GH~2} - - - -Definition at line 64 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a66c0c4960c1e81c8da8c8e1d4a202352}\label{definitions_8h_a66c0c4960c1e81c8da8c8e1d4a202352}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+L\+OW@{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+L\+OW}} -\index{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+L\+OW@{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+L\+OW}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+L\+OW}{DMB\_BAT\_LOW}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+L\+OW~0} - - - -Definition at line 62 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_aea6ef1c13db1a8a4a29b065d0c3f73e4}\label{definitions_8h_aea6ef1c13db1a8a4a29b065d0c3f73e4}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+M\+E\+D\+I\+UM@{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+M\+E\+D\+I\+UM}} -\index{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+M\+E\+D\+I\+UM@{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+M\+E\+D\+I\+UM}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+M\+E\+D\+I\+UM}{DMB\_BAT\_MEDIUM}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+B\+A\+T\+\_\+\+M\+E\+D\+I\+UM~1} - - - -Definition at line 63 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a3327443cd321f0c356a5d3d74377892b}\label{definitions_8h_a3327443cd321f0c356a5d3d74377892b}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+B\+U\+SY@{D\+M\+B\+\_\+\+B\+U\+SY}} -\index{D\+M\+B\+\_\+\+B\+U\+SY@{D\+M\+B\+\_\+\+B\+U\+SY}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+B\+U\+SY}{DMB\_BUSY}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+B\+U\+SY~1} - - - -Definition at line 66 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a07650c5f6647c5143bac535fdbeb77d5}\label{definitions_8h_a07650c5f6647c5143bac535fdbeb77d5}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+D\+O\+\_\+\+N\+O\+T\+H\+I\+NG@{D\+M\+B\+\_\+\+D\+O\+\_\+\+N\+O\+T\+H\+I\+NG}} -\index{D\+M\+B\+\_\+\+D\+O\+\_\+\+N\+O\+T\+H\+I\+NG@{D\+M\+B\+\_\+\+D\+O\+\_\+\+N\+O\+T\+H\+I\+NG}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+D\+O\+\_\+\+N\+O\+T\+H\+I\+NG}{DMB\_DO\_NOTHING}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+D\+O\+\_\+\+N\+O\+T\+H\+I\+NG~0} - - - -Definition at line 67 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_af1737e8fe4da4e8bc2d5db9d26c42462}\label{definitions_8h_af1737e8fe4da4e8bc2d5db9d26c42462}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+G\+E\+T\+\_\+\+V\+B\+AT@{D\+M\+B\+\_\+\+G\+E\+T\+\_\+\+V\+B\+AT}} -\index{D\+M\+B\+\_\+\+G\+E\+T\+\_\+\+V\+B\+AT@{D\+M\+B\+\_\+\+G\+E\+T\+\_\+\+V\+B\+AT}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+G\+E\+T\+\_\+\+V\+B\+AT}{DMB\_GET\_VBAT}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+G\+E\+T\+\_\+\+V\+B\+AT~\textquotesingle{}v\textquotesingle{}} - - - -Definition at line 38 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a499f41cc19a4459de033687049cbbe71}\label{definitions_8h_a499f41cc19a4459de033687049cbbe71}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+G\+O\+\_\+\+B\+A\+CK@{D\+M\+B\+\_\+\+G\+O\+\_\+\+B\+A\+CK}} -\index{D\+M\+B\+\_\+\+G\+O\+\_\+\+B\+A\+CK@{D\+M\+B\+\_\+\+G\+O\+\_\+\+B\+A\+CK}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+G\+O\+\_\+\+B\+A\+CK}{DMB\_GO\_BACK}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+G\+O\+\_\+\+B\+A\+CK~\textquotesingle{}B\textquotesingle{}} - - - -Definition at line 43 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ae363a29a4961cd8a646a0ca9199bc6cf}\label{definitions_8h_ae363a29a4961cd8a646a0ca9199bc6cf}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+G\+O\+\_\+\+F\+O\+R\+W\+A\+RD@{D\+M\+B\+\_\+\+G\+O\+\_\+\+F\+O\+R\+W\+A\+RD}} -\index{D\+M\+B\+\_\+\+G\+O\+\_\+\+F\+O\+R\+W\+A\+RD@{D\+M\+B\+\_\+\+G\+O\+\_\+\+F\+O\+R\+W\+A\+RD}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+G\+O\+\_\+\+F\+O\+R\+W\+A\+RD}{DMB\_GO\_FORWARD}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+G\+O\+\_\+\+F\+O\+R\+W\+A\+RD~\textquotesingle{}F\textquotesingle{}} - - - -Definition at line 42 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_aefcb838e73a335f1a2a6c914ee2ff752}\label{definitions_8h_aefcb838e73a335f1a2a6c914ee2ff752}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+G\+O\+\_\+\+L\+E\+FT@{D\+M\+B\+\_\+\+G\+O\+\_\+\+L\+E\+FT}} -\index{D\+M\+B\+\_\+\+G\+O\+\_\+\+L\+E\+FT@{D\+M\+B\+\_\+\+G\+O\+\_\+\+L\+E\+FT}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+G\+O\+\_\+\+L\+E\+FT}{DMB\_GO\_LEFT}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+G\+O\+\_\+\+L\+E\+FT~\textquotesingle{}L\textquotesingle{}} - - - -Definition at line 44 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ad681962f7b8cf4797ebd48be0405d1b9}\label{definitions_8h_ad681962f7b8cf4797ebd48be0405d1b9}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+G\+O\+\_\+\+R\+I\+G\+HT@{D\+M\+B\+\_\+\+G\+O\+\_\+\+R\+I\+G\+HT}} -\index{D\+M\+B\+\_\+\+G\+O\+\_\+\+R\+I\+G\+HT@{D\+M\+B\+\_\+\+G\+O\+\_\+\+R\+I\+G\+HT}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+G\+O\+\_\+\+R\+I\+G\+HT}{DMB\_GO\_RIGHT}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+G\+O\+\_\+\+R\+I\+G\+HT~\textquotesingle{}R\textquotesingle{}} - - - -Definition at line 45 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a82b279c49221d3cd3d875d521dfb97b9}\label{definitions_8h_a82b279c49221d3cd3d875d521dfb97b9}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+I\+D\+LE@{D\+M\+B\+\_\+\+I\+D\+LE}} -\index{D\+M\+B\+\_\+\+I\+D\+LE@{D\+M\+B\+\_\+\+I\+D\+LE}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+I\+D\+LE}{DMB\_IDLE}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+I\+D\+LE~\textquotesingle{}r\textquotesingle{}} - - - -Definition at line 34 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ad58c241121e685f26a291aa4bd5f9c80}\label{definitions_8h_ad58c241121e685f26a291aa4bd5f9c80}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+I\+S\+\_\+\+B\+U\+SY@{D\+M\+B\+\_\+\+I\+S\+\_\+\+B\+U\+SY}} -\index{D\+M\+B\+\_\+\+I\+S\+\_\+\+B\+U\+SY@{D\+M\+B\+\_\+\+I\+S\+\_\+\+B\+U\+SY}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+I\+S\+\_\+\+B\+U\+SY}{DMB\_IS\_BUSY}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+I\+S\+\_\+\+B\+U\+SY~\textquotesingle{}b\textquotesingle{}} - - - -Definition at line 39 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ac48dee90eb71d036d001321674abbb8b}\label{definitions_8h_ac48dee90eb71d036d001321674abbb8b}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+M\+O\+VE@{D\+M\+B\+\_\+\+M\+O\+VE}} -\index{D\+M\+B\+\_\+\+M\+O\+VE@{D\+M\+B\+\_\+\+M\+O\+VE}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+M\+O\+VE}{DMB\_MOVE}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+M\+O\+VE~\textquotesingle{}M\textquotesingle{}} - - - -Definition at line 40 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_acf7d51360dcb103fc57604725ec2816d}\label{definitions_8h_acf7d51360dcb103fc57604725ec2816d}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+P\+I\+NG@{D\+M\+B\+\_\+\+P\+I\+NG}} -\index{D\+M\+B\+\_\+\+P\+I\+NG@{D\+M\+B\+\_\+\+P\+I\+NG}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+P\+I\+NG}{DMB\_PING}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+P\+I\+NG~\textquotesingle{}p\textquotesingle{}} - - - -Definition at line 33 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a2ca219902014ffb39aab27cca08a948f}\label{definitions_8h_a2ca219902014ffb39aab27cca08a948f}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+R\+E\+L\+O\+A\+D\+\_\+\+WD@{D\+M\+B\+\_\+\+R\+E\+L\+O\+A\+D\+\_\+\+WD}} -\index{D\+M\+B\+\_\+\+R\+E\+L\+O\+A\+D\+\_\+\+WD@{D\+M\+B\+\_\+\+R\+E\+L\+O\+A\+D\+\_\+\+WD}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+R\+E\+L\+O\+A\+D\+\_\+\+WD}{DMB\_RELOAD\_WD}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+R\+E\+L\+O\+A\+D\+\_\+\+WD~\textquotesingle{}w\textquotesingle{}} - - - -Definition at line 37 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_adee1628bbc796ba55f4a349895f4e0fa}\label{definitions_8h_adee1628bbc796ba55f4a349895f4e0fa}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+\_\+\+WD@{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+\_\+\+WD}} -\index{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+\_\+\+WD@{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+\_\+\+WD}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+\_\+\+WD}{DMB\_START\_WITH\_WD}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+\_\+\+WD~\textquotesingle{}W\textquotesingle{}} - - - -Definition at line 36 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a5ebbd37042a6244b4f9d473ae7132780}\label{definitions_8h_a5ebbd37042a6244b4f9d473ae7132780}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+O\+U\+T\+\_\+\+WD@{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+O\+U\+T\+\_\+\+WD}} -\index{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+O\+U\+T\+\_\+\+WD@{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+O\+U\+T\+\_\+\+WD}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+O\+U\+T\+\_\+\+WD}{DMB\_START\_WITHOUT\_WD}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+S\+T\+A\+R\+T\+\_\+\+W\+I\+T\+H\+O\+U\+T\+\_\+\+WD~\textquotesingle{}u\textquotesingle{}} - - - -Definition at line 35 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a7308179907a0a2989c162865e7a7979a}\label{definitions_8h_a7308179907a0a2989c162865e7a7979a}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+S\+T\+O\+P\+\_\+\+M\+O\+VE@{D\+M\+B\+\_\+\+S\+T\+O\+P\+\_\+\+M\+O\+VE}} -\index{D\+M\+B\+\_\+\+S\+T\+O\+P\+\_\+\+M\+O\+VE@{D\+M\+B\+\_\+\+S\+T\+O\+P\+\_\+\+M\+O\+VE}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+S\+T\+O\+P\+\_\+\+M\+O\+VE}{DMB\_STOP\_MOVE}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+S\+T\+O\+P\+\_\+\+M\+O\+VE~\textquotesingle{}S\textquotesingle{}} - - - -Definition at line 46 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ac6c5492c8100e73f8d30ed36072684db}\label{definitions_8h_ac6c5492c8100e73f8d30ed36072684db}} -\index{definitions.\+h@{definitions.\+h}!D\+M\+B\+\_\+\+T\+U\+RN@{D\+M\+B\+\_\+\+T\+U\+RN}} -\index{D\+M\+B\+\_\+\+T\+U\+RN@{D\+M\+B\+\_\+\+T\+U\+RN}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{D\+M\+B\+\_\+\+T\+U\+RN}{DMB\_TURN}} -{\footnotesize\ttfamily \#define D\+M\+B\+\_\+\+T\+U\+RN~\textquotesingle{}T\textquotesingle{}} - - - -Definition at line 41 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_aac798eaf6994ddcadd8a38ad8aba234f}\label{definitions_8h_aac798eaf6994ddcadd8a38ad8aba234f}} -\index{definitions.\+h@{definitions.\+h}!O\+P\+E\+N\+\_\+\+C\+O\+M\+\_\+\+D\+MB@{O\+P\+E\+N\+\_\+\+C\+O\+M\+\_\+\+D\+MB}} -\index{O\+P\+E\+N\+\_\+\+C\+O\+M\+\_\+\+D\+MB@{O\+P\+E\+N\+\_\+\+C\+O\+M\+\_\+\+D\+MB}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{O\+P\+E\+N\+\_\+\+C\+O\+M\+\_\+\+D\+MB}{OPEN\_COM\_DMB}} -{\footnotesize\ttfamily \#define O\+P\+E\+N\+\_\+\+C\+O\+M\+\_\+\+D\+MB~\textquotesingle{}o\textquotesingle{}} - - - -Definition at line 30 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_af1118b8a83d446b4965347bba126a488}\label{definitions_8h_af1118b8a83d446b4965347bba126a488}} -\index{definitions.\+h@{definitions.\+h}!R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+C\+K\+S\+UM@{R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+C\+K\+S\+UM}} -\index{R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+C\+K\+S\+UM@{R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+C\+K\+S\+UM}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+C\+K\+S\+UM}{ROBOT\_CHECKSUM}} -{\footnotesize\ttfamily \#define R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+C\+K\+S\+UM~-\/4} - - - -Definition at line 51 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a4aefbbdd5d35999aa0575ab7183148d4}\label{definitions_8h_a4aefbbdd5d35999aa0575ab7183148d4}} -\index{definitions.\+h@{definitions.\+h}!R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR@{R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR}} -\index{R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR@{R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR}{ROBOT\_ERROR}} -{\footnotesize\ttfamily \#define R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR~-\/1} - - - -Definition at line 50 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_ad7b2f95c0b423fb9784acb897b910c36}\label{definitions_8h_ad7b2f95c0b423fb9784acb897b910c36}} -\index{definitions.\+h@{definitions.\+h}!R\+O\+B\+O\+T\+\_\+\+OK@{R\+O\+B\+O\+T\+\_\+\+OK}} -\index{R\+O\+B\+O\+T\+\_\+\+OK@{R\+O\+B\+O\+T\+\_\+\+OK}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{R\+O\+B\+O\+T\+\_\+\+OK}{ROBOT\_OK}} -{\footnotesize\ttfamily \#define R\+O\+B\+O\+T\+\_\+\+OK~0} - - - -Definition at line 52 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a624686d3af63394ee02f0a197967d44a}\label{definitions_8h_a624686d3af63394ee02f0a197967d44a}} -\index{definitions.\+h@{definitions.\+h}!R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT@{R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT}} -\index{R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT@{R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT}{ROBOT\_TIMED\_OUT}} -{\footnotesize\ttfamily \#define R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT~-\/3} - - - -Definition at line 48 of file definitions.\+h. - -\mbox{\Hypertarget{definitions_8h_a70a2d5db14b900843364adb7cfe53ac8}\label{definitions_8h_a70a2d5db14b900843364adb7cfe53ac8}} -\index{definitions.\+h@{definitions.\+h}!R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+N\+\_\+\+C\+MD@{R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+N\+\_\+\+C\+MD}} -\index{R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+N\+\_\+\+C\+MD@{R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+N\+\_\+\+C\+MD}!definitions.\+h@{definitions.\+h}} -\subsubsection{\texorpdfstring{R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+N\+\_\+\+C\+MD}{ROBOT\_UKNOWN\_CMD}} -{\footnotesize\ttfamily \#define R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+N\+\_\+\+C\+MD~-\/2} - - - -Definition at line 49 of file definitions.\+h. - diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h__dep__incl.md5 deleted file mode 100644 index ceaa7c5..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0ff198e66f93f7f3727a8650ff7342c9 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h__dep__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h__dep__incl.pdf deleted file mode 100644 index 1f303a8..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/definitions_8h__dep__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex b/software/raspberry/superviseur-robot/lib/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex deleted file mode 100644 index b4f044c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex +++ /dev/null @@ -1,15 +0,0 @@ -\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\section{src Directory Reference} -\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{src Directory Reference@{src Directory Reference}} -\subsection*{Files} -\begin{DoxyCompactItemize} -\item -file \hyperlink{image_8cpp}{image.\+cpp} -\begin{DoxyCompactList}\small\item\em Fonctions de traitement d\textquotesingle{}image utilisable pour la détection du robot. \end{DoxyCompactList}\item -file \hyperlink{message_8cpp}{message.\+cpp} -\begin{DoxyCompactList}\small\item\em Functions for sending message to monitor. \end{DoxyCompactList}\item -file \hyperlink{monitor_8cpp}{monitor.\+cpp} -\begin{DoxyCompactList}\small\item\em Library for sending message to monitor or receiving message. \end{DoxyCompactList}\item -file \hyperlink{robot_8cpp}{robot.\+cpp} -\item -file \hyperlink{server_8cpp}{server.\+cpp} -\begin{DoxyCompactList}\small\item\em Library for opening a T\+CP server, receiving data and sending message to monitor. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/doxygen.sty b/software/raspberry/superviseur-robot/lib/doc/latex/doxygen.sty deleted file mode 100644 index e457acc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/doxygen.sty +++ /dev/null @@ -1,503 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{doxygen} - -% Packages used by this style file -\RequirePackage{alltt} -\RequirePackage{array} -\RequirePackage{calc} -\RequirePackage{float} -\RequirePackage{ifthen} -\RequirePackage{verbatim} -\RequirePackage[table]{xcolor} -\RequirePackage{longtable} -\RequirePackage{tabu} -\RequirePackage{tabularx} -\RequirePackage{multirow} - -%---------- Internal commands used in this style file ---------------- - -\newcommand{\ensurespace}[1]{% - \begingroup% - \setlength{\dimen@}{#1}% - \vskip\z@\@plus\dimen@% - \penalty -100\vskip\z@\@plus -\dimen@% - \vskip\dimen@% - \penalty 9999% - \vskip -\dimen@% - \vskip\z@skip% hide the previous |\vskip| from |\addvspace| - \endgroup% -} - -\newcommand{\DoxyLabelFont}{} -\newcommand{\entrylabel}[1]{% - {% - \parbox[b]{\labelwidth-4pt}{% - \makebox[0pt][l]{\DoxyLabelFont#1}% - \vspace{1.5\baselineskip}% - }% - }% -} - -\newenvironment{DoxyDesc}[1]{% - \ensurespace{4\baselineskip}% - \begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - }% - \item[#1]% -}{% - \end{list}% -} - -\newsavebox{\xrefbox} -\newlength{\xreflength} -\newcommand{\xreflabel}[1]{% - \sbox{\xrefbox}{#1}% - \setlength{\xreflength}{\wd\xrefbox}% - \ifthenelse{\xreflength>\labelwidth}{% - \begin{minipage}{\textwidth}% - \setlength{\parindent}{0pt}% - \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% - \end{minipage}% - }{% - \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% - }% -} - -%---------- Commands used by doxygen LaTeX output generator ---------- - -% Used by
 ... 
-\newenvironment{DoxyPre}{% - \small% - \begin{alltt}% -}{% - \end{alltt}% - \normalsize% -} - -% Used by @code ... @endcode -\newenvironment{DoxyCode}{% - \par% - \scriptsize% - \begin{alltt}% -}{% - \end{alltt}% - \normalsize% -} - -% Used by @example, @include, @includelineno and @dontinclude -\newenvironment{DoxyCodeInclude}{% - \DoxyCode% -}{% - \endDoxyCode% -} - -% Used by @verbatim ... @endverbatim -\newenvironment{DoxyVerb}{% - \footnotesize% - \verbatim% -}{% - \endverbatim% - \normalsize% -} - -% Used by @verbinclude -\newenvironment{DoxyVerbInclude}{% - \DoxyVerb% -}{% - \endDoxyVerb% -} - -% Used by numbered lists (using '-#' or
    ...
) -\newenvironment{DoxyEnumerate}{% - \enumerate% -}{% - \endenumerate% -} - -% Used by bullet lists (using '-', @li, @arg, or
    ...
) -\newenvironment{DoxyItemize}{% - \itemize% -}{% - \enditemize% -} - -% Used by description lists (using
...
) -\newenvironment{DoxyDescription}{% - \description% -}{% - \enddescription% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if caption is specified) -\newenvironment{DoxyImage}{% - \begin{figure}[H]% - \begin{center}% -}{% - \end{center}% - \end{figure}% -} - -% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc -% (only if no caption is specified) -\newenvironment{DoxyImageNoCaption}{% - \begin{center}% -}{% - \end{center}% -} - -% Used by @attention -\newenvironment{DoxyAttention}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @author and @authors -\newenvironment{DoxyAuthor}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @date -\newenvironment{DoxyDate}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @invariant -\newenvironment{DoxyInvariant}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @note -\newenvironment{DoxyNote}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @post -\newenvironment{DoxyPostcond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @pre -\newenvironment{DoxyPrecond}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @copyright -\newenvironment{DoxyCopyright}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @remark -\newenvironment{DoxyRemark}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @return and @returns -\newenvironment{DoxyReturn}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @since -\newenvironment{DoxySince}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @see -\newenvironment{DoxySeeAlso}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @version -\newenvironment{DoxyVersion}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @warning -\newenvironment{DoxyWarning}[1]{% - \begin{DoxyDesc}{#1}% -}{% - \end{DoxyDesc}% -} - -% Used by @internal -\newenvironment{DoxyInternal}[1]{% - \paragraph*{#1}% -}{% -} - -% Used by @par and @paragraph -\newenvironment{DoxyParagraph}[1]{% - \begin{list}{}{% - \settowidth{\labelwidth}{40pt}% - \setlength{\leftmargin}{\labelwidth}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{-4pt}% - \renewcommand{\makelabel}{\entrylabel}% - }% - \item[#1]% -}{% - \end{list}% -} - -% Used by parameter lists -\newenvironment{DoxyParams}[2][]{% - \tabulinesep=1mm% - \par% - \ifthenelse{\equal{#1}{}}% - {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description - {\ifthenelse{\equal{#1}{1}}% - {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc - {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc - } - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for fields of simple structs -\newenvironment{DoxyFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for fields simple class style enums -\newenvironment{DoxyEnumFields}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for parameters within a detailed function description -\newenvironment{DoxyParamCaption}{% - \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% -}{% -} - -% Used by return value lists -\newenvironment{DoxyRetVals}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used by exception lists -\newenvironment{DoxyExceptions}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used by template parameter lists -\newenvironment{DoxyTemplParams}[1]{% - \tabulinesep=1mm% - \par% - \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endfirsthead% - \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% - \hline% - \endhead% -}{% - \end{longtabu}% - \vspace{6pt}% -} - -% Used for member lists -\newenvironment{DoxyCompactItemize}{% - \begin{itemize}% - \setlength{\itemsep}{-3pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \setlength{\partopsep}{0pt}% -}{% - \end{itemize}% -} - -% Used for member descriptions -\newenvironment{DoxyCompactList}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - \setlength{\itemsep}{0pt}% - \setlength{\parsep}{0pt}% - \setlength{\topsep}{0pt}% - \renewcommand{\makelabel}{\hfill}% - }% -}{% - \end{list}% -} - -% Used for reference lists (@bug, @deprecated, @todo, etc.) -\newenvironment{DoxyRefList}{% - \begin{list}{}{% - \setlength{\labelwidth}{10pt}% - \setlength{\leftmargin}{\labelwidth}% - \addtolength{\leftmargin}{\labelsep}% - \renewcommand{\makelabel}{\xreflabel}% - }% -}{% - \end{list}% -} - -% Used by @bug, @deprecated, @todo, etc. -\newenvironment{DoxyRefDesc}[1]{% - \begin{list}{}{% - \renewcommand\makelabel[1]{\textbf{##1}}% - \settowidth\labelwidth{\makelabel{#1}}% - \setlength\leftmargin{\labelwidth+\labelsep}% - }% -}{% - \end{list}% -} - -% Used by parameter lists and simple sections -\newenvironment{Desc} -{\begin{list}{}{% - \settowidth{\labelwidth}{20pt}% - \setlength{\parsep}{0pt}% - \setlength{\itemsep}{0pt}% - \setlength{\leftmargin}{\labelwidth+\labelsep}% - \renewcommand{\makelabel}{\entrylabel}% - } -}{% - \end{list}% -} - -% Used by tables -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% -\newenvironment{TabularC}[1]% -{\tabulinesep=1mm -\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}% -{\end{longtabu}\par}% - -\newenvironment{TabularNC}[1]% -{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}% -{\end{tabu}\par}% - -% Used for member group headers -\newenvironment{Indent}{% - \begin{list}{}{% - \setlength{\leftmargin}{0.5cm}% - }% - \item[]\ignorespaces% -}{% - \unskip% - \end{list}% -} - -% Used when hyperlinks are turned off -\newcommand{\doxyref}[3]{% - \textbf{#1} (\textnormal{#2}\,\pageref{#3})% -} - -% Used to link to a table when hyperlinks are turned on -\newcommand{\doxytablelink}[2]{% - \ref{#1}% -} - -% Used to link to a table when hyperlinks are turned off -\newcommand{\doxytableref}[3]{% - \ref{#3}% -} - -% Used by @addindex -\newcommand{\lcurly}{\{} -\newcommand{\rcurly}{\}} - -% Colors used for syntax highlighting -\definecolor{comment}{rgb}{0.5,0.0,0.0} -\definecolor{keyword}{rgb}{0.0,0.5,0.0} -\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} -\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} -\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} -\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} -\definecolor{charliteral}{rgb}{0.0,0.5,0.5} -\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} -\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} -\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} -\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} - -% Color used for table heading -\newcommand{\tableheadbgcolor}{lightgray}% - -% Version of hypertarget with correct landing location -\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} - -% Define caption that is also suitable in a table -\makeatletter -\def\doxyfigcaption{% -\refstepcounter{figure}% -\@dblarg{\@caption{figure}}} -\makeatother diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/files.tex b/software/raspberry/superviseur-robot/lib/doc/latex/files.tex deleted file mode 100644 index 1ea8262..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/files.tex +++ /dev/null @@ -1,9 +0,0 @@ -\section{File List} -Here is a list of all files with brief descriptions\+:\begin{DoxyCompactList} -\item\contentsline{section}{\hyperlink{definitions_8h}{definitions.\+h} \\*Various constants used in destjil project }{\pageref{definitions_8h}}{} -\item\contentsline{section}{\hyperlink{image_8h}{image.\+h} \\*Functions for image treatment }{\pageref{image_8h}}{} -\item\contentsline{section}{\hyperlink{message_8h}{message.\+h} \\*Functions for sending message to monitor }{\pageref{message_8h}}{} -\item\contentsline{section}{\hyperlink{monitor_8h}{monitor.\+h} \\*Library for sending message to monitor or receiving message }{\pageref{monitor_8h}}{} -\item\contentsline{section}{\hyperlink{robot_8h}{robot.\+h} \\*Fonctions for communicating with robot }{\pageref{robot_8h}}{} -\item\contentsline{section}{\hyperlink{server_8h}{server.\+h} \\*Library for opening a T\+CP server, receiving data and sending message to monitor }{\pageref{server_8h}}{} -\end{DoxyCompactList} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp.tex b/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp.tex deleted file mode 100644 index 7f053b0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp.tex +++ /dev/null @@ -1,283 +0,0 @@ -\hypertarget{image_8cpp}{}\section{src/image.cpp File Reference} -\label{image_8cpp}\index{src/image.\+cpp@{src/image.\+cpp}} - - -Fonctions de traitement d\textquotesingle{}image utilisable pour la détection du robot. - - -{\ttfamily \#include \char`\"{}image.\+h\char`\"{}}\newline -{\ttfamily \#include $<$iostream$>$}\newline -Include dependency graph for image.\+cpp\+: -\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{image_8cpp__incl} -\end{center} -\end{figure} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -float \hyperlink{image_8cpp_afe015c86402c7d09d9d7b28587c7fd1b}{calcul\+Angle} (\hyperlink{struct_position}{Position} $\ast$position\+Robot) -\item -int \hyperlink{image_8cpp_a41fa265b5f57fcd2a13e726880297d12}{crop\+Arena} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Output, \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$Arene\+Input) -\item -float \hyperlink{image_8cpp_a73f53d1da08f1f8123da89585d16c7ef}{euclidean\+Dist} (Point \&p, Point \&q) -\item -void \hyperlink{image_8cpp_a5ffd032a466af45a505fb46252194bbf}{draw\+\_\+arena} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Output, \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$mon\+Arene) -\begin{DoxyCompactList}\small\item\em Dessine le plus petit rectangle contenant l\textquotesingle{}arène. \end{DoxyCompactList}\item -int \hyperlink{image_8cpp_aca0662ab31eac7fdb2d64fecc52ff1da}{open\+\_\+camera} (\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$camera) -\begin{DoxyCompactList}\small\item\em Ouvre une camera. \end{DoxyCompactList}\item -void \hyperlink{image_8cpp_a864afddf57678b37b99d9eca70405d63}{get\+\_\+image} (\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$camera, \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$mon\+Image, const char $\ast$fichier) -\begin{DoxyCompactList}\small\item\em Capture une image avec la camera passée en entrée. En cas de test sans camera, la fonction charge une image. \end{DoxyCompactList}\item -void \hyperlink{image_8cpp_a19eac11a04cb4b86fd32e6a36445ad5d}{close\+\_\+camera} (\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$camera) -\begin{DoxyCompactList}\small\item\em Ferme la camera passé en paramètre. \end{DoxyCompactList}\item -int \hyperlink{image_8cpp_acad45df4061a55f17be0db97c1406249}{detect\+\_\+arena} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$mon\+Image, \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$rectangle) -\begin{DoxyCompactList}\small\item\em Détecte une arène dans une image fournis en paramètre. \end{DoxyCompactList}\item -void \hyperlink{image_8cpp_a909ca7577f0ac2e4bd0ea21291690dce}{compress\+\_\+image} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg} $\ast$image\+Compress) -\begin{DoxyCompactList}\small\item\em Détecte la position d\textquotesingle{}un robot. \end{DoxyCompactList}\item -int \hyperlink{image_8cpp_ac813f76084a0d9d252fb5c01830ab7df}{detect\+\_\+position} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{struct_position}{Position} $\ast$pos\+Triangle, \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$mon\+Arene) -\begin{DoxyCompactList}\small\item\em Détecte la position d\textquotesingle{}un robot. \end{DoxyCompactList}\item -void \hyperlink{image_8cpp_a869c3946d4a414b8730ca4f91fbd9556}{draw\+\_\+position} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Output, \hyperlink{struct_position}{Position} $\ast$position\+Robot) -\begin{DoxyCompactList}\small\item\em Dessine sur une image en entrée la position d\textquotesingle{}un robot et sa direction. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Fonctions de traitement d\textquotesingle{}image utilisable pour la détection du robot. - -\begin{DoxyAuthor}{Author} -L.\+Senaneuch -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} -Ce fichier utilise la libraire open\+C\+V2 pour faciliter le traitement d\textquotesingle{}image dans le projet Destijl. Il permet de faciliter la détection de l\textquotesingle{}arène et la détection du robot. /!\textbackslash{} Attention Bien que celui-\/ci soit un .cpp la structure du code n\textquotesingle{}est pas sous forme d\textquotesingle{}objet. - -\subsection{Function Documentation} -\mbox{\Hypertarget{image_8cpp_afe015c86402c7d09d9d7b28587c7fd1b}\label{image_8cpp_afe015c86402c7d09d9d7b28587c7fd1b}} -\index{image.\+cpp@{image.\+cpp}!calcul\+Angle@{calcul\+Angle}} -\index{calcul\+Angle@{calcul\+Angle}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{calcul\+Angle()}{calculAngle()}} -{\footnotesize\ttfamily float calcul\+Angle (\begin{DoxyParamCaption}\item[{\hyperlink{struct_position}{Position} $\ast$}]{position\+Robot }\end{DoxyParamCaption})} - - - -Definition at line 253 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_a19eac11a04cb4b86fd32e6a36445ad5d}\label{image_8cpp_a19eac11a04cb4b86fd32e6a36445ad5d}} -\index{image.\+cpp@{image.\+cpp}!close\+\_\+camera@{close\+\_\+camera}} -\index{close\+\_\+camera@{close\+\_\+camera}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{close\+\_\+camera()}{close\_camera()}} -{\footnotesize\ttfamily void close\+\_\+camera (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$}]{camera }\end{DoxyParamCaption})} - - - -Ferme la camera passé en paramètre. - - -\begin{DoxyParams}{Parameters} -{\em $\ast$\+Camera} & Pointeur sur la camera à fermer \\ -\hline -\end{DoxyParams} - - -Definition at line 112 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_a909ca7577f0ac2e4bd0ea21291690dce}\label{image_8cpp_a909ca7577f0ac2e4bd0ea21291690dce}} -\index{image.\+cpp@{image.\+cpp}!compress\+\_\+image@{compress\+\_\+image}} -\index{compress\+\_\+image@{compress\+\_\+image}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{compress\+\_\+image()}{compress\_image()}} -{\footnotesize\ttfamily void compress\+\_\+image (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg} $\ast$}]{image\+Compress }\end{DoxyParamCaption})} - - - -Détecte la position d\textquotesingle{}un robot. - -Détecte la position de triangles blanc sur une image /a img\+Input passé en paramètre d\textquotesingle{}entrer. - - -\begin{DoxyParams}{Parameters} -{\em $\ast$img\+Input} & Pointeur sur l\textquotesingle{}image à sauvegarder en mémoire sous format jpg. \\ -\hline -{\em $\ast$image\+Compress} & Pointeur sur une image .jpg. \\ -\hline -\end{DoxyParams} - - -Definition at line 164 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_a41fa265b5f57fcd2a13e726880297d12}\label{image_8cpp_a41fa265b5f57fcd2a13e726880297d12}} -\index{image.\+cpp@{image.\+cpp}!crop\+Arena@{crop\+Arena}} -\index{crop\+Arena@{crop\+Arena}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{crop\+Arena()}{cropArena()}} -{\footnotesize\ttfamily int crop\+Arena (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Output, }\item[{\hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$}]{Arene\+Input }\end{DoxyParamCaption})} - - - -Definition at line 150 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_acad45df4061a55f17be0db97c1406249}\label{image_8cpp_acad45df4061a55f17be0db97c1406249}} -\index{image.\+cpp@{image.\+cpp}!detect\+\_\+arena@{detect\+\_\+arena}} -\index{detect\+\_\+arena@{detect\+\_\+arena}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{detect\+\_\+arena()}{detect\_arena()}} -{\footnotesize\ttfamily int detect\+\_\+arena (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{mon\+Image, }\item[{\hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$}]{rectangle }\end{DoxyParamCaption})} - - - -Détecte une arène dans une image fournis en paramètre. - - -\begin{DoxyParams}{Parameters} -{\em $\ast$mon\+Image} & Pointeur sur l\textquotesingle{}image d\textquotesingle{}entrée \\ -\hline -{\em $\ast$rectangle} & Pointeur sur les coordonnées du rectangles trouvé. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne -\/1 si aucune arène n\textquotesingle{}est détectée. Sinon retourne 0 -\end{DoxyReturn} - - -Definition at line 126 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_ac813f76084a0d9d252fb5c01830ab7df}\label{image_8cpp_ac813f76084a0d9d252fb5c01830ab7df}} -\index{image.\+cpp@{image.\+cpp}!detect\+\_\+position@{detect\+\_\+position}} -\index{detect\+\_\+position@{detect\+\_\+position}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{detect\+\_\+position()}{detect\_position()}} -{\footnotesize\ttfamily int detect\+\_\+position (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{struct_position}{Position} $\ast$}]{pos\+Triangle, }\item[{\hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$}]{mon\+Arene = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Détecte la position d\textquotesingle{}un robot. - -Détecte la position de triangles blanc sur une image /a img\+Input passé en paramètre d\textquotesingle{}entrer. - - -\begin{DoxyParams}{Parameters} -{\em $\ast$img\+Input} & Pointeur sur l\textquotesingle{}image sur laquelle chercher la position du des robots. \\ -\hline -{\em $\ast$pos\+Triangle} & Pointeur sur un tableau de position ou seront stocké les positions des triangles détectés. \\ -\hline -{\em $\ast$mon\+Arene} & Pointeur de type Arène si nécessaire d\textquotesingle{}affiner la recherche (optionnel) \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Le nombre de triangles détectés. -\end{DoxyReturn} - - -Definition at line 170 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_a5ffd032a466af45a505fb46252194bbf}\label{image_8cpp_a5ffd032a466af45a505fb46252194bbf}} -\index{image.\+cpp@{image.\+cpp}!draw\+\_\+arena@{draw\+\_\+arena}} -\index{draw\+\_\+arena@{draw\+\_\+arena}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{draw\+\_\+arena()}{draw\_arena()}} -{\footnotesize\ttfamily void draw\+\_\+arena (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Output, }\item[{\hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$}]{mon\+Arene }\end{DoxyParamCaption})} - - - -Dessine le plus petit rectangle contenant l\textquotesingle{}arène. - - -\begin{DoxyParams}{Parameters} -{\em $\ast$img\+Input} & Pointeur sur l\textquotesingle{}image d\textquotesingle{}entrée. \\ -\hline -{\em $\ast$img\+Output} & Pointeur sur l\textquotesingle{}image de sortie (image d\textquotesingle{}entrée + arène marquée) \\ -\hline -{\em $\ast$mon\+Arene} & Pointeur de type Arène contenant les information à dessiner \\ -\hline -\end{DoxyParams} - - -Definition at line 51 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_a869c3946d4a414b8730ca4f91fbd9556}\label{image_8cpp_a869c3946d4a414b8730ca4f91fbd9556}} -\index{image.\+cpp@{image.\+cpp}!draw\+\_\+position@{draw\+\_\+position}} -\index{draw\+\_\+position@{draw\+\_\+position}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{draw\+\_\+position()}{draw\_position()}} -{\footnotesize\ttfamily void draw\+\_\+position (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Output, }\item[{\hyperlink{struct_position}{Position} $\ast$}]{position\+Robot }\end{DoxyParamCaption})} - - - -Dessine sur une image en entrée la position d\textquotesingle{}un robot et sa direction. - -Sauvegarde l\textquotesingle{}image des coordonnées passées par position\+Robot superposée à l\textquotesingle{}image d\textquotesingle{}entrée sur img\+Output. - - -\begin{DoxyParams}{Parameters} -{\em $\ast$img\+Input} & Pointeur sur l\textquotesingle{}image d\textquotesingle{}entrée \\ -\hline -{\em $\ast$img\+Output} & Pointeur sur l\textquotesingle{}image de sortie ( image d\textquotesingle{}entrée + dessin de la position) \\ -\hline -{\em $\ast$position\+Robot} & Pointeur sur la structure position d\textquotesingle{}un robot. \\ -\hline -\end{DoxyParams} - - -Definition at line 244 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_a73f53d1da08f1f8123da89585d16c7ef}\label{image_8cpp_a73f53d1da08f1f8123da89585d16c7ef}} -\index{image.\+cpp@{image.\+cpp}!euclidean\+Dist@{euclidean\+Dist}} -\index{euclidean\+Dist@{euclidean\+Dist}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{euclidean\+Dist()}{euclideanDist()}} -{\footnotesize\ttfamily float euclidean\+Dist (\begin{DoxyParamCaption}\item[{Point \&}]{p, }\item[{Point \&}]{q }\end{DoxyParamCaption})} - - - -Definition at line 159 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_a864afddf57678b37b99d9eca70405d63}\label{image_8cpp_a864afddf57678b37b99d9eca70405d63}} -\index{image.\+cpp@{image.\+cpp}!get\+\_\+image@{get\+\_\+image}} -\index{get\+\_\+image@{get\+\_\+image}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{get\+\_\+image()}{get\_image()}} -{\footnotesize\ttfamily void get\+\_\+image (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$}]{camera, }\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{mon\+Image, }\item[{const char $\ast$}]{fichier = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Capture une image avec la camera passée en entrée. En cas de test sans camera, la fonction charge une image. - -La camera doit préalablement être ouverte via {\itshape open\+Camera}(...) - - -\begin{DoxyParams}{Parameters} -{\em $\ast$\+Camera} & Pointeur sur la camera passée en entrée. \\ -\hline -{\em $\ast$mon\+Image} & Pointeur sur une image capturée. \\ -\hline -{\em $\ast$fichier} & chemin du fichier d\textquotesingle{}image \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne -\/1 si une erreur survient. -\end{DoxyReturn} - - -Definition at line 93 of file image.\+cpp. - -\mbox{\Hypertarget{image_8cpp_aca0662ab31eac7fdb2d64fecc52ff1da}\label{image_8cpp_aca0662ab31eac7fdb2d64fecc52ff1da}} -\index{image.\+cpp@{image.\+cpp}!open\+\_\+camera@{open\+\_\+camera}} -\index{open\+\_\+camera@{open\+\_\+camera}!image.\+cpp@{image.\+cpp}} -\subsubsection{\texorpdfstring{open\+\_\+camera()}{open\_camera()}} -{\footnotesize\ttfamily int open\+\_\+camera (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$}]{camera }\end{DoxyParamCaption})} - - - -Ouvre une camera. - -Met à jour le descripteur de fichier passé en paramètre pour correspondre à la camera ouverte - - -\begin{DoxyParams}{Parameters} -{\em $\ast$\+Camera} & Pointeur d\textquotesingle{}un file descriptor d\textquotesingle{}une camera ouverte \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -retourne 0 si la camera a été ouverte correctement et -\/1 si une erreur survient. -\end{DoxyReturn} - - -Definition at line 58 of file image.\+cpp. - diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp__incl.md5 deleted file mode 100644 index 9ae2540..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1a9e436ff61a4ce15dc9d75b9819db92 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp__incl.pdf deleted file mode 100644 index 72320a5..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/image_8cpp__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h.tex b/software/raspberry/superviseur-robot/lib/doc/latex/image_8h.tex deleted file mode 100644 index e3c9431..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h.tex +++ /dev/null @@ -1,312 +0,0 @@ -\hypertarget{image_8h}{}\section{image.\+h File Reference} -\label{image_8h}\index{image.\+h@{image.\+h}} - - -Functions for image treatment. - - -{\ttfamily \#include $<$raspicam/raspicam\+\_\+cv.\+h$>$}\newline -{\ttfamily \#include \char`\"{}opencv2/imgproc/imgproc.\+hpp\char`\"{}}\newline -{\ttfamily \#include $<$unistd.\+h$>$}\newline -{\ttfamily \#include $<$math.\+h$>$}\newline -Include dependency graph for image.\+h\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{image_8h__incl} -\end{center} -\end{figure} -This graph shows which files directly or indirectly include this file\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=208pt]{image_8h__dep__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -struct \hyperlink{struct_position}{Position} -\end{DoxyCompactItemize} -\subsection*{Macros} -\begin{DoxyCompactItemize} -\item -\#define \hyperlink{image_8h_a241aeeb764887ae5e3de58b98f04b16d}{W\+I\+D\+TH}~480 -\item -\#define \hyperlink{image_8h_aed89bd71aee8be823e8a20ec4e093c1e}{H\+E\+I\+G\+HT}~360 -\end{DoxyCompactItemize} -\subsection*{Typedefs} -\begin{DoxyCompactItemize} -\item -typedef Mat \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} -\item -typedef Raspi\+Cam\+\_\+\+Cv \hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} -\item -typedef Rect \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} -\item -typedef vector$<$ unsigned char $>$ \hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg} -\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \hyperlink{image_8h_aca0662ab31eac7fdb2d64fecc52ff1da}{open\+\_\+camera} (\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$camera) -\begin{DoxyCompactList}\small\item\em Ouvre une camera. \end{DoxyCompactList}\item -void \hyperlink{image_8h_a19eac11a04cb4b86fd32e6a36445ad5d}{close\+\_\+camera} (\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$camera) -\begin{DoxyCompactList}\small\item\em Ferme la camera passé en paramètre. \end{DoxyCompactList}\item -void \hyperlink{image_8h_ad904f3348c2d44f9c82435c94cd83844}{get\+\_\+image} (\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$camera, \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$mon\+Image, const char $\ast$fichier=N\+U\+LL) -\begin{DoxyCompactList}\small\item\em Capture une image avec la camera passée en entrée. En cas de test sans camera, la fonction charge une image. \end{DoxyCompactList}\item -int \hyperlink{image_8h_acad45df4061a55f17be0db97c1406249}{detect\+\_\+arena} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$mon\+Image, \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$rectangle) -\begin{DoxyCompactList}\small\item\em Détecte une arène dans une image fournis en paramètre. \end{DoxyCompactList}\item -void \hyperlink{image_8h_a5ffd032a466af45a505fb46252194bbf}{draw\+\_\+arena} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Output, \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$mon\+Arene) -\begin{DoxyCompactList}\small\item\em Dessine le plus petit rectangle contenant l\textquotesingle{}arène. \end{DoxyCompactList}\item -int \hyperlink{image_8h_af9f6e2dd4409486f2f6446d1a8a02c40}{detect\+\_\+position} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{struct_position}{Position} $\ast$pos\+Triangle, \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$mon\+Arene=N\+U\+LL) -\begin{DoxyCompactList}\small\item\em Détecte la position d\textquotesingle{}un robot. \end{DoxyCompactList}\item -void \hyperlink{image_8h_a869c3946d4a414b8730ca4f91fbd9556}{draw\+\_\+position} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Output, \hyperlink{struct_position}{Position} $\ast$position\+Robot) -\begin{DoxyCompactList}\small\item\em Dessine sur une image en entrée la position d\textquotesingle{}un robot et sa direction. \end{DoxyCompactList}\item -void \hyperlink{image_8h_a909ca7577f0ac2e4bd0ea21291690dce}{compress\+\_\+image} (\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$img\+Input, \hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg} $\ast$image\+Compress) -\begin{DoxyCompactList}\small\item\em Détecte la position d\textquotesingle{}un robot. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Functions for image treatment. - -\begin{DoxyAuthor}{Author} -L.\+Senaneuch -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} -This file use open\+C\+V2 library for picture processing. This allow to detect arena and robot. - -\subsection{Macro Definition Documentation} -\mbox{\Hypertarget{image_8h_aed89bd71aee8be823e8a20ec4e093c1e}\label{image_8h_aed89bd71aee8be823e8a20ec4e093c1e}} -\index{image.\+h@{image.\+h}!H\+E\+I\+G\+HT@{H\+E\+I\+G\+HT}} -\index{H\+E\+I\+G\+HT@{H\+E\+I\+G\+HT}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{H\+E\+I\+G\+HT}{HEIGHT}} -{\footnotesize\ttfamily \#define H\+E\+I\+G\+HT~360} - - - -Definition at line 45 of file image.\+h. - -\mbox{\Hypertarget{image_8h_a241aeeb764887ae5e3de58b98f04b16d}\label{image_8h_a241aeeb764887ae5e3de58b98f04b16d}} -\index{image.\+h@{image.\+h}!W\+I\+D\+TH@{W\+I\+D\+TH}} -\index{W\+I\+D\+TH@{W\+I\+D\+TH}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{W\+I\+D\+TH}{WIDTH}} -{\footnotesize\ttfamily \#define W\+I\+D\+TH~480} - - - -Definition at line 44 of file image.\+h. - - - -\subsection{Typedef Documentation} -\mbox{\Hypertarget{image_8h_aa856a7cb8a1535c9f13096bede6c8586}\label{image_8h_aa856a7cb8a1535c9f13096bede6c8586}} -\index{image.\+h@{image.\+h}!Arene@{Arene}} -\index{Arene@{Arene}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{Arene}{Arene}} -{\footnotesize\ttfamily typedef Rect \hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene}} - - - -Definition at line 66 of file image.\+h. - -\mbox{\Hypertarget{image_8h_a739dda3f6f6ddbab22617837b43a692a}\label{image_8h_a739dda3f6f6ddbab22617837b43a692a}} -\index{image.\+h@{image.\+h}!Camera@{Camera}} -\index{Camera@{Camera}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{Camera}{Camera}} -{\footnotesize\ttfamily typedef Raspi\+Cam\+\_\+\+Cv \hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera}} - - - -Definition at line 58 of file image.\+h. - -\mbox{\Hypertarget{image_8h_a466446fef9c0348568bc6743186d1a38}\label{image_8h_a466446fef9c0348568bc6743186d1a38}} -\index{image.\+h@{image.\+h}!Image@{Image}} -\index{Image@{Image}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{Image}{Image}} -{\footnotesize\ttfamily typedef Mat \hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image}} - - - -Definition at line 55 of file image.\+h. - -\mbox{\Hypertarget{image_8h_a9ac2855e21920c676a108df386ff9415}\label{image_8h_a9ac2855e21920c676a108df386ff9415}} -\index{image.\+h@{image.\+h}!Jpg@{Jpg}} -\index{Jpg@{Jpg}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{Jpg}{Jpg}} -{\footnotesize\ttfamily typedef vector$<$unsigned char$>$ \hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg}} - - - -Definition at line 67 of file image.\+h. - - - -\subsection{Function Documentation} -\mbox{\Hypertarget{image_8h_a19eac11a04cb4b86fd32e6a36445ad5d}\label{image_8h_a19eac11a04cb4b86fd32e6a36445ad5d}} -\index{image.\+h@{image.\+h}!close\+\_\+camera@{close\+\_\+camera}} -\index{close\+\_\+camera@{close\+\_\+camera}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{close\+\_\+camera()}{close\_camera()}} -{\footnotesize\ttfamily void close\+\_\+camera (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$}]{camera }\end{DoxyParamCaption})} - - - -Ferme la camera passé en paramètre. - - -\begin{DoxyParams}{Parameters} -{\em camera} & Pointeur sur la camera à fermer \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{image_8h_a909ca7577f0ac2e4bd0ea21291690dce}\label{image_8h_a909ca7577f0ac2e4bd0ea21291690dce}} -\index{image.\+h@{image.\+h}!compress\+\_\+image@{compress\+\_\+image}} -\index{compress\+\_\+image@{compress\+\_\+image}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{compress\+\_\+image()}{compress\_image()}} -{\footnotesize\ttfamily void compress\+\_\+image (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg} $\ast$}]{image\+Compress }\end{DoxyParamCaption})} - - - -Détecte la position d\textquotesingle{}un robot. - -Détecte la position de triangles blanc sur une image /a img\+Input passé en paramètre d\textquotesingle{}entrer. - - -\begin{DoxyParams}{Parameters} -{\em img\+Input} & Pointeur sur l\textquotesingle{}image à sauvegarder en mémoire sous format jpg. \\ -\hline -{\em image\+Compress} & Pointeur sur une image .jpg. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{image_8h_acad45df4061a55f17be0db97c1406249}\label{image_8h_acad45df4061a55f17be0db97c1406249}} -\index{image.\+h@{image.\+h}!detect\+\_\+arena@{detect\+\_\+arena}} -\index{detect\+\_\+arena@{detect\+\_\+arena}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{detect\+\_\+arena()}{detect\_arena()}} -{\footnotesize\ttfamily int detect\+\_\+arena (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{mon\+Image, }\item[{\hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$}]{rectangle }\end{DoxyParamCaption})} - - - -Détecte une arène dans une image fournis en paramètre. - - -\begin{DoxyParams}{Parameters} -{\em mon\+Image} & Pointeur sur l\textquotesingle{}image d\textquotesingle{}entrée \\ -\hline -{\em rectangle} & Pointeur sur les coordonnées du rectangles trouvé. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne -\/1 si aucune arène n\textquotesingle{}est détectée. Sinon retourne 0 -\end{DoxyReturn} -\mbox{\Hypertarget{image_8h_af9f6e2dd4409486f2f6446d1a8a02c40}\label{image_8h_af9f6e2dd4409486f2f6446d1a8a02c40}} -\index{image.\+h@{image.\+h}!detect\+\_\+position@{detect\+\_\+position}} -\index{detect\+\_\+position@{detect\+\_\+position}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{detect\+\_\+position()}{detect\_position()}} -{\footnotesize\ttfamily int detect\+\_\+position (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{struct_position}{Position} $\ast$}]{pos\+Triangle, }\item[{\hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$}]{mon\+Arene = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Détecte la position d\textquotesingle{}un robot. - -Détecte la position de triangles blanc sur une image /a img\+Input passé en paramètre d\textquotesingle{}entrer. - - -\begin{DoxyParams}{Parameters} -{\em img\+Input} & Pointeur sur l\textquotesingle{}image sur laquelle chercher la position du des robots. \\ -\hline -{\em pos\+Triangle} & Pointeur sur un tableau de position ou seront stocké les positions des triangles détectés. \\ -\hline -{\em mon\+Arene} & Pointeur de type Arène si nécessaire d\textquotesingle{}affiner la recherche (optionnel) \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Le nombre de triangles détectés. -\end{DoxyReturn} -\mbox{\Hypertarget{image_8h_a5ffd032a466af45a505fb46252194bbf}\label{image_8h_a5ffd032a466af45a505fb46252194bbf}} -\index{image.\+h@{image.\+h}!draw\+\_\+arena@{draw\+\_\+arena}} -\index{draw\+\_\+arena@{draw\+\_\+arena}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{draw\+\_\+arena()}{draw\_arena()}} -{\footnotesize\ttfamily void draw\+\_\+arena (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Output, }\item[{\hyperlink{image_8h_aa856a7cb8a1535c9f13096bede6c8586}{Arene} $\ast$}]{mon\+Arene }\end{DoxyParamCaption})} - - - -Dessine le plus petit rectangle contenant l\textquotesingle{}arène. - - -\begin{DoxyParams}{Parameters} -{\em img\+Input} & Pointeur sur l\textquotesingle{}image d\textquotesingle{}entrée. \\ -\hline -{\em img\+Output} & Pointeur sur l\textquotesingle{}image de sortie (image d\textquotesingle{}entrée + arène marquée) \\ -\hline -{\em mon\+Arene} & Pointeur de type Arène contenant les information à dessiner \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{image_8h_a869c3946d4a414b8730ca4f91fbd9556}\label{image_8h_a869c3946d4a414b8730ca4f91fbd9556}} -\index{image.\+h@{image.\+h}!draw\+\_\+position@{draw\+\_\+position}} -\index{draw\+\_\+position@{draw\+\_\+position}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{draw\+\_\+position()}{draw\_position()}} -{\footnotesize\ttfamily void draw\+\_\+position (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Input, }\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{img\+Output, }\item[{\hyperlink{struct_position}{Position} $\ast$}]{position\+Robot }\end{DoxyParamCaption})} - - - -Dessine sur une image en entrée la position d\textquotesingle{}un robot et sa direction. - -Sauvegarde l\textquotesingle{}image des coordonnées passées par position\+Robot superposée à l\textquotesingle{}image d\textquotesingle{}entrée sur img\+Output. - - -\begin{DoxyParams}{Parameters} -{\em img\+Input} & Pointeur sur l\textquotesingle{}image d\textquotesingle{}entrée \\ -\hline -{\em img\+Output} & Pointeur sur l\textquotesingle{}image de sortie ( image d\textquotesingle{}entrée + dessin de la position) \\ -\hline -{\em position\+Robot} & Pointeur sur la structure position d\textquotesingle{}un robot. \\ -\hline -\end{DoxyParams} -\mbox{\Hypertarget{image_8h_ad904f3348c2d44f9c82435c94cd83844}\label{image_8h_ad904f3348c2d44f9c82435c94cd83844}} -\index{image.\+h@{image.\+h}!get\+\_\+image@{get\+\_\+image}} -\index{get\+\_\+image@{get\+\_\+image}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{get\+\_\+image()}{get\_image()}} -{\footnotesize\ttfamily void get\+\_\+image (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$}]{camera, }\item[{\hyperlink{image_8h_a466446fef9c0348568bc6743186d1a38}{Image} $\ast$}]{mon\+Image, }\item[{const char $\ast$}]{fichier = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Capture une image avec la camera passée en entrée. En cas de test sans camera, la fonction charge une image. - -La camera doit préalablement être ouverte via {\itshape open\+Camera}(...) - - -\begin{DoxyParams}{Parameters} -{\em camera} & Pointeur sur la camera passée en entrée. \\ -\hline -{\em mon\+Image} & Pointeur sur une image capturée. \\ -\hline -{\em fichier} & Chemin du fichier d\textquotesingle{}image \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne -\/1 si une erreur survient. -\end{DoxyReturn} -\mbox{\Hypertarget{image_8h_aca0662ab31eac7fdb2d64fecc52ff1da}\label{image_8h_aca0662ab31eac7fdb2d64fecc52ff1da}} -\index{image.\+h@{image.\+h}!open\+\_\+camera@{open\+\_\+camera}} -\index{open\+\_\+camera@{open\+\_\+camera}!image.\+h@{image.\+h}} -\subsubsection{\texorpdfstring{open\+\_\+camera()}{open\_camera()}} -{\footnotesize\ttfamily int open\+\_\+camera (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a739dda3f6f6ddbab22617837b43a692a}{Camera} $\ast$}]{camera }\end{DoxyParamCaption})} - - - -Ouvre une camera. - -Met à jour le descripteur de fichier passé en paramètre pour correspondre à la camera ouverte - - -\begin{DoxyParams}{Parameters} -{\em camera} & Pointeur d\textquotesingle{}un file descriptor d\textquotesingle{}une camera ouverte \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne 0 si la camera a été ouverte correctement et -\/1 si une erreur survient. -\end{DoxyReturn} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__dep__incl.md5 deleted file mode 100644 index 7ad25e2..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -45c78d7de27e76d5c6847b572d8f01af \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__dep__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__dep__incl.pdf deleted file mode 100644 index 67b8b77..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__dep__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__incl.md5 deleted file mode 100644 index 9ca85f3..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -66a23c731490b9c00275965a9e8cb703 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__incl.pdf deleted file mode 100644 index 594fc32..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/image_8h__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp.tex b/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp.tex deleted file mode 100644 index f1537eb..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp.tex +++ /dev/null @@ -1,84 +0,0 @@ -\hypertarget{message_8cpp}{}\section{src/message.cpp File Reference} -\label{message_8cpp}\index{src/message.\+cpp@{src/message.\+cpp}} - - -Functions for sending message to monitor. - - -{\ttfamily \#include \char`\"{}message.\+h\char`\"{}}\newline -Include dependency graph for message.\+cpp\+: -\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=329pt]{message_8cpp__incl} -\end{center} -\end{figure} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -void \hyperlink{message_8cpp_a8c768ba3ccfd64ba1e39079c967aff26}{set\+\_\+msg\+To\+Mon\+\_\+header} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg, char $\ast$header) -\item -void \hyperlink{message_8cpp_aa938f8156bfca7379f533b751334ca6f}{set\+\_\+msg\+To\+Mon\+\_\+data} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg, void $\ast$data) -\item -void \hyperlink{message_8cpp_a285193a5a9d3b142f3f1c53c471d3173}{free\+\_\+msg\+To\+Mon\+\_\+data} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg) -\item -void \hyperlink{message_8cpp_ae409e822d69cee7483a2d41c62698a85}{print\+\_\+msg\+To\+Mon} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg) -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Functions for sending message to monitor. - -\begin{DoxyAuthor}{Author} -P\+E.\+Hladik -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Function Documentation} -\mbox{\Hypertarget{message_8cpp_a285193a5a9d3b142f3f1c53c471d3173}\label{message_8cpp_a285193a5a9d3b142f3f1c53c471d3173}} -\index{message.\+cpp@{message.\+cpp}!free\+\_\+msg\+To\+Mon\+\_\+data@{free\+\_\+msg\+To\+Mon\+\_\+data}} -\index{free\+\_\+msg\+To\+Mon\+\_\+data@{free\+\_\+msg\+To\+Mon\+\_\+data}!message.\+cpp@{message.\+cpp}} -\subsubsection{\texorpdfstring{free\+\_\+msg\+To\+Mon\+\_\+data()}{free\_msgToMon\_data()}} -{\footnotesize\ttfamily void free\+\_\+msg\+To\+Mon\+\_\+data (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg }\end{DoxyParamCaption})} - - - -Definition at line 40 of file message.\+cpp. - -\mbox{\Hypertarget{message_8cpp_ae409e822d69cee7483a2d41c62698a85}\label{message_8cpp_ae409e822d69cee7483a2d41c62698a85}} -\index{message.\+cpp@{message.\+cpp}!print\+\_\+msg\+To\+Mon@{print\+\_\+msg\+To\+Mon}} -\index{print\+\_\+msg\+To\+Mon@{print\+\_\+msg\+To\+Mon}!message.\+cpp@{message.\+cpp}} -\subsubsection{\texorpdfstring{print\+\_\+msg\+To\+Mon()}{print\_msgToMon()}} -{\footnotesize\ttfamily void print\+\_\+msg\+To\+Mon (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg }\end{DoxyParamCaption})} - - - -Definition at line 46 of file message.\+cpp. - -\mbox{\Hypertarget{message_8cpp_aa938f8156bfca7379f533b751334ca6f}\label{message_8cpp_aa938f8156bfca7379f533b751334ca6f}} -\index{message.\+cpp@{message.\+cpp}!set\+\_\+msg\+To\+Mon\+\_\+data@{set\+\_\+msg\+To\+Mon\+\_\+data}} -\index{set\+\_\+msg\+To\+Mon\+\_\+data@{set\+\_\+msg\+To\+Mon\+\_\+data}!message.\+cpp@{message.\+cpp}} -\subsubsection{\texorpdfstring{set\+\_\+msg\+To\+Mon\+\_\+data()}{set\_msgToMon\_data()}} -{\footnotesize\ttfamily void set\+\_\+msg\+To\+Mon\+\_\+data (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg, }\item[{void $\ast$}]{data }\end{DoxyParamCaption})} - - - -Definition at line 32 of file message.\+cpp. - -\mbox{\Hypertarget{message_8cpp_a8c768ba3ccfd64ba1e39079c967aff26}\label{message_8cpp_a8c768ba3ccfd64ba1e39079c967aff26}} -\index{message.\+cpp@{message.\+cpp}!set\+\_\+msg\+To\+Mon\+\_\+header@{set\+\_\+msg\+To\+Mon\+\_\+header}} -\index{set\+\_\+msg\+To\+Mon\+\_\+header@{set\+\_\+msg\+To\+Mon\+\_\+header}!message.\+cpp@{message.\+cpp}} -\subsubsection{\texorpdfstring{set\+\_\+msg\+To\+Mon\+\_\+header()}{set\_msgToMon\_header()}} -{\footnotesize\ttfamily void set\+\_\+msg\+To\+Mon\+\_\+header (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg, }\item[{char $\ast$}]{header }\end{DoxyParamCaption})} - - - -Definition at line 28 of file message.\+cpp. - diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp__incl.md5 deleted file mode 100644 index 3cb14b8..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c131ced6abd12634f212035041a05e9c \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp__incl.pdf deleted file mode 100644 index 4b180af..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/message_8cpp__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h.tex b/software/raspberry/superviseur-robot/lib/doc/latex/message_8h.tex deleted file mode 100644 index 77da227..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h.tex +++ /dev/null @@ -1,91 +0,0 @@ -\hypertarget{message_8h}{}\section{message.\+h File Reference} -\label{message_8h}\index{message.\+h@{message.\+h}} - - -Functions for sending message to monitor. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -{\ttfamily \#include $<$unistd.\+h$>$}\newline -{\ttfamily \#include $<$string.\+h$>$}\newline -Include dependency graph for message.\+h\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=329pt]{message_8h__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -struct \hyperlink{struct_message_to_mon}{Message\+To\+Mon} -\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -void \hyperlink{message_8h_a8c768ba3ccfd64ba1e39079c967aff26}{set\+\_\+msg\+To\+Mon\+\_\+header} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg, char $\ast$header) -\begin{DoxyCompactList}\small\item\em Set header part of monitor message. \end{DoxyCompactList}\item -void \hyperlink{message_8h_aa938f8156bfca7379f533b751334ca6f}{set\+\_\+msg\+To\+Mon\+\_\+data} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg, void $\ast$data) -\begin{DoxyCompactList}\small\item\em Set data part of monitor message. \end{DoxyCompactList}\item -void \hyperlink{message_8h_a285193a5a9d3b142f3f1c53c471d3173}{free\+\_\+msg\+To\+Mon\+\_\+data} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg) -\begin{DoxyCompactList}\small\item\em Dealocate moemory pointed by data part of message. \end{DoxyCompactList}\item -void \hyperlink{message_8h_ae409e822d69cee7483a2d41c62698a85}{print\+\_\+msg\+To\+Mon} (\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$msg) -\begin{DoxyCompactList}\small\item\em Print message, header and data. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Functions for sending message to monitor. - -\begin{DoxyAuthor}{Author} -P\+E.\+Hladik -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Function Documentation} -\mbox{\Hypertarget{message_8h_a285193a5a9d3b142f3f1c53c471d3173}\label{message_8h_a285193a5a9d3b142f3f1c53c471d3173}} -\index{message.\+h@{message.\+h}!free\+\_\+msg\+To\+Mon\+\_\+data@{free\+\_\+msg\+To\+Mon\+\_\+data}} -\index{free\+\_\+msg\+To\+Mon\+\_\+data@{free\+\_\+msg\+To\+Mon\+\_\+data}!message.\+h@{message.\+h}} -\subsubsection{\texorpdfstring{free\+\_\+msg\+To\+Mon\+\_\+data()}{free\_msgToMon\_data()}} -{\footnotesize\ttfamily void free\+\_\+msg\+To\+Mon\+\_\+data (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg }\end{DoxyParamCaption})} - - - -Dealocate moemory pointed by data part of message. - -\mbox{\Hypertarget{message_8h_ae409e822d69cee7483a2d41c62698a85}\label{message_8h_ae409e822d69cee7483a2d41c62698a85}} -\index{message.\+h@{message.\+h}!print\+\_\+msg\+To\+Mon@{print\+\_\+msg\+To\+Mon}} -\index{print\+\_\+msg\+To\+Mon@{print\+\_\+msg\+To\+Mon}!message.\+h@{message.\+h}} -\subsubsection{\texorpdfstring{print\+\_\+msg\+To\+Mon()}{print\_msgToMon()}} -{\footnotesize\ttfamily void print\+\_\+msg\+To\+Mon (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg }\end{DoxyParamCaption})} - - - -Print message, header and data. - -\mbox{\Hypertarget{message_8h_aa938f8156bfca7379f533b751334ca6f}\label{message_8h_aa938f8156bfca7379f533b751334ca6f}} -\index{message.\+h@{message.\+h}!set\+\_\+msg\+To\+Mon\+\_\+data@{set\+\_\+msg\+To\+Mon\+\_\+data}} -\index{set\+\_\+msg\+To\+Mon\+\_\+data@{set\+\_\+msg\+To\+Mon\+\_\+data}!message.\+h@{message.\+h}} -\subsubsection{\texorpdfstring{set\+\_\+msg\+To\+Mon\+\_\+data()}{set\_msgToMon\_data()}} -{\footnotesize\ttfamily void set\+\_\+msg\+To\+Mon\+\_\+data (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg, }\item[{void $\ast$}]{data }\end{DoxyParamCaption})} - - - -Set data part of monitor message. - -\mbox{\Hypertarget{message_8h_a8c768ba3ccfd64ba1e39079c967aff26}\label{message_8h_a8c768ba3ccfd64ba1e39079c967aff26}} -\index{message.\+h@{message.\+h}!set\+\_\+msg\+To\+Mon\+\_\+header@{set\+\_\+msg\+To\+Mon\+\_\+header}} -\index{set\+\_\+msg\+To\+Mon\+\_\+header@{set\+\_\+msg\+To\+Mon\+\_\+header}!message.\+h@{message.\+h}} -\subsubsection{\texorpdfstring{set\+\_\+msg\+To\+Mon\+\_\+header()}{set\_msgToMon\_header()}} -{\footnotesize\ttfamily void set\+\_\+msg\+To\+Mon\+\_\+header (\begin{DoxyParamCaption}\item[{\hyperlink{struct_message_to_mon}{Message\+To\+Mon} $\ast$}]{msg, }\item[{char $\ast$}]{header }\end{DoxyParamCaption})} - - - -Set header part of monitor message. - diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__dep__incl.md5 deleted file mode 100644 index 8d61829..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -811e4feebe2d225a8b0a213cddc02de1 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__dep__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__dep__incl.pdf deleted file mode 100644 index dd6ddbc..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__dep__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__incl.md5 deleted file mode 100644 index 44d4da4..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ecde105cd69dd7e881102b5c0ced64fe \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__incl.pdf deleted file mode 100644 index 94b9d25..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/message_8h__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp.tex b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp.tex deleted file mode 100644 index 954365e..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp.tex +++ /dev/null @@ -1,163 +0,0 @@ -\hypertarget{monitor_8cpp}{}\section{src/monitor.cpp File Reference} -\label{monitor_8cpp}\index{src/monitor.\+cpp@{src/monitor.\+cpp}} - - -Library for sending message to monitor or receiving message. - - -{\ttfamily \#include \char`\"{}monitor.\+h\char`\"{}}\newline -{\ttfamily \#include \char`\"{}server.\+h\char`\"{}}\newline -Include dependency graph for monitor.\+cpp\+: -\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{monitor_8cpp__incl} -\end{center} -\end{figure} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -string \hyperlink{monitor_8cpp_a04c8d7ed93b301fafe6dcc08d64ba21b}{server\+Receive} (int size) -\item -int \hyperlink{monitor_8cpp_a7265ec937de7d9ca68b81e5bd8203962}{send\+Message} (const char $\ast$data, int data\+Length) -\item -int \hyperlink{monitor_8cpp_aef87d80a1e44bf1953b3282967282ef0}{receive} (char $\ast$data) -\item -int \hyperlink{monitor_8cpp_af49d46447ce41019bd13a2c07a000644}{send\+\_\+message\+\_\+to\+\_\+monitor} (const char $\ast$type\+Message, const void $\ast$data) -\begin{DoxyCompactList}\small\item\em Envoi d\textquotesingle{}un message vers l\textquotesingle{}interface graphique. \end{DoxyCompactList}\item -int \hyperlink{monitor_8cpp_a61eca0d5b49118350db39583e1bd1032}{receive\+\_\+message\+\_\+from\+\_\+monitor} (char $\ast$type\+Message, char $\ast$data) -\begin{DoxyCompactList}\small\item\em Réception d\textquotesingle{}un message. La fonction est bloquante et retourne par référence le type de message reçu (D\+MB pour un ordre au robot, A\+RN pour la détection des arènes et P\+OS pour un calcul de position) ainsi que les données associées. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Variables} -\begin{DoxyCompactItemize} -\item -\hyperlink{monitor_8h_a29046dc0232f0e5c70adbc25090d77b8}{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN} \hyperlink{monitor_8cpp_a1f38ae3a59ce304779ebbca10378654a}{ssin} -\item -\hyperlink{monitor_8h_a8dc8083897335125630f1af5dafd5831}{S\+O\+C\+K\+ET} \hyperlink{monitor_8cpp_a6e91849780a994f2adde299b33642829}{sock} -\item -socklen\+\_\+t \hyperlink{monitor_8cpp_acd1a03adb2455aaacbd886642518d569}{recsize} = sizeof (\hyperlink{monitor_8cpp_a1f38ae3a59ce304779ebbca10378654a}{ssin}) -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Library for sending message to monitor or receiving message. - -\begin{DoxyAuthor}{Author} -L.\+senaneuch -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Function Documentation} -\mbox{\Hypertarget{monitor_8cpp_aef87d80a1e44bf1953b3282967282ef0}\label{monitor_8cpp_aef87d80a1e44bf1953b3282967282ef0}} -\index{monitor.\+cpp@{monitor.\+cpp}!receive@{receive}} -\index{receive@{receive}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{receive()}{receive()}} -{\footnotesize\ttfamily int receive (\begin{DoxyParamCaption}\item[{char $\ast$}]{data }\end{DoxyParamCaption})} - - - -Definition at line 90 of file monitor.\+cpp. - -\mbox{\Hypertarget{monitor_8cpp_a61eca0d5b49118350db39583e1bd1032}\label{monitor_8cpp_a61eca0d5b49118350db39583e1bd1032}} -\index{monitor.\+cpp@{monitor.\+cpp}!receive\+\_\+message\+\_\+from\+\_\+monitor@{receive\+\_\+message\+\_\+from\+\_\+monitor}} -\index{receive\+\_\+message\+\_\+from\+\_\+monitor@{receive\+\_\+message\+\_\+from\+\_\+monitor}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{receive\+\_\+message\+\_\+from\+\_\+monitor()}{receive\_message\_from\_monitor()}} -{\footnotesize\ttfamily int receive\+\_\+message\+\_\+from\+\_\+monitor (\begin{DoxyParamCaption}\item[{char $\ast$}]{type\+Message, }\item[{char $\ast$}]{data }\end{DoxyParamCaption})} - - - -Réception d\textquotesingle{}un message. La fonction est bloquante et retourne par référence le type de message reçu (D\+MB pour un ordre au robot, A\+RN pour la détection des arènes et P\+OS pour un calcul de position) ainsi que les données associées. - - -\begin{DoxyParams}{Parameters} -{\em type\+Message} & Type du message reçu \+: D\+MB pour un ordre au robot, A\+RN pour la demande de détection de l\textquotesingle{}arène, P\+OS pour un calcul de position et M\+SG pour un message de l\textquotesingle{}interface \\ -\hline -{\em data} & données associées au message reçu. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -retourne 0 la taille du message reçu ou une valeur négative si la connexion est perdue. -\end{DoxyReturn} - - -Definition at line 83 of file monitor.\+cpp. - -\mbox{\Hypertarget{monitor_8cpp_af49d46447ce41019bd13a2c07a000644}\label{monitor_8cpp_af49d46447ce41019bd13a2c07a000644}} -\index{monitor.\+cpp@{monitor.\+cpp}!send\+\_\+message\+\_\+to\+\_\+monitor@{send\+\_\+message\+\_\+to\+\_\+monitor}} -\index{send\+\_\+message\+\_\+to\+\_\+monitor@{send\+\_\+message\+\_\+to\+\_\+monitor}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{send\+\_\+message\+\_\+to\+\_\+monitor()}{send\_message\_to\_monitor()}} -{\footnotesize\ttfamily int send\+\_\+message\+\_\+to\+\_\+monitor (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type\+Message, }\item[{const void $\ast$}]{data = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Envoi d\textquotesingle{}un message vers l\textquotesingle{}interface graphique. - - -\begin{DoxyParams}{Parameters} -{\em type\+Message} & Type du message envoyé. Les valeurs possibles sont I\+MG pour une image, M\+ES pour un message à afficher dans la console, P\+OS pour la position du robot, B\+AT pour une valeur de la batterie et A\+CK pour valider un message de l\textquotesingle{}interface. \\ -\hline -{\em data} & données associées au message. Le type de la donnée doit correspondre au message \+: Image pour I\+MG, char $\ast$ M\+ES, \hyperlink{struct_position}{Position} pour P\+OS, char $\ast$ pour B\+AT et rien pour A\+CK. Attention, il n\textquotesingle{}y a aucune vérification a posterio. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -retourne 0 si l\textquotesingle{}envoie a bien été réalisé et -\/1 en cas de problème. -\end{DoxyReturn} - - -Definition at line 40 of file monitor.\+cpp. - -\mbox{\Hypertarget{monitor_8cpp_a7265ec937de7d9ca68b81e5bd8203962}\label{monitor_8cpp_a7265ec937de7d9ca68b81e5bd8203962}} -\index{monitor.\+cpp@{monitor.\+cpp}!send\+Message@{send\+Message}} -\index{send\+Message@{send\+Message}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{send\+Message()}{sendMessage()}} -{\footnotesize\ttfamily int send\+Message (\begin{DoxyParamCaption}\item[{const char $\ast$}]{data, }\item[{int}]{data\+Length }\end{DoxyParamCaption})} - - - -Definition at line 97 of file monitor.\+cpp. - -\mbox{\Hypertarget{monitor_8cpp_a04c8d7ed93b301fafe6dcc08d64ba21b}\label{monitor_8cpp_a04c8d7ed93b301fafe6dcc08d64ba21b}} -\index{monitor.\+cpp@{monitor.\+cpp}!server\+Receive@{server\+Receive}} -\index{server\+Receive@{server\+Receive}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{server\+Receive()}{serverReceive()}} -{\footnotesize\ttfamily string server\+Receive (\begin{DoxyParamCaption}\item[{int}]{size }\end{DoxyParamCaption})} - - - -\subsection{Variable Documentation} -\mbox{\Hypertarget{monitor_8cpp_acd1a03adb2455aaacbd886642518d569}\label{monitor_8cpp_acd1a03adb2455aaacbd886642518d569}} -\index{monitor.\+cpp@{monitor.\+cpp}!recsize@{recsize}} -\index{recsize@{recsize}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{recsize}{recsize}} -{\footnotesize\ttfamily socklen\+\_\+t recsize = sizeof (\hyperlink{monitor_8cpp_a1f38ae3a59ce304779ebbca10378654a}{ssin})} - - - -Definition at line 33 of file monitor.\+cpp. - -\mbox{\Hypertarget{monitor_8cpp_a6e91849780a994f2adde299b33642829}\label{monitor_8cpp_a6e91849780a994f2adde299b33642829}} -\index{monitor.\+cpp@{monitor.\+cpp}!sock@{sock}} -\index{sock@{sock}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{sock}{sock}} -{\footnotesize\ttfamily \hyperlink{monitor_8h_a8dc8083897335125630f1af5dafd5831}{S\+O\+C\+K\+ET} sock} - - - -Definition at line 32 of file monitor.\+cpp. - -\mbox{\Hypertarget{monitor_8cpp_a1f38ae3a59ce304779ebbca10378654a}\label{monitor_8cpp_a1f38ae3a59ce304779ebbca10378654a}} -\index{monitor.\+cpp@{monitor.\+cpp}!ssin@{ssin}} -\index{ssin@{ssin}!monitor.\+cpp@{monitor.\+cpp}} -\subsubsection{\texorpdfstring{ssin}{ssin}} -{\footnotesize\ttfamily \hyperlink{monitor_8h_a29046dc0232f0e5c70adbc25090d77b8}{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN} ssin} - - - -Definition at line 31 of file monitor.\+cpp. - diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp__incl.md5 deleted file mode 100644 index d1b2e27..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -0dc23e583c45f2eb8efebc11b109e3a6 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp__incl.pdf deleted file mode 100644 index 8c5108c..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8cpp__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h.tex b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h.tex deleted file mode 100644 index 46a8552..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h.tex +++ /dev/null @@ -1,406 +0,0 @@ -\hypertarget{monitor_8h}{}\section{monitor.\+h File Reference} -\label{monitor_8h}\index{monitor.\+h@{monitor.\+h}} - - -Library for sending message to monitor or receiving message. - - -{\ttfamily \#include $<$sys/types.\+h$>$}\newline -{\ttfamily \#include $<$sys/socket.\+h$>$}\newline -{\ttfamily \#include $<$netinet/in.\+h$>$}\newline -{\ttfamily \#include $<$arpa/inet.\+h$>$}\newline -{\ttfamily \#include $<$unistd.\+h$>$}\newline -{\ttfamily \#include $<$signal.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$string.\+h$>$}\newline -{\ttfamily \#include \char`\"{}image.\+h\char`\"{}}\newline -{\ttfamily \#include \char`\"{}definitions.\+h\char`\"{}}\newline -Include dependency graph for monitor.\+h\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{monitor_8h__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -struct \hyperlink{struct_message_from_mon}{Message\+From\+Mon} -\end{DoxyCompactItemize} -\subsection*{Macros} -\begin{DoxyCompactItemize} -\item -\#define \hyperlink{monitor_8h_ad62b697bd25a71d171db46740aef2830}{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+I\+M\+A\+GE}~\char`\"{}I\+MG\char`\"{} -\item -\#define \hyperlink{monitor_8h_a0de226ae5af8b83f3b163ff4413eef95}{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+B\+AT}~\char`\"{}B\+AT\char`\"{} -\item -\#define \hyperlink{monitor_8h_a6a07aae2539981459edc8070a0f019db}{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+P\+OS}~\char`\"{}P\+OS\char`\"{} -\item -\#define \hyperlink{monitor_8h_ac2e64478522da4e3b45c139c0c72557f}{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+N\+O\+\_\+\+A\+CK}~\char`\"{}N\+AK\char`\"{} -\item -\#define \hyperlink{monitor_8h_af2325d19ae9da4310eb608c744149f53}{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+A\+CK}~\char`\"{}A\+CK\char`\"{} -\item -\#define \hyperlink{monitor_8h_ac1034bccb09918cccd3ba142377a6788}{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+M\+ES}~\char`\"{}M\+SG\char`\"{} -\item -\#define \hyperlink{monitor_8h_afe29ce74d16751828da8aec7e13ad06b}{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+L\+O\+S\+T\+\_\+\+D\+MB}~\char`\"{}L\+CD\char`\"{} -\item -\#define \hyperlink{monitor_8h_a980e8f9457e30018fddcd4d997f17a85}{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+M\+SG}~\char`\"{}M\+SG\char`\"{} -\item -\#define \hyperlink{monitor_8h_a5ccd30e6502bb94eaa13a597edb1f156}{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+D\+M\+B\+\_\+\+O\+R\+D\+ER}~\char`\"{}D\+MB\char`\"{} -\item -\#define \hyperlink{monitor_8h_a0c829d92889c5c9b2d485964ce933fab}{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+O\+M\+\_\+\+D\+MB}~\char`\"{}C\+OM\char`\"{} -\item -\#define \hyperlink{monitor_8h_a91e2658cf20010646211ba748885c180}{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+A\+M\+E\+RA}~\char`\"{}C\+AM\char`\"{} -\item -\#define \hyperlink{monitor_8h_a2be30c9a3e65eaf5502b8542a6ac6259}{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+S\+T\+OP}~\char`\"{}S\+TO\char`\"{} -\item -\#define \hyperlink{monitor_8h_a26769957ec1a2beaf223f33b66ee64ab}{I\+N\+V\+A\+L\+I\+D\+\_\+\+S\+O\+C\+K\+ET}~-\/1 -\item -\#define \hyperlink{monitor_8h_a633b0396ff93d336a088412a190a5072}{S\+O\+C\+K\+E\+T\+\_\+\+E\+R\+R\+OR}~-\/1 -\item -\#define \hyperlink{monitor_8h_a16b710f592bf8f7900666392adc444dc}{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+O\+RT}~8080 -\item -\#define \hyperlink{monitor_8h_a939612a13947b5bb9fc848e3222a231d}{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+A\+R\+I\+TY}~0 -\item -\#define \hyperlink{monitor_8h_ab3be9ae187e8b98bb000ca0bca68e982}{D\+E\+T\+E\+C\+T\+\_\+\+A\+R\+E\+NA}~(1) -\item -\#define \hyperlink{monitor_8h_a22d20ac264e03c59d6941cb11386aa89}{C\+H\+E\+C\+K\+\_\+\+A\+R\+E\+NA}~(2) -\item -\#define \hyperlink{monitor_8h_a1d58e03abc2a587c7f0a0665c94c0e68}{N\+O\+\_\+\+A\+R\+E\+NA}~(3) -\item -\#define \hyperlink{monitor_8h_a2c47b710f0858fe41c544517c6b2a2fd}{D\+E\+F\+A\+U\+L\+T\+\_\+\+N\+O\+D\+E\+J\+S\+\_\+\+P\+A\+TH}~\char`\"{}/usr/bin/nodejs\char`\"{} -\item -\#define \hyperlink{monitor_8h_af533d8bd7d6a1d9f9efba3b259280e32}{D\+E\+F\+A\+U\+L\+T\+\_\+\+I\+N\+T\+E\+R\+F\+A\+C\+E\+\_\+\+F\+I\+LE}~\char`\"{}./interface.\+js\char`\"{} -\item -\#define \hyperlink{monitor_8h_ab6b45251e218af8f09c5d627b5262398}{closesocket}(param)~close(param) -\end{DoxyCompactItemize} -\subsection*{Typedefs} -\begin{DoxyCompactItemize} -\item -typedef int \hyperlink{monitor_8h_a8dc8083897335125630f1af5dafd5831}{S\+O\+C\+K\+ET} -\item -typedef struct sockaddr\+\_\+in \hyperlink{monitor_8h_a29046dc0232f0e5c70adbc25090d77b8}{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN} -\item -typedef struct sockaddr \hyperlink{monitor_8h_ae334b73cedf7204187dce3f817576009}{S\+O\+C\+K\+A\+D\+DR} -\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \hyperlink{monitor_8h_ac3d876b96642b6ee46f6a96b7ffcb864}{send\+\_\+message\+\_\+to\+\_\+monitor} (const char $\ast$type\+Message, const void $\ast$data=N\+U\+LL) -\begin{DoxyCompactList}\small\item\em Envoi d\textquotesingle{}un message vers l\textquotesingle{}interface graphique. \end{DoxyCompactList}\item -int \hyperlink{monitor_8h_a61eca0d5b49118350db39583e1bd1032}{receive\+\_\+message\+\_\+from\+\_\+monitor} (char $\ast$type\+Message, char $\ast$data) -\begin{DoxyCompactList}\small\item\em Réception d\textquotesingle{}un message. La fonction est bloquante et retourne par référence le type de message reçu (D\+MB pour un ordre au robot, A\+RN pour la détection des arènes et P\+OS pour un calcul de position) ainsi que les données associées. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Library for sending message to monitor or receiving message. - -\begin{DoxyAuthor}{Author} -L.\+senaneuch -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Macro Definition Documentation} -\mbox{\Hypertarget{monitor_8h_a22d20ac264e03c59d6941cb11386aa89}\label{monitor_8h_a22d20ac264e03c59d6941cb11386aa89}} -\index{monitor.\+h@{monitor.\+h}!C\+H\+E\+C\+K\+\_\+\+A\+R\+E\+NA@{C\+H\+E\+C\+K\+\_\+\+A\+R\+E\+NA}} -\index{C\+H\+E\+C\+K\+\_\+\+A\+R\+E\+NA@{C\+H\+E\+C\+K\+\_\+\+A\+R\+E\+NA}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{C\+H\+E\+C\+K\+\_\+\+A\+R\+E\+NA}{CHECK\_ARENA}} -{\footnotesize\ttfamily \#define C\+H\+E\+C\+K\+\_\+\+A\+R\+E\+NA~(2)} - - - -Definition at line 62 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_ab6b45251e218af8f09c5d627b5262398}\label{monitor_8h_ab6b45251e218af8f09c5d627b5262398}} -\index{monitor.\+h@{monitor.\+h}!closesocket@{closesocket}} -\index{closesocket@{closesocket}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{closesocket}{closesocket}} -{\footnotesize\ttfamily \#define closesocket(\begin{DoxyParamCaption}\item[{}]{param }\end{DoxyParamCaption})~close(param)} - - - -Definition at line 68 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_af533d8bd7d6a1d9f9efba3b259280e32}\label{monitor_8h_af533d8bd7d6a1d9f9efba3b259280e32}} -\index{monitor.\+h@{monitor.\+h}!D\+E\+F\+A\+U\+L\+T\+\_\+\+I\+N\+T\+E\+R\+F\+A\+C\+E\+\_\+\+F\+I\+LE@{D\+E\+F\+A\+U\+L\+T\+\_\+\+I\+N\+T\+E\+R\+F\+A\+C\+E\+\_\+\+F\+I\+LE}} -\index{D\+E\+F\+A\+U\+L\+T\+\_\+\+I\+N\+T\+E\+R\+F\+A\+C\+E\+\_\+\+F\+I\+LE@{D\+E\+F\+A\+U\+L\+T\+\_\+\+I\+N\+T\+E\+R\+F\+A\+C\+E\+\_\+\+F\+I\+LE}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{D\+E\+F\+A\+U\+L\+T\+\_\+\+I\+N\+T\+E\+R\+F\+A\+C\+E\+\_\+\+F\+I\+LE}{DEFAULT\_INTERFACE\_FILE}} -{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+I\+N\+T\+E\+R\+F\+A\+C\+E\+\_\+\+F\+I\+LE~\char`\"{}./interface.\+js\char`\"{}} - - - -Definition at line 66 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a2c47b710f0858fe41c544517c6b2a2fd}\label{monitor_8h_a2c47b710f0858fe41c544517c6b2a2fd}} -\index{monitor.\+h@{monitor.\+h}!D\+E\+F\+A\+U\+L\+T\+\_\+\+N\+O\+D\+E\+J\+S\+\_\+\+P\+A\+TH@{D\+E\+F\+A\+U\+L\+T\+\_\+\+N\+O\+D\+E\+J\+S\+\_\+\+P\+A\+TH}} -\index{D\+E\+F\+A\+U\+L\+T\+\_\+\+N\+O\+D\+E\+J\+S\+\_\+\+P\+A\+TH@{D\+E\+F\+A\+U\+L\+T\+\_\+\+N\+O\+D\+E\+J\+S\+\_\+\+P\+A\+TH}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{D\+E\+F\+A\+U\+L\+T\+\_\+\+N\+O\+D\+E\+J\+S\+\_\+\+P\+A\+TH}{DEFAULT\_NODEJS\_PATH}} -{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+N\+O\+D\+E\+J\+S\+\_\+\+P\+A\+TH~\char`\"{}/usr/bin/nodejs\char`\"{}} - - - -Definition at line 65 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a939612a13947b5bb9fc848e3222a231d}\label{monitor_8h_a939612a13947b5bb9fc848e3222a231d}} -\index{monitor.\+h@{monitor.\+h}!D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+A\+R\+I\+TY@{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+A\+R\+I\+TY}} -\index{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+A\+R\+I\+TY@{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+A\+R\+I\+TY}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+A\+R\+I\+TY}{DEFAULT\_PARITY}} -{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+A\+R\+I\+TY~0} - - - -Definition at line 59 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a16b710f592bf8f7900666392adc444dc}\label{monitor_8h_a16b710f592bf8f7900666392adc444dc}} -\index{monitor.\+h@{monitor.\+h}!D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+O\+RT@{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+O\+RT}} -\index{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+O\+RT@{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+O\+RT}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+O\+RT}{DEFAULT\_PORT}} -{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+P\+O\+RT~8080} - - - -Definition at line 58 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_ab3be9ae187e8b98bb000ca0bca68e982}\label{monitor_8h_ab3be9ae187e8b98bb000ca0bca68e982}} -\index{monitor.\+h@{monitor.\+h}!D\+E\+T\+E\+C\+T\+\_\+\+A\+R\+E\+NA@{D\+E\+T\+E\+C\+T\+\_\+\+A\+R\+E\+NA}} -\index{D\+E\+T\+E\+C\+T\+\_\+\+A\+R\+E\+NA@{D\+E\+T\+E\+C\+T\+\_\+\+A\+R\+E\+NA}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{D\+E\+T\+E\+C\+T\+\_\+\+A\+R\+E\+NA}{DETECT\_ARENA}} -{\footnotesize\ttfamily \#define D\+E\+T\+E\+C\+T\+\_\+\+A\+R\+E\+NA~(1)} - - - -Definition at line 61 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a91e2658cf20010646211ba748885c180}\label{monitor_8h_a91e2658cf20010646211ba748885c180}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+A\+M\+E\+RA@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+A\+M\+E\+RA}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+A\+M\+E\+RA@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+A\+M\+E\+RA}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+A\+M\+E\+RA}{HEADER\_MTS\_CAMERA}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+A\+M\+E\+RA~\char`\"{}C\+AM\char`\"{}} - - - -Definition at line 52 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a0c829d92889c5c9b2d485964ce933fab}\label{monitor_8h_a0c829d92889c5c9b2d485964ce933fab}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+O\+M\+\_\+\+D\+MB@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+O\+M\+\_\+\+D\+MB}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+O\+M\+\_\+\+D\+MB@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+O\+M\+\_\+\+D\+MB}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+O\+M\+\_\+\+D\+MB}{HEADER\_MTS\_COM\_DMB}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+C\+O\+M\+\_\+\+D\+MB~\char`\"{}C\+OM\char`\"{}} - - - -Definition at line 51 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a5ccd30e6502bb94eaa13a597edb1f156}\label{monitor_8h_a5ccd30e6502bb94eaa13a597edb1f156}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+D\+M\+B\+\_\+\+O\+R\+D\+ER@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+D\+M\+B\+\_\+\+O\+R\+D\+ER}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+D\+M\+B\+\_\+\+O\+R\+D\+ER@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+D\+M\+B\+\_\+\+O\+R\+D\+ER}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+D\+M\+B\+\_\+\+O\+R\+D\+ER}{HEADER\_MTS\_DMB\_ORDER}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+D\+M\+B\+\_\+\+O\+R\+D\+ER~\char`\"{}D\+MB\char`\"{}} - - - -Definition at line 50 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a980e8f9457e30018fddcd4d997f17a85}\label{monitor_8h_a980e8f9457e30018fddcd4d997f17a85}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+M\+SG@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+M\+SG}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+M\+SG@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+M\+SG}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+M\+SG}{HEADER\_MTS\_MSG}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+M\+SG~\char`\"{}M\+SG\char`\"{}} - - - -Definition at line 49 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a2be30c9a3e65eaf5502b8542a6ac6259}\label{monitor_8h_a2be30c9a3e65eaf5502b8542a6ac6259}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+S\+T\+OP@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+S\+T\+OP}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+S\+T\+OP@{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+S\+T\+OP}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+S\+T\+OP}{HEADER\_MTS\_STOP}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+M\+T\+S\+\_\+\+S\+T\+OP~\char`\"{}S\+TO\char`\"{}} - - - -Definition at line 53 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_af2325d19ae9da4310eb608c744149f53}\label{monitor_8h_af2325d19ae9da4310eb608c744149f53}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+A\+CK@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+A\+CK}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+A\+CK@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+A\+CK}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+A\+CK}{HEADER\_STM\_ACK}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+A\+CK~\char`\"{}A\+CK\char`\"{}} - - - -Definition at line 45 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a0de226ae5af8b83f3b163ff4413eef95}\label{monitor_8h_a0de226ae5af8b83f3b163ff4413eef95}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+B\+AT@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+B\+AT}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+B\+AT@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+B\+AT}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+B\+AT}{HEADER\_STM\_BAT}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+B\+AT~\char`\"{}B\+AT\char`\"{}} - - - -Definition at line 42 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_ad62b697bd25a71d171db46740aef2830}\label{monitor_8h_ad62b697bd25a71d171db46740aef2830}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+I\+M\+A\+GE@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+I\+M\+A\+GE}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+I\+M\+A\+GE@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+I\+M\+A\+GE}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+I\+M\+A\+GE}{HEADER\_STM\_IMAGE}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+I\+M\+A\+GE~\char`\"{}I\+MG\char`\"{}} - - - -Definition at line 41 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_afe29ce74d16751828da8aec7e13ad06b}\label{monitor_8h_afe29ce74d16751828da8aec7e13ad06b}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+L\+O\+S\+T\+\_\+\+D\+MB@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+L\+O\+S\+T\+\_\+\+D\+MB}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+L\+O\+S\+T\+\_\+\+D\+MB@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+L\+O\+S\+T\+\_\+\+D\+MB}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+L\+O\+S\+T\+\_\+\+D\+MB}{HEADER\_STM\_LOST\_DMB}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+L\+O\+S\+T\+\_\+\+D\+MB~\char`\"{}L\+CD\char`\"{}} - - - -Definition at line 47 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_ac1034bccb09918cccd3ba142377a6788}\label{monitor_8h_ac1034bccb09918cccd3ba142377a6788}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+M\+ES@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+M\+ES}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+M\+ES@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+M\+ES}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+M\+ES}{HEADER\_STM\_MES}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+M\+ES~\char`\"{}M\+SG\char`\"{}} - - - -Definition at line 46 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_ac2e64478522da4e3b45c139c0c72557f}\label{monitor_8h_ac2e64478522da4e3b45c139c0c72557f}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+N\+O\+\_\+\+A\+CK@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+N\+O\+\_\+\+A\+CK}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+N\+O\+\_\+\+A\+CK@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+N\+O\+\_\+\+A\+CK}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+N\+O\+\_\+\+A\+CK}{HEADER\_STM\_NO\_ACK}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+N\+O\+\_\+\+A\+CK~\char`\"{}N\+AK\char`\"{}} - - - -Definition at line 44 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a6a07aae2539981459edc8070a0f019db}\label{monitor_8h_a6a07aae2539981459edc8070a0f019db}} -\index{monitor.\+h@{monitor.\+h}!H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+P\+OS@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+P\+OS}} -\index{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+P\+OS@{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+P\+OS}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+P\+OS}{HEADER\_STM\_POS}} -{\footnotesize\ttfamily \#define H\+E\+A\+D\+E\+R\+\_\+\+S\+T\+M\+\_\+\+P\+OS~\char`\"{}P\+OS\char`\"{}} - - - -Definition at line 43 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a26769957ec1a2beaf223f33b66ee64ab}\label{monitor_8h_a26769957ec1a2beaf223f33b66ee64ab}} -\index{monitor.\+h@{monitor.\+h}!I\+N\+V\+A\+L\+I\+D\+\_\+\+S\+O\+C\+K\+ET@{I\+N\+V\+A\+L\+I\+D\+\_\+\+S\+O\+C\+K\+ET}} -\index{I\+N\+V\+A\+L\+I\+D\+\_\+\+S\+O\+C\+K\+ET@{I\+N\+V\+A\+L\+I\+D\+\_\+\+S\+O\+C\+K\+ET}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{I\+N\+V\+A\+L\+I\+D\+\_\+\+S\+O\+C\+K\+ET}{INVALID\_SOCKET}} -{\footnotesize\ttfamily \#define I\+N\+V\+A\+L\+I\+D\+\_\+\+S\+O\+C\+K\+ET~-\/1} - - - -Definition at line 55 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a1d58e03abc2a587c7f0a0665c94c0e68}\label{monitor_8h_a1d58e03abc2a587c7f0a0665c94c0e68}} -\index{monitor.\+h@{monitor.\+h}!N\+O\+\_\+\+A\+R\+E\+NA@{N\+O\+\_\+\+A\+R\+E\+NA}} -\index{N\+O\+\_\+\+A\+R\+E\+NA@{N\+O\+\_\+\+A\+R\+E\+NA}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{N\+O\+\_\+\+A\+R\+E\+NA}{NO\_ARENA}} -{\footnotesize\ttfamily \#define N\+O\+\_\+\+A\+R\+E\+NA~(3)} - - - -Definition at line 63 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a633b0396ff93d336a088412a190a5072}\label{monitor_8h_a633b0396ff93d336a088412a190a5072}} -\index{monitor.\+h@{monitor.\+h}!S\+O\+C\+K\+E\+T\+\_\+\+E\+R\+R\+OR@{S\+O\+C\+K\+E\+T\+\_\+\+E\+R\+R\+OR}} -\index{S\+O\+C\+K\+E\+T\+\_\+\+E\+R\+R\+OR@{S\+O\+C\+K\+E\+T\+\_\+\+E\+R\+R\+OR}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{S\+O\+C\+K\+E\+T\+\_\+\+E\+R\+R\+OR}{SOCKET\_ERROR}} -{\footnotesize\ttfamily \#define S\+O\+C\+K\+E\+T\+\_\+\+E\+R\+R\+OR~-\/1} - - - -Definition at line 56 of file monitor.\+h. - - - -\subsection{Typedef Documentation} -\mbox{\Hypertarget{monitor_8h_ae334b73cedf7204187dce3f817576009}\label{monitor_8h_ae334b73cedf7204187dce3f817576009}} -\index{monitor.\+h@{monitor.\+h}!S\+O\+C\+K\+A\+D\+DR@{S\+O\+C\+K\+A\+D\+DR}} -\index{S\+O\+C\+K\+A\+D\+DR@{S\+O\+C\+K\+A\+D\+DR}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{S\+O\+C\+K\+A\+D\+DR}{SOCKADDR}} -{\footnotesize\ttfamily typedef struct sockaddr \hyperlink{monitor_8h_ae334b73cedf7204187dce3f817576009}{S\+O\+C\+K\+A\+D\+DR}} - - - -Definition at line 72 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a29046dc0232f0e5c70adbc25090d77b8}\label{monitor_8h_a29046dc0232f0e5c70adbc25090d77b8}} -\index{monitor.\+h@{monitor.\+h}!S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN@{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN}} -\index{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN@{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN}{SOCKADDR\_IN}} -{\footnotesize\ttfamily typedef struct sockaddr\+\_\+in \hyperlink{monitor_8h_a29046dc0232f0e5c70adbc25090d77b8}{S\+O\+C\+K\+A\+D\+D\+R\+\_\+\+IN}} - - - -Definition at line 71 of file monitor.\+h. - -\mbox{\Hypertarget{monitor_8h_a8dc8083897335125630f1af5dafd5831}\label{monitor_8h_a8dc8083897335125630f1af5dafd5831}} -\index{monitor.\+h@{monitor.\+h}!S\+O\+C\+K\+ET@{S\+O\+C\+K\+ET}} -\index{S\+O\+C\+K\+ET@{S\+O\+C\+K\+ET}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{S\+O\+C\+K\+ET}{SOCKET}} -{\footnotesize\ttfamily typedef int \hyperlink{monitor_8h_a8dc8083897335125630f1af5dafd5831}{S\+O\+C\+K\+ET}} - - - -Definition at line 70 of file monitor.\+h. - - - -\subsection{Function Documentation} -\mbox{\Hypertarget{monitor_8h_a61eca0d5b49118350db39583e1bd1032}\label{monitor_8h_a61eca0d5b49118350db39583e1bd1032}} -\index{monitor.\+h@{monitor.\+h}!receive\+\_\+message\+\_\+from\+\_\+monitor@{receive\+\_\+message\+\_\+from\+\_\+monitor}} -\index{receive\+\_\+message\+\_\+from\+\_\+monitor@{receive\+\_\+message\+\_\+from\+\_\+monitor}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{receive\+\_\+message\+\_\+from\+\_\+monitor()}{receive\_message\_from\_monitor()}} -{\footnotesize\ttfamily int receive\+\_\+message\+\_\+from\+\_\+monitor (\begin{DoxyParamCaption}\item[{char $\ast$}]{type\+Message, }\item[{char $\ast$}]{data }\end{DoxyParamCaption})} - - - -Réception d\textquotesingle{}un message. La fonction est bloquante et retourne par référence le type de message reçu (D\+MB pour un ordre au robot, A\+RN pour la détection des arènes et P\+OS pour un calcul de position) ainsi que les données associées. - - -\begin{DoxyParams}{Parameters} -{\em type\+Message} & Type du message reçu \+: D\+MB pour un ordre au robot, A\+RN pour la demande de détection de l\textquotesingle{}arène, P\+OS pour un calcul de position et M\+SG pour un message de l\textquotesingle{}interface \\ -\hline -{\em data} & données associées au message reçu. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne 0 la taille du message reçu ou une valeur négative si la connexion est perdue. -\end{DoxyReturn} -\mbox{\Hypertarget{monitor_8h_ac3d876b96642b6ee46f6a96b7ffcb864}\label{monitor_8h_ac3d876b96642b6ee46f6a96b7ffcb864}} -\index{monitor.\+h@{monitor.\+h}!send\+\_\+message\+\_\+to\+\_\+monitor@{send\+\_\+message\+\_\+to\+\_\+monitor}} -\index{send\+\_\+message\+\_\+to\+\_\+monitor@{send\+\_\+message\+\_\+to\+\_\+monitor}!monitor.\+h@{monitor.\+h}} -\subsubsection{\texorpdfstring{send\+\_\+message\+\_\+to\+\_\+monitor()}{send\_message\_to\_monitor()}} -{\footnotesize\ttfamily int send\+\_\+message\+\_\+to\+\_\+monitor (\begin{DoxyParamCaption}\item[{const char $\ast$}]{type\+Message, }\item[{const void $\ast$}]{data = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Envoi d\textquotesingle{}un message vers l\textquotesingle{}interface graphique. - - -\begin{DoxyParams}{Parameters} -{\em type\+Message} & Type du message envoyé. Les valeurs possibles sont I\+MG pour une image, M\+ES pour un message à afficher dans la console, P\+OS pour la position du robot, B\+AT pour une valeur de la batterie et A\+CK pour valider un message de l\textquotesingle{}interface. \\ -\hline -{\em data} & données associées au message. Le type de la donnée doit correspondre au message \+: Image pour I\+MG, char $\ast$ M\+ES, \hyperlink{struct_position}{Position} pour P\+OS, char $\ast$ pour B\+AT et rien pour A\+CK. Attention, il n\textquotesingle{}y a aucune vérification a posterio. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne 0 si l\textquotesingle{}envoie a bien été réalisé et -\/1 en cas de problème. -\end{DoxyReturn} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__dep__incl.md5 deleted file mode 100644 index 03d3478..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -77c1bdf6c74a578f1a45f5d60ed69fae \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__dep__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__dep__incl.pdf deleted file mode 100644 index 32318dc..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__dep__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__incl.md5 deleted file mode 100644 index 76bcecc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -592d30edf156f19615e71d4acb9433b5 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__incl.pdf deleted file mode 100644 index 82b19bf..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/monitor_8h__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/refman.tex b/software/raspberry/superviseur-robot/lib/doc/latex/refman.tex deleted file mode 100644 index f09fd89..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/refman.tex +++ /dev/null @@ -1,167 +0,0 @@ -\documentclass[twoside]{book} - -% Packages required by doxygen -\usepackage{fixltx2e} -\usepackage{calc} -\usepackage{doxygen} -\usepackage[export]{adjustbox} % also loads graphicx -\usepackage{graphicx} -\usepackage[utf8]{inputenc} -\usepackage{makeidx} -\usepackage{multicol} -\usepackage{multirow} -\PassOptionsToPackage{warn}{textcomp} -\usepackage{textcomp} -\usepackage[nointegrals]{wasysym} -\usepackage[table]{xcolor} - -% Font selection -\usepackage[T1]{fontenc} -\usepackage[scaled=.90]{helvet} -\usepackage{courier} -\usepackage{amssymb} -\usepackage{sectsty} -\renewcommand{\familydefault}{\sfdefault} -\allsectionsfont{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\renewcommand{\DoxyLabelFont}{% - \fontseries{bc}\selectfont% - \color{darkgray}% -} -\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} - -% Page & text layout -\usepackage{geometry} -\geometry{% - a4paper,% - top=2.5cm,% - bottom=2.5cm,% - left=2.5cm,% - right=2.5cm% -} -\tolerance=750 -\hfuzz=15pt -\hbadness=750 -\setlength{\emergencystretch}{15pt} -\setlength{\parindent}{0cm} -\setlength{\parskip}{3ex plus 2ex minus 2ex} -\makeatletter -\renewcommand{\paragraph}{% - \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@parafont% - }% -} -\renewcommand{\subparagraph}{% - \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% - \normalfont\normalsize\bfseries\SS@subparafont% - }% -} -\makeatother - -% Headers & footers -\usepackage{fancyhdr} -\pagestyle{fancyplain} -\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} -\fancyhead[CE]{\fancyplain{}{}} -\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} -\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} -\fancyhead[CO]{\fancyplain{}{}} -\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} -\fancyfoot[LE]{\fancyplain{}{}} -\fancyfoot[CE]{\fancyplain{}{}} -\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} -\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} -\fancyfoot[CO]{\fancyplain{}{}} -\fancyfoot[RO]{\fancyplain{}{}} -\renewcommand{\footrulewidth}{0.4pt} -\renewcommand{\chaptermark}[1]{% - \markboth{#1}{}% -} -\renewcommand{\sectionmark}[1]{% - \markright{\thesection\ #1}% -} - -% Indices & bibliography -\usepackage{natbib} -\usepackage[titles]{tocloft} -\setcounter{tocdepth}{3} -\setcounter{secnumdepth}{5} -\makeindex - -% Hyperlinks (required, but should be loaded last) -\usepackage{ifpdf} -\ifpdf - \usepackage[pdftex,pagebackref=true]{hyperref} -\else - \usepackage[ps2pdf,pagebackref=true]{hyperref} -\fi -\hypersetup{% - colorlinks=true,% - linkcolor=blue,% - citecolor=blue,% - unicode% -} - -% Custom commands -\newcommand{\clearemptydoublepage}{% - \newpage{\pagestyle{empty}\cleardoublepage}% -} - -\usepackage{caption} -\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} - -%===== C O N T E N T S ===== - -\begin{document} - -% Titlepage & ToC -\hypersetup{pageanchor=false, - bookmarksnumbered=true, - pdfencoding=unicode - } -\pagenumbering{alph} -\begin{titlepage} -\vspace*{7cm} -\begin{center}% -{\Large Bibliotheques TP RT \\[1ex]\large 1.\+0 }\\ -\vspace*{1cm} -{\large Generated by Doxygen 1.8.13}\\ -\end{center} -\end{titlepage} -\clearemptydoublepage -\pagenumbering{roman} -\tableofcontents -\clearemptydoublepage -\pagenumbering{arabic} -\hypersetup{pageanchor=true} - -%--- Begin generated contents --- -\chapter{Class Index} -\input{annotated} -\chapter{File Index} -\input{files} -\chapter{Class Documentation} -\input{struct_message_from_mon} -\input{struct_message_to_mon} -\input{struct_message_to_robot} -\input{struct_position} -\chapter{File Documentation} -\input{definitions_8h} -\input{image_8h} -\input{message_8h} -\input{monitor_8h} -\input{robot_8h} -\input{server_8h} -%--- End generated contents --- - -% Index -\backmatter -\newpage -\phantomsection -\clearemptydoublepage -\addcontentsline{toc}{chapter}{Index} -\printindex - -\end{document} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot-icon.resized.png b/software/raspberry/superviseur-robot/lib/doc/latex/robot-icon.resized.png deleted file mode 100644 index e464bd0..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/robot-icon.resized.png and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp.tex b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp.tex deleted file mode 100644 index a94ed27..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp.tex +++ /dev/null @@ -1,175 +0,0 @@ -\hypertarget{robot_8cpp}{}\section{src/robot.cpp File Reference} -\label{robot_8cpp}\index{src/robot.\+cpp@{src/robot.\+cpp}} -{\ttfamily \#include \char`\"{}robot.\+h\char`\"{}}\newline -Include dependency graph for robot.\+cpp\+: -\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{robot_8cpp__incl} -\end{center} -\end{figure} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \hyperlink{robot_8cpp_a116eceb372bf4bda7e6a360286e762b1}{get\+Char} (char $\ast$c) -\item -int \hyperlink{robot_8cpp_a2e1339c58b604c970f67096c7d143c2a}{read\+Serial} (char $\ast$msg) -\item -char \hyperlink{robot_8cpp_ab87123df26d91967d4d7507ad10326ac}{check\+Sum\+GO} (char $\ast$msg) -\item -int \hyperlink{robot_8cpp_adf885bd17005f841896acf2e49350db7}{receive\+Msg} (void) -\item -int \hyperlink{robot_8cpp_ac9d64c6d05c20ae9fdb8c158e2ee7098}{send\+Cmd} (char cmd, const char $\ast$arg) -\item -int \hyperlink{robot_8cpp_a9360e75fe324da14faaa87105771140e}{open\+\_\+communication\+\_\+robot} (const char $\ast$path) -\begin{DoxyCompactList}\small\item\em Ouvre la communication avec le robot. \end{DoxyCompactList}\item -int \hyperlink{robot_8cpp_a3fbce7530a62f9287f8a3b85b9c7e4d7}{close\+\_\+communication\+\_\+robot} (void) -\begin{DoxyCompactList}\small\item\em Ferme la communication avec le robot. \end{DoxyCompactList}\item -int \hyperlink{robot_8cpp_a68c01c5d6226d21fc0d141f681806677}{send\+\_\+command\+\_\+to\+\_\+robot} (char cmd, const char $\ast$arg) -\begin{DoxyCompactList}\small\item\em Envoi une commande au robot et attends sa réponse. \end{DoxyCompactList}\end{DoxyCompactItemize} -\subsection*{Variables} -\begin{DoxyCompactItemize} -\item -int \hyperlink{robot_8cpp_a6f8059414f0228f0256115e024eeed4b}{fd} -\end{DoxyCompactItemize} - - -\subsection{Function Documentation} -\mbox{\Hypertarget{robot_8cpp_ab87123df26d91967d4d7507ad10326ac}\label{robot_8cpp_ab87123df26d91967d4d7507ad10326ac}} -\index{robot.\+cpp@{robot.\+cpp}!check\+Sum\+GO@{check\+Sum\+GO}} -\index{check\+Sum\+GO@{check\+Sum\+GO}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{check\+Sum\+G\+O()}{checkSumGO()}} -{\footnotesize\ttfamily char check\+Sum\+GO (\begin{DoxyParamCaption}\item[{char $\ast$}]{msg }\end{DoxyParamCaption})} - - - -Definition at line 237 of file robot.\+cpp. - -\mbox{\Hypertarget{robot_8cpp_a3fbce7530a62f9287f8a3b85b9c7e4d7}\label{robot_8cpp_a3fbce7530a62f9287f8a3b85b9c7e4d7}} -\index{robot.\+cpp@{robot.\+cpp}!close\+\_\+communication\+\_\+robot@{close\+\_\+communication\+\_\+robot}} -\index{close\+\_\+communication\+\_\+robot@{close\+\_\+communication\+\_\+robot}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{close\+\_\+communication\+\_\+robot()}{close\_communication\_robot()}} -{\footnotesize\ttfamily int close\+\_\+communication\+\_\+robot (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} - - - -Ferme la communication avec le robot. - -Ferme le descripteur de fichier du port serie contrôlant le robot. - - -\begin{DoxyParams}{Parameters} -{\em void} & aucun \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne -\/1 en cas d\textquotesingle{}erreur ou 0 en cas de fermeture effectué -\end{DoxyReturn} - - -Definition at line 64 of file robot.\+cpp. - -\mbox{\Hypertarget{robot_8cpp_a116eceb372bf4bda7e6a360286e762b1}\label{robot_8cpp_a116eceb372bf4bda7e6a360286e762b1}} -\index{robot.\+cpp@{robot.\+cpp}!get\+Char@{get\+Char}} -\index{get\+Char@{get\+Char}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{get\+Char()}{getChar()}} -{\footnotesize\ttfamily int get\+Char (\begin{DoxyParamCaption}\item[{char $\ast$}]{c }\end{DoxyParamCaption})} - - - -Definition at line 199 of file robot.\+cpp. - -\mbox{\Hypertarget{robot_8cpp_a9360e75fe324da14faaa87105771140e}\label{robot_8cpp_a9360e75fe324da14faaa87105771140e}} -\index{robot.\+cpp@{robot.\+cpp}!open\+\_\+communication\+\_\+robot@{open\+\_\+communication\+\_\+robot}} -\index{open\+\_\+communication\+\_\+robot@{open\+\_\+communication\+\_\+robot}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{open\+\_\+communication\+\_\+robot()}{open\_communication\_robot()}} -{\footnotesize\ttfamily int open\+\_\+communication\+\_\+robot (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path = {\ttfamily \hyperlink{robot_8h_a32c8768c18732c59b503f8ee7515a693}{serial\+Port}} }\end{DoxyParamCaption})} - - - -Ouvre la communication avec le robot. - -Ouvre le serial port passé en paramétre. Par defaut cette fonction ouvre le port tty\+SO connecté au module xbee. - - -\begin{DoxyParams}{Parameters} -{\em $\ast$path} & chaine de caractère indiquant le path du port serie à ouvrir. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Return -\/1 si l\textquotesingle{}ouverture c\textquotesingle{}est mal passé et 0 si le port est ouvert. -\end{DoxyReturn} - - -Definition at line 36 of file robot.\+cpp. - -\mbox{\Hypertarget{robot_8cpp_a2e1339c58b604c970f67096c7d143c2a}\label{robot_8cpp_a2e1339c58b604c970f67096c7d143c2a}} -\index{robot.\+cpp@{robot.\+cpp}!read\+Serial@{read\+Serial}} -\index{read\+Serial@{read\+Serial}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{read\+Serial()}{readSerial()}} -{\footnotesize\ttfamily int read\+Serial (\begin{DoxyParamCaption}\item[{char $\ast$}]{msg }\end{DoxyParamCaption})} - - - -Definition at line 216 of file robot.\+cpp. - -\mbox{\Hypertarget{robot_8cpp_adf885bd17005f841896acf2e49350db7}\label{robot_8cpp_adf885bd17005f841896acf2e49350db7}} -\index{robot.\+cpp@{robot.\+cpp}!receive\+Msg@{receive\+Msg}} -\index{receive\+Msg@{receive\+Msg}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{receive\+Msg()}{receiveMsg()}} -{\footnotesize\ttfamily int receive\+Msg (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} - - - -Definition at line 168 of file robot.\+cpp. - -\mbox{\Hypertarget{robot_8cpp_a68c01c5d6226d21fc0d141f681806677}\label{robot_8cpp_a68c01c5d6226d21fc0d141f681806677}} -\index{robot.\+cpp@{robot.\+cpp}!send\+\_\+command\+\_\+to\+\_\+robot@{send\+\_\+command\+\_\+to\+\_\+robot}} -\index{send\+\_\+command\+\_\+to\+\_\+robot@{send\+\_\+command\+\_\+to\+\_\+robot}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{send\+\_\+command\+\_\+to\+\_\+robot()}{send\_command\_to\_robot()}} -{\footnotesize\ttfamily int send\+\_\+command\+\_\+to\+\_\+robot (\begin{DoxyParamCaption}\item[{char}]{cmd, }\item[{const char $\ast$}]{arg = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Envoi une commande au robot et attends sa réponse. - -Envoi une commande au robot en ajoutant le checksum et lis la réponse du robot en verifiant le checksum. Le premier paramétre {\itshape cmd} correspond au type de commande ex \+: P\+I\+NG, S\+E\+T\+M\+O\+VE ... Le second paramétre {\itshape $\ast$arg} correspond aux arguments à la commande ex \+: S\+E\+T\+M\+O\+VE, \char`\"{}100\char`\"{} La fonction retourne un code confirmation transmise par le robot (R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+K\+S\+UM, R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR, R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT, R\+O\+B\+O\+T\+\_\+\+OK, R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+\_\+\+C\+MD) - - -\begin{DoxyParams}{Parameters} -{\em cmd} & Entête de la commande \\ -\hline -{\em $\ast$arg} & Argument de la commande \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -retourne un code confirmation. -\end{DoxyReturn} - - -Definition at line 74 of file robot.\+cpp. - -\mbox{\Hypertarget{robot_8cpp_ac9d64c6d05c20ae9fdb8c158e2ee7098}\label{robot_8cpp_ac9d64c6d05c20ae9fdb8c158e2ee7098}} -\index{robot.\+cpp@{robot.\+cpp}!send\+Cmd@{send\+Cmd}} -\index{send\+Cmd@{send\+Cmd}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{send\+Cmd()}{sendCmd()}} -{\footnotesize\ttfamily int send\+Cmd (\begin{DoxyParamCaption}\item[{char}]{cmd, }\item[{const char $\ast$}]{arg }\end{DoxyParamCaption})} - - - -Definition at line 138 of file robot.\+cpp. - - - -\subsection{Variable Documentation} -\mbox{\Hypertarget{robot_8cpp_a6f8059414f0228f0256115e024eeed4b}\label{robot_8cpp_a6f8059414f0228f0256115e024eeed4b}} -\index{robot.\+cpp@{robot.\+cpp}!fd@{fd}} -\index{fd@{fd}!robot.\+cpp@{robot.\+cpp}} -\subsubsection{\texorpdfstring{fd}{fd}} -{\footnotesize\ttfamily int fd} - - - -Definition at line 28 of file robot.\+cpp. - diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp__incl.md5 deleted file mode 100644 index 88b33a0..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9b311009597edbb2eaa19d2f19cdbeff \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp__incl.pdf deleted file mode 100644 index e18f0a4..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8cpp__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h.tex b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h.tex deleted file mode 100644 index ccb9a11..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h.tex +++ /dev/null @@ -1,127 +0,0 @@ -\hypertarget{robot_8h}{}\section{robot.\+h File Reference} -\label{robot_8h}\index{robot.\+h@{robot.\+h}} - - -Fonctions for communicating with robot. - - -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$unistd.\+h$>$}\newline -{\ttfamily \#include $<$fcntl.\+h$>$}\newline -{\ttfamily \#include $<$termios.\+h$>$}\newline -{\ttfamily \#include $<$string.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -{\ttfamily \#include \char`\"{}definitions.\+h\char`\"{}}\newline -Include dependency graph for robot.\+h\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{robot_8h__incl} -\end{center} -\end{figure} -\subsection*{Classes} -\begin{DoxyCompactItemize} -\item -struct \hyperlink{struct_message_to_robot}{Message\+To\+Robot} -\end{DoxyCompactItemize} -\subsection*{Macros} -\begin{DoxyCompactItemize} -\item -\#define \hyperlink{robot_8h_a32c8768c18732c59b503f8ee7515a693}{serial\+Port}~\char`\"{}/dev/tty\+S0\char`\"{} -\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \hyperlink{robot_8h_a0e70fa821a04d349552b8bd54f6935db}{open\+\_\+communication\+\_\+robot} (const char $\ast$path=\hyperlink{robot_8h_a32c8768c18732c59b503f8ee7515a693}{serial\+Port}) -\begin{DoxyCompactList}\small\item\em Ouvre la communication avec le robot. \end{DoxyCompactList}\item -int \hyperlink{robot_8h_a3fbce7530a62f9287f8a3b85b9c7e4d7}{close\+\_\+communication\+\_\+robot} (void) -\begin{DoxyCompactList}\small\item\em Ferme la communication avec le robot. \end{DoxyCompactList}\item -int \hyperlink{robot_8h_abe88fd581be321a9d86ae7063abd2f65}{send\+\_\+command\+\_\+to\+\_\+robot} (char cmd, const char $\ast$arg=N\+U\+LL) -\begin{DoxyCompactList}\small\item\em Envoi une commande au robot et attends sa réponse. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Fonctions for communicating with robot. - -\begin{DoxyAuthor}{Author} -L.\+Senaneuch -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Macro Definition Documentation} -\mbox{\Hypertarget{robot_8h_a32c8768c18732c59b503f8ee7515a693}\label{robot_8h_a32c8768c18732c59b503f8ee7515a693}} -\index{robot.\+h@{robot.\+h}!serial\+Port@{serial\+Port}} -\index{serial\+Port@{serial\+Port}!robot.\+h@{robot.\+h}} -\subsubsection{\texorpdfstring{serial\+Port}{serialPort}} -{\footnotesize\ttfamily \#define serial\+Port~\char`\"{}/dev/tty\+S0\char`\"{}} - - - -Definition at line 40 of file robot.\+h. - - - -\subsection{Function Documentation} -\mbox{\Hypertarget{robot_8h_a3fbce7530a62f9287f8a3b85b9c7e4d7}\label{robot_8h_a3fbce7530a62f9287f8a3b85b9c7e4d7}} -\index{robot.\+h@{robot.\+h}!close\+\_\+communication\+\_\+robot@{close\+\_\+communication\+\_\+robot}} -\index{close\+\_\+communication\+\_\+robot@{close\+\_\+communication\+\_\+robot}!robot.\+h@{robot.\+h}} -\subsubsection{\texorpdfstring{close\+\_\+communication\+\_\+robot()}{close\_communication\_robot()}} -{\footnotesize\ttfamily int close\+\_\+communication\+\_\+robot (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})} - - - -Ferme la communication avec le robot. - -Ferme le descripteur de fichier du port serie contrôlant le robot. - -\begin{DoxyReturn}{Returns} -Retourne -\/1 en cas d\textquotesingle{}erreur ou 0 en cas de fermeture effectué -\end{DoxyReturn} -\mbox{\Hypertarget{robot_8h_a0e70fa821a04d349552b8bd54f6935db}\label{robot_8h_a0e70fa821a04d349552b8bd54f6935db}} -\index{robot.\+h@{robot.\+h}!open\+\_\+communication\+\_\+robot@{open\+\_\+communication\+\_\+robot}} -\index{open\+\_\+communication\+\_\+robot@{open\+\_\+communication\+\_\+robot}!robot.\+h@{robot.\+h}} -\subsubsection{\texorpdfstring{open\+\_\+communication\+\_\+robot()}{open\_communication\_robot()}} -{\footnotesize\ttfamily int open\+\_\+communication\+\_\+robot (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path = {\ttfamily \hyperlink{robot_8h_a32c8768c18732c59b503f8ee7515a693}{serial\+Port}} }\end{DoxyParamCaption})} - - - -Ouvre la communication avec le robot. - -Ouvre le serial port passé en paramétre. Par defaut cette fonction ouvre le port tty\+SO connecté au module xbee. - - -\begin{DoxyParams}{Parameters} -{\em path} & Chaine de caractère contenant le path du port serie à ouvrir. \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Return -\/1 si l\textquotesingle{}ouverture c\textquotesingle{}est mal passé et 0 si le port est ouvert. -\end{DoxyReturn} -\mbox{\Hypertarget{robot_8h_abe88fd581be321a9d86ae7063abd2f65}\label{robot_8h_abe88fd581be321a9d86ae7063abd2f65}} -\index{robot.\+h@{robot.\+h}!send\+\_\+command\+\_\+to\+\_\+robot@{send\+\_\+command\+\_\+to\+\_\+robot}} -\index{send\+\_\+command\+\_\+to\+\_\+robot@{send\+\_\+command\+\_\+to\+\_\+robot}!robot.\+h@{robot.\+h}} -\subsubsection{\texorpdfstring{send\+\_\+command\+\_\+to\+\_\+robot()}{send\_command\_to\_robot()}} -{\footnotesize\ttfamily int send\+\_\+command\+\_\+to\+\_\+robot (\begin{DoxyParamCaption}\item[{char}]{cmd, }\item[{const char $\ast$}]{arg = {\ttfamily NULL} }\end{DoxyParamCaption})} - - - -Envoi une commande au robot et attends sa réponse. - -Envoi une commande au robot en ajoutant le checksum et lis la réponse du robot en verifiant le checksum. Le premier paramétre {\itshape cmd} correspond au type de commande ex \+: P\+I\+NG, S\+E\+T\+M\+O\+VE ... Le second paramétre {\itshape $\ast$arg} correspond aux arguments à la commande ex \+: S\+E\+T\+M\+O\+VE, \char`\"{}100\char`\"{} La fonction retourne un code confirmation transmise par le robot (R\+O\+B\+O\+T\+\_\+\+C\+H\+E\+K\+S\+UM, R\+O\+B\+O\+T\+\_\+\+E\+R\+R\+OR, R\+O\+B\+O\+T\+\_\+\+T\+I\+M\+E\+D\+\_\+\+O\+UT, R\+O\+B\+O\+T\+\_\+\+OK, R\+O\+B\+O\+T\+\_\+\+U\+K\+N\+O\+W\+\_\+\+C\+MD) - - -\begin{DoxyParams}{Parameters} -{\em cmd} & Entête de la commande \\ -\hline -{\em arg} & Argument de la commande \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Retourne un code confirmation. -\end{DoxyReturn} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__dep__incl.md5 deleted file mode 100644 index 46d9aca..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -3fb87047c63a0afa79355ad26788d063 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__dep__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__dep__incl.pdf deleted file mode 100644 index eb141f0..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__dep__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__incl.md5 deleted file mode 100644 index 3b9489d..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -4eb3fee89c774014764c814b6939924f \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__incl.pdf deleted file mode 100644 index 8afafb6..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/robot_8h__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp.tex b/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp.tex deleted file mode 100644 index ebbecb5..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp.tex +++ /dev/null @@ -1,173 +0,0 @@ -\hypertarget{server_8cpp}{}\section{src/server.cpp File Reference} -\label{server_8cpp}\index{src/server.\+cpp@{src/server.\+cpp}} - - -Library for opening a T\+CP server, receiving data and sending message to monitor. - - -{\ttfamily \#include \char`\"{}server.\+h\char`\"{}}\newline -{\ttfamily \#include $<$sys/socket.\+h$>$}\newline -{\ttfamily \#include $<$arpa/inet.\+h$>$}\newline -{\ttfamily \#include $<$netinet/in.\+h$>$}\newline -{\ttfamily \#include $<$stdio.\+h$>$}\newline -{\ttfamily \#include $<$stdlib.\+h$>$}\newline -{\ttfamily \#include $<$unistd.\+h$>$}\newline -Include dependency graph for server.\+cpp\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{server_8cpp__incl} -\end{center} -\end{figure} -\subsection*{Macros} -\begin{DoxyCompactItemize} -\item -\#define \hyperlink{server_8cpp_ad1106125b13c36a78d012177dc2aa67c}{N\+B\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+M\+AX}~1 -\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \hyperlink{server_8cpp_a99b54d5b3404766f906f49605a4aa0e3}{open\+Server} (int port) -\item -int \hyperlink{server_8cpp_ab65b2df50051036defe0f35366f5a3d6}{close\+Server} () -\item -int \hyperlink{server_8cpp_abff9f8e931ecce919588b371dc511857}{accept\+Client} () -\item -int \hyperlink{server_8cpp_a8d865d29914b980fd71ed8d347e4ec50}{send\+Data\+To\+Server} (char $\ast$data, int length) -\item -int \hyperlink{server_8cpp_a4c2df7961aa7379ac79d80980a1c537b}{send\+Data\+To\+Server\+For\+Client} (int client, char $\ast$data, int length) -\item -int \hyperlink{server_8cpp_a8b66a2007f3f9ed8538428a309c9d368}{receive\+Data\+From\+Server} (char $\ast$data, int size) -\item -int \hyperlink{server_8cpp_a247e0124af257d0cc7abc25a7c448d1b}{receive\+Data\+From\+Server\+From\+Client} (int client, char $\ast$data, int size) -\end{DoxyCompactItemize} -\subsection*{Variables} -\begin{DoxyCompactItemize} -\item -int \hyperlink{server_8cpp_a67917b0d31c20024dba33363eb8db5a2}{socket\+FD} = -\/1 -\item -int \hyperlink{server_8cpp_a2e938cd63a2404d0902c57205706872a}{client\+ID} = -\/1 -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Library for opening a T\+CP server, receiving data and sending message to monitor. - -\begin{DoxyAuthor}{Author} -P\+E.\+Hladik -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Macro Definition Documentation} -\mbox{\Hypertarget{server_8cpp_ad1106125b13c36a78d012177dc2aa67c}\label{server_8cpp_ad1106125b13c36a78d012177dc2aa67c}} -\index{server.\+cpp@{server.\+cpp}!N\+B\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+M\+AX@{N\+B\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+M\+AX}} -\index{N\+B\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+M\+AX@{N\+B\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+M\+AX}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{N\+B\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+M\+AX}{NB\_CONNECTION\_MAX}} -{\footnotesize\ttfamily \#define N\+B\+\_\+\+C\+O\+N\+N\+E\+C\+T\+I\+O\+N\+\_\+\+M\+AX~1} - - - -Definition at line 35 of file server.\+cpp. - - - -\subsection{Function Documentation} -\mbox{\Hypertarget{server_8cpp_abff9f8e931ecce919588b371dc511857}\label{server_8cpp_abff9f8e931ecce919588b371dc511857}} -\index{server.\+cpp@{server.\+cpp}!accept\+Client@{accept\+Client}} -\index{accept\+Client@{accept\+Client}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{accept\+Client()}{acceptClient()}} -{\footnotesize\ttfamily int accept\+Client (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Definition at line 71 of file server.\+cpp. - -\mbox{\Hypertarget{server_8cpp_ab65b2df50051036defe0f35366f5a3d6}\label{server_8cpp_ab65b2df50051036defe0f35366f5a3d6}} -\index{server.\+cpp@{server.\+cpp}!close\+Server@{close\+Server}} -\index{close\+Server@{close\+Server}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{close\+Server()}{closeServer()}} -{\footnotesize\ttfamily int close\+Server (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Definition at line 63 of file server.\+cpp. - -\mbox{\Hypertarget{server_8cpp_a99b54d5b3404766f906f49605a4aa0e3}\label{server_8cpp_a99b54d5b3404766f906f49605a4aa0e3}} -\index{server.\+cpp@{server.\+cpp}!open\+Server@{open\+Server}} -\index{open\+Server@{open\+Server}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{open\+Server()}{openServer()}} -{\footnotesize\ttfamily int open\+Server (\begin{DoxyParamCaption}\item[{int}]{port }\end{DoxyParamCaption})} - - - -Definition at line 40 of file server.\+cpp. - -\mbox{\Hypertarget{server_8cpp_a8b66a2007f3f9ed8538428a309c9d368}\label{server_8cpp_a8b66a2007f3f9ed8538428a309c9d368}} -\index{server.\+cpp@{server.\+cpp}!receive\+Data\+From\+Server@{receive\+Data\+From\+Server}} -\index{receive\+Data\+From\+Server@{receive\+Data\+From\+Server}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{receive\+Data\+From\+Server()}{receiveDataFromServer()}} -{\footnotesize\ttfamily int receive\+Data\+From\+Server (\begin{DoxyParamCaption}\item[{char $\ast$}]{data, }\item[{int}]{size }\end{DoxyParamCaption})} - - - -Definition at line 95 of file server.\+cpp. - -\mbox{\Hypertarget{server_8cpp_a247e0124af257d0cc7abc25a7c448d1b}\label{server_8cpp_a247e0124af257d0cc7abc25a7c448d1b}} -\index{server.\+cpp@{server.\+cpp}!receive\+Data\+From\+Server\+From\+Client@{receive\+Data\+From\+Server\+From\+Client}} -\index{receive\+Data\+From\+Server\+From\+Client@{receive\+Data\+From\+Server\+From\+Client}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{receive\+Data\+From\+Server\+From\+Client()}{receiveDataFromServerFromClient()}} -{\footnotesize\ttfamily int receive\+Data\+From\+Server\+From\+Client (\begin{DoxyParamCaption}\item[{int}]{client, }\item[{char $\ast$}]{data, }\item[{int}]{size }\end{DoxyParamCaption})} - - - -Definition at line 99 of file server.\+cpp. - -\mbox{\Hypertarget{server_8cpp_a8d865d29914b980fd71ed8d347e4ec50}\label{server_8cpp_a8d865d29914b980fd71ed8d347e4ec50}} -\index{server.\+cpp@{server.\+cpp}!send\+Data\+To\+Server@{send\+Data\+To\+Server}} -\index{send\+Data\+To\+Server@{send\+Data\+To\+Server}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{send\+Data\+To\+Server()}{sendDataToServer()}} -{\footnotesize\ttfamily int send\+Data\+To\+Server (\begin{DoxyParamCaption}\item[{char $\ast$}]{data, }\item[{int}]{length }\end{DoxyParamCaption})} - - - -Definition at line 85 of file server.\+cpp. - -\mbox{\Hypertarget{server_8cpp_a4c2df7961aa7379ac79d80980a1c537b}\label{server_8cpp_a4c2df7961aa7379ac79d80980a1c537b}} -\index{server.\+cpp@{server.\+cpp}!send\+Data\+To\+Server\+For\+Client@{send\+Data\+To\+Server\+For\+Client}} -\index{send\+Data\+To\+Server\+For\+Client@{send\+Data\+To\+Server\+For\+Client}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{send\+Data\+To\+Server\+For\+Client()}{sendDataToServerForClient()}} -{\footnotesize\ttfamily int send\+Data\+To\+Server\+For\+Client (\begin{DoxyParamCaption}\item[{int}]{client, }\item[{char $\ast$}]{data, }\item[{int}]{length }\end{DoxyParamCaption})} - - - -Definition at line 89 of file server.\+cpp. - - - -\subsection{Variable Documentation} -\mbox{\Hypertarget{server_8cpp_a2e938cd63a2404d0902c57205706872a}\label{server_8cpp_a2e938cd63a2404d0902c57205706872a}} -\index{server.\+cpp@{server.\+cpp}!client\+ID@{client\+ID}} -\index{client\+ID@{client\+ID}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{client\+ID}{clientID}} -{\footnotesize\ttfamily int client\+ID = -\/1} - - - -Definition at line 38 of file server.\+cpp. - -\mbox{\Hypertarget{server_8cpp_a67917b0d31c20024dba33363eb8db5a2}\label{server_8cpp_a67917b0d31c20024dba33363eb8db5a2}} -\index{server.\+cpp@{server.\+cpp}!socket\+FD@{socket\+FD}} -\index{socket\+FD@{socket\+FD}!server.\+cpp@{server.\+cpp}} -\subsubsection{\texorpdfstring{socket\+FD}{socketFD}} -{\footnotesize\ttfamily int socket\+FD = -\/1} - - - -Definition at line 37 of file server.\+cpp. - diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp__incl.md5 deleted file mode 100644 index c9b189c..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -6bc39aa8f833820b2bd6382ea20f2b1b \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp__incl.pdf deleted file mode 100644 index 0aaac39..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/server_8cpp__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h.tex b/software/raspberry/superviseur-robot/lib/doc/latex/server_8h.tex deleted file mode 100644 index 114be0b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h.tex +++ /dev/null @@ -1,225 +0,0 @@ -\hypertarget{server_8h}{}\section{server.\+h File Reference} -\label{server_8h}\index{server.\+h@{server.\+h}} - - -Library for opening a T\+CP server, receiving data and sending message to monitor. - - -{\ttfamily \#include \char`\"{}image.\+h\char`\"{}}\newline -Include dependency graph for server.\+h\+:\nopagebreak -\begin{figure}[H] -\begin{center} -\leavevmode -\includegraphics[width=350pt]{server_8h__incl} -\end{center} -\end{figure} -\subsection*{Macros} -\begin{DoxyCompactItemize} -\item -\#define \hyperlink{server_8h_af257e2a3e091629829857a2eb8931a7a}{D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT}~2323 -\end{DoxyCompactItemize} -\subsection*{Functions} -\begin{DoxyCompactItemize} -\item -int \hyperlink{server_8h_a99b54d5b3404766f906f49605a4aa0e3}{open\+Server} (int port) -\begin{DoxyCompactList}\small\item\em Open server port, connect and listen to given port. \end{DoxyCompactList}\item -int \hyperlink{server_8h_ab65b2df50051036defe0f35366f5a3d6}{close\+Server} () -\begin{DoxyCompactList}\small\item\em Close server. \end{DoxyCompactList}\item -int \hyperlink{server_8h_abff9f8e931ecce919588b371dc511857}{accept\+Client} () -\begin{DoxyCompactList}\small\item\em Wait for a client to connect. \end{DoxyCompactList}\item -int \hyperlink{server_8h_a8d865d29914b980fd71ed8d347e4ec50}{send\+Data\+To\+Server} (char $\ast$data, int length) -\begin{DoxyCompactList}\small\item\em Send given data to monitor. \end{DoxyCompactList}\item -int \hyperlink{server_8h_a4c2df7961aa7379ac79d80980a1c537b}{send\+Data\+To\+Server\+For\+Client} (int client, char $\ast$data, int length) -\begin{DoxyCompactList}\small\item\em Send given data to monitor, using specific client ID. \end{DoxyCompactList}\item -int \hyperlink{server_8h_a8b66a2007f3f9ed8538428a309c9d368}{receive\+Data\+From\+Server} (char $\ast$data, int size) -\begin{DoxyCompactList}\small\item\em Read data from monitor. \end{DoxyCompactList}\item -int \hyperlink{server_8h_a247e0124af257d0cc7abc25a7c448d1b}{receive\+Data\+From\+Server\+From\+Client} (int client, char $\ast$data, int size) -\begin{DoxyCompactList}\small\item\em Read data from monitor, using specific client ID. \end{DoxyCompactList}\item -int \hyperlink{server_8h_a51b9372f5467705aa81d76ae034c7628}{send\+Image} (\hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg} $\ast$image) -\begin{DoxyCompactList}\small\item\em Send image to monitor using default client ID. \end{DoxyCompactList}\end{DoxyCompactItemize} - - -\subsection{Detailed Description} -Library for opening a T\+CP server, receiving data and sending message to monitor. - -\begin{DoxyAuthor}{Author} -P\+E.\+Hladik -\end{DoxyAuthor} -\begin{DoxyVersion}{Version} -1.\+0 -\end{DoxyVersion} -\begin{DoxyDate}{Date} -06/06/2017 -\end{DoxyDate} - - -\subsection{Macro Definition Documentation} -\mbox{\Hypertarget{server_8h_af257e2a3e091629829857a2eb8931a7a}\label{server_8h_af257e2a3e091629829857a2eb8931a7a}} -\index{server.\+h@{server.\+h}!D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT@{D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT}} -\index{D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT@{D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT}{DEFAULT\_SERVER\_PORT}} -{\footnotesize\ttfamily \#define D\+E\+F\+A\+U\+L\+T\+\_\+\+S\+E\+R\+V\+E\+R\+\_\+\+P\+O\+RT~2323} - - - -Definition at line 30 of file server.\+h. - - - -\subsection{Function Documentation} -\mbox{\Hypertarget{server_8h_abff9f8e931ecce919588b371dc511857}\label{server_8h_abff9f8e931ecce919588b371dc511857}} -\index{server.\+h@{server.\+h}!accept\+Client@{accept\+Client}} -\index{accept\+Client@{accept\+Client}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{accept\+Client()}{acceptClient()}} -{\footnotesize\ttfamily int accept\+Client (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Wait for a client to connect. - -\begin{DoxyReturn}{Returns} -Return client Id or -\/1 if it failed -\end{DoxyReturn} -\mbox{\Hypertarget{server_8h_ab65b2df50051036defe0f35366f5a3d6}\label{server_8h_ab65b2df50051036defe0f35366f5a3d6}} -\index{server.\+h@{server.\+h}!close\+Server@{close\+Server}} -\index{close\+Server@{close\+Server}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{close\+Server()}{closeServer()}} -{\footnotesize\ttfamily int close\+Server (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} - - - -Close server. - -\begin{DoxyReturn}{Returns} --\/1 if closing failed , 0 otherwise -\end{DoxyReturn} -\mbox{\Hypertarget{server_8h_a99b54d5b3404766f906f49605a4aa0e3}\label{server_8h_a99b54d5b3404766f906f49605a4aa0e3}} -\index{server.\+h@{server.\+h}!open\+Server@{open\+Server}} -\index{open\+Server@{open\+Server}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{open\+Server()}{openServer()}} -{\footnotesize\ttfamily int open\+Server (\begin{DoxyParamCaption}\item[{int}]{port }\end{DoxyParamCaption})} - - - -Open server port, connect and listen to given port. - - -\begin{DoxyParams}{Parameters} -{\em port} & A valid port number (1024 -\/ 65535) \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} --\/1 if opening failed or the socket number -\end{DoxyReturn} -\mbox{\Hypertarget{server_8h_a8b66a2007f3f9ed8538428a309c9d368}\label{server_8h_a8b66a2007f3f9ed8538428a309c9d368}} -\index{server.\+h@{server.\+h}!receive\+Data\+From\+Server@{receive\+Data\+From\+Server}} -\index{receive\+Data\+From\+Server@{receive\+Data\+From\+Server}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{receive\+Data\+From\+Server()}{receiveDataFromServer()}} -{\footnotesize\ttfamily int receive\+Data\+From\+Server (\begin{DoxyParamCaption}\item[{char $\ast$}]{data, }\item[{int}]{size }\end{DoxyParamCaption})} - - - -Read data from monitor. - -Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough. - - -\begin{DoxyParams}{Parameters} -{\em data} & A valid pointer to a buffer \\ -\hline -{\em size} & Amount of data to read \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Return amount of data really received. 0 if communication is broken -\end{DoxyReturn} -\mbox{\Hypertarget{server_8h_a247e0124af257d0cc7abc25a7c448d1b}\label{server_8h_a247e0124af257d0cc7abc25a7c448d1b}} -\index{server.\+h@{server.\+h}!receive\+Data\+From\+Server\+From\+Client@{receive\+Data\+From\+Server\+From\+Client}} -\index{receive\+Data\+From\+Server\+From\+Client@{receive\+Data\+From\+Server\+From\+Client}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{receive\+Data\+From\+Server\+From\+Client()}{receiveDataFromServerFromClient()}} -{\footnotesize\ttfamily int receive\+Data\+From\+Server\+From\+Client (\begin{DoxyParamCaption}\item[{int}]{client, }\item[{char $\ast$}]{data, }\item[{int}]{size }\end{DoxyParamCaption})} - - - -Read data from monitor, using specific client ID. - -Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough. - - -\begin{DoxyParams}{Parameters} -{\em client} & Client Id to receive from \\ -\hline -{\em data} & A valid pointer to a buffer \\ -\hline -{\em size} & Amount of data to read \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Return amount of data really received. 0 if communication is broken -\end{DoxyReturn} -\mbox{\Hypertarget{server_8h_a8d865d29914b980fd71ed8d347e4ec50}\label{server_8h_a8d865d29914b980fd71ed8d347e4ec50}} -\index{server.\+h@{server.\+h}!send\+Data\+To\+Server@{send\+Data\+To\+Server}} -\index{send\+Data\+To\+Server@{send\+Data\+To\+Server}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{send\+Data\+To\+Server()}{sendDataToServer()}} -{\footnotesize\ttfamily int send\+Data\+To\+Server (\begin{DoxyParamCaption}\item[{char $\ast$}]{data, }\item[{int}]{length }\end{DoxyParamCaption})} - - - -Send given data to monitor. - -Send given data to monitor using default client ID - - -\begin{DoxyParams}{Parameters} -{\em data} & A valid pointer to a buffer \\ -\hline -{\em length} & Amount of data to send \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Return amount of data really written. 0 if communication is broken -\end{DoxyReturn} -\mbox{\Hypertarget{server_8h_a4c2df7961aa7379ac79d80980a1c537b}\label{server_8h_a4c2df7961aa7379ac79d80980a1c537b}} -\index{server.\+h@{server.\+h}!send\+Data\+To\+Server\+For\+Client@{send\+Data\+To\+Server\+For\+Client}} -\index{send\+Data\+To\+Server\+For\+Client@{send\+Data\+To\+Server\+For\+Client}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{send\+Data\+To\+Server\+For\+Client()}{sendDataToServerForClient()}} -{\footnotesize\ttfamily int send\+Data\+To\+Server\+For\+Client (\begin{DoxyParamCaption}\item[{int}]{client, }\item[{char $\ast$}]{data, }\item[{int}]{length }\end{DoxyParamCaption})} - - - -Send given data to monitor, using specific client ID. - -Send given data to monitor using given client ID. - - -\begin{DoxyParams}{Parameters} -{\em client} & Client Id to send data to \\ -\hline -{\em data} & A valid pointer to a buffer \\ -\hline -{\em length} & Amount of data to send \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Return amount of data really written. 0 if communication is broken -\end{DoxyReturn} -\mbox{\Hypertarget{server_8h_a51b9372f5467705aa81d76ae034c7628}\label{server_8h_a51b9372f5467705aa81d76ae034c7628}} -\index{server.\+h@{server.\+h}!send\+Image@{send\+Image}} -\index{send\+Image@{send\+Image}!server.\+h@{server.\+h}} -\subsubsection{\texorpdfstring{send\+Image()}{sendImage()}} -{\footnotesize\ttfamily int send\+Image (\begin{DoxyParamCaption}\item[{\hyperlink{image_8h_a9ac2855e21920c676a108df386ff9415}{Jpg} $\ast$}]{image }\end{DoxyParamCaption})} - - - -Send image to monitor using default client ID. - -Convert image to raw data, and add correct header before sending to monitor - - -\begin{DoxyParams}{Parameters} -{\em image} & An image object after compression \\ -\hline -\end{DoxyParams} -\begin{DoxyReturn}{Returns} -Return amount of data really received. 0 if communication is broken -\end{DoxyReturn} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__dep__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__dep__incl.md5 deleted file mode 100644 index c21e02b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -26587ecf138210397620cf24665e9ee3 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__dep__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__dep__incl.pdf deleted file mode 100644 index 606cf7c..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__dep__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__incl.md5 b/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__incl.md5 deleted file mode 100644 index 887dd7b..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -bb451ca855f19e0ef6da03b90f3ceea4 \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__incl.pdf b/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__incl.pdf deleted file mode 100644 index 1865345..0000000 Binary files a/software/raspberry/superviseur-robot/lib/doc/latex/server_8h__incl.pdf and /dev/null differ diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_from_mon.tex b/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_from_mon.tex deleted file mode 100644 index 4e2f6c6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_from_mon.tex +++ /dev/null @@ -1,48 +0,0 @@ -\hypertarget{struct_message_from_mon}{}\section{Message\+From\+Mon Struct Reference} -\label{struct_message_from_mon}\index{Message\+From\+Mon@{Message\+From\+Mon}} - - -{\ttfamily \#include $<$monitor.\+h$>$} - -\subsection*{Public Attributes} -\begin{DoxyCompactItemize} -\item -char \hyperlink{struct_message_from_mon_ad46f6e6dd24be5cb2bc5eae5b3cdd095}{header} \mbox{[}4\mbox{]} -\item -char \hyperlink{struct_message_from_mon_a1aea445500b0fa020a1b08eaff791107}{data} \mbox{[}100\mbox{]} -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} - - -Definition at line 74 of file monitor.\+h. - - - -\subsection{Member Data Documentation} -\mbox{\Hypertarget{struct_message_from_mon_a1aea445500b0fa020a1b08eaff791107}\label{struct_message_from_mon_a1aea445500b0fa020a1b08eaff791107}} -\index{Message\+From\+Mon@{Message\+From\+Mon}!data@{data}} -\index{data@{data}!Message\+From\+Mon@{Message\+From\+Mon}} -\subsubsection{\texorpdfstring{data}{data}} -{\footnotesize\ttfamily char Message\+From\+Mon\+::data\mbox{[}100\mbox{]}} - - - -Definition at line 76 of file monitor.\+h. - -\mbox{\Hypertarget{struct_message_from_mon_ad46f6e6dd24be5cb2bc5eae5b3cdd095}\label{struct_message_from_mon_ad46f6e6dd24be5cb2bc5eae5b3cdd095}} -\index{Message\+From\+Mon@{Message\+From\+Mon}!header@{header}} -\index{header@{header}!Message\+From\+Mon@{Message\+From\+Mon}} -\subsubsection{\texorpdfstring{header}{header}} -{\footnotesize\ttfamily char Message\+From\+Mon\+::header\mbox{[}4\mbox{]}} - - - -Definition at line 75 of file monitor.\+h. - - - -The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} -\item -\hyperlink{monitor_8h}{monitor.\+h}\end{DoxyCompactItemize} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_to_mon.tex b/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_to_mon.tex deleted file mode 100644 index ad056e6..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_to_mon.tex +++ /dev/null @@ -1,48 +0,0 @@ -\hypertarget{struct_message_to_mon}{}\section{Message\+To\+Mon Struct Reference} -\label{struct_message_to_mon}\index{Message\+To\+Mon@{Message\+To\+Mon}} - - -{\ttfamily \#include $<$message.\+h$>$} - -\subsection*{Public Attributes} -\begin{DoxyCompactItemize} -\item -char \hyperlink{struct_message_to_mon_acb1096bef5e5c300f3d795556fda852a}{header} \mbox{[}4\mbox{]} -\item -void $\ast$ \hyperlink{struct_message_to_mon_a4e5977ba9fb3fa07d435155731944d15}{data} = N\+U\+LL -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} - - -Definition at line 34 of file message.\+h. - - - -\subsection{Member Data Documentation} -\mbox{\Hypertarget{struct_message_to_mon_a4e5977ba9fb3fa07d435155731944d15}\label{struct_message_to_mon_a4e5977ba9fb3fa07d435155731944d15}} -\index{Message\+To\+Mon@{Message\+To\+Mon}!data@{data}} -\index{data@{data}!Message\+To\+Mon@{Message\+To\+Mon}} -\subsubsection{\texorpdfstring{data}{data}} -{\footnotesize\ttfamily void$\ast$ Message\+To\+Mon\+::data = N\+U\+LL} - - - -Definition at line 36 of file message.\+h. - -\mbox{\Hypertarget{struct_message_to_mon_acb1096bef5e5c300f3d795556fda852a}\label{struct_message_to_mon_acb1096bef5e5c300f3d795556fda852a}} -\index{Message\+To\+Mon@{Message\+To\+Mon}!header@{header}} -\index{header@{header}!Message\+To\+Mon@{Message\+To\+Mon}} -\subsubsection{\texorpdfstring{header}{header}} -{\footnotesize\ttfamily char Message\+To\+Mon\+::header\mbox{[}4\mbox{]}} - - - -Definition at line 35 of file message.\+h. - - - -The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} -\item -\hyperlink{message_8h}{message.\+h}\end{DoxyCompactItemize} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_to_robot.tex b/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_to_robot.tex deleted file mode 100644 index 21461fc..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/struct_message_to_robot.tex +++ /dev/null @@ -1,48 +0,0 @@ -\hypertarget{struct_message_to_robot}{}\section{Message\+To\+Robot Struct Reference} -\label{struct_message_to_robot}\index{Message\+To\+Robot@{Message\+To\+Robot}} - - -{\ttfamily \#include $<$robot.\+h$>$} - -\subsection*{Public Attributes} -\begin{DoxyCompactItemize} -\item -char \hyperlink{struct_message_to_robot_ab00202c6cfdd86ea4cd891c972405db6}{header} \mbox{[}4\mbox{]} -\item -char \hyperlink{struct_message_to_robot_abf7dafbba72784855abd50469ba82705}{data} \mbox{[}20\mbox{]} -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} - - -Definition at line 43 of file robot.\+h. - - - -\subsection{Member Data Documentation} -\mbox{\Hypertarget{struct_message_to_robot_abf7dafbba72784855abd50469ba82705}\label{struct_message_to_robot_abf7dafbba72784855abd50469ba82705}} -\index{Message\+To\+Robot@{Message\+To\+Robot}!data@{data}} -\index{data@{data}!Message\+To\+Robot@{Message\+To\+Robot}} -\subsubsection{\texorpdfstring{data}{data}} -{\footnotesize\ttfamily char Message\+To\+Robot\+::data\mbox{[}20\mbox{]}} - - - -Definition at line 46 of file robot.\+h. - -\mbox{\Hypertarget{struct_message_to_robot_ab00202c6cfdd86ea4cd891c972405db6}\label{struct_message_to_robot_ab00202c6cfdd86ea4cd891c972405db6}} -\index{Message\+To\+Robot@{Message\+To\+Robot}!header@{header}} -\index{header@{header}!Message\+To\+Robot@{Message\+To\+Robot}} -\subsubsection{\texorpdfstring{header}{header}} -{\footnotesize\ttfamily char Message\+To\+Robot\+::header\mbox{[}4\mbox{]}} - - - -Definition at line 45 of file robot.\+h. - - - -The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} -\item -\hyperlink{robot_8h}{robot.\+h}\end{DoxyCompactItemize} diff --git a/software/raspberry/superviseur-robot/lib/doc/latex/struct_position.tex b/software/raspberry/superviseur-robot/lib/doc/latex/struct_position.tex deleted file mode 100644 index 6043be1..0000000 --- a/software/raspberry/superviseur-robot/lib/doc/latex/struct_position.tex +++ /dev/null @@ -1,60 +0,0 @@ -\hypertarget{struct_position}{}\section{Position Struct Reference} -\label{struct_position}\index{Position@{Position}} - - -{\ttfamily \#include $<$image.\+h$>$} - -\subsection*{Public Attributes} -\begin{DoxyCompactItemize} -\item -Point \hyperlink{struct_position_aa56444be37071311cfa11aae3e2c2f64}{center} -\item -Point \hyperlink{struct_position_a780d124971951424c0c63f6d81bb4d92}{direction} -\item -float \hyperlink{struct_position_a733540df6c0f832676dc0846b34bb1e2}{angle} -\end{DoxyCompactItemize} - - -\subsection{Detailed Description} - - -Definition at line 69 of file image.\+h. - - - -\subsection{Member Data Documentation} -\mbox{\Hypertarget{struct_position_a733540df6c0f832676dc0846b34bb1e2}\label{struct_position_a733540df6c0f832676dc0846b34bb1e2}} -\index{Position@{Position}!angle@{angle}} -\index{angle@{angle}!Position@{Position}} -\subsubsection{\texorpdfstring{angle}{angle}} -{\footnotesize\ttfamily float Position\+::angle} - - - -Definition at line 72 of file image.\+h. - -\mbox{\Hypertarget{struct_position_aa56444be37071311cfa11aae3e2c2f64}\label{struct_position_aa56444be37071311cfa11aae3e2c2f64}} -\index{Position@{Position}!center@{center}} -\index{center@{center}!Position@{Position}} -\subsubsection{\texorpdfstring{center}{center}} -{\footnotesize\ttfamily Point Position\+::center} - - - -Definition at line 70 of file image.\+h. - -\mbox{\Hypertarget{struct_position_a780d124971951424c0c63f6d81bb4d92}\label{struct_position_a780d124971951424c0c63f6d81bb4d92}} -\index{Position@{Position}!direction@{direction}} -\index{direction@{direction}!Position@{Position}} -\subsubsection{\texorpdfstring{direction}{direction}} -{\footnotesize\ttfamily Point Position\+::direction} - - - -Definition at line 71 of file image.\+h. - - - -The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} -\item -\hyperlink{image_8h}{image.\+h}\end{DoxyCompactItemize} diff --git a/software/raspberry/superviseur-robot/lib/image.h b/software/raspberry/superviseur-robot/lib/image.h deleted file mode 100644 index 239d5b5..0000000 --- a/software/raspberry/superviseur-robot/lib/image.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file image.h - * \author L.Senaneuch - * \version 1.0 - * \date 06/06/2017 - * \brief Functions for image treatment. - * - * \details This file use openCV2 library for picture processing. This allow to detect arena and robot. - */ - -#ifndef _IMAGE_H_ -#define _IMAGE_H_ - -#ifndef __STUB__ -#ifndef __FOR_PC__ -#include -#else -#include -#endif /* __FOR_PC__ */ -#else -#include -#endif -#include "opencv2/imgproc/imgproc.hpp" -#include -#include - -#define WIDTH 480 //1280 1024 640 480 -#define HEIGHT 360 // 960 768 480 360 - -using namespace std; -using namespace cv; -#ifndef __STUB__ -#ifndef __FOR_PC__ -using namespace raspicam; -#endif /* __FOR_PC__ */ -#endif - -typedef Mat Image; -#ifndef __STUB__ -#ifndef __FOR_PC__ -typedef RaspiCam_Cv Camera; -#else -typedef int Camera; -#endif /* __FOR_PC__ */ -#else -typedef int Camera; -#endif - -typedef Rect Arene; -typedef vector Jpg; - -struct Position { - Point center; - Point direction; - float angle; -}; - -/** - * \brief Ouvre une camera. - * \details Met à jour le descripteur de fichier passé en paramètre pour correspondre à la camera ouverte - * - * \param camera Pointeur d'un file descriptor d'une camera ouverte - * \return Retourne 0 si la camera a été ouverte correctement et -1 si une erreur survient. - */ -int open_camera(Camera *camera); - -/** - * \brief Ferme la camera passé en paramètre - * - * \param camera Pointeur sur la camera à fermer - */ -void close_camera(Camera *camera); - -/** - * \brief Capture une image avec la camera passée en entrée. En cas de test sans camera, la fonction charge une image - * \details La camera doit préalablement être ouverte via \a openCamera(...) - * - * \param camera Pointeur sur la camera passée en entrée. - * \param monImage Pointeur sur une image capturée. - * \param fichier Chemin du fichier d'image - * \return Retourne -1 si une erreur survient. - */ -void get_image(Camera *camera, Image * monImage, const char *fichier = NULL); - -/** - * \brief Détecte une arène dans une image fournis en paramètre. - * - * \param monImage Pointeur sur l'image d'entrée - * \param rectangle Pointeur sur les coordonnées du rectangles trouvé. - * \return Retourne -1 si aucune arène n'est détectée. Sinon retourne 0 - */ -int detect_arena(Image *monImage, Arene *rectangle); - -/** - * \brief Dessine le plus petit rectangle contenant l'arène - - * \param imgInput Pointeur sur l'image d'entrée. - * \param imgOutput Pointeur sur l'image de sortie (image d'entrée + arène marquée) - * \param monArene Pointeur de type Arène contenant les information à dessiner - */ -void draw_arena(Image *imgInput, Image *imgOutput, Arene *monArene); - -/** - * \brief Détecte la position d'un robot. - * \details Détecte la position de triangles blanc sur une image /a imgInput passé en paramètre d'entrer. - * - * \param imgInput Pointeur sur l'image sur laquelle chercher la position du des robots. - * \param posTriangle Pointeur sur un tableau de position ou seront stocké les positions des triangles détectés. - * \param monArene Pointeur de type Arène si nécessaire d'affiner la recherche (optionnel) - * \return Le nombre de triangles détectés. - */ -int detect_position(Image *imgInput, Position *posTriangle, Arene * monArene = NULL); - -/** - * \brief Dessine sur une image en entrée la position d'un robot et sa direction. - * \details Sauvegarde l'image des coordonnées passées par positionRobot superposée à l'image d'entrée sur imgOutput. - * - * \param imgInput Pointeur sur l'image d'entrée - * \param imgOutput Pointeur sur l'image de sortie ( image d'entrée + dessin de la position) - * \param positionRobot Pointeur sur la structure position d'un robot. - */ -void draw_position(Image *imgInput, Image *imgOutput, Position *positionRobot); - -/** - * \brief Détecte la position d'un robot. - * \details Détecte la position de triangles blanc sur une image /a imgInput passé en paramètre d'entrer. - * - * \param imgInput Pointeur sur l'image à sauvegarder en mémoire sous format jpg. - * \param imageCompress Pointeur sur une image .jpg. - */ -void compress_image(Image *imgInput, Jpg *imageCompress); - -#endif // _IMAGE_H_ diff --git a/software/raspberry/superviseur-robot/lib/img.cpp b/software/raspberry/superviseur-robot/lib/img.cpp new file mode 100644 index 0000000..a718bd9 --- /dev/null +++ b/software/raspberry/superviseur-robot/lib/img.cpp @@ -0,0 +1,295 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "img.h" + +/** + * Tell if arena is empty (not found) or not + * @return true if no arena found, false otherwise + */ +bool Arena::IsEmpty() { + if ((this->arena.height == 0) || (this->arena.width == 0)) return true; + else return false; +} + +/** + * Create new Img object based on image data + * + * @param imgMatrice Image data to be stored (raw data) + */ +Img::Img(ImageMat imgMatrice) { + this->img = imgMatrice.clone(); + +#ifdef __WITH_ARUCO__ + this->dictionary=cv::aruco::getPredefinedDictionary(cv::aruco::PREDEFINED_DICTIONARY_NAME(3)); +#endif // __WITH_ARUCO__ +} + +/** + * Convert object to a string representation + * + * @return String containing information on contained image (size and number of channel) + */ +string Img::ToString() { + return "Image size: " + to_string(this->img.cols) + "x" + to_string(this->img.rows) + " (dim=" + to_string(this->img.dims) + ")"; +} + +/** + * Create a copy of current object + * + * @return New Img object, copy of current + */ +Img* Img::Copy() { + return new Img(this->img); +} + +/** + * Function for computing angle + * @param robots Position of robot + * @return Angle + */ +float Img::CalculAngle(Position robot) { + float a = robot.direction.x - robot.center.x; + float b = robot.direction.y - robot.center.y; + float angle = atan2(b, a); + return angle * 180.f / M_PI; +} + +/** + * Function for computing angle + * @param pt1 ??? + * @param pt2 ??? + * @return Angle + */ +float Img::CalculAngle2(cv::Point2f pt1, cv::Point2f pt2) { + float a = pt1.x - pt2.x; + float b = pt1.y - pt2.y; + float angle = atan2(b, a); + return angle * 180.f / M_PI; +} + +#ifdef __WITH_ARUCO__ + +/** + * Find center point of given aruco + * @param aruco Aruco coordinates + * @return Center point coordinate + */ +cv::Point2f Img::FindArucoCenter(std::vector aruco) { + return ((aruco[0] + aruco[2]) / 2); +} + +/** + * Find direction of given aruco + * @param aruco Aruco coordinates + * @return Orientation of aruco + */ +cv::Point2f Img::FindArucoDirection(std::vector aruco) { + return ((aruco[0] + aruco[1]) / 2); +} +#endif // __WITH_ARUCO__ + +/** + * Used for computing distance + * @param p ??? + * @param q ??? + * @return Distance + */ +float Img::EuclideanDistance(cv::Point2f p, cv::Point2f q) { + cv::Point diff = p - q; + return cv::sqrt(diff.x * diff.x + diff.y * diff.y); +} + +/** + * Compress current image to JPEG + * @return Image compressed as JPEG + */ +Jpg Img::ToJpg() { + Jpg imgJpg; + cv::imencode(".jpg", this->img, imgJpg); + return imgJpg; +} + +/** + * Search available robots in an image + * @param arena Arena position for cropping image + * @return list of position, empty if no robot found + */ +std::list Img::SearchRobot(Arena arena) { +#ifdef __WITH_ARUCO__ + ImageMat imgTraitment; + std::list positionList; + cv::Point2f areneCoor; + std::vector ids; + std::vector > corners; + + if (arena.IsEmpty()) + imgTraitment = this->img.clone(); + else { + imgTraitment = CropArena(arena); + areneCoor.x = arena.arena.x; + areneCoor.y = arena.arena.y; + } + + cv::aruco::detectMarkers(imgTraitment, dictionary, corners, ids); + if (ids.size() > 0) { + for (int i = 0; i < ids.size(); i++) { + Position newPos; + newPos.center = FindArucoCenter(corners[i]); + newPos.direction = FindArucoDirection(corners[i]); + newPos.robotId = ids[i]; + if (!arena.IsEmpty()) { + newPos.direction += areneCoor; + newPos.center += areneCoor; + } + newPos.angle = CalculAngle2(newPos.center, newPos.direction); + positionList.push_back(newPos); + } + } + return positionList; +#else + std::list robotsFind; + std::vector > contours; + std::vector approx; + std::vector hierarchy; + + ImageMat imgTraitment; + + if (arena.IsEmpty()) { + imgTraitment = this->img.clone(); + } else { + imgTraitment = this->img(arena.arena); + } + + cvtColor(imgTraitment, imgTraitment, CV_RGB2GRAY); + threshold(imgTraitment, imgTraitment, 128, 255, CV_THRESH_BINARY); + findContours(imgTraitment, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0)); + + for (unsigned int i = 0; i < contours.size(); i++) { + ImageMat m(contours[i]); + cv::approxPolyDP(m, approx, cv::arcLength(ImageMat(contours[i]), true)*0.17, true); + + if (approx.size() == 3 && fabs(cv::contourArea(contours[i])) > 200 && fabs(cv::contourArea(contours[i])) < 700) { + cv::Point a, b, c; + cv::Point center; + + a = approx[0]; + b = approx[1]; + c = approx[2]; + + if (!arena.IsEmpty()) { // ajout de l'offset de l'arène + a.x += arena.arena.x; + a.y += arena.arena.y; + b.x += arena.arena.x; + b.y += arena.arena.y; + c.x += arena.arena.x; + c.y += arena.arena.y; + } + + center.x = (a.x + b.x + c.x) / 3; + center.y = (a.y + b.y + c.y) / 3; + Position newPos; + newPos.center = center; + + if (EuclideanDistance(center, b) > EuclideanDistance(center, a) && EuclideanDistance(center, b) > EuclideanDistance(center, c)) { + newPos.direction = b; + //line(img,center,b,Scalar(0,125,0),2,8,0); + } else if (EuclideanDistance(center, a) > EuclideanDistance(center, c)) { + + newPos.direction = a; + //line(img,center,a,Scalar(0,125,0),2,8,0); + } else { + newPos.direction = c; + //line(img,center,c,Scalar(0,125,0),2,8,0); + } + + newPos.angle = CalculAngle(newPos); + newPos.robotId = -1; // dumb identifier + + robotsFind.push_back(newPos); + } + } + + return robotsFind; + +#endif // __WITH_ARUCO__ +} + +/** + * Search arena outline in current image + * @return Arena object with coordinate of outline, empty if no arena found + */ +Arena Img::SearchArena() { + std::vector > contours; + std::vector approx; + std::vector hierarchy; + + ImageMat imageTrt; + cv::cvtColor(this->img, imageTrt, CV_RGB2GRAY); // conversion en niveau de gris + cv::threshold(imageTrt, imageTrt, 128, 255, CV_THRESH_BINARY); // Threshold les éléments les plus clair + cv::Canny(imageTrt, imageTrt, 100, 200, 3); // detection d'angle + + findContours(imageTrt, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, cv::Point(0, 0)); + for (unsigned int i = 0; i < contours.size(); i++) { + approxPolyDP(ImageMat(contours[i]), approx, cv::arcLength(ImageMat(contours[i]), true)*0.1, true); + if (approx.size() == 4 && fabs(cv::contourArea(contours[i])) > 100000) { + Arena rectangle; + rectangle.arena = cv::boundingRect(ImageMat(contours[i])); + return rectangle; + } + } + + return Arena(); +} + +/** + * Draw an oriented arrow at robot position + * @param robot Position of robot + */ +void Img::DrawRobot(Position robot) { + cv::arrowedLine(this->img, (cv::Point2f)robot.center, (cv::Point2f)robot.direction, cv::Scalar(0, 0, 255), 3, 8, 0); +} + +/** + * Draw an oriented arrow for each position provided + * @param robots List of robot positions + * @return Number of position drawn + */ +int Img::DrawAllRobots(std::list robots) { + for (Position robot : robots) { + cv::arrowedLine(this->img, (cv::Point2f)robot.center, (cv::Point2f)robot.direction, cv::Scalar(0, 0, 255), 3, 8, 0); + } + + return robots.size(); +} + +/** + * Draw arena outline + * @param arenaToDraw Arena position + */ +void Img::DrawArena(Arena arenaToDraw) { + cv::rectangle(this->img, arenaToDraw.arena.tl(), arenaToDraw.arena.br(), cv::Scalar(0, 0, 125), 2, 8, 0); +} + +/** + * Crop image around detected arena + * @param arena Coordinate of arena + * @return Reduced image, focused on arena + */ +ImageMat Img::CropArena(Arena arena) { + return this->img(arena.arena); +} diff --git a/software/raspberry/superviseur-robot/lib/img.h b/software/raspberry/superviseur-robot/lib/img.h new file mode 100644 index 0000000..210fe49 --- /dev/null +++ b/software/raspberry/superviseur-robot/lib/img.h @@ -0,0 +1,239 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __IMG_H__ +#define __IMG_H__ + +#include +#include +#include + +#include +#include +#include + +#ifdef __WITH_ARUCO__ +#include +#include +#include +#endif // __WITH_ARUCO__ + +#define ARENA_NOT_DETECTED -1 + +using namespace std; + +/** + * Redefinition of cv::Mat type + */ +typedef cv::Mat ImageMat; + +/** + * Declaration of Jpg type + */ +typedef vector Jpg; + +/** + * Class position, used for store robot coordinates + * + * @brief Class position, used for store robot coordinates + */ +class Position { +public: + int robotId; + float angle; + cv::Point2f center; + cv::Point2f direction; + + /** + * Constructor of Position object + */ + Position() { + robotId = -1; + angle = 0.0; + center=cv::Point2f(0.0,0.0); + direction=cv::Point2f(0.0,0.0); + } + + /** + * Build a string representation of the object + * @return String containing object information + */ + string ToString() { + return "Id=" + to_string(this->robotId) + ", Angle=" + to_string(this->angle) + ", center=(" + to_string(this->center.x) + ";" + to_string(this->center.y) + ")"; + } +}; + +/** + * Class arena, used for holding outline of arena on image and cropping image to only usefull area + * + * @brief Class arena, used for holding outline of arena on image and cropping image to only usefull area + */ +class Arena { +public: + /** + * Coordinate of arena, empty if no arena found + */ + cv::Rect arena; + + /** + * Constructor of Arena object + */ + Arena() {} + + /** + * Tell if arena is empty (not found) or not + * @return true if no arena found, false otherwise + */ + bool IsEmpty(); + + /** + * Build a string representation of the object + * @return String containing object information + */ + string ToString() { + if (IsEmpty()) return "Arena empty"; + else + return "Arena: (x;y)=(" + to_string(this->arena.x) + ";" + to_string(this->arena.x) + " (w;h)=(" + to_string(this->arena.width) + ";" + to_string(this->arena.height) + ")"; + } +}; + +/** + * Class for image storage and treatment + * + * @brief Class for image storage and treatment + */ +class Img { +public: + /** + * Image data + */ + ImageMat img; + + /** + * Create new Img object based on image data + * + * @param imgMatrice Image data to be stored (raw data) + */ + Img(ImageMat imgMatrice); + + /** + * Convert object to a string representation + * + * @return String containing information on contained image (size and number of channel) + */ + string ToString(); + + /** + * Create a copy of current object + * + * @return New Img object, copy of current + */ + Img* Copy(); + + /** + * Compress current image to JPEG + * @return Image compressed as JPEG + */ + Jpg ToJpg(); + + /** + * Search arena outline in current image + * @return Arena object with coordinate of outline, empty if no arena found + */ + Arena SearchArena(); + + /** + * Draw an oriented arrow at robot position + * @param robot Position of robot + */ + void DrawRobot(Position robot); + + /** + * Draw an oriented arrow for each position provided + * @param robots List of robot positions + * @return Number of position drawn + */ + int DrawAllRobots(std::list robots); + + /** + * Draw arena outline + * @param arenaToDraw Arena position + */ + void DrawArena(Arena arenaToDraw); + + /** + * Search available robots in an image + * @param arena Arena position for cropping image + * @return list of position, empty if no robot found + */ + std::list SearchRobot(Arena arena); + +#ifdef __WITH_ARUCO__ + /** + * Dictionary to be used for aruco recognition + */ + cv::Ptr dictionary; +#endif // __WITH_ARUCO__ +private: +#ifdef __WITH_ARUCO__ + /** + * Find center point of given aruco + * @param aruco Aruco coordinates + * @return Center point coordinate + */ + cv::Point2f FindArucoCenter(std::vector aruco); + + /** + * Find direction of given aruco + * @param aruco Aruco coordinates + * @return Orientation of aruco + */ + cv::Point2f FindArucoDirection(std::vector aruco); +#endif // __WITH_ARUCO__ + + /** + * Function for computing angle + * @param robots Position of robot + * @return Angle + */ + float CalculAngle(Position robots); + + /** + * Function for computing angle + * @param pt1 ??? + * @param pt2 ??? + * @return Angle + */ + float CalculAngle2(cv::Point2f pt1, cv::Point2f pt2); + + /** + * Used for computing distance + * @param p ??? + * @param q ??? + * @return Distance + */ + float EuclideanDistance(cv::Point2f p, cv::Point2f q); + + /** + * Crop image around detected arena + * @param arena Coordinate of arena + * @return Reduced image, focused on arena + */ + ImageMat CropArena(Arena arena); +}; + +#endif //__IMG_H__ diff --git a/software/raspberry/superviseur-robot/lib/message.h b/software/raspberry/superviseur-robot/lib/message.h deleted file mode 100644 index d49a0d9..0000000 --- a/software/raspberry/superviseur-robot/lib/message.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file message.h - * \author PE.Hladik - * \version 1.0 - * \date 06/06/2017 - * \brief Functions for sending message to monitor. - */ - -#ifndef MESSAGE_H -#define MESSAGE_H - -#include -#include -#include -#include - -typedef struct { - char header[4]; - void *data = NULL; -} MessageToMon; - -/** - * \brief Set header part of monitor message. - * - */ -void set_msgToMon_header(MessageToMon *msg, char *header); - -/** - * \brief Set data part of monitor message. - */ -void set_msgToMon_data(MessageToMon *msg, void *data); - -/** - * \brief Dealocate moemory pointed by data part of message. - */ -void free_msgToMon_data(MessageToMon *msg); - -/** - * \brief Print message, header and data. - */ -void print_msgToMon(MessageToMon *msg); - -#endif /* MESSAGE_H */ - diff --git a/software/raspberry/superviseur-robot/lib/messages.cpp b/software/raspberry/superviseur-robot/lib/messages.cpp new file mode 100644 index 0000000..2a07824 --- /dev/null +++ b/software/raspberry/superviseur-robot/lib/messages.cpp @@ -0,0 +1,533 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "messages.h" +#include +#include +#include + +/* + * @brief Constants used with ToString method, for printing message id + */ + +const string MESSAGE_ID_STRING[] = { + "Empty", + "Log", + "Answer [Acknowledge]", + "Answer [Not Acknowledge]", + "Answer [Command timeout]", + "Answer [Command unknown]", + "Answer [Command error]", + "Answer [Communication error]", + "Monitor connection lost", + "Open serial com", + "Close serial com", + "Open camera", + "Close camera", + "Ask for arena", + "Arena confirmed", + "Arena infirmed", + "Compute position", + "Stop compute position", + "Position", + "Image", + "Robot ping", + "Robot reset", + "Robot start with watchdog", + "Robot start without watchdog", + "Robot reload watchdog", + "Robot move", + "Robot turn", + "Robot go forward", + "Robot go backward", + "Robot go left", + "Robot go right", + "Robot stop", + "Robot poweroff", + "Robot get battery", + "Robot battery level", + "Robot get state", + "Robot current state", + "Robot state [Not busy]", + "Robot state [Busy]" +}; + +/* + * @brief Constants used with ToString method, for printing answer id + */ +const string ANSWER_ID_STRING[] = { + "Acknowledge", + "Not Acknowledge", + "Robot lost", + "Timeout error", + "Unknown command", + "Invalid or refused command", + "Checksum error" +}; + +/** + * Create a new, empty message + */ +Message::Message() { + this->messageID = MESSAGE_EMPTY; +} + +/** + * Create a new, empty message + */ +Message::Message(MessageID id) { + SetID(id); +} + +/** + * Destroy message + */ +Message::~Message() { +} + +/** + * Set message ID + * @param id Message ID + */ +void Message::SetID(MessageID id) { + if (CheckID(id)) { + this->messageID = id; + } else throw std::runtime_error {"Invalid message id for Message"}; +} + +/** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ +string Message::ToString() { + if (CheckID(this->messageID)) + return "Message: \"" + MESSAGE_ID_STRING[this->messageID] + "\""; + else + return "Invalid message"; +} + +/** + * Allocate a new mesage and copy contents of current message + * @return A message, copy of current + */ +Message* Message::Copy() { + Message *msg = new Message(this->messageID); + + return msg; +} + +/** + * Get message ID + * @return Current message ID + */ +bool Message::CheckID(MessageID id) { + if ((id == MESSAGE_CAM_IMAGE) || + (id == MESSAGE_CAM_POSITION) || + (id == MESSAGE_ROBOT_MOVE) || + (id == MESSAGE_ROBOT_TURN) || + (id == MESSAGE_LOG) || + (id == MESSAGE_ROBOT_BATTERY_LEVEL)) { + return false; + } else return true; +} + +/* MessageInt */ + +/** + * Create a new, empty int message + */ +MessageInt::MessageInt() { + value = 0.0; +} + +/** + * Create a new int message, with given ID and value + * @param id Message ID + * @param val Message value + * @throw std::runtime_error if message ID is incompatible with int data + */ +MessageInt::MessageInt(MessageID id, int val) { + MessageInt::SetID(id); + + value = val; +} + +/** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with float data + */ +void MessageInt::SetID(MessageID id) { + if (CheckID(id)) + messageID = id; + else + throw std::runtime_error { + "Invalid message id for MessageInt" + }; +} + +/** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ +string MessageInt::ToString() { + if (CheckID(this->messageID)) + return "Message: \"" + MESSAGE_ID_STRING[this->messageID] + "\"\nValue: " + to_string(this->value); + else + return "Invalid message"; +} + +/** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ +Message* MessageInt::Copy() { + return new MessageInt(this->messageID, this->value); +} + +/** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ +bool MessageInt::CheckID(MessageID id) { + if ((id != MESSAGE_ROBOT_TURN) && + (id != MESSAGE_ROBOT_MOVE)) { + return false; + } else return true; +} + +/* class MessageString */ + +/** + * Create a new, empty string message + */ +MessageString::MessageString() { + s = string(""); +} + +/** + * Create a new string message, with given ID and string + * @param id Message ID + * @param s Message string + * @throw std::runtime_error if message ID is incompatible with string data + */ +MessageString::MessageString(MessageID id, string s) { + MessageString::SetID(id); + + this->s = s; +} + +/** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with string data + */ +void MessageString::SetID(MessageID id) { + if (CheckID(id)) + messageID = id; + else + throw std::runtime_error { + "Invalid message id for MessageString" + }; +} + +/** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ +string MessageString::ToString() { + if (CheckID(this->messageID)) + return "Message: \"" + MESSAGE_ID_STRING[this->messageID] + "\"\nString: \"" + this->s + "\""; + else + return "Invalid message"; +} + +/** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ +Message* MessageString::Copy() { + return new MessageString(this->messageID, this->s); +} + +/** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ +bool MessageString::CheckID(MessageID id) { + if ((id != MESSAGE_LOG)) { + return false; + } else return true; +} + +/* class MessageImg */ + +/** + * Create a new, empty image message + */ +MessageImg::MessageImg() { + image = NULL; +} + +/** + * Create a new image message, with given ID and image + * @param id Message ID + * @param image Image + * @throw std::runtime_error if message ID is incompatible with image + */ +MessageImg::MessageImg(MessageID id, Img *image) { + MessageImg::SetID(id); + MessageImg::SetImage(image); +} + +/** + * Destroy Image message + */ +MessageImg::~MessageImg() { + delete (this->image); +} + +/** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with image + */ +void MessageImg::SetID(MessageID id) { + if (CheckID(id)) + messageID = id; + else + throw std::runtime_error { + "Invalid message id for MessageImg" + }; +} + +/** + * Set message image + * @param image Reference to image object + */ +void MessageImg::SetImage(Img* image) { + //this->image = image->Copy(); + this->image = image; +} + +/** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ +string MessageImg::ToString() { + if (CheckID(this->messageID)) + return "Message: \"" + MESSAGE_ID_STRING[this->messageID] + "\"\n" + this->image->ToString(); + else + return "Invalid message"; +} + +/** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ +Message* MessageImg::Copy() { + return new MessageImg(this->messageID, this->image->Copy()); +} + +/** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ +bool MessageImg::CheckID(MessageID id) { + if (id != MESSAGE_CAM_IMAGE) { + return false; + } else return true; +} + +/* class MessageBattery */ + +/** + * Create a new, empty battery message + */ +MessageBattery::MessageBattery() { + this->level = BATTERY_UNKNOWN; +} + +/** + * Create a new battery message, with given ID and battery level + * @param id Message ID + * @param level Battery level + * @throw std::runtime_error if message ID is incompatible with battery + */ +MessageBattery::MessageBattery(MessageID id, BatteryLevel level) { + MessageBattery::SetID(id); + MessageBattery::SetLevel(level); +} + +/** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with battery + */ +void MessageBattery::SetID(MessageID id) { + if (CheckID(id)) + messageID = id; + else + throw std::runtime_error { + "Invalid message id for MessageBattery" + }; +} + +/** + * Set battery level + * @param level Battery level + */ +void MessageBattery::SetLevel(BatteryLevel level) { + if ((level < BATTERY_UNKNOWN) || (level > BATTERY_FULL)) { + throw std::runtime_error{ + "Invalid battery level for MessageBattery"}; + } else { + this->level = level; + } +} + +/** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ +string MessageBattery::ToString() { + string levelString; + + switch (this->level) { + case BATTERY_UNKNOWN: + levelString="Unknown"; + break; + case BATTERY_EMPTY: + levelString="Empty"; + break; + case BATTERY_LOW: + levelString="Low"; + break; + case BATTERY_FULL: + levelString="Full"; + break; + default: + levelString="Invalid"; + } + + if (CheckID(this->messageID)) + return "Message: \"" + MESSAGE_ID_STRING[this->messageID] + "\"\nBattery level: \"" + levelString + "\""; + else + return "Invalid message"; +} + +/** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ +Message* MessageBattery::Copy() { + return new MessageBattery(this->messageID, this->level); +} + +/** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ +bool MessageBattery::CheckID(MessageID id) { + if ((id != MESSAGE_ROBOT_BATTERY_LEVEL)) { + return false; + } else return true; +} + +/* class MessagePosition */ + +/** + * Create a new, empty string message + */ +MessagePosition::MessagePosition() { + this->pos.angle = 0.0; + this->pos.robotId = 0; + this->pos.center.x=0.0; + this->pos.center.y=0.0; + this->pos.direction.x=0.0; + this->pos.direction.y=0.0; +} + +/** + * Create a new string message, with given ID and string + * @param id Message ID + * @param s Message string + * @throw std::runtime_error if message ID is incompatible with string data + */ +MessagePosition::MessagePosition(MessageID id, Position& pos) { + MessagePosition::SetID(id); + MessagePosition::SetPosition(pos); +} + +/** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with string data + */ +void MessagePosition::SetID(MessageID id) { + if (CheckID(id)) + messageID = id; + else + throw std::runtime_error { + "Invalid message id for MessagePosition" + }; +} + +/** + * Set position + * @param pos Reference to position + */ +void MessagePosition::SetPosition(Position& pos) { + this->pos.angle = pos.angle; + this->pos.robotId = pos.robotId; + this->pos.center = pos.center; + this->pos.direction = pos.direction; +} + +/** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ +string MessagePosition::ToString() { + if (CheckID(this->messageID)) + return "Message: \"" + MESSAGE_ID_STRING[this->messageID] + "\"\nPosition: \"" + to_string(this->pos.center.x) + ";" + to_string(this->pos.center.y) + "\""; + else + return "Invalid message"; +} + +/** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ +Message* MessagePosition::Copy() { + return new MessagePosition(this->messageID, this->pos); +} + +/** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ +bool MessagePosition::CheckID(MessageID id) { + if ((id != MESSAGE_CAM_POSITION)) { + return false; + } else return true; +} diff --git a/software/raspberry/superviseur-robot/lib/messages.h b/software/raspberry/superviseur-robot/lib/messages.h new file mode 100644 index 0000000..d64919a --- /dev/null +++ b/software/raspberry/superviseur-robot/lib/messages.h @@ -0,0 +1,567 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __MESSAGES_H__ +#define __MESSAGES_H__ + +#include +#include "img.h" + +/** + * Message ID defined for system communication + * + * @brief List of available message ID + * + */ +typedef enum { + //Generic messages + MESSAGE_EMPTY = 0, + MESSAGE_LOG, + + // Message containing answer (after robot command, or for monitor) + MESSAGE_ANSWER_ACK, + MESSAGE_ANSWER_NACK, + MESSAGE_ANSWER_ROBOT_TIMEOUT, + MESSAGE_ANSWER_ROBOT_UNKNOWN_COMMAND, + MESSAGE_ANSWER_ROBOT_ERROR, + MESSAGE_ANSWER_COM_ERROR, + + // Messages specific to server + MESSAGE_MONITOR_LOST, + + // messages for serial communication with robot + MESSAGE_ROBOT_COM_OPEN, + MESSAGE_ROBOT_COM_CLOSE, + + // Messages for camera + MESSAGE_CAM_OPEN, + MESSAGE_CAM_CLOSE, + MESSAGE_CAM_ASK_ARENA, + MESSAGE_CAM_ARENA_CONFIRM, + MESSAGE_CAM_ARENA_INFIRM, + MESSAGE_CAM_POSITION_COMPUTE_START, + MESSAGE_CAM_POSITION_COMPUTE_STOP, + MESSAGE_CAM_POSITION, + MESSAGE_CAM_IMAGE, + + // Messages for robot + MESSAGE_ROBOT_PING, + MESSAGE_ROBOT_RESET, + MESSAGE_ROBOT_START_WITH_WD, + MESSAGE_ROBOT_START_WITHOUT_WD, + MESSAGE_ROBOT_RELOAD_WD, + MESSAGE_ROBOT_MOVE, + MESSAGE_ROBOT_TURN, + MESSAGE_ROBOT_GO_FORWARD, + MESSAGE_ROBOT_GO_BACKWARD, + MESSAGE_ROBOT_GO_LEFT, + MESSAGE_ROBOT_GO_RIGHT, + MESSAGE_ROBOT_STOP, + MESSAGE_ROBOT_POWEROFF, + MESSAGE_ROBOT_BATTERY_GET, + MESSAGE_ROBOT_BATTERY_LEVEL, + MESSAGE_ROBOT_STATE_GET, + MESSAGE_ROBOT_STATE_NOT_BUSY, + MESSAGE_ROBOT_STATE_BUSY +} MessageID; + +typedef enum { + BATTERY_UNKNOWN=-1, + BATTERY_EMPTY=0, + BATTERY_LOW, + BATTERY_FULL +} BatteryLevel; + +using namespace std; + +/** + * Base class for messaging + * + * @brief Base class for messaging + * + */ +class Message { +public: + /** + * Create a new, empty message + */ + Message(); + + /** + * Create a new, empty message + */ + Message(MessageID id); + + /** + * Destroy message + */ + virtual ~Message(); + + /** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ + virtual string ToString(); + + /** + * Allocate a new mesage and copy contents of current message + * @return A message, copy of current + */ + virtual Message* Copy(); + + /** + * Compare message ID + * @param id Id to compare message to + * @return true if id is equal to message id, false otherwise + */ + bool CompareID(MessageID id) { + return (this->messageID == id) ? true:false; + } + + /** + * Get message ID + * @return Current message ID + */ + MessageID GetID() { + return messageID; + } + + /** + * Set message ID + * @param id Message ID + */ + virtual void SetID(MessageID id); + + /** + * Comparison operator + * @param msg Message to be compared + * @return true if message are equal, false otherwise + */ + virtual bool operator==(const Message& msg) { + return (messageID == msg.messageID); + } + + /** + * Difference operator + * @param msg Message to be compared + * @return true if message are different, false otherwise + */ + virtual bool operator!=(const Message& msg) { + return !(messageID == msg.messageID); + } + +protected: + /** + * Message identifier (@see MessageID) + */ + MessageID messageID; + + /** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ + virtual bool CheckID(MessageID id); +}; + + +/** + * Message class for holding float value, based on Message class + * + * @brief Float message class + * + */ +class MessageInt : public Message { +public: + /** + * Create a new, empty float message + */ + MessageInt(); + + /** + * Create a new float message, with given ID and value + * @param id Message ID + * @param val Message value + * @throw std::runtime_error if message ID is incompatible with float data + */ + MessageInt(MessageID id, int val); + + /** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with float data + */ + void SetID(MessageID id); + + /** + * Get message value (int) + * @return int value + */ + int GetValue() { + return value; + } + + /** + * Set message value (int) + * @param val int value to store in message + */ + void SetValue(int val) { + this->value = val; + } + + /** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ + string ToString(); + + /** + * Allocate a new mesage and copy contents of current message + * @return A message, copy of current + */ + Message* Copy(); + + /** + * Comparison operator + * @param msg Message to be compared + * @return true if message are equal, false otherwise + */ + virtual bool operator==(const MessageInt& msg) { + return ((messageID == msg.messageID) && (value == msg.value)); + } + + /** + * Difference operator + * @param msg Message to be compared + * @return true if message are different, false otherwise + */ + virtual bool operator!=(const MessageInt& msg) { + return !((messageID == msg.messageID) && (value == msg.value)); + } + +protected: + /** + * Message integer value + */ + int value; + + /** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ + bool CheckID(MessageID id); +}; + +/** + * Message class for holding string value, based on Message class + * + * @brief String message class + * + */ +class MessageString : public Message { +public: + /** + * Create a new, empty string message + */ + MessageString(); + + /** + * Create a new string message, with given ID and string + * @param id Message ID + * @param s Message string + * @throw std::runtime_error if message ID is incompatible with string data + */ + MessageString(MessageID id, string s); + + /** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with string data + */ + void SetID(MessageID id); + + /** + * Get message string + * @return String + */ + string GetString() { + return s; + } + + /** + * Set message string + * @param s String to store in message + */ + void SetString(string s) { + this->s = s; + } + + /** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ + string ToString(); + + /** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ + Message* Copy(); + + /** + * Comparison operator + * @param msg Message to be compared + * @return true if message are equal, false otherwise + */ + virtual bool operator==(const MessageString& msg) { + return ((messageID == msg.messageID) && (s == msg.s)); + } + + /** + * Difference operator + * @param msg Message to be compared + * @return true if message are different, false otherwise + */ + virtual bool operator!=(const MessageString& msg) { + return !((messageID == msg.messageID) && (s == msg.s)); + } +protected: + /** + * Message content + */ + string s; + + /** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ + bool CheckID(MessageID id); +}; + +/** + * Message class for holding image, based on Message class + * + * @brief Image message class + * + */ +class MessageImg : public Message { +public: + /** + * Create a new, empty image message + */ + MessageImg(); + + /** + * Create a new image message, with given ID and boolean value + * @param id Message ID + * @param image Pointer to image + * @throw std::runtime_error if message ID is incompatible with image message + */ + MessageImg(MessageID id, Img *image); + + /** + * Destroy Image message + */ + virtual ~MessageImg(); + + /** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with image message + */ + void SetID(MessageID id); + + /** + * Get message image + * @return Pointer to image + */ + Img* GetImage() { + return image; + } + + /** + * Set message image + * @param image Pointer to image object + */ + void SetImage(Img* image); + + /** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ + string ToString(); + + /** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ + Message* Copy(); + +protected: + /** + * Message image + */ + Img* image; + + /** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ + bool CheckID(MessageID id); +}; + +/** + * Message class for holding position, based on Message class + * + * @brief Position message class + * + */ +class MessagePosition : public Message { +public: + /** + * Create a new, empty position message + */ + MessagePosition(); + + /** + * Create a new position message, with given ID and position + * @param id Message ID + * @param pos Position + * @throw std::runtime_error if message ID is incompatible with image message + */ + MessagePosition(MessageID id, Position& pos); + + /** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with position message + */ + void SetID(MessageID id); + + /** + * Get position + * @return Position + */ + Position GetPosition() { + return pos; + } + + /** + * Set position + * @param pos Reference to position + */ + void SetPosition(Position& pos); + + /** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ + string ToString(); + + /** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ + Message* Copy(); + +protected: + /** + * Position + */ + Position pos; + + /** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ + bool CheckID(MessageID id); +}; + +/** + * Message class for holding battery level, based on Message class + * + * @brief Battery message class + * + */ +class MessageBattery : public Message { +public: + /** + * Create a new, empty battery message + */ + MessageBattery(); + + /** + * Create a new battery message, with given ID and battery level + * @param id Message ID + * @param level Battery level + * @throw std::runtime_error if message ID is incompatible with battery message + */ + MessageBattery(MessageID id, BatteryLevel level); + + /** + * Set message ID + * @param id Message ID + * @throw std::runtime_error if message ID is incompatible with battery message + */ + void SetID(MessageID id); + + /** + * Get message image + * @return Battery level + */ + BatteryLevel GetLevel() { + return level; + } + + /** + * Set battery level + * @param level Battery level + */ + void SetLevel(BatteryLevel level); + + /** + * Translate content of message into a string that can be displayed + * @return A string describing message contents + */ + string ToString(); + + /** + * Allocate a new message and copy contents of current message + * @return A message, copy of current + */ + Message* Copy(); + +protected: + /** + * Battery level + */ + BatteryLevel level; + + /** + * Verify if message ID is compatible with current message type + * @param id Message ID + * @return true, if message ID is acceptable, false otherwise + */ + bool CheckID(MessageID id); +}; + +#endif /* __MESSAGES_H__ */ + diff --git a/software/raspberry/superviseur-robot/lib/monitor.h b/software/raspberry/superviseur-robot/lib/monitor.h deleted file mode 100644 index e7f3eb2..0000000 --- a/software/raspberry/superviseur-robot/lib/monitor.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file monitor.h - * \author L.senaneuch - * \version 1.0 - * \date 06/06/2017 - * \brief Library for sending message to monitor or receiving message - */ - -#ifndef _MONITOR_H_ -#define _MONITOR_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "image.h" -#include "definitions.h" - -#define HEADER_STM_IMAGE "IMG" // Envoi d'une image -#define HEADER_STM_BAT "BAT" // Envoi de l'état de la batterie -#define HEADER_STM_POS "POS" // Envoi de la position -#define HEADER_STM_NO_ACK "NAK" // Acquittement d'un échec -#define HEADER_STM_ACK "ACK" // Acquittement d'un succès -#define HEADER_STM_MES "MSG" // Message textuel -#define HEADER_STM_LOST_DMB "LCD" // Perte de la communication avec le robot - -#define HEADER_MTS_MSG "MSG" // Message directe pour Console Dumber -#define HEADER_MTS_DMB_ORDER "DMB" // Message d'ordre pour le robot -#define HEADER_MTS_COM_DMB "COM" // Message de gestion de la communication avec le robot -#define HEADER_MTS_CAMERA "CAM" // Message de gestion de la camera -#define HEADER_MTS_STOP "STO" // Message d'arrêt du system - -#define INVALID_SOCKET -1 -#define SOCKET_ERROR -1 - -#define DEFAULT_PORT 8080 -#define DEFAULT_PARITY 0 - -#define DETECT_ARENA (1) -#define CHECK_ARENA (2) -#define NO_ARENA (3) - -#define DEFAULT_NODEJS_PATH "/usr/bin/nodejs" -#define DEFAULT_INTERFACE_FILE "./interface.js" - -#define closesocket(param) close(param) - -typedef int SOCKET; -typedef struct sockaddr_in SOCKADDR_IN; -typedef struct sockaddr SOCKADDR; - -typedef struct { - char header[4]; - char data[100]; -} MessageFromMon; - -/** - * \brief Envoi d'un message vers l'interface graphique - * \param typeMessage Type du message envoyé. Les valeurs possibles sont - * IMG pour une image, MES pour un message à afficher dans la console, POS pour - * la position du robot, BAT pour une valeur de la batterie et ACK pour valider - * un message de l'interface. - * \param data données associées au message. Le type de la donnée doit - * correspondre au message : Image pour IMG, char * MES, Position pour POS, - * char * pour BAT et rien pour ACK. Attention, il n'y a aucune vérification - * a posterio. - * \return Retourne 0 si l'envoie a bien été réalisé et -1 en cas de problème. - */ -int send_message_to_monitor(const char* typeMessage, const void * data = NULL); - -/** - * \brief Réception d'un message. La fonction est bloquante et retourne par - * référence le type de message reçu (DMB pour un ordre au robot, ARN pour la - * détection des arènes et POS pour un calcul de position) ainsi que les données - * associées. - * \param typeMessage Type du message reçu : DMB pour un ordre au robot, - * ARN pour la demande de détection de l'arène, POS pour un calcul de position - * et MSG pour un message de l'interface - * \param data données associées au message reçu. - * \return Retourne 0 la taille du message reçu ou une valeur négative si la - * connexion est perdue. - */ -int receive_message_from_monitor(char *typeMessage, char *data); - - -#endif // _MONITOR_H_ diff --git a/software/raspberry/superviseur-robot/lib/robot.h b/software/raspberry/superviseur-robot/lib/robot.h deleted file mode 100644 index a774b90..0000000 --- a/software/raspberry/superviseur-robot/lib/robot.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file robot.h - * \author L.Senaneuch - * \version 1.0 - * \date 06/06/2017 - * \brief Fonctions for communicating with robot. - */ - -#ifndef _ROBOT_H_ -#define _ROBOT_H_ - -#include -#include -#include -#include -#include -#include -#include "definitions.h" - -#ifdef __FOR_PC__ -#define serialPort "/dev/ttyUSB0" -#else -#define serialPort "/dev/ttyS0" -#endif /* __FOR_PC__ */ - -typedef struct - { - char header[4]; - char data[20]; - } MessageToRobot; - - /** - * \brief Ouvre la communication avec le robot. - * \details Ouvre le serial port passé en paramétre. Par defaut cette fonction ouvre le port ttySO connecté au module xbee. - * - * \param path Chaine de caractère contenant le path du port serie à ouvrir. - * \return Return -1 si l'ouverture c'est mal passé et 0 si le port est ouvert. - */ -int open_communication_robot(const char * path=serialPort); - - /** - * \brief Ferme la communication avec le robot. - * \details Ferme le descripteur de fichier du port serie contrôlant le robot. - * - * \return Retourne -1 en cas d'erreur ou 0 en cas de fermeture effectué - */ -int close_communication_robot(void); - - /** - * \brief Envoi une commande au robot et attends sa réponse. - * \details Envoi une commande au robot en ajoutant le checksum et lis la réponse du robot en verifiant le checksum. - Le premier paramétre \a cmd correspond au type de commande ex : PING, SETMOVE ... - Le second paramétre \a *arg correspond aux arguments à la commande ex : SETMOVE, "100" - La fonction retourne un code confirmation transmise par le robot (ROBOT_CHEKSUM, ROBOT_ERROR, ROBOT_TIMED_OUT, ROBOT_OK, ROBOT_UKNOW_CMD) - * - * \param cmd Entête de la commande - * \param arg Argument de la commande - * \return Retourne un code confirmation. - */ -int send_command_to_robot(char cmd, const char * arg=NULL); - -#endif //_ROBOT_H_ diff --git a/software/raspberry/superviseur-robot/lib/server.h b/software/raspberry/superviseur-robot/lib/server.h deleted file mode 100644 index aadda1c..0000000 --- a/software/raspberry/superviseur-robot/lib/server.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file server.h - * \author PE.Hladik - * \version 1.0 - * \date 06/06/2017 - * \brief Library for opening a TCP server, receiving data and sending message to monitor - */ - -#ifndef _SERVER_H_ -#define _SERVER_H_ - -#include "image.h" -#define DEFAULT_SERVER_PORT 2323 - -/** - * \brief Open server port, connect and listen to given port. - * - * \param port A valid port number (1024 - 65535) - * \return -1 if opening failed or the socket number - */ -int openServer (int port); - -/** - * \brief Close server - * - * \return -1 if closing failed , 0 otherwise - */ -int closeServer(); - -/** - * \brief Wait for a client to connect - * - * \return Return client Id or -1 if it failed - */ -int acceptClient(); - -/** - * \brief Send given data to monitor - * \details Send given data to monitor using default client ID - * - * \param data A valid pointer to a buffer - * \param length Amount of data to send - * \return Return amount of data really written. 0 if communication is broken - */ -int sendDataToServer(char *data, int length); - -/** - * \brief Send given data to monitor, using specific client ID - * \details Send given data to monitor using given client ID. - * - * \param client Client Id to send data to - * \param data A valid pointer to a buffer - * \param length Amount of data to send - * \return Return amount of data really written. 0 if communication is broken - */ -int sendDataToServerForClient(int client, char *data, int length); - -/** - * \brief Read data from monitor. - * \details Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough. - * - * \param data A valid pointer to a buffer - * \param size Amount of data to read - * \return Return amount of data really received. 0 if communication is broken - */ -int receiveDataFromServer(char *data, int size); - -/** - * \brief Read data from monitor, using specific client ID. - * \details Read, at most, size data from monitor. Data must be a valid pointer to a buffer large enough. - * - * \param client Client Id to receive from - * \param data A valid pointer to a buffer - * \param size Amount of data to read - * \return Return amount of data really received. 0 if communication is broken - */ -int receiveDataFromServerFromClient(int client, char *data, int size); - -/** - * \brief Send image to monitor using default client ID - * \details Convert image to raw data, and add correct header before sending to monitor - * - * \param image An image object after compression - * \return Return amount of data really received. 0 if communication is broken - */ -int sendImage(Jpg *image); -#endif /* _SERVER_H_ */ - diff --git a/software/raspberry/superviseur-robot/lib/src/image.cpp b/software/raspberry/superviseur-robot/lib/src/image.cpp deleted file mode 100644 index 5b18a0d..0000000 --- a/software/raspberry/superviseur-robot/lib/src/image.cpp +++ /dev/null @@ -1,260 +0,0 @@ - -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file image.cpp - * \author L.Senaneuch - * \version 1.0 - * \date 06/06/2017 - * \brief Fonctions de traitement d'image utilisable pour la détection du robot. - * - * \details Ce fichier utilise la libraire openCV2 pour faciliter le traitement d'image dans le projet Destijl. - * Il permet de faciliter la détection de l'arène et la détection du robot. - * /!\ Attention Bien que celui-ci soit un .cpp la structure du code n'est pas sous forme d'objet. - */ - -#include "image.h" -#include - -using namespace cv; -#ifndef __STUB__ -#ifdef __FOR_PC__ -VideoCapture cap; -#else -using namespace raspicam; -#endif /* __FOR_PC__ */ -#else -Image stubImg; - -#endif -using namespace std; - -float calculAngle(Position * positionRobot); -int cropArena(Image *imgInput, Image *imgOutput, Arene *AreneInput); -float euclideanDist(Point& p, Point& q); - -void draw_arena(Image *imgInput, Image *imgOutput, Arene *monArene) -{ - if(imgInput!=imgOutput) - *imgOutput=imgInput->clone(); - rectangle(*imgOutput,monArene->tl(),monArene->br(),Scalar(0,0,125),2,8,0); -} - -int open_camera(Camera *camera) -{ -#ifndef __STUB__ -#ifdef __FOR_PC__ - // open the default camera, use something different from 0 otherwise; - // Check VideoCapture documentation. - printf("Opening Camera...\n"); - if(!cap.open(0)) - return -1; - - return 0; -#else // for raspberry - - camera->set(CV_CAP_PROP_FORMAT, CV_8UC3); - camera->set(CV_CAP_PROP_FRAME_WIDTH,WIDTH); - camera->set(CV_CAP_PROP_FRAME_HEIGHT,HEIGHT); - - printf("Opening Camera...\n"); - if (!(camera->open())) { - perror("Can't open Camera\n") ; - return -1; - } - else - { - printf("Camera warmup 2sec\n"); - sleep(2); - printf("Start capture\n"); - return 0; - } -#endif /* __FOR_PC__ */ -#else - return 0; -#endif -} - -void get_image(Camera *camera, Image * monImage, const char * fichier) // getImg(Camera, Image img); -{ -#ifndef __STUB__ -#ifdef __FOR_PC__ - if (monImage != NULL) - { - cap>>*monImage; - } -#else // for raspberry - camera->grab(); - camera->retrieve(*monImage); - cvtColor(*monImage,*monImage,CV_BGR2RGB); -#endif /* __FOR_PC__ */ -#else - stubImg = imread(fichier, CV_LOAD_IMAGE_COLOR); - stubImg.copyTo(*monImage); -#endif -} - -void close_camera(Camera *camera) // closeCam(Camera) : camera Entrer -{ -#ifndef __STUB__ -#ifdef __FOR_PC__ - cap.release(); -#else // for raspberry - camera->release(); -#endif /* __FOR_PC__ */ -#else - -#endif -} - - -int detect_arena(Image *monImage, Arene *rectangle) // Image en entrée // rectangle en sortie -{ - vector > contours; - vector approx; - vector hierarchy; - - Image imageTrt; - cvtColor(*monImage,imageTrt,CV_RGB2GRAY); // conversion en niveau de gris - threshold(imageTrt,imageTrt,128,255,CV_THRESH_BINARY); // Threshold les éléments les plus clair - Canny(imageTrt, imageTrt, 100,200,3); // detection d'angle - - findContours(imageTrt, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0)); - for(unsigned int i = 0; i < contours.size();i++) - { - approxPolyDP(Image(contours[i]), approx, arcLength(Image(contours[i]), true)*0.1, true); - if(approx.size()==4 && fabs(cv::contourArea(contours[i])) > 100000) - { - *rectangle = boundingRect(Image(contours[i])); - return 0; - } - } - return -1; -} - -int cropArena(Image *imgInput, Image *imgOutput, Arene *areneInput) // image // rectangle // image2 -{ - Image img; - img=imgInput->clone(); - - *imgOutput = img(*areneInput); - return 0; -} - -float euclideanDist(Point& p, Point& q) { - Point diff = p - q; - return cv::sqrt(diff.x*diff.x + diff.y*diff.y); -} - -void compress_image(Image *imgInput, Jpg *imageCompress) // image entrée // imageEncodé en sortie -{ - imencode(".jpg",*imgInput,*imageCompress); -} - - -int detect_position(Image *imgInput, Position *posTriangle, Arene * monArene) // entree : image / sortie tab pos -{ - vector > contours; - vector approx; - vector hierarchy; - - Image imgTraitment; - - if(monArene==NULL) - imgTraitment=imgInput->clone(); - else - cropArena(imgInput,&imgTraitment, monArene); - - cvtColor(imgTraitment,imgTraitment,CV_RGB2GRAY); - threshold(imgTraitment,imgTraitment,128,255,CV_THRESH_BINARY); - findContours(imgTraitment, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0)); - - int nbrTriangle = 0; - for(unsigned int i = 0;i < contours.size();i++) - { - approxPolyDP(Mat(contours[i]), approx, arcLength(Mat(contours[i]), true)*0.17, true); - if(approx.size() == 3 && fabs(contourArea(contours[i])) > 200 && fabs(contourArea(contours[i])) < 700) - { - - Point a,b,c; - Point center; - - - a = approx[0]; - b = approx[1]; - c = approx[2]; - - - if(monArene !=NULL) // ajout de l'offset de l'arène - { - a.x += monArene->x; - a.y += monArene->y; - b.x += monArene->x; - b.y += monArene->y; - c.x += monArene->x; - c.y += monArene->y; - } - - center.x = (a.x + b.x + c.x)/3; - center.y = (a.y + b.y + c.y)/3; - - posTriangle[nbrTriangle].center=center; - - if(euclideanDist(center,b) > euclideanDist(center,a) && euclideanDist(center,b) > euclideanDist(center,c) ) - { - - posTriangle[nbrTriangle].direction=b; - //line(img,center,b,Scalar(0,125,0),2,8,0); - } - else if(euclideanDist(center,a) > euclideanDist(center,c)) - { - posTriangle[nbrTriangle].direction=a; - //line(img,center,a,Scalar(0,125,0),2,8,0); - - } - else - { - posTriangle[nbrTriangle].direction=c; - //line(img,center,c,Scalar(0,125,0),2,8,0); - } - posTriangle[nbrTriangle].angle=calculAngle(&posTriangle[nbrTriangle]); - - nbrTriangle++; - - } - } - return nbrTriangle; -} - -void draw_position(Image *imgInput, Image *imgOutput, Position *positionRobot) // img E/S pos : E -{ - if(imgInput!=imgOutput) - { - *imgOutput=imgInput->clone(); - } - line(*imgOutput,positionRobot->center,positionRobot->direction,Scalar(0,125,0),2,8,0); -} - -float calculAngle(Position * positionRobot) // position en entree -{ - float a = positionRobot->direction.x - positionRobot->center.x; - float b = positionRobot->direction.y - positionRobot->center.y ; - float angle = atan2(b,a); - return angle * 180.f/M_PI; - -} diff --git a/software/raspberry/superviseur-robot/lib/src/message.cpp b/software/raspberry/superviseur-robot/lib/src/message.cpp deleted file mode 100644 index d9e1eb2..0000000 --- a/software/raspberry/superviseur-robot/lib/src/message.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file message.cpp - * \author PE.Hladik - * \version 1.0 - * \date 06/06/2017 - * \brief Functions for sending message to monitor. - */ - -#include "message.h" - -void set_msgToMon_header(MessageToMon *msg, char *header) { - memcpy(msg->header, header, sizeof (header)); -} - -void set_msgToMon_data(MessageToMon *msg, void * data) { - if (msg->data != NULL) { - free(msg->data); - } - msg->data = malloc(sizeof (data)); - memcpy(msg->data, data, sizeof (data)); -} - -void free_msgToMon_data(MessageToMon *msg) { - if (msg->data != NULL) { - free(msg->data); - } -} - -void print_msgToMon(MessageToMon *msg) { - printf("header: %s\n", msg->header); - printf("data: %s\n", (char*)msg->data); -} diff --git a/software/raspberry/superviseur-robot/lib/src/monitor.cpp b/software/raspberry/superviseur-robot/lib/src/monitor.cpp deleted file mode 100644 index b0272cb..0000000 --- a/software/raspberry/superviseur-robot/lib/src/monitor.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file monitor.cpp - * \author L.senaneuch - * \version 1.0 - * \date 06/06/2017 - * \brief Library for sending message to monitor or receiving message - */ - -#include "monitor.h" -#include "server.h" - -using namespace std; - -SOCKADDR_IN ssin; -SOCKET sock; -socklen_t recsize = sizeof (ssin); - -string serverReceive(int size); -int sendMessage(const char *data, int dataLength); -int receive(char *data); - -int send_message_to_monitor(const char* typeMessage, const void * data) { - if ((string) typeMessage == HEADER_STM_IMAGE) { - Jpg * imgC = (Jpg*) data; - 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); - sendMessage(buffer, strlen(buffer)); - return 0; - } else if ((string) typeMessage == HEADER_STM_MES) { - char buffer[50]; - sprintf(buffer, "MSG%sTRAME", (const char*) data); - sendMessage(buffer, strlen(buffer)); - return 0; - } else if ((string) typeMessage == HEADER_STM_ACK) { - char buffer[50]; - sprintf(buffer, "ACK%sTRAME", (const char*) data); - sendMessage(buffer, strlen(buffer)); - return 0; - } else if ((string) typeMessage == HEADER_STM_BAT) { - char buffer[50]; - sprintf(buffer, "BAT%sTRAME", (const char*) data); - sendMessage(buffer, strlen(buffer)); - return 0; - } else if ((string) typeMessage == HEADER_STM_NO_ACK) { - char buffer[50]; - sprintf(buffer, "NAK%sTRAME", (const char*) data); - sendMessage(buffer, strlen(buffer)); - return 0; - } else if ((string) typeMessage == HEADER_STM_LOST_DMB) { - char buffer[50]; - sprintf(buffer, "LCD%sTRAME", (const char*) data); - sendMessage(buffer, strlen(buffer)); - return 0; - } else { - return -1; - } -} - -int receive_message_from_monitor(char *typeMessage, char *data) { - char buffer[20]; - int tBuffer = receive(buffer); - sscanf(buffer, "%3s:%s", typeMessage, data); - return tBuffer; -} - -int receive(char *data) { - int result; - result = receiveDataFromServer(data, 20); - //cout <<"Data : " << data << endl; - return result; -} - -int sendMessage(const char *data, int dataLength) { - if (sendDataToServer((char*) data, dataLength) != dataLength) { - perror("Send failed : "); - return false; - } - - return true; -} diff --git a/software/raspberry/superviseur-robot/lib/src/robot.cpp b/software/raspberry/superviseur-robot/lib/src/robot.cpp deleted file mode 100644 index 33ebb84..0000000 --- a/software/raspberry/superviseur-robot/lib/src/robot.cpp +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file robot.h - * \author L.Senaneuch - * \version 1.0 - * \date 06/06/2017 - * \brief Fonctions for communicating with robot. - */ - -#include "robot.h" - -int fd; - -int getChar(char * c); -int readSerial(char * msg); -char checkSumGO(char * msg); -int receiveMsg(void); -int sendCmd(char cmd, const char * arg); - -int open_communication_robot(const char * path) -{ -#ifndef __STUB__ - struct termios options; - fd = open(path, O_RDWR | O_NOCTTY | O_NDELAY); - if(fd !=-1) - { - fcntl(fd, F_SETFL, 0); - tcgetattr(fd, &options); - options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); - cfsetospeed (&options, B9600); - cfsetispeed (&options, B9600); - options.c_cc[VMIN]=0; - options.c_cc[VTIME]=0; - tcsetattr(fd, TCSANOW, &options); - return 0; - } - else - { - perror("can't openSerial"); - return -1; - } -#else - return 0; -#endif -} - - -int close_communication_robot(void) -{ -#ifndef __STUB__ - return close(fd); -#else - return 0; -#endif -} - - -int send_command_to_robot(char cmd, const char * arg) -{ -#ifndef __STUB__ - sendCmd(cmd,arg); - // TODO : check return from sendCmd - return receiveMsg(); -#else - int reponse; - switch(cmd) - { - case DMB_PING: - reponse = 0; - break; - case DMB_IDLE: - reponse = 0; - break; - case DMB_START_WITH_WD: - reponse = 0; - break; - case DMB_RELOAD_WD: - reponse = 0; - break; - case DMB_GET_VBAT: - reponse = 2; - break; - case DMB_IS_BUSY: - reponse = 1; - break; - case DMB_START_WITHOUT_WD: - reponse = 0; - break; - case DMB_MOVE: - reponse = 0; - break; - case DMB_TURN: - reponse = 0; - break; - case DMB_GO_FORWARD: - reponse = 0; - break; - case DMB_GO_BACK: - reponse = 0; - break; - case DMB_GO_LEFT: - reponse = 0; - break; - case DMB_GO_RIGHT: - reponse = 0; - break; - case DMB_STOP_MOVE: - reponse = 0; - break; - default: - reponse = 0; - break; - } - return reponse; -#endif -} - -/****************************/ -/* PRIVATE */ -/****************************/ - -int sendCmd(char cmd, const char * arg) -{ - char cmdWithArg[20]={}; - cmdWithArg[0]=cmd; - switch(cmd) - { - case DMB_GO_FORWARD: strcpy(cmdWithArg,"M=+64000"); - break; - case DMB_GO_BACK: strcpy(cmdWithArg,"M=-64000"); - break; - case DMB_GO_LEFT: strcpy(cmdWithArg,"T=+64000"); - break; - case DMB_GO_RIGHT: strcpy(cmdWithArg,"T=-64000"); - break; - case DMB_STOP_MOVE: strcpy(cmdWithArg,"M=0"); - break; - case DMB_MOVE: strcat(cmdWithArg,"="); - strcat(cmdWithArg,arg); - break; - case DMB_TURN: strcat(cmdWithArg,"="); - strcat(cmdWithArg,arg); - break; - } - int sizeCmd = strlen(cmdWithArg); - cmdWithArg[sizeCmd] = checkSumGO(cmdWithArg); - cmdWithArg[sizeCmd+1] = '\r'; - cmdWithArg[sizeCmd+2] = '\0'; - return write(fd,cmdWithArg,strlen(cmdWithArg)); -} - -int receiveMsg(void) -{ - char msg[20]; - int b; - if((b = readSerial(msg))!=ROBOT_TIMED_OUT) - { - int taille = strlen(msg); - char checksum = msg[taille-2]; - msg[taille-1] = 0; - msg[taille-2] = 0; - if(checksum!=checkSumGO(msg)) - { - return ROBOT_CHECKSUM; - } - else - { - switch(msg[0]) - { - case 'O' : return 0; - case 'E' : return ROBOT_ERROR; - case 'C' : return ROBOT_UKNOWN_CMD; - default : return atoi(&msg[0]); - } - } - } - else - { - return ROBOT_TIMED_OUT; - } -} - -int getChar(char * c) -{ - int n =0; - int delay =0; - while((n=read(fd,c,1)) <=0) - { - usleep(5000); - delay++; - if(delay > 10) - { - return ROBOT_TIMED_OUT; - } - - } - return n; -} - -int readSerial(char * msg) -{ - char car=0; - int i=0; - for(int j = 0 ; j < 20 ; j++) - msg[j]=0; - - while(car !='\r' && car!='\n') { - if(i>=20) - return -5; - - if(getChar(&car)==ROBOT_TIMED_OUT) { - return ROBOT_TIMED_OUT; - } - - msg[i] = car; - i++; - } - return i; -} - -char checkSumGO(char * msg) -{ - char resultat = 0; - int i = 0; - int taille = strlen(msg); - for(i=0;i. - */ - -/** - * \file server.cpp - * \author PE.Hladik - * \version 1.0 - * \date 06/06/2017 - * \brief Library for opening a TCP server, receiving data and sending message to monitor - */ - -#include "server.h" -#include -#include -#include - -#include -#include -#include - -#include "image.h" -#include "monitor.h" - -#define NB_CONNECTION_MAX 1 - -int socketFD = -1; -int clientID = -1; - -char* imgMsg = NULL; - -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; - - return 0; -} - -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; -} - -int sendImage(Jpg *image) -{ - int status = 0; - int lengthSend; - - if (imgMsg != NULL) free((void*) imgMsg); - imgMsg = (char*) malloc(image->size()+ 4); - imgMsg[0] = HEADER_STM_IMAGE[0]; - imgMsg[1] = HEADER_STM_IMAGE[1]; - imgMsg[2] = HEADER_STM_IMAGE[2]; - imgMsg[3] = ':'; - - memcpy((void*) &imgMsg[4], (const void *) reinterpret_cast (image->data()), image->size()); - - lengthSend=sendDataToServer(imgMsg, image->size() + 4); - - return status; -} - - - diff --git a/software/raspberry/superviseur-robot/main.cpp b/software/raspberry/superviseur-robot/main.cpp new file mode 100644 index 0000000..fd44ad2 --- /dev/null +++ b/software/raspberry/superviseur-robot/main.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include + +#include + +#ifdef __WITH_PTHREAD__ +#include "tasks_pthread.h" +#else +#include "tasks.h" +#endif // __WITH_PTHREAD__ + +int main(int argc, char **argv) { + Tasks tasks; + + //Lock the memory to avoid memory swapping for this program + mlockall(MCL_CURRENT | MCL_FUTURE); + + cout<<"#################################"< + + + + ./lib/base64/base64.h + ./lib/camera.h + ./lib/commonitor.h + ./lib/comrobot.h + ./lib/img.h + ./lib/messages.h + ./tasks.h + + + ./gdbsudo.sh + + + ./lib/base64/base64.cpp + ./lib/camera.cpp + ./lib/commonitor.cpp + ./lib/comrobot.cpp + ./lib/img.cpp + ./main.cpp + ./lib/messages.cpp + ./tasks.cpp + + + + + ./Makefile + + + + lib + + ./Makefile + + + + default + true + false + + + + + ./ + ./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 + + + + ./ + ./lib + /usr/xenomai/include + /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 -Wno-pmf-conversions + + _WITH_TRACE_ + __FOR_PC__ + __WITH_ARUCO__ + + + + + `pkg-config --libs opencv` + + -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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GNU|GNU + true + false + + + + + ./ + ./lib + /usr/xenomai/include + /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 + + + + ./ + ./lib + /usr/xenomai/include + /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 -Wno-pmf-conversions -std=gnu++11 + + _WITH_TRACE_ + __WITH_ARUCO__ + + + + + `pkg-config --libs opencv` + raspicam_cv + raspicam + + -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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/Makefile-variables.mk b/software/raspberry/superviseur-robot/nbproject/private/Makefile-variables.mk similarity index 60% rename from software/raspberry/superviseur-robot/superviseur/nbproject/private/Makefile-variables.mk rename to software/raspberry/superviseur-robot/nbproject/private/Makefile-variables.mk index 949e112..9a44248 100644 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/private/Makefile-variables.mk +++ b/software/raspberry/superviseur-robot/nbproject/private/Makefile-variables.mk @@ -3,6 +3,5 @@ # # NOCDDL # -# Debug configuration -# Release configuration +# Debug__PC_ configuration # Debug__RPI_ configuration diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/c_standard_headers_indexer.c b/software/raspberry/superviseur-robot/nbproject/private/c_standard_headers_indexer.c similarity index 100% rename from software/raspberry/superviseur-robot/superviseur/nbproject/private/c_standard_headers_indexer.c rename to software/raspberry/superviseur-robot/nbproject/private/c_standard_headers_indexer.c diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/configurations.xml b/software/raspberry/superviseur-robot/nbproject/private/configurations.xml similarity index 68% rename from software/raspberry/superviseur-robot/superviseur/nbproject/private/configurations.xml rename to software/raspberry/superviseur-robot/nbproject/private/configurations.xml index 9835210..5cb1c88 100644 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/private/configurations.xml +++ b/software/raspberry/superviseur-robot/nbproject/private/configurations.xml @@ -1,8 +1,8 @@ - Makefile + ./Makefile - + localhost 2 @@ -39,39 +39,6 @@ - - - localhost - 2 - - - - - - - - - - - - - - - gdb - - - - "${OUTPUT_PATH}" - - "${OUTPUT_PATH}" - - true - 0 - 0 - - - - pi@10.105.1.13:22 diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/cpp_standard_headers_indexer.cpp b/software/raspberry/superviseur-robot/nbproject/private/cpp_standard_headers_indexer.cpp similarity index 100% rename from software/raspberry/superviseur-robot/superviseur/nbproject/private/cpp_standard_headers_indexer.cpp rename to software/raspberry/superviseur-robot/nbproject/private/cpp_standard_headers_indexer.cpp diff --git a/software/raspberry/superviseur-robot/nbproject/private/downloads-10.105.1.13-pi-22 b/software/raspberry/superviseur-robot/nbproject/private/downloads-10.105.1.13-pi-22 new file mode 100644 index 0000000..b62644e --- /dev/null +++ b/software/raspberry/superviseur-robot/nbproject/private/downloads-10.105.1.13-pi-22 @@ -0,0 +1,3 @@ +#Tue Jan 08 15:35:51 CET 2019 +____VERSION=2.0 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/dist/Debug__Pthread__RPI/GNU-Linux/superviseur-robot=1v diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/launcher.properties b/software/raspberry/superviseur-robot/nbproject/private/launcher.properties similarity index 100% rename from software/raspberry/superviseur-robot/superviseur/nbproject/private/launcher.properties rename to software/raspberry/superviseur-robot/nbproject/private/launcher.properties diff --git a/software/raspberry/superviseur-robot/nbproject/private/private.xml b/software/raspberry/superviseur-robot/nbproject/private/private.xml new file mode 100644 index 0000000..0b8f05c --- /dev/null +++ b/software/raspberry/superviseur-robot/nbproject/private/private.xml @@ -0,0 +1,20 @@ + + + + 1 + 0 + + + + + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/comrobot.cpp + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/tasks.cpp + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/img.h + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/img.cpp + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/main.cpp + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/commonitor.cpp + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/camera.cpp + file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/tasks.h + + + diff --git a/software/raspberry/superviseur-robot/nbproject/private/timestamps-10.105.1.13-pi-22 b/software/raspberry/superviseur-robot/nbproject/private/timestamps-10.105.1.13-pi-22 new file mode 100644 index 0000000..a4a139d --- /dev/null +++ b/software/raspberry/superviseur-robot/nbproject/private/timestamps-10.105.1.13-pi-22 @@ -0,0 +1,504 @@ +#Thu Jan 17 13:32:55 CET 2019 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_3.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/camera_8h_source.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_position__coll__graph.md5=c1547564861000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_4.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/base64/.gitignore=c1518398687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_6.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/searchdata.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/definitions.h=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_8.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message__inherit__graph.png=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message__inherit__graph.md5=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_position__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int__coll__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/.gitignore=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/nomatches.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_com_robot.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_5.map=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h__dep__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp=c1542105130000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_1.png=c1547564769000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_camera.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_d.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/base64/README.md=c1518398687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_8.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur.doxygen=c1547565696000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_string__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position__inherit__graph.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h__dep__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_int__coll__graph.pdf=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/gdbsudo.sh=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_d.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_b.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug__RPI_.mk=c1542104029000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_4.md5=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/.dep.inc=c1547717148000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_3.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/navtreedata.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int__coll__graph.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_c.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_arena.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_7.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/server.cpp=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherits.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/CMakeLists.txt=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img__coll__graph.md5=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h__dep__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_2.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/commonitor_8h__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/robot.cpp=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_3.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Makefile-Debug__Pthread__RPI.mk=c1547649766000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Makefile-impl.mk=c1546855871000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/commonitor_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/comrobot_8h.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/TPRT.Doxyfile=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_4.map=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/comrobot_8h_source.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_c.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/files.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_7.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_0.png=c1547564862000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/comrobot_8h.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/navtree.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/pthread_version/tasks_pthread.h=c1546961074000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_f.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/files.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/messages_8h__dep__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/private/Makefile-variables.mk=c1542029322000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_13.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enums_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/camera_8h.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/graph_legend.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/img_8h__dep__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img__coll__graph.map=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/defines_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_3.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/commonitor_8h.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/nav_h.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/dir_97aefd0d527b934f1d99a682da8fe6a9.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string__inherit__graph.png=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_2.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/commonitor_8h__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_5.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_7.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery__inherit__graph.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/dir_96aba1edb3024c67427e5e41410f3c29.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/robot.cpp=c1542105020000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/camera_8h.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/main.cpp=c1547047244000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_3.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/navtreeindex0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/message.h=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_position__coll__graph.pdf=c1547564862000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/commonitor_8h.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp=c1542116921000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/sync_off.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message__inherit__graph.pdf=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_position__inherit__graph.pdf=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_a.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_c.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_2.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_e.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_9.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/comrobot.cpp=c1547728285000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/nav_g.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_2.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_9.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/camera.cpp=c1547728293000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/camera_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_14.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_string__inherit__graph.pdf=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img__inherit__graph.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_8.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_img__coll__graph.md5=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_2.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message__inherit__graph.md5=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_2.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_3.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/splitbar.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/img_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/base64_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/hierarchy.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_e.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/img_8h.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string__coll__graph.png=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/defines_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enums_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Package-Debug__RPI_.bash=c1544780526000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_d.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_8.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/defines_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_1.md5=c1547564768000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/hierarchy.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/nav_f.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/.gitignore=c1547565649000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_2.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h__dep__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_img__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_string__coll__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_14.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/close.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message__inherit__graph.map=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/base64/base64.h=c1518398687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_6.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/Makefile=c1542100687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_4.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/CMakeLists.txt=c1541685829000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/server.h=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_com_monitor.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/img_8h__dep__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/image.h=c1544797217000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Package-Debug.bash=c1544780526000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Release.mk=c1542104029000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/Makefile=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_4.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_2.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_1.map=c1547564769000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/CMakeLists.txt=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/camera_8h.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/dynsections.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/search_r.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/comrobot_8h__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h__dep__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-variables.mk=c1542029322000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/project.xml=c1542104029000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/comrobot.h=c1545405815000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_0.md5=c1547564861000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/.gitignore=c1541685829000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_b.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Debug__RPI_.bash=c1542029322000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/messages_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/tab_h.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_8.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enums_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_arena-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Release.bash=c1541685829000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_f.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_camera.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/globals.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_13.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/base64_8h.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Makefile-Debug.mk=c1547717055000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_0.map=c1547564862000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_9.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int__inherit__graph.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/base64_8h.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/comrobot_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_position.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/camera_8h__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/workspace/.metadata/.log=c1547721243000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/commonitor.cpp=c1547555858000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_d.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_4.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_int__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_img__coll__graph.pdf=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string__inherit__graph.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/pthread_version/tasks_pthread.cpp=c1547557161000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/functions.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/workspace/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version=c1547722800000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/project.xml=c1546856299000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/defines_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_e.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery__inherit__graph.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_9.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/commonitor_8h_source.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_5.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Debug.bash=c1541685829000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_3.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/base64_8h__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/img_8h__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery__coll__graph.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_3.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/tasks.cpp=c1547728371000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/img.h=c1547565126000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/project.properties=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_3.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/folderclosed.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_img__inherit__graph.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_string__coll__graph.pdf=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/commonitor_8h.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/ProjDestijl.cbp=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/doc.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.digi.xctung.prefs=c1547722800000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_3.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_int.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_img-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_a.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/annotated_dup.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string__coll__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_7.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position__coll__graph.png=c1547564862000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_12.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_2.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_img.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enums_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/commonitor.h=c1546527039000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Makefile-Debug__RPI_.mk=c1547717999000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/files.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/menu.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/globals_type.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/messages_8h__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_img.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_battery__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string__coll__graph.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h_source.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/dir_96aba1edb3024c67427e5e41410f3c29.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/annotated.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_c.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/monitor.cpp=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/comrobot_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Package-Debug__Pthread__RPI.bash=c1546855871000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/message.cpp=c1542105181000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/struct_position.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_a.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_5.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/comrobot_8h__incl.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_4.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_2.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/src/serialTest.cpp=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/base64_8h.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_2.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_9.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_arena.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_f.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_int__inherit__graph.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/tab_s.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/base64_8h_source.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/comrobot_8h__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_img.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_4.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/robot-icon.resized.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/base64/compile-and-run-test=c1518398687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/sync_on.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_2.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/typedefs_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_string.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/compile_commands.json=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_battery__coll__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int__inherit__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/doxygen.sty=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Package-Debug__Pthread_.bash=c1545062469000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/image.cpp=c1542104053000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/camera_8h__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_4.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/graph_legend.png=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_6.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_10.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_11.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/img.cpp=c1547565374000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/messages.h=c1547564899000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/globals_enum.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/messages.cpp=c1546526752000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int__inherit__graph.map=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_string.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/base64_8h__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery__coll__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/search_m.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/globals_func.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/jquery.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/files_3.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/navtree.css=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enums_2.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/camera.h=c1547564761000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_com_monitor.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_2.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_b.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/globals_defs.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_6.png=c1547564862000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/search.css=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_camera.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_battery__inherit__graph.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery__coll__graph.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/monitor.h=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/classes.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/base64/test.cpp=c1518398687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_3.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_8.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_b.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_6.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position__coll__graph.md5=c1547564861000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/tabs.css=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/search_l.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/base64/LICENSE=c1518398687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_3.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/src/serverTest.cpp=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/folderopen.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/typedefs_1.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/tasks_pthread.h=c1546961074000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/dir_97aefd0d527b934f1d99a682da8fe6a9.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/struct_position-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_a.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/messages_8h.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_5.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/typedefs_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_5.png=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/.dep.inc=c1542102478000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/tab_b.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h_source.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_f.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position__coll__graph.map=c1547564862000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/annotated.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position__inherit__graph.png=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_5.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_com_monitor.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/globals_eval.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/mag_sel.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-impl.mk=c1542029322000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_a.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_5.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_10.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/bdwn.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_battery__coll__graph.pdf=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int__coll__graph.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs=c1547721237000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/resize.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/functions_func.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_11.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/open.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/messages_8h__dep__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_camera-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/src/serialExample.cpp=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/CMakeLists.txt=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/functions_vars.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/gdbsudo.sh=c1541685829000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_com_robot.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/src/rtvideoExample.cpp=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_com_monitor-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/tasks.h=c1547716000000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_a.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/base64/base64.cpp=c1518398687000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_4.png=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/tab_a.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Package-Release.bash=c1544780526000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_3.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img__coll__graph.png=c1547563913000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.h=c1542117699000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/struct_position.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/image.cpp=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/camera_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_4.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/src/uiExample.cpp=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_2.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/graph_legend.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_9.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_7.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/main.cpp=c1542105162000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/tasks_pthread.cpp=c1547195899000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_int__coll__graph.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/doxygen.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/commonitor_8h__incl.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Makefile-Debug__Pthread_.mk=c1547649766000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug.mk=c1542104029000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/project.properties=c1542103467000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_c.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/classes_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi=c1547722800000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_7.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Makefile-variables.mk=c1546855871000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/typedefs_0.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_com_robot.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/base64_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/dir_96aba1edb3024c67427e5e41410f3c29.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/server.cpp=c1542120059000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enumvalues_4.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/search.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/camera_8h__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_3.png=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/class_message_battery.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_b.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_6.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/commonitor_8h__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_c.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_e.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/closed.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/private/Makefile-variables.mk=c1546855871000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/nbproject/Makefile-Release.mk=c1547649766000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_int.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/index.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_4.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/message.cpp=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_6.md5=c1547564861000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/refman.tex=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/functions_1.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/menudata.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_position.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_arena.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/.gitignore=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_com_robot-members.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/base64_8h__incl.map=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/messages_8h__dep__incl.md5=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/doxygen.css=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_b.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_6.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/struct_position.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/examples/src/videoExample.cpp=c1542120848000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_img__inherit__graph.png=c1547560339000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/variables_0.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_message_battery.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/all_12.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/class_img.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/bc_s.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_6.map=c1547564862000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/README.md=c1541685829000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_2.png=c1547560340000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/search/enums_2.html=c1547565563000 +VERSION=1.3 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/latex/robot-icon.resized.png=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs=c1547722800000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/hierarchy.js=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/img_8h.html=c1547565563000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/doc/html/inherit_graph_5.md5=c1547564949000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/robot.h=c1544778298000 +/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile=c1542100687000 diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/project.properties b/software/raspberry/superviseur-robot/nbproject/project.properties similarity index 100% rename from software/raspberry/superviseur-robot/superviseur/nbproject/project.properties rename to software/raspberry/superviseur-robot/nbproject/project.properties diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/project.xml b/software/raspberry/superviseur-robot/nbproject/project.xml similarity index 82% rename from software/raspberry/superviseur-robot/superviseur/nbproject/project.xml rename to software/raspberry/superviseur-robot/nbproject/project.xml index 3d6436b..06f5083 100644 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/project.xml +++ b/software/raspberry/superviseur-robot/nbproject/project.xml @@ -9,14 +9,12 @@ h UTF-8 - + + lib + - Debug - 1 - - - Release + Debug__PC_ 1 diff --git a/software/raspberry/superviseur-robot/examples/.gitignore b/software/raspberry/superviseur-robot/not_for_students/examples/.gitignore similarity index 100% rename from software/raspberry/superviseur-robot/examples/.gitignore rename to software/raspberry/superviseur-robot/not_for_students/examples/.gitignore diff --git a/software/raspberry/superviseur-robot/examples/CMakeLists.txt b/software/raspberry/superviseur-robot/not_for_students/examples/CMakeLists.txt similarity index 100% rename from software/raspberry/superviseur-robot/examples/CMakeLists.txt rename to software/raspberry/superviseur-robot/not_for_students/examples/CMakeLists.txt diff --git a/software/raspberry/superviseur-robot/examples/src/rtvideoExample.cpp b/software/raspberry/superviseur-robot/not_for_students/examples/src/rtvideoExample.cpp similarity index 100% rename from software/raspberry/superviseur-robot/examples/src/rtvideoExample.cpp rename to software/raspberry/superviseur-robot/not_for_students/examples/src/rtvideoExample.cpp diff --git a/software/raspberry/superviseur-robot/examples/src/serialExample.cpp b/software/raspberry/superviseur-robot/not_for_students/examples/src/serialExample.cpp similarity index 100% rename from software/raspberry/superviseur-robot/examples/src/serialExample.cpp rename to software/raspberry/superviseur-robot/not_for_students/examples/src/serialExample.cpp diff --git a/software/raspberry/superviseur-robot/examples/src/serialTest.cpp b/software/raspberry/superviseur-robot/not_for_students/examples/src/serialTest.cpp similarity index 100% rename from software/raspberry/superviseur-robot/examples/src/serialTest.cpp rename to software/raspberry/superviseur-robot/not_for_students/examples/src/serialTest.cpp diff --git a/software/raspberry/superviseur-robot/examples/src/serverTest.cpp b/software/raspberry/superviseur-robot/not_for_students/examples/src/serverTest.cpp similarity index 100% rename from software/raspberry/superviseur-robot/examples/src/serverTest.cpp rename to software/raspberry/superviseur-robot/not_for_students/examples/src/serverTest.cpp diff --git a/software/raspberry/superviseur-robot/examples/src/uiExample.cpp b/software/raspberry/superviseur-robot/not_for_students/examples/src/uiExample.cpp similarity index 100% rename from software/raspberry/superviseur-robot/examples/src/uiExample.cpp rename to software/raspberry/superviseur-robot/not_for_students/examples/src/uiExample.cpp diff --git a/software/raspberry/superviseur-robot/examples/src/videoExample.cpp b/software/raspberry/superviseur-robot/not_for_students/examples/src/videoExample.cpp similarity index 100% rename from software/raspberry/superviseur-robot/examples/src/videoExample.cpp rename to software/raspberry/superviseur-robot/not_for_students/examples/src/videoExample.cpp diff --git a/software/raspberry/superviseur-robot/not_for_students/pthread_version/tasks_pthread.cpp b/software/raspberry/superviseur-robot/not_for_students/pthread_version/tasks_pthread.cpp new file mode 100644 index 0000000..66bb3e0 --- /dev/null +++ b/software/raspberry/superviseur-robot/not_for_students/pthread_version/tasks_pthread.cpp @@ -0,0 +1,494 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "tasks_pthread.h" +#include + +#ifdef __WITH_PTHREAD__ + +// Déclaration des priorités des taches +#define PRIORITY_TSERVER 30 +#define PRIORITY_TOPENCOMROBOT 20 +#define PRIORITY_TMOVE 10 +#define PRIORITY_TSENDTOMON 25 +#define PRIORITY_TRECEIVEFROMMON 22 +#define PRIORITY_TSTARTROBOT 20 + +/* + * Some remarks: + * 1- This program is mostly a template. It shows you how to create tasks, semaphore + * message queues, mutex ... and how to use them + * + * 2- semDumber is, as name say, useless. Its goal is only to show you how to use semaphore + * + * 3- Data flow is probably not optimal + * + * 4- Take into account that ComRobot::Write will block your task when serial buffer is full, + * time for internal buffer to flush + * + * 5- Same behavior existe for ComMonitor::Write ! + * + * 6- When you want to write something in terminal, use cout and terminate with endl and flush + * + * 7- Good luck ! + */ + +void Tasks::Init() { + int status; + + /* Open com port with STM32 */ + cout << "Open serial com ("; + status = robot.Open(); + cout << status; + cout << ")" << endl; + + if (status >= 0) { + // Open server + + status = monitor.Open(SERVER_PORT); + cout << "Open server on port " << (SERVER_PORT) << " (" << status << ")" << endl; + + if (status < 0) throw std::runtime_error { + "Unable to start server on port " + std::to_string(SERVER_PORT) + }; + } else + throw std::runtime_error { + "Unable to open serial port /dev/ttyS0 " + }; +} + +void Tasks::Run() { + threadTimer = new thread((void (*)(void*)) & Tasks::TimerTask, this); + threadServer = new thread((void (*)(void*)) & Tasks::ServerTask, this); + + // threadSendToMon=new thread((void (*)(void*)) &Tasks::SendToMonTask,this); + + // + // Camera camera=Camera(sm); + // cout << "Try opening camera"< " << msgSend->ToString() << endl << flush; + // msgRcv = robot.SendCommand(msgSend, MESSAGE_ANSWER_ACK, 3); + // cout << "Rcv <= " << msgRcv->ToString() << endl << flush; + // + // delete(msgRcv); + // + // msgSend = ComRobot::StartWithoutWD(); + // cout << "Send => " << msgSend->ToString() << endl << flush; + // msgRcv = robot.SendCommand(msgSend, MESSAGE_ANSWER_ACK, 3); + // cout << "Rcv <= " << msgRcv->ToString() << endl << flush; + // + // delete(msgRcv); + // + // msgSend = ComRobot::Move(1000); + // cout << "Send => " << msgSend->ToString() << endl << flush; + // msgRcv = robot.SendCommand(msgSend, MESSAGE_ANSWER_ACK, 3); + // cout << "Rcv <= " << msgRcv->ToString() << endl << flush; + // + // delete(msgRcv); + // + // msgSend = ComRobot::GetBattery(); + // cout << "Send => " << msgSend->ToString() << endl << flush; + // msgRcv = robot.SendCommand(msgSend, MESSAGE_ROBOT_BATTERY_LEVEL, 3); + // cout << "Rcv <= " << msgRcv->ToString() << endl << flush; + // + // delete(msgRcv); + cout << "Tasks launched" << endl << flush; +} + +void Tasks::Stop() { + monitor.Close(); + robot.Close(); +} + +void Tasks::ServerTask(void *arg) { + Message *msgRcv; + Message *msgSend; + bool isActive = true; + + cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; + + while (isActive) { + msgRcv = NULL; + msgSend = NULL; + + msgRcv = monitor.Read(); + cout << "Rcv <= " << msgRcv->ToString() << endl << flush; + + if (msgRcv->CompareID(MESSAGE_ROBOT_COM_OPEN)) msgSend = new Message(MESSAGE_ANSWER_ACK); + if (msgRcv->CompareID(MESSAGE_ROBOT_COM_CLOSE)) msgSend = new Message(MESSAGE_ANSWER_ACK); + + if (msgRcv->CompareID(MESSAGE_ROBOT_START_WITH_WD)) msgSend = new Message(MESSAGE_ANSWER_ACK); + if (msgRcv->CompareID(MESSAGE_ROBOT_START_WITHOUT_WD)) msgSend = new Message(MESSAGE_ANSWER_ACK); + + if (msgRcv->CompareID(MESSAGE_ROBOT_COM_CLOSE)) isActive = false; + + if (msgRcv->CompareID(MESSAGE_CAM_OPEN)) { + sendImage = true; + msgSend = new Message(MESSAGE_ANSWER_ACK); + } + + if (msgRcv->CompareID(MESSAGE_CAM_CLOSE)) { + sendImage = false; + msgSend = new Message(MESSAGE_ANSWER_ACK); + } + + if (msgRcv->CompareID(MESSAGE_CAM_POSITION_COMPUTE_START)) { + sendPosition = true; + msgSend = new Message(MESSAGE_ANSWER_ACK); + } + + if (msgRcv->CompareID(MESSAGE_CAM_POSITION_COMPUTE_STOP)) { + sendPosition = false; + msgSend = new Message(MESSAGE_ANSWER_ACK); + } + + if (msgRcv->CompareID(MESSAGE_ROBOT_BATTERY_GET)) msgSend = new MessageBattery(MESSAGE_ROBOT_BATTERY_LEVEL, BATTERY_FULL); + + if (msgRcv->CompareID(MESSAGE_CAM_ASK_ARENA)) showArena = true; + if (msgRcv->CompareID(MESSAGE_CAM_ARENA_CONFIRM)) showArena = false; + if (msgRcv->CompareID(MESSAGE_CAM_ARENA_INFIRM)) showArena = false; + + if (msgSend != NULL) monitor.Write(msgSend); + delete(msgRcv); + } +} + +void Tasks::TimerTask(void* arg) { + struct timespec tim, tim2; + Message *msgSend; + int counter; + int cntFrame = 0; + Position pos; + Arena arena; + + tim.tv_sec = 0; + tim.tv_nsec = 50000000; // 50ms (20fps) + + cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; + + Camera camera = Camera(sm, 20); + cout << "Try opening camera" << endl << flush; + if (camera.Open()) cout << "Camera opened successfully" << endl << flush; + else { + cout << "Failed to open camera" << endl << flush; + + exit(0); + } + + pos.angle = 0.0; + pos.robotId = -1; + pos.center = cv::Point2f(0, 0); + pos.direction = cv::Point2f(0, 0); + + while (1) { + //std::this_thread::sleep_for(std::chrono::seconds ) + //sleep(1); + // if (nanosleep(&tim, &tim2) < 0) { + // printf("Nano sleep system call failed \n"); + // return; + // } + + // counter++; + // if (counter>=10) { + // flag=true; + // counter=0; + // } + //mutexTimer.unlock(); + Img image = camera.Grab(); // 15fps + + if (sendPosition == true) { + counter++; + + if (counter >= 1) { // div =15 + counter = 0; + + //if (!arena.IsEmpty()) { + image.dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::PREDEFINED_DICTIONARY_NAME(3)); + + std::list poses = image.SearchRobot(arena); + cout << "Nbr of pos detected: " << to_string(poses.size()) << endl << flush; + + if (poses.size() > 0) { + Position firstPos = poses.front(); + + pos.angle = firstPos.angle; + pos.robotId = firstPos.robotId; + pos.center = firstPos.center; + pos.direction = firstPos.direction; + } else { + // Nothing found + pos.angle = 0.0; + pos.robotId = -1; + pos.center = cv::Point2f(0,0); + pos.direction = cv::Point2f(0,0); + } + + MessagePosition *msgp = new MessagePosition(MESSAGE_CAM_POSITION, pos); + monitor.Write(msgp); + cout << "Position sent" << endl << flush; + } + } + + if (sendImage == true) { + if (showArena) { + arena = image.SearchArena(); + + if (!arena.IsEmpty()) image.DrawArena(arena); + else cout << "Arena not found" << endl << flush; + } + + if (sendPosition == true) { + image.DrawRobot(pos); + } + + if (!arena.IsEmpty()) image.DrawArena(arena); + + MessageImg *msg = new MessageImg(MESSAGE_CAM_IMAGE, &image); + + monitor.Write(msg); + cntFrame++; + cout << "cnt: " << to_string(cntFrame) << endl << flush; + } + } +} + +void Tasks::SendToMonTask(void* arg) { + cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; + + while (1) { + + } +} + +//void Tasks::f_sendToMon(void * arg) { +// int err; +// MessageToMon msg; +// +// /* INIT */ +// RT_TASK_INFO info; +// rt_task_inquire(NULL, &info); +// printf("Init %s\n", info.name); +// rt_sem_p(&sem_barrier, TM_INFINITE); +// +//#ifdef _WITH_TRACE_ +// printf("%s : waiting for sem_serverOk\n", info.name); +//#endif +// rt_sem_p(&sem_serverOk, TM_INFINITE); +// while (1) { +// +//#ifdef _WITH_TRACE_ +// printf("%s : waiting for a message in queue\n", info.name); +//#endif +// if (rt_queue_read(&q_messageToMon, &msg, sizeof (MessageToRobot), TM_INFINITE) >= 0) { +//#ifdef _WITH_TRACE_ +// printf("%s : message {%s,%s} in queue\n", info.name, msg.header, (char*)msg.data); +//#endif +// +// send_message_to_monitor(msg.header, msg.data); +// free_msgToMon_data(&msg); +// rt_queue_free(&q_messageToMon, &msg); +// } else { +// printf("Error msg queue write: %s\n", strerror(-err)); +// } +// } +//} +// +//void Tasks::f_receiveFromMon(void *arg) { +// MessageFromMon msg; +// int err; +// +// /* INIT */ +// RT_TASK_INFO info; +// rt_task_inquire(NULL, &info); +// printf("Init %s\n", info.name); +// rt_sem_p(&sem_barrier, TM_INFINITE); +// +//#ifdef _WITH_TRACE_ +// printf("%s : waiting for sem_serverOk\n", info.name); +//#endif +// rt_sem_p(&sem_serverOk, TM_INFINITE); +// do { +//#ifdef _WITH_TRACE_ +// printf("%s : waiting for a message from monitor\n", info.name); +//#endif +// err = receive_message_from_monitor(msg.header, msg.data); +//#ifdef _WITH_TRACE_ +// printf("%s: msg {header:%s,data=%s} received from UI\n", info.name, msg.header, msg.data); +//#endif +// if (strcmp(msg.header, HEADER_MTS_COM_DMB) == 0) { +// if (msg.data[0] == OPEN_COM_DMB) { // Open communication supervisor-robot +//#ifdef _WITH_TRACE_ +// printf("%s: message open Xbee communication\n", info.name); +//#endif +// rt_sem_v(&sem_openComRobot); +// } +// } else if (strcmp(msg.header, HEADER_MTS_DMB_ORDER) == 0) { +// if (msg.data[0] == DMB_START_WITHOUT_WD) { // Start robot +//#ifdef _WITH_TRACE_ +// printf("%s: message start robot\n", info.name); +//#endif +// rt_sem_v(&sem_startRobot); +// +// } else if ((msg.data[0] == DMB_GO_BACK) +// || (msg.data[0] == DMB_GO_FORWARD) +// || (msg.data[0] == DMB_GO_LEFT) +// || (msg.data[0] == DMB_GO_RIGHT) +// || (msg.data[0] == DMB_STOP_MOVE)) { +// +// rt_mutex_acquire(&mutex_move, TM_INFINITE); +// robotMove = msg.data[0]; +// rt_mutex_release(&mutex_move); +//#ifdef _WITH_TRACE_ +// printf("%s: message update movement with %c\n", info.name, robotMove); +//#endif +// +// } +// } +// } while (err > 0); +// +//} +// +//void Tasks::f_openComRobot(void * arg) { +// int err; +// +// /* INIT */ +// RT_TASK_INFO info; +// rt_task_inquire(NULL, &info); +// printf("Init %s\n", info.name); +// rt_sem_p(&sem_barrier, TM_INFINITE); +// +// while (1) { +//#ifdef _WITH_TRACE_ +// printf("%s : Wait sem_openComRobot\n", info.name); +//#endif +// rt_sem_p(&sem_openComRobot, TM_INFINITE); +//#ifdef _WITH_TRACE_ +// printf("%s : sem_openComRobot arrived => open communication robot\n", info.name); +//#endif +// err = open_communication_robot(); +// if (err == 0) { +//#ifdef _WITH_TRACE_ +// printf("%s : the communication is opened\n", info.name); +//#endif +// MessageToMon msg; +// set_msgToMon_header(&msg, (char*)HEADER_STM_ACK); +// write_in_queue(&q_messageToMon, msg); +// } else { +// MessageToMon msg; +// set_msgToMon_header(&msg, (char*)HEADER_STM_NO_ACK); +// write_in_queue(&q_messageToMon, msg); +// } +// } +//} +// +//void Tasks::f_startRobot(void * arg) { +// int err; +// +// /* INIT */ +// RT_TASK_INFO info; +// rt_task_inquire(NULL, &info); +// printf("Init %s\n", info.name); +// rt_sem_p(&sem_barrier, TM_INFINITE); +// +// while (1) { +//#ifdef _WITH_TRACE_ +// printf("%s : Wait sem_startRobot\n", info.name); +//#endif +// rt_sem_p(&sem_startRobot, TM_INFINITE); +//#ifdef _WITH_TRACE_ +// printf("%s : sem_startRobot arrived => Start robot\n", info.name); +//#endif +// err = send_command_to_robot(DMB_START_WITHOUT_WD); +// if (err == 0) { +//#ifdef _WITH_TRACE_ +// printf("%s : the robot is started\n", info.name); +//#endif +// rt_mutex_acquire(&mutex_robotStarted, TM_INFINITE); +// robotStarted = 1; +// rt_mutex_release(&mutex_robotStarted); +// MessageToMon msg; +// set_msgToMon_header(&msg, (char*)HEADER_STM_ACK); +// write_in_queue(&q_messageToMon, msg); +// } else { +// MessageToMon msg; +// set_msgToMon_header(&msg, (char*)HEADER_STM_NO_ACK); +// write_in_queue(&q_messageToMon, msg); +// } +// } +//} +// +//void Tasks::f_move(void *arg) { +// /* INIT */ +// RT_TASK_INFO info; +// rt_task_inquire(NULL, &info); +// printf("Init %s\n", info.name); +// rt_sem_p(&sem_barrier, TM_INFINITE); +// +// /* PERIODIC START */ +//#ifdef _WITH_PERIODIC_TRACE_ +// printf("%s: start period\n", info.name); +//#endif +// rt_task_set_periodic(NULL, TM_NOW, 100000000); +// while (1) { +//#ifdef _WITH_PERIODIC_TRACE_ +// printf("%s: Wait period \n", info.name); +//#endif +// rt_task_wait_period(NULL); +//#ifdef _WITH_PERIODIC_TRACE_ +// printf("%s: Periodic activation\n", info.name); +// printf("%s: move equals %c\n", info.name, robotMove); +//#endif +// rt_mutex_acquire(&mutex_robotStarted, TM_INFINITE); +// if (robotStarted) { +// rt_mutex_acquire(&mutex_move, TM_INFINITE); +// send_command_to_robot(robotMove); +// rt_mutex_release(&mutex_move); +//#ifdef _WITH_TRACE_ +// printf("%s: the movement %c was sent\n", info.name, robotMove); +//#endif +// } +// rt_mutex_release(&mutex_robotStarted); +// } +//} +// +//void write_in_queue(RT_QUEUE *queue, MessageToMon msg) { +// void *buff; +// buff = rt_queue_alloc(&q_messageToMon, sizeof (MessageToMon)); +// memcpy(buff, &msg, sizeof (MessageToMon)); +// rt_queue_send(&q_messageToMon, buff, sizeof (MessageToMon), Q_NORMAL); +//} + +#endif //__WITH_PTHREAD__ \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/not_for_students/pthread_version/tasks_pthread.h b/software/raspberry/superviseur-robot/not_for_students/pthread_version/tasks_pthread.h new file mode 100644 index 0000000..0dbfd4d --- /dev/null +++ b/software/raspberry/superviseur-robot/not_for_students/pthread_version/tasks_pthread.h @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __TASKS_H__ +#define __TASKS_H__ + +#ifdef __WITH_PTHREAD__ +#include +#include +#include + +//#include "monitor.h" +//#include "robot.h" +//#include "image.h" +//#include "message.h" +//#include "server.h" + +#include "camera.h" +#include "img.h" + +#include "messages.h" +#include "commonitor.h" +#include "comrobot.h" + +#include +#include +#include + +class Tasks { +public: +/** + * @brief Initialisation des structures de l'application (tâches, mutex, + * semaphore, etc.) + */ + void Init(); + + /** + * @brief Démarrage des tâches + */ + void Run(); + + /** + * @brief Arrêt des tâches + */ + void Stop(); + + /** + */ + void Join() { + threadServer->join(); + threadTimer->join(); + threadSendToMon->join(); + } + + /** + */ + bool AcceptClient() { + return monitor.AcceptClient(); + } + + /** + * @brief Thread handling server communication. + */ + void ServerTask(void *arg); + + /** + * @brief Thread handling server communication. + */ + void TimerTask(void *arg); + + /** + * @brief Thread handling communication to monitor. + */ + void SendToMonTask(void *arg); +private: + ComMonitor monitor; + ComRobot robot; + + bool sendImage=false; + bool sendPosition=false; + + int counter; + bool flag; + + bool showArena=false; + + thread *threadServer; + thread *threadSendToMon; + thread *threadTimer; +// thread *threadReceiveFromMon; +// thread *threadOpenComRobot; +// thread *threadStartRobot; +// thread *threadMove; +// thread *threadTimer; + + mutex mutexTimer; +// mutex mutexRobotStarted; +// mutex mutexMove; +// mutex semBarrier; +// mutex semOpenComRobot; +// mutex semServerOk; +// mutex semStartRobot; + + +// +// /** +// * @brief Thread handling communication from monitor. +// */ +// void ReceiveFromMonTask(void *arg); +// +// /** +// * @brief Thread handling opening of robot communication. +// */ +// void OpenComRobotTask(void * arg); +// +// /** +// * @brief Thread handling robot mouvements. +// */ +// void MoveTask(void *arg); +// +// /** +// * @brief Thread handling robot activation. +// */ +// void StartRobotTask(void *arg); +}; + +#endif // __WITH_PTHREAD__ +#endif /* __TASKS_H__ */ + diff --git a/software/raspberry/superviseur-robot/lib/TPRT.Doxyfile b/software/raspberry/superviseur-robot/superviseur.doxygen similarity index 99% rename from software/raspberry/superviseur-robot/lib/TPRT.Doxyfile rename to software/raspberry/superviseur-robot/superviseur.doxygen index ee4bedb..56c51d1 100644 --- a/software/raspberry/superviseur-robot/lib/TPRT.Doxyfile +++ b/software/raspberry/superviseur-robot/superviseur.doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "Bibliotheques TP RT" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.0 +PROJECT_NUMBER = 2.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a @@ -58,7 +58,7 @@ PROJECT_LOGO = /home/dimercur/Documents/Travail/git/dumber/software/mo # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = ./doc +OUTPUT_DIRECTORY = ./docs # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -790,7 +790,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = ./ +INPUT = ./lib # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/software/raspberry/superviseur-robot/superviseur/.gitignore b/software/raspberry/superviseur-robot/superviseur/.gitignore deleted file mode 100644 index 5ceb27c..0000000 --- a/software/raspberry/superviseur-robot/superviseur/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -bin/ -build/ -CMakeFiles/ -dist/ - -.dep.inc -Makefile -*.cmake -*.o - diff --git a/software/raspberry/superviseur-robot/superviseur/CMakeLists.txt b/software/raspberry/superviseur-robot/superviseur/CMakeLists.txt deleted file mode 100644 index fd22eaa..0000000 --- a/software/raspberry/superviseur-robot/superviseur/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -set(superviseur_FILES ./src/main.cpp src/functions.cpp) - -include_directories(./src ../lib /usr/xenomai/include /usr/xenomai/include/mercury) -link_directories(/usr/xenomai/lib) - -add_executable(superviseur ${superviseur_FILES}) -target_link_libraries(superviseur destijl) - -#add_custom_command(TARGET superviseur POST_BUILD -# COMMAND sudo chown root ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/superviseur -# COMMAND sudo chgrp root ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/superviseur -# COMMAND sudo chmod +s ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/superviseur -# WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} -# COMMENT "Add sticky bit" -#) \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug.mk b/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug.mk deleted file mode 100644 index 490bfe1..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug.mk +++ /dev/null @@ -1,119 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Debug -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/_ext/a59f760b/image.o \ - ${OBJECTDIR}/_ext/a59f760b/message.o \ - ${OBJECTDIR}/_ext/a59f760b/monitor.o \ - ${OBJECTDIR}/_ext/a59f760b/robot.o \ - ${OBJECTDIR}/_ext/a59f760b/server.o \ - ${OBJECTDIR}/src/functions.o \ - ${OBJECTDIR}/src/main.o - - -# C Compiler Flags -CFLAGS=-I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy - -# CC Compiler Flags -CCFLAGS=-I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -CXXFLAGS=-I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS=`pkg-config --libs opencv` - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur ${OBJECTFILES} ${LDLIBSOPTIONS} -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 - -${OBJECTDIR}/_ext/a59f760b/image.o: ../lib/src/image.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -D__FOR_PC__ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/image.o ../lib/src/image.cpp - -${OBJECTDIR}/_ext/a59f760b/message.o: ../lib/src/message.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -D__FOR_PC__ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/message.o ../lib/src/message.cpp - -${OBJECTDIR}/_ext/a59f760b/monitor.o: ../lib/src/monitor.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -D__FOR_PC__ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/monitor.o ../lib/src/monitor.cpp - -${OBJECTDIR}/_ext/a59f760b/robot.o: ../lib/src/robot.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -D__FOR_PC__ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/robot.o ../lib/src/robot.cpp - -${OBJECTDIR}/_ext/a59f760b/server.o: ../lib/src/server.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -D__FOR_PC__ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/server.o ../lib/src/server.cpp - -${OBJECTDIR}/src/functions.o: src/functions.cpp - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -D__FOR_PC__ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/functions.o src/functions.cpp - -${OBJECTDIR}/src/main.o: src/main.cpp - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -D__FOR_PC__ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main.o src/main.cpp - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug__RPI_.mk b/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug__RPI_.mk deleted file mode 100644 index ff76d0c..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug__RPI_.mk +++ /dev/null @@ -1,119 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Debug__RPI_ -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/_ext/a59f760b/image.o \ - ${OBJECTDIR}/_ext/a59f760b/message.o \ - ${OBJECTDIR}/_ext/a59f760b/monitor.o \ - ${OBJECTDIR}/_ext/a59f760b/robot.o \ - ${OBJECTDIR}/_ext/a59f760b/server.o \ - ${OBJECTDIR}/src/functions.o \ - ${OBJECTDIR}/src/main.o - - -# C Compiler Flags -CFLAGS=-I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy - -# CC Compiler Flags -CCFLAGS=-I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy -CXXFLAGS=-I/usr/xenomai/include/mercury -I/usr/xenomai/include -D_GNU_SOURCE -D_REENTRANT -fasynchronous-unwind-tables -D__MERCURY__ -I/usr/xenomai/include/alchemy - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS=`pkg-config --libs opencv` -lraspicam_cv -lraspicam - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur ${OBJECTFILES} ${LDLIBSOPTIONS} -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 - -${OBJECTDIR}/_ext/a59f760b/image.o: ../lib/src/image.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/image.o ../lib/src/image.cpp - -${OBJECTDIR}/_ext/a59f760b/message.o: ../lib/src/message.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/message.o ../lib/src/message.cpp - -${OBJECTDIR}/_ext/a59f760b/monitor.o: ../lib/src/monitor.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/monitor.o ../lib/src/monitor.cpp - -${OBJECTDIR}/_ext/a59f760b/robot.o: ../lib/src/robot.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/robot.o ../lib/src/robot.cpp - -${OBJECTDIR}/_ext/a59f760b/server.o: ../lib/src/server.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/server.o ../lib/src/server.cpp - -${OBJECTDIR}/src/functions.o: src/functions.cpp - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/functions.o src/functions.cpp - -${OBJECTDIR}/src/main.o: src/main.cpp - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} "$@.d" - $(COMPILE.cc) -g -D_WITH_TRACE_ -Isrc -I../lib -I/usr/xenomai/include -I/usr/xenomai/include/mercury `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main.o src/main.cpp - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Release.mk b/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Release.mk deleted file mode 100644 index e888d88..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Release.mk +++ /dev/null @@ -1,119 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/_ext/a59f760b/image.o \ - ${OBJECTDIR}/_ext/a59f760b/message.o \ - ${OBJECTDIR}/_ext/a59f760b/monitor.o \ - ${OBJECTDIR}/_ext/a59f760b/robot.o \ - ${OBJECTDIR}/_ext/a59f760b/server.o \ - ${OBJECTDIR}/src/functions.o \ - ${OBJECTDIR}/src/main.o - - -# C Compiler Flags -CFLAGS= - -# CC Compiler Flags -CCFLAGS= -CXXFLAGS= - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS= - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur ${OBJECTFILES} ${LDLIBSOPTIONS} - -${OBJECTDIR}/_ext/a59f760b/image.o: ../lib/src/image.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/image.o ../lib/src/image.cpp - -${OBJECTDIR}/_ext/a59f760b/message.o: ../lib/src/message.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/message.o ../lib/src/message.cpp - -${OBJECTDIR}/_ext/a59f760b/monitor.o: ../lib/src/monitor.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/monitor.o ../lib/src/monitor.cpp - -${OBJECTDIR}/_ext/a59f760b/robot.o: ../lib/src/robot.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/robot.o ../lib/src/robot.cpp - -${OBJECTDIR}/_ext/a59f760b/server.o: ../lib/src/server.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/a59f760b - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/a59f760b/server.o ../lib/src/server.cpp - -${OBJECTDIR}/src/functions.o: src/functions.cpp - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/functions.o src/functions.cpp - -${OBJECTDIR}/src/main.o: src/main.cpp - ${MKDIR} -p ${OBJECTDIR}/src - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/src/main.o src/main.cpp - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-impl.mk b/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-impl.mk deleted file mode 100644 index 6990172..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-impl.mk +++ /dev/null @@ -1,133 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a pre- and a post- target defined where you can add customization code. -# -# This makefile implements macros and targets common to all configurations. -# -# NOCDDL - - -# Building and Cleaning subprojects are done by default, but can be controlled with the SUB -# macro. If SUB=no, subprojects will not be built or cleaned. The following macro -# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf -# and .clean-reqprojects-conf unless SUB has the value 'no' -SUB_no=NO -SUBPROJECTS=${SUB_${SUB}} -BUILD_SUBPROJECTS_=.build-subprojects -BUILD_SUBPROJECTS_NO= -BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} -CLEAN_SUBPROJECTS_=.clean-subprojects -CLEAN_SUBPROJECTS_NO= -CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} - - -# Project Name -PROJECTNAME=superviseur - -# Active Configuration -DEFAULTCONF=Debug -CONF=${DEFAULTCONF} - -# All Configurations -ALLCONFS=Debug Release Debug__RPI_ - - -# build -.build-impl: .build-pre .validate-impl .depcheck-impl - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf - - -# clean -.clean-impl: .clean-pre .validate-impl .depcheck-impl - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf - - -# clobber -.clobber-impl: .clobber-pre .depcheck-impl - @#echo "=> Running $@..." - for CONF in ${ALLCONFS}; \ - do \ - "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ - done - -# all -.all-impl: .all-pre .depcheck-impl - @#echo "=> Running $@..." - for CONF in ${ALLCONFS}; \ - do \ - "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ - done - -# build tests -.build-tests-impl: .build-impl .build-tests-pre - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf - -# run tests -.test-impl: .build-tests-impl .test-pre - @#echo "=> Running $@... Configuration=$(CONF)" - "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf - -# dependency checking support -.depcheck-impl: - @echo "# This code depends on make tool being used" >.dep.inc - @if [ -n "${MAKE_VERSION}" ]; then \ - echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \ - echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ - echo "include \$${DEPFILES}" >>.dep.inc; \ - echo "endif" >>.dep.inc; \ - else \ - echo ".KEEP_STATE:" >>.dep.inc; \ - echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ - fi - -# configuration validation -.validate-impl: - @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ - then \ - echo ""; \ - echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ - echo "See 'make help' for details."; \ - echo "Current directory: " `pwd`; \ - echo ""; \ - fi - @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ - then \ - exit 1; \ - fi - - -# help -.help-impl: .help-pre - @echo "This makefile supports the following configurations:" - @echo " ${ALLCONFS}" - @echo "" - @echo "and the following targets:" - @echo " build (default target)" - @echo " clean" - @echo " clobber" - @echo " all" - @echo " help" - @echo "" - @echo "Makefile Usage:" - @echo " make [CONF=] [SUB=no] build" - @echo " make [CONF=] [SUB=no] clean" - @echo " make [SUB=no] clobber" - @echo " make [SUB=no] all" - @echo " make help" - @echo "" - @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," - @echo " also build subprojects." - @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," - @echo " also clean subprojects." - @echo "Target 'clobber' will remove all built files from all configurations and," - @echo " unless 'SUB=no', also from subprojects." - @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," - @echo " also build subprojects." - @echo "Target 'help' prints this message." - @echo "" - diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-variables.mk b/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-variables.mk deleted file mode 100644 index 50873f1..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-variables.mk +++ /dev/null @@ -1,43 +0,0 @@ -# -# Generated - do not edit! -# -# NOCDDL -# -CND_BASEDIR=`pwd` -CND_BUILDDIR=build -CND_DISTDIR=dist -# Debug configuration -CND_PLATFORM_Debug=GNU-Linux -CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux -CND_ARTIFACT_NAME_Debug=superviseur -CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/superviseur -CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package -CND_PACKAGE_NAME_Debug=superviseur.tar -CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/superviseur.tar -# Release configuration -CND_PLATFORM_Release=GNU-Linux -CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux -CND_ARTIFACT_NAME_Release=superviseur -CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/superviseur -CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package -CND_PACKAGE_NAME_Release=superviseur.tar -CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/superviseur.tar -# Debug__RPI_ configuration -CND_PLATFORM_Debug__RPI_=GNU-Linux -CND_ARTIFACT_DIR_Debug__RPI_=dist/Debug__RPI_/GNU-Linux -CND_ARTIFACT_NAME_Debug__RPI_=superviseur -CND_ARTIFACT_PATH_Debug__RPI_=dist/Debug__RPI_/GNU-Linux/superviseur -CND_PACKAGE_DIR_Debug__RPI_=dist/Debug__RPI_/GNU-Linux/package -CND_PACKAGE_NAME_Debug__RPI_=superviseur.tar -CND_PACKAGE_PATH_Debug__RPI_=dist/Debug__RPI_/GNU-Linux/package/superviseur.tar -# -# include compiler specific variables -# -# dmake command -ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ - (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) -# -# gmake command -.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) -# -include nbproject/private/Makefile-variables.mk diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Release.bash b/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Release.bash deleted file mode 100644 index 76f5a7f..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Release.bash +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build -CND_DLIB_EXT=so -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/superviseur -OUTPUT_BASENAME=superviseur -PACKAGE_TOP_DIR=superviseur/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/superviseur/bin" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/superviseur.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/superviseur.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/configurations.xml b/software/raspberry/superviseur-robot/superviseur/nbproject/configurations.xml deleted file mode 100644 index e5c1aec..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/configurations.xml +++ /dev/null @@ -1,230 +0,0 @@ - - - - - ../lib/definitions.h - ./src/functions.h - ../lib/image.h - ../lib/message.h - ../lib/monitor.h - ../lib/robot.h - ../lib/server.h - - - gdbsudo.sh - - - ./src/functions.cpp - ../lib/src/image.cpp - ./src/main.cpp - ../lib/src/message.cpp - ../lib/src/monitor.cpp - ../lib/src/robot.cpp - ../lib/src/server.cpp - - - - - Makefile - - - Makefile - - - - default - true - false - - - - - src - ../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 - - - - src - ../lib - /usr/xenomai/include - /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 - - _WITH_TRACE_ - __FOR_PC__ - - - - - `pkg-config --libs opencv` - - -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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - default - true - false - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - GNU|GNU - true - false - - - - - src - ../lib - /usr/xenomai/include - /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 - - - - src - ../lib - /usr/xenomai/include - /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 - - _WITH_TRACE_ - - - - - `pkg-config --libs opencv` - raspicam_cv - raspicam - - -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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/downloads-10.105.1.13-pi-22 b/software/raspberry/superviseur-robot/superviseur/nbproject/private/downloads-10.105.1.13-pi-22 deleted file mode 100644 index e69de29..0000000 diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/private.xml b/software/raspberry/superviseur-robot/superviseur/nbproject/private/private.xml deleted file mode 100644 index 25f8c25..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/private/private.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - 1 - 2 - - - - - - diff --git a/software/raspberry/superviseur-robot/superviseur/nbproject/private/timestamps-10.105.1.13-pi-22 b/software/raspberry/superviseur-robot/superviseur/nbproject/private/timestamps-10.105.1.13-pi-22 deleted file mode 100644 index 89f9476..0000000 --- a/software/raspberry/superviseur-robot/superviseur/nbproject/private/timestamps-10.105.1.13-pi-22 +++ /dev/null @@ -1,32 +0,0 @@ -#Tue Nov 13 15:41:05 CET 2018 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/Makefile=c1542100687000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/robot.h=c1542116851000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/CMakeLists.txt=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Debug.bash=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug.mk=c1542104029000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/main.cpp=c1542105162000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/robot.cpp=c1542105020000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/image.h=c1542117446000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/.dep.inc=c1542102478000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Debug__RPI_.bash=c1542029322000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/server.cpp=c1542120059000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/project.properties=c1542103467000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Debug__RPI_.mk=c1542104029000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-variables.mk=c1542029322000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/message.cpp=c1542105181000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/project.xml=c1542104029000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/private/Makefile-variables.mk=c1542029322000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Package-Release.bash=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/message.h=c1542117282000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/.gitignore=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-Release.mk=c1542104029000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/image.cpp=c1542104053000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.h=c1542117699000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/src/functions.cpp=c1542105130000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/monitor.h=c1542120024000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/gdbsudo.sh=c1541685829000 -VERSION=1.3 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/server.h=c1542119920000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/superviseur/nbproject/Makefile-impl.mk=c1542029322000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/definitions.h=c1542116893000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp=c1542116921000 diff --git a/software/raspberry/superviseur-robot/superviseur/src/functions.cpp b/software/raspberry/superviseur-robot/superviseur/src/functions.cpp deleted file mode 100644 index 89b6e89..0000000 --- a/software/raspberry/superviseur-robot/superviseur/src/functions.cpp +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file functions.h - * \author PE.Hladik - * \version 1.0 - * \date 06/06/2017 - * \brief Miscellaneous functions used for destijl project. - */ - -#include "functions.h" - -char mode_start; - -void write_in_queue(RT_QUEUE *, MessageToMon); - -void f_server(void *arg) { - int err; - /* INIT */ - RT_TASK_INFO info; - rt_task_inquire(NULL, &info); - printf("Init %s\n", info.name); - rt_sem_p(&sem_barrier, TM_INFINITE); - - err=openServer(DEFAULT_SERVER_PORT); - - if (err < 0) { - printf("Failed to start server: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } else { -#ifdef _WITH_TRACE_ - printf("%s: server started\n", info.name); -#endif - //Waiting for a client to connect - err=acceptClient(); - - if (err<0) { - printf("Client accept failed: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - -#ifdef _WITH_TRACE_ - printf ("client connected: %d\n", err); - printf ("Rock'n'roll baby !\n"); -#endif - rt_sem_broadcast(&sem_serverOk); - } -} - -void f_sendToMon(void * arg) { - int err; - MessageToMon msg; - - /* INIT */ - RT_TASK_INFO info; - rt_task_inquire(NULL, &info); - printf("Init %s\n", info.name); - rt_sem_p(&sem_barrier, TM_INFINITE); - -#ifdef _WITH_TRACE_ - printf("%s : waiting for sem_serverOk\n", info.name); -#endif - rt_sem_p(&sem_serverOk, TM_INFINITE); - while (1) { - -#ifdef _WITH_TRACE_ - printf("%s : waiting for a message in queue\n", info.name); -#endif - if (rt_queue_read(&q_messageToMon, &msg, sizeof (MessageToRobot), TM_INFINITE) >= 0) { -#ifdef _WITH_TRACE_ - printf("%s : message {%s,%s} in queue\n", info.name, msg.header, (char*)msg.data); -#endif - - send_message_to_monitor(msg.header, msg.data); - free_msgToMon_data(&msg); - rt_queue_free(&q_messageToMon, &msg); - } else { - printf("Error msg queue write: %s\n", strerror(-err)); - } - } -} - -void f_receiveFromMon(void *arg) { - MessageFromMon msg; - int err; - - /* INIT */ - RT_TASK_INFO info; - rt_task_inquire(NULL, &info); - printf("Init %s\n", info.name); - rt_sem_p(&sem_barrier, TM_INFINITE); - -#ifdef _WITH_TRACE_ - printf("%s : waiting for sem_serverOk\n", info.name); -#endif - rt_sem_p(&sem_serverOk, TM_INFINITE); - do { -#ifdef _WITH_TRACE_ - printf("%s : waiting for a message from monitor\n", info.name); -#endif - err = receive_message_from_monitor(msg.header, msg.data); -#ifdef _WITH_TRACE_ - printf("%s: msg {header:%s,data=%s} received from UI\n", info.name, msg.header, msg.data); -#endif - if (strcmp(msg.header, HEADER_MTS_COM_DMB) == 0) { - if (msg.data[0] == OPEN_COM_DMB) { // Open communication supervisor-robot -#ifdef _WITH_TRACE_ - printf("%s: message open Xbee communication\n", info.name); -#endif - rt_sem_v(&sem_openComRobot); - } - } else if (strcmp(msg.header, HEADER_MTS_DMB_ORDER) == 0) { - if (msg.data[0] == DMB_START_WITHOUT_WD) { // Start robot -#ifdef _WITH_TRACE_ - printf("%s: message start robot\n", info.name); -#endif - rt_sem_v(&sem_startRobot); - - } else if ((msg.data[0] == DMB_GO_BACK) - || (msg.data[0] == DMB_GO_FORWARD) - || (msg.data[0] == DMB_GO_LEFT) - || (msg.data[0] == DMB_GO_RIGHT) - || (msg.data[0] == DMB_STOP_MOVE)) { - - rt_mutex_acquire(&mutex_move, TM_INFINITE); - robotMove = msg.data[0]; - rt_mutex_release(&mutex_move); -#ifdef _WITH_TRACE_ - printf("%s: message update movement with %c\n", info.name, robotMove); -#endif - - } - } - } while (err > 0); - -} - -void f_openComRobot(void * arg) { - int err; - - /* INIT */ - RT_TASK_INFO info; - rt_task_inquire(NULL, &info); - printf("Init %s\n", info.name); - rt_sem_p(&sem_barrier, TM_INFINITE); - - while (1) { -#ifdef _WITH_TRACE_ - printf("%s : Wait sem_openComRobot\n", info.name); -#endif - rt_sem_p(&sem_openComRobot, TM_INFINITE); -#ifdef _WITH_TRACE_ - printf("%s : sem_openComRobot arrived => open communication robot\n", info.name); -#endif - err = open_communication_robot(); - if (err == 0) { -#ifdef _WITH_TRACE_ - printf("%s : the communication is opened\n", info.name); -#endif - MessageToMon msg; - set_msgToMon_header(&msg, (char*)HEADER_STM_ACK); - write_in_queue(&q_messageToMon, msg); - } else { - MessageToMon msg; - set_msgToMon_header(&msg, (char*)HEADER_STM_NO_ACK); - write_in_queue(&q_messageToMon, msg); - } - } -} - -void f_startRobot(void * arg) { - int err; - - /* INIT */ - RT_TASK_INFO info; - rt_task_inquire(NULL, &info); - printf("Init %s\n", info.name); - rt_sem_p(&sem_barrier, TM_INFINITE); - - while (1) { -#ifdef _WITH_TRACE_ - printf("%s : Wait sem_startRobot\n", info.name); -#endif - rt_sem_p(&sem_startRobot, TM_INFINITE); -#ifdef _WITH_TRACE_ - printf("%s : sem_startRobot arrived => Start robot\n", info.name); -#endif - err = send_command_to_robot(DMB_START_WITHOUT_WD); - if (err == 0) { -#ifdef _WITH_TRACE_ - printf("%s : the robot is started\n", info.name); -#endif - rt_mutex_acquire(&mutex_robotStarted, TM_INFINITE); - robotStarted = 1; - rt_mutex_release(&mutex_robotStarted); - MessageToMon msg; - set_msgToMon_header(&msg, (char*)HEADER_STM_ACK); - write_in_queue(&q_messageToMon, msg); - } else { - MessageToMon msg; - set_msgToMon_header(&msg, (char*)HEADER_STM_NO_ACK); - write_in_queue(&q_messageToMon, msg); - } - } -} - -void f_move(void *arg) { - /* INIT */ - RT_TASK_INFO info; - rt_task_inquire(NULL, &info); - printf("Init %s\n", info.name); - rt_sem_p(&sem_barrier, TM_INFINITE); - - /* PERIODIC START */ -#ifdef _WITH_PERIODIC_TRACE_ - printf("%s: start period\n", info.name); -#endif - rt_task_set_periodic(NULL, TM_NOW, 100000000); - while (1) { -#ifdef _WITH_PERIODIC_TRACE_ - printf("%s: Wait period \n", info.name); -#endif - rt_task_wait_period(NULL); -#ifdef _WITH_PERIODIC_TRACE_ - printf("%s: Periodic activation\n", info.name); - printf("%s: move equals %c\n", info.name, robotMove); -#endif - rt_mutex_acquire(&mutex_robotStarted, TM_INFINITE); - if (robotStarted) { - rt_mutex_acquire(&mutex_move, TM_INFINITE); - send_command_to_robot(robotMove); - rt_mutex_release(&mutex_move); -#ifdef _WITH_TRACE_ - printf("%s: the movement %c was sent\n", info.name, robotMove); -#endif - } - rt_mutex_release(&mutex_robotStarted); - } -} - -void write_in_queue(RT_QUEUE *queue, MessageToMon msg) { - void *buff; - buff = rt_queue_alloc(&q_messageToMon, sizeof (MessageToMon)); - memcpy(buff, &msg, sizeof (MessageToMon)); - rt_queue_send(&q_messageToMon, buff, sizeof (MessageToMon), Q_NORMAL); -} \ No newline at end of file diff --git a/software/raspberry/superviseur-robot/superviseur/src/functions.h b/software/raspberry/superviseur-robot/superviseur/src/functions.h deleted file mode 100644 index 489a0e6..0000000 --- a/software/raspberry/superviseur-robot/superviseur/src/functions.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file functions.h - * \author PE.Hladik - * \version 1.0 - * \date 06/06/2017 - * \brief Miscellaneous functions used for destijl project. - */ - -#ifndef FUNCTIONS_H -#define FUNCTIONS_H - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "monitor.h" -#include "robot.h" -#include "image.h" -#include "message.h" -#include "server.h" - -extern RT_TASK th_server; -extern RT_TASK th_sendToMon; -extern RT_TASK th_receiveFromMon; -extern RT_TASK th_openComRobot; -extern RT_TASK th_startRobot; -extern RT_TASK th_move; - -extern RT_MUTEX mutex_robotStarted; -extern RT_MUTEX mutex_move; - -extern RT_SEM sem_barrier; -extern RT_SEM sem_openComRobot; -extern RT_SEM sem_serverOk; -extern RT_SEM sem_startRobot; - -extern RT_QUEUE q_messageToMon; - -extern int etatCommMoniteur; -extern int robotStarted; -extern char robotMove; - -extern int MSG_QUEUE_SIZE; - -extern int PRIORITY_TSERVER; -extern int PRIORITY_TOPENCOMROBOT; -extern int PRIORITY_TMOVE; -extern int PRIORITY_TSENDTOMON; -extern int PRIORITY_TRECEIVEFROMMON; -extern int PRIORITY_TSTARTROBOT; - -/** - * \brief Thread handling server communication. - */ -void f_server(void *arg); - -/** - * \brief Thread handling communication to monitor. - */ -void f_sendToMon(void *arg); - -/** - * \brief Thread handling communication from monitor. - */ -void f_receiveFromMon(void *arg); - -/** - * \brief Thread handling opening of robot communication. - */ -void f_openComRobot(void * arg); - -/** - * \brief Thread handling robot mouvements. - */ -void f_move(void *arg); - -/** - * \brief Thread handling robot activation. - */ -void f_startRobot(void *arg); - -#endif /* FUNCTIONS_H */ - diff --git a/software/raspberry/superviseur-robot/superviseur/src/main.cpp b/software/raspberry/superviseur-robot/superviseur/src/main.cpp deleted file mode 100644 index 5737e45..0000000 --- a/software/raspberry/superviseur-robot/superviseur/src/main.cpp +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (C) 2018 dimercur - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/** - * \file main.cpp - * \author PE.Hladik - * \version 1.0 - * \date 06/06/2017 - * \brief main program - */ - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "functions.h" - -// Déclaration des taches -RT_TASK th_server; -RT_TASK th_sendToMon; -RT_TASK th_receiveFromMon; -RT_TASK th_openComRobot; -RT_TASK th_startRobot; -RT_TASK th_move; - -// Déclaration des priorités des taches -int PRIORITY_TSERVER = 30; -int PRIORITY_TOPENCOMROBOT = 20; -int PRIORITY_TMOVE = 10; -int PRIORITY_TSENDTOMON = 25; -int PRIORITY_TRECEIVEFROMMON = 22; -int PRIORITY_TSTARTROBOT = 20; - -RT_MUTEX mutex_robotStarted; -RT_MUTEX mutex_move; - -// Déclaration des sémaphores -RT_SEM sem_barrier; -RT_SEM sem_openComRobot; -RT_SEM sem_serverOk; -RT_SEM sem_startRobot; - -// Déclaration des files de message -RT_QUEUE q_messageToMon; - -int MSG_QUEUE_SIZE = 10; - -// Déclaration des ressources partagées -int etatCommMoniteur = 1; -int robotStarted = 0; -char robotMove = DMB_STOP_MOVE; - -/** - * \fn void initStruct(void) - * \brief Initialisation des structures de l'application (tâches, mutex, - * semaphore, etc.) - */ -void initStruct(void); - -/** - * \fn void startTasks(void) - * \brief Démarrage des tâches - */ -void startTasks(void); - -/** - * \fn void deleteTasks(void) - * \brief Arrêt des tâches - */ -void deleteTasks(void); - -int main(int argc, char **argv) { - int err; - //Lock the memory to avoid memory swapping for this program - mlockall(MCL_CURRENT | MCL_FUTURE); - - printf("#################################\n"); - printf("# DE STIJL PROJECT #\n"); - printf("#################################\n"); - - initStruct(); - startTasks(); - rt_sem_broadcast(&sem_barrier); - pause(); - deleteTasks(); - - return 0; -} - -void initStruct(void) { - - int err; - /* Creation des mutex */ - if (err = rt_mutex_create(&mutex_robotStarted, NULL)) { - printf("Error mutex create: %d %s\n", err, strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_mutex_create(&mutex_move, NULL)) { - printf("Error mutex create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - - /* Creation du semaphore */ - if (err = rt_sem_create(&sem_barrier, "truc", 0, S_FIFO)) { - printf("Error semaphore create 1: %d %s\n", err, strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_sem_create(&sem_openComRobot, NULL, 0, S_FIFO)) { - printf("Error semaphore create 2: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_sem_create(&sem_serverOk, NULL, 0, S_FIFO)) { - printf("Error semaphore create 3: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_sem_create(&sem_startRobot, NULL, 0, S_FIFO)) { - printf("Error semaphore create 4: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - - /* Creation des taches */ - if (err = rt_task_create(&th_server, "th_server", 0, PRIORITY_TSERVER, 0)) { - printf("Error task create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_create(&th_receiveFromMon, "th_receiveFromMon", 0, PRIORITY_TRECEIVEFROMMON, 0)) { - printf("Error task create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_create(&th_sendToMon, "th_sendToMon", 0, PRIORITY_TSENDTOMON, 0)) { - printf("Error task create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_create(&th_openComRobot, "th_openComRobot", 0, PRIORITY_TOPENCOMROBOT, 0)) { - printf("Error task create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_create(&th_startRobot, "th_startRobot", 0, PRIORITY_TSTARTROBOT, 0)) { - printf("Error task create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_create(&th_move, "th_move", 0, PRIORITY_TMOVE, 0)) { - printf("Error task create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - - /* Creation des files de messages */ - if (err = rt_queue_create(&q_messageToMon, "toto", MSG_QUEUE_SIZE * sizeof (MessageToRobot), MSG_QUEUE_SIZE, Q_FIFO)) { - printf("Error msg queue create: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } -} - -void startTasks() { - - int err; - - if (err = rt_task_start(&th_startRobot, &f_startRobot, NULL)) { - printf("Error task start: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - - if (err = rt_task_start(&th_receiveFromMon, &f_receiveFromMon, NULL)) { - printf("Error task start: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_start(&th_sendToMon, &f_sendToMon, NULL)) { - printf("Error task start: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_start(&th_openComRobot, &f_openComRobot, NULL)) { - printf("Error task start: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_start(&th_move, &f_move, NULL)) { - printf("Error task start: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } - if (err = rt_task_start(&th_server, &f_server, NULL)) { - printf("Error task start: %s\n", strerror(-err)); - exit(EXIT_FAILURE); - } -} - -void deleteTasks() { - rt_task_delete(&th_server); - rt_task_delete(&th_openComRobot); - rt_task_delete(&th_move); -} diff --git a/software/raspberry/superviseur-robot/tasks.cpp b/software/raspberry/superviseur-robot/tasks.cpp new file mode 100644 index 0000000..0e543ec --- /dev/null +++ b/software/raspberry/superviseur-robot/tasks.cpp @@ -0,0 +1,383 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "tasks.h" +#include + +// Déclaration des priorités des taches +#define PRIORITY_TSERVER 30 +#define PRIORITY_TOPENCOMROBOT 20 +#define PRIORITY_TMOVE 10 +#define PRIORITY_TSENDTOMON 22 +#define PRIORITY_TRECEIVEFROMMON 25 +#define PRIORITY_TSTARTROBOT 20 +#define PRIORITY_TCAMERA 21 + +/* + * Some remarks: + * 1- This program is mostly a template. It shows you how to create tasks, semaphore + * message queues, mutex ... and how to use them + * + * 2- semDumber is, as name say, useless. Its goal is only to show you how to use semaphore + * + * 3- Data flow is probably not optimal + * + * 4- Take into account that ComRobot::Write will block your task when serial buffer is full, + * time for internal buffer to flush + * + * 5- Same behavior existe for ComMonitor::Write ! + * + * 6- When you want to write something in terminal, use cout and terminate with endl and flush + * + * 7- Good luck ! + */ + +/** + * @brief Initialisation des structures de l'application (tâches, mutex, + * semaphore, etc.) + */ +void Tasks::Init() { + int status; + int err; + + /**************************************************************************************/ + /* Mutex creation */ + /**************************************************************************************/ + if (err = rt_mutex_create(&mutex_robotStarted, NULL)) { + cerr << "Error mutex create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_mutex_create(&mutex_move, NULL)) { + cerr << "Error mutex create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + cout << "Mutexes created successfully" << endl << flush; + + /**************************************************************************************/ + /* Semaphors creation */ + /**************************************************************************************/ + if (err = rt_sem_create(&sem_barrier, NULL, 0, S_FIFO)) { + cerr << "Error semaphore create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_sem_create(&sem_openComRobot, NULL, 0, S_FIFO)) { + cerr << "Error semaphore create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_sem_create(&sem_serverOk, NULL, 0, S_FIFO)) { + cerr << "Error semaphore create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_sem_create(&sem_startRobot, NULL, 0, S_FIFO)) { + cerr << "Error semaphore create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + cout << "Semaphores created successfully" << endl << flush; + + /**************************************************************************************/ + /* Tasks creation */ + /**************************************************************************************/ + if (err = rt_task_create(&th_server, "th_server", 0, PRIORITY_TSERVER, 0)) { + cerr << "Error task create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_task_create(&th_receiveFromMon, "th_receiveFromMon", 0, PRIORITY_TRECEIVEFROMMON, 0)) { + cerr << "Error task create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_task_create(&th_sendToMon, "th_sendToMon", 0, PRIORITY_TSENDTOMON, 0)) { + cerr << "Error task create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_task_create(&th_openComRobot, "th_openComRobot", 0, PRIORITY_TOPENCOMROBOT, 0)) { + cerr << "Error task create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_task_create(&th_startRobot, "th_startRobot", 0, PRIORITY_TSTARTROBOT, 0)) { + cerr << "Error task create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_task_create(&th_move, "th_move", 0, PRIORITY_TMOVE, 0)) { + cerr << "Error task create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + if (err = rt_task_create(&th_camera, "th_camera", 0, PRIORITY_TCAMERA, 0)) { + cerr << "Error task create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + cout << "Tasks created successfully" << endl << flush; + + /**************************************************************************************/ + /* Message queues creation */ + /**************************************************************************************/ + if ((err = rt_queue_create(&q_messageToMon, "q_messageToMon", sizeof (Message*)*50, Q_UNLIMITED, Q_FIFO)) < 0) { + cerr << "Error msg queue create: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + cout << "Queues created successfully" << endl << flush; + + /* Open com port with STM32 */ + cout << "Open serial com ("; + status = robot.Open(); + cout << status; + cout << ")" << endl; + + if (status >= 0) { + // Open server + + status = monitor.Open(SERVER_PORT); + cout << "Open server on port " << (SERVER_PORT) << " (" << status << ")" << endl; + + if (status < 0) throw std::runtime_error { + "Unable to start server on port " + std::to_string(SERVER_PORT) + }; + } else + throw std::runtime_error { + "Unable to open serial port /dev/ttyS0 " + }; +} + +/** + * @brief Démarrage des tâches + */ +void Tasks::Run() { + int err; + + if (err = rt_task_start(&th_receiveFromMon, (void(*)(void*)) & Tasks::ReceiveFromMonTask, this)) { + cerr << "Error task start: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + + if (err = rt_task_start(&th_camera, (void(*)(void*)) & Tasks::CameraTask, this)) { + cerr << "Error task start: " << strerror(-err) << endl << flush; + exit(EXIT_FAILURE); + } + + // if (err = rt_task_start(&th_sendToMon, (void(*)(void*)) & Tasks::SendToMonTask, this)) { + // cerr << "Error task start: " << strerror(-err) << endl << flush; + // exit(EXIT_FAILURE); + // } + + cout << "Tasks launched" << endl << flush; +} + +/** + * @brief Arrêt des tâches + */ +void Tasks::Stop() { + monitor.Close(); + robot.Close(); +} + +/** + */ +void Tasks::Join() { + rt_sem_broadcast(&sem_barrier); + pause(); +} + +/** + * @brief Thread handling server communication. + */ + +void Tasks::ReceiveFromMonTask(void *arg) { + Message *msgRcv; + Message *msgSend; + bool isActive = true; + + cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; + + while (isActive) { + msgRcv = NULL; + msgSend = NULL; + + msgRcv = monitor.Read(); + cout << "Rcv <= " << msgRcv->ToString() << endl << flush; + + if (msgRcv->CompareID(MESSAGE_ROBOT_COM_OPEN)) { + msgSend = new Message(MESSAGE_ANSWER_ACK); + isActive = true; + + delete(msgRcv); // mus be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_ROBOT_COM_CLOSE)) { + msgSend = new Message(MESSAGE_ANSWER_ACK); + cout << "isActive = false!" << msgRcv->ToString() << endl << flush; + isActive = false; + + delete(msgRcv); // mus be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_ROBOT_START_WITH_WD)) { + msgSend = robot.Write(msgRcv); + cout << "Start with wd answer: " << msgSend->ToString() << endl << flush; + } + + if (msgRcv->CompareID(MESSAGE_ROBOT_START_WITHOUT_WD)) { + msgSend = robot.Write(msgRcv); + cout << "Start without wd answer: " << msgSend->ToString() << endl << flush; + } + + if (msgRcv->CompareID(MESSAGE_ROBOT_RESET)) { + msgSend = robot.Write(msgRcv); + cout << "Reset answer: " << msgSend->ToString() << endl << flush; + } + + if (msgRcv->CompareID(MESSAGE_ROBOT_GO_FORWARD) || + msgRcv->CompareID(MESSAGE_ROBOT_GO_BACKWARD) || + msgRcv->CompareID(MESSAGE_ROBOT_GO_LEFT) || + msgRcv->CompareID(MESSAGE_ROBOT_GO_RIGHT) || + msgRcv->CompareID(MESSAGE_ROBOT_STOP)) { + msgSend = robot.Write(msgRcv); + + cout << "Movement answer: " << msgSend->ToString() << endl << flush; + + if (msgSend->CompareID(MESSAGE_ANSWER_ACK)) { + delete (msgSend); + msgSend = NULL; + } + } + + if (msgRcv->CompareID(MESSAGE_CAM_OPEN)) { + sendImage = true; + msgSend = new Message(MESSAGE_ANSWER_ACK); + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_CAM_CLOSE)) { + sendImage = false; + msgSend = new Message(MESSAGE_ANSWER_ACK); + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_CAM_POSITION_COMPUTE_START)) { + sendPosition = true; + msgSend = new Message(MESSAGE_ANSWER_ACK); + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_CAM_POSITION_COMPUTE_STOP)) { + sendPosition = false; + msgSend = new Message(MESSAGE_ANSWER_ACK); + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_ROBOT_BATTERY_GET)) { + msgSend = new MessageBattery(MESSAGE_ROBOT_BATTERY_LEVEL, BATTERY_FULL); + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_CAM_ASK_ARENA)) { + showArena = true; + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_CAM_ARENA_CONFIRM)) { + showArena = false; + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgRcv->CompareID(MESSAGE_CAM_ARENA_INFIRM)) { + showArena = false; + + delete(msgRcv); // must be deleted manually, no consumer + } + + if (msgSend != NULL) monitor.Write(msgSend); + } +} + +/** + * @brief Thread handling periodic image capture. + */ +void Tasks::CameraTask(void* arg) { + struct timespec tim, tim2; + Message *msgSend; + int counter; + int cntFrame = 0; + Position pos; + Arena arena; + + tim.tv_sec = 0; + tim.tv_nsec = 50000000; // 50ms (20fps) + + cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; + + Camera camera = Camera(sm, 20); + cout << "Try opening camera" << endl << flush; + if (camera.Open()) cout << "Camera opened successfully" << endl << flush; + else { + cout << "Failed to open camera" << endl << flush; + + exit(0); + } + + while (1) { + + } +} + +/** + * @brief Thread sending data to monitor. + */ +void Tasks::SendToMonTask(void* arg) { + cout << "Start " << __PRETTY_FUNCTION__ << endl << flush; + + while (1) { + + } +} + +/** + * Write a message in a given queue + * @param queue Queue identifier + * @param msg Message to be stored + */ +void WriteInQueue(RT_QUEUE &queue, Message *msg) { + int err; + + if ((err = rt_queue_send(&queue, (const void *) msg, sizeof ((const void *) msg), Q_NORMAL)) < 0) { + cerr << "Write in queue failed: " << strerror(-err) << endl << flush; + throw std::runtime_error{"Error in write in queue"}; + } +} + +/** + * Read a message from a given queue, block if empty + * @param queue Queue identifier + * @return Message read + */ +Message *ReadInQueue(RT_QUEUE &queue) { + int err; + Message *msg; + + if ((err = rt_queue_read(&queue, (void*) msg, sizeof ((void*) msg), TM_INFINITE)) < 0) { + cerr << "Write in queue failed: " << strerror(-err) << endl << flush; + throw std::runtime_error{"Error in write in queue"}; + } + + return msg; +} + diff --git a/software/raspberry/superviseur-robot/tasks.h b/software/raspberry/superviseur-robot/tasks.h new file mode 100644 index 0000000..c2b3263 --- /dev/null +++ b/software/raspberry/superviseur-robot/tasks.h @@ -0,0 +1,165 @@ +/* + * Copyright (C) 2018 dimercur + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __TASKS_H__ +#define __TASKS_H__ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "messages.h" +#include "commonitor.h" +#include "comrobot.h" +#include "camera.h" +#include "img.h" + +using namespace std; + +class Tasks { +public: + /** + * @brief Initialisation des structures de l'application (tâches, mutex, + * semaphore, etc.) + */ + void Init(); + + /** + * @brief Démarrage des tâches + */ + void Run(); + + /** + * @brief Arrêt des tâches + */ + void Stop(); + + /** + */ + void Join(); + + /** + */ + bool AcceptClient() { + return monitor.AcceptClient(); + } + +private: + ComMonitor monitor; + ComRobot robot; + + bool sendImage=false; + bool sendPosition=false; + + int counter; + bool flag; + + bool showArena=false; + + RT_TASK th_server; + RT_TASK th_sendToMon; + RT_TASK th_receiveFromMon; + RT_TASK th_openComRobot; + RT_TASK th_startRobot; + RT_TASK th_move; + RT_TASK th_camera; + + RT_MUTEX mutex_robotStarted; + RT_MUTEX mutex_move; + + RT_SEM sem_barrier; + RT_SEM sem_openComRobot; + RT_SEM sem_serverOk; + RT_SEM sem_startRobot; + + RT_QUEUE q_messageToMon; + + int etatCommMoniteur; + int robotStarted; + char robotMove; + + int MSG_QUEUE_SIZE; + + char mode_start; + + /** + * Write a message in a given queue + * @param queue Queue identifier + * @param msg Message to be stored + */ + void WriteInQueue(RT_QUEUE *queue, Message *msg); + + /** + * Read a message from a given queue, block if empty + * @param queue Queue identifier + * @return Message read + */ + Message *ReadInQueue(RT_QUEUE *queue); + + /** + * @brief Thread handling server communication. + */ + void ReceiveFromMonTask(void *arg); + + /** + * @brief Thread handling periodic image capture. + */ + void CameraTask(void *arg); + + /** + * @brief Thread sending data to monitor. + */ + void SendToMonTask(void *arg); +// /** +// * \brief Thread handling server communication. +// */ +// void f_server(void *arg); +// +// /** +// * \brief Thread handling communication to monitor. +// */ +// void f_sendToMon(void *arg); +// +// /** +// * \brief Thread handling communication from monitor. +// */ +// void f_receiveFromMon(void *arg); +// +// /** +// * \brief Thread handling opening of robot communication. +// */ +// void f_openComRobot(void * arg); +// +// /** +// * \brief Thread handling robot mouvements. +// */ +// void f_move(void *arg); +// +// /** +// * \brief Thread handling robot activation. +// */ +// void f_startRobot(void *arg); +}; + +#endif // __TASKS_H__ + diff --git a/software/raspberry/testeur/testeur/.gitignore b/software/raspberry/testeur/testeur/.gitignore deleted file mode 100644 index 6debbb8..0000000 --- a/software/raspberry/testeur/testeur/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -build/ -dist/ -.dep.inc - -*.o -*.dep -*.i - diff --git a/software/raspberry/testeur/testeur/Makefile b/software/raspberry/testeur/testeur/Makefile deleted file mode 100644 index 05de621..0000000 --- a/software/raspberry/testeur/testeur/Makefile +++ /dev/null @@ -1,128 +0,0 @@ -# -# There exist several targets which are by default empty and which can be -# used for execution of your targets. These targets are usually executed -# before and after some main targets. They are: -# -# .build-pre: called before 'build' target -# .build-post: called after 'build' target -# .clean-pre: called before 'clean' target -# .clean-post: called after 'clean' target -# .clobber-pre: called before 'clobber' target -# .clobber-post: called after 'clobber' target -# .all-pre: called before 'all' target -# .all-post: called after 'all' target -# .help-pre: called before 'help' target -# .help-post: called after 'help' target -# -# Targets beginning with '.' are not intended to be called on their own. -# -# Main targets can be executed directly, and they are: -# -# build build a specific configuration -# clean remove built files from a configuration -# clobber remove all built files -# all build all configurations -# help print help mesage -# -# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and -# .help-impl are implemented in nbproject/makefile-impl.mk. -# -# Available make variables: -# -# CND_BASEDIR base directory for relative paths -# CND_DISTDIR default top distribution directory (build artifacts) -# CND_BUILDDIR default top build directory (object files, ...) -# CONF name of current configuration -# CND_PLATFORM_${CONF} platform name (current configuration) -# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) -# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) -# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) -# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) -# CND_PACKAGE_NAME_${CONF} name of package (current configuration) -# CND_PACKAGE_PATH_${CONF} path to package (current configuration) -# -# NOCDDL - - -# Environment -MKDIR=mkdir -CP=cp -CCADMIN=CCadmin - - -# build -build: .build-post - -.build-pre: -# Add your pre 'build' code here... - -.build-post: .build-impl -# Add your post 'build' code here... - - -# clean -clean: .clean-post - -.clean-pre: -# Add your pre 'clean' code here... - -.clean-post: .clean-impl -# Add your post 'clean' code here... - - -# clobber -clobber: .clobber-post - -.clobber-pre: -# Add your pre 'clobber' code here... - -.clobber-post: .clobber-impl -# Add your post 'clobber' code here... - - -# all -all: .all-post - -.all-pre: -# Add your pre 'all' code here... - -.all-post: .all-impl -# Add your post 'all' code here... - - -# build tests -build-tests: .build-tests-post - -.build-tests-pre: -# Add your pre 'build-tests' code here... - -.build-tests-post: .build-tests-impl -# Add your post 'build-tests' code here... - - -# run tests -test: .test-post - -.test-pre: build-tests -# Add your pre 'test' code here... - -.test-post: .test-impl -# Add your post 'test' code here... - - -# help -help: .help-post - -.help-pre: -# Add your pre 'help' code here... - -.help-post: .help-impl -# Add your post 'help' code here... - - - -# include project implementation makefile -include nbproject/Makefile-impl.mk - -# include project make variables -include nbproject/Makefile-variables.mk diff --git a/software/raspberry/testeur/testeur/main.cpp b/software/raspberry/testeur/testeur/main.cpp deleted file mode 100644 index 3bdccc8..0000000 --- a/software/raspberry/testeur/testeur/main.cpp +++ /dev/null @@ -1,307 +0,0 @@ -/* - * 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: main.cpp - * Author: dimercur - * - * Created on 6 novembre 2018, 10:54 - */ - -#include - -#include "image.h" -#include "server.h" -#include "robot.h" -#include "message.h" - -#include -#include -#include -#include - -#include "definitions.h" - -#define HEADER_STM_IMAGE "IMG" // Envoi d'une image -#define HEADER_STM_BAT "BAT" // Envoi de l'état de la batterie -#define HEADER_STM_POS "POS" // Envoi de la position -#define HEADER_STM_NO_ACK "NAK" // Acquittement d'un échec -#define HEADER_STM_ACK "ACK" // Acquittement d'un succès -#define HEADER_STM_MES "MSG" // Message textuel -#define HEADER_STM_LOST_DMB "LCD" // Perte de la communication avec le robot - -#define HEADER_MTS_MSG "MSG" // Message directe pour Console Dumber -#define HEADER_MTS_DMB_ORDER "DMB" // Message d'ordre pour le robot -#define HEADER_MTS_COM_DMB "COM" // Message de gestion de la communication avec le robot -#define HEADER_MTS_CAMERA "CAM" // Message de gestion de la camera -#define HEADER_MTS_STOP "STO" // Message d'arrêt du system - -int socketID; -char data[1000]; -int receivedLength; -bool disconnected = true; -bool dataReady = false; -bool sysTick = false; -bool sendImage = false; -bool sendPos = false; - -Image monImage; -Jpg imageCompressed; -Camera cam; - -typedef struct { - char header[4]; - char data[500]; -} MessageFromMon; - -MessageFromMon *message; -MessageToMon messageAnswered; - -std::thread *threadTimer; -std::thread *threadServer; - -char* imgMsg = NULL; - -using namespace std; - -/* - * - */ -void ThreadServer(void) { - // Recuperation d'une evenutelle commande sur le serveur - while (1) { - receivedLength = receiveDataFromServer(data, 1000); - if (receivedLength > 0) dataReady = true; - } -} - -void ThreadTimer(void) { - struct timespec tim, tim2; - tim.tv_sec = 0; - tim.tv_nsec = 100000000; - int cnt =0; - - while (1) { - //std::this_thread::sleep_for(std::chrono::seconds ) - //sleep(1); - if (nanosleep(&tim, &tim2) < 0) { - printf("Nano sleep system call failed \n"); - return; - } - - cnt++; - - if (cnt>=1) - { - sysTick = true; - cnt=0; - } - } -} - -void printReceivedMessage(MessageFromMon *mes) { - cout << "Received " + to_string(receivedLength) + " data"; - cout << std::endl; - cout << "Header: "; - - for (int i = 0; i < 4; i++) { - cout << mes->header[i]; - } - - cout << std::endl; - cout << "Data: "; - for (int i = 0; i < receivedLength - 4; i++) { - cout << mes->data[i]; - } - - cout << std::endl; -} - -int sendAnswer(string cmd, string data) { - int status = 0; - string msg; - - msg = cmd + ':' + data; - cout << "Answer: " + msg; - cout << std::endl; - sendDataToServer((char*) msg.c_str(), msg.length()); - - return status; -} - -int sendBinaryData(string cmd, char* data, int length) { - int status = 0; - int lengthSend; - - if (imgMsg != NULL) free((void*) imgMsg); - imgMsg = (char*) malloc(length + 4); - imgMsg[0] = cmd[0]; - imgMsg[1] = cmd[1]; - imgMsg[2] = cmd[2]; - imgMsg[3] = ':'; - - memcpy((void*) &imgMsg[4], (const void *) data, length); - cout << "Answer: " + cmd; - cout << std::endl; - - lengthSend=sendDataToServer(imgMsg, length + 4); - - cout << "Requested Length: " + to_string(length) + " / Send Length: " + to_string(lengthSend); - cout << std::endl; - return status; -} - -int decodeMessage(MessageFromMon *mes, int dataLength) { - int status = 0; - string header(mes->header, 4); - string data(mes->data, dataLength); - - if (header.find(HEADER_MTS_COM_DMB) != std::string::npos) // Message pour la gestion du port de communication - { - if (data.find(OPEN_COM_DMB) != std::string::npos) sendAnswer(HEADER_STM_ACK, ""); - else if (data.find(CLOSE_COM_DMB) != std::string::npos) sendAnswer(HEADER_STM_ACK, ""); - } else if (header.find(HEADER_MTS_CAMERA) != std::string::npos) // Message pour la camera - { - if (data.find(CAM_OPEN) != std::string::npos) { - sendAnswer(HEADER_STM_ACK, ""); - sendImage = true; - } else if (data.find(CAM_CLOSE) != std::string::npos) { - sendImage = false; - } else if (data.find(CAM_COMPUTE_POSITION) != std::string::npos) { - sendPos = true; - } else if (data.find(CAM_STOP_COMPUTE_POSITION) != std::string::npos) { - sendPos = false; - } else { - - } - } else if (header.find(HEADER_MTS_DMB_ORDER) != std::string::npos) // Message de com pour le robot - { - if (data.find(DMB_START_WITHOUT_WD) != std::string::npos) { - sendAnswer(HEADER_STM_ACK, ""); - - } else if (data.find(DMB_START_WITH_WD) != std::string::npos) { - sendAnswer(HEADER_STM_ACK, ""); - - } else if (data.find(DMB_GET_VBAT) != std::string::npos) { - sendAnswer(HEADER_STM_BAT, to_string(DMB_BAT_HIGH)); - } else if (data.find(DMB_MOVE) != std::string::npos) { - - } else if (data.find(DMB_TURN) != std::string::npos) { - - } else { - - } - } else if (header.find(HEADER_MTS_STOP) != std::string::npos) // Message d'arret - { - sendAnswer(HEADER_STM_ACK, ""); - } else { - sendAnswer(HEADER_STM_NO_ACK, ""); - } - - return status; -} - -int main(int argc, char** argv) { - - // Ouverture de la com robot -#ifdef __FOR_PC__ - if (open_communication_robot("/dev/ttyUSB0") != 0) { -#else - if (open_communication_robot("/dev/ttyS0") != 0) { -#endif /*__FOR_PC__ */ - cerr << "Unable to open /dev/ttyUSB0: abort"; - cout << std::endl; - return -1; - } - cout << "Com port opened"; - cout << std::endl; - - // Ouverture de la camera - if (open_camera(&cam) == -1) { - cerr << "Unable to open camera: abort"; - cout << std::endl; - - return -1; - } - cout << "Camera opened"; - cout << std::endl; - - // Ouverture du serveur - socketID = openServer(5544); - cout << "Server opened on port 5544"; - cout << std::endl; - - threadTimer = new std::thread(ThreadTimer); - - for (;;) { - cout << "Waiting for client to connect ..."; - cout << std::endl; - acceptClient(); - disconnected = false; - dataReady = false; - cout << "Client connected"; - cout << std::endl; - - threadServer = new std::thread(ThreadServer); - - while (disconnected == false) { - - // Recuperation de l'image - get_image(&cam, &monImage, ""); - - if (dataReady == true) // des données ont été recu par le serveur - { - message = (MessageFromMon*) malloc(sizeof (MessageFromMon)); - memcpy((void*) message, (const void*) data, sizeof (MessageFromMon)); - dataReady = false; - - //if (message->header[4] == ':') message->header[4]; - printReceivedMessage(message); - decodeMessage(message, receivedLength - 4); - - free(message); - } - - if (sysTick) { - sysTick = false; - - if (sendImage) { - compress_image(&monImage, &imageCompressed); - int length = imageCompressed.size(); - sendBinaryData(HEADER_STM_IMAGE, reinterpret_cast (imageCompressed.data()), length); - //sendAnswer(HEADER_STM_IMAGE, reinterpret_cast (imageCompressed.data())); - } - - if (sendPos) { - //sendAnswer(HEADER_STM_POS,) - } - } - } - } - - threadTimer->join(); - threadServer->join(); - - // test de la camera - if (open_camera(0) != -1) { - for (;;) { - get_image(0, &monImage, ""); - - if (monImage.empty()) printf("image vide"); - else { - imshow("Sortie Camera", monImage); - - waitKey(10); - } - } - } else { - printf("Echec ouverture de camera"); - return -1; - } - - return 0; -} - diff --git a/software/raspberry/testeur/testeur/nbproject/Makefile-Debug-rpi.mk b/software/raspberry/testeur/testeur/nbproject/Makefile-Debug-rpi.mk deleted file mode 100644 index 7ee9819..0000000 --- a/software/raspberry/testeur/testeur/nbproject/Makefile-Debug-rpi.mk +++ /dev/null @@ -1,107 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Debug-rpi -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/_ext/e4d40e25/image.o \ - ${OBJECTDIR}/_ext/e4d40e25/message.o \ - ${OBJECTDIR}/_ext/e4d40e25/robot.o \ - ${OBJECTDIR}/_ext/e4d40e25/server.o \ - ${OBJECTDIR}/main.o - - -# C Compiler Flags -CFLAGS= - -# CC Compiler Flags -CCFLAGS= -CXXFLAGS= - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS=-L/usr/local/lib `pkg-config --libs opencv` -lpthread -lraspicam -lraspicam_cv - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur ${OBJECTFILES} ${LDLIBSOPTIONS} - -${OBJECTDIR}/_ext/e4d40e25/image.o: ../../superviseur-robot/lib/src/image.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -I../../superviseur-robot/lib `pkg-config --cflags opencv` -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/image.o ../../superviseur-robot/lib/src/image.cpp - -${OBJECTDIR}/_ext/e4d40e25/message.o: ../../superviseur-robot/lib/src/message.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -I../../superviseur-robot/lib `pkg-config --cflags opencv` -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/message.o ../../superviseur-robot/lib/src/message.cpp - -${OBJECTDIR}/_ext/e4d40e25/robot.o: ../../superviseur-robot/lib/src/robot.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -I../../superviseur-robot/lib `pkg-config --cflags opencv` -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/robot.o ../../superviseur-robot/lib/src/robot.cpp - -${OBJECTDIR}/_ext/e4d40e25/server.o: ../../superviseur-robot/lib/src/server.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -I../../superviseur-robot/lib `pkg-config --cflags opencv` -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/server.o ../../superviseur-robot/lib/src/server.cpp - -${OBJECTDIR}/main.o: main.cpp - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -I../../superviseur-robot/lib `pkg-config --cflags opencv` -std=c++11 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/software/raspberry/testeur/testeur/nbproject/Makefile-Debug.mk b/software/raspberry/testeur/testeur/nbproject/Makefile-Debug.mk deleted file mode 100644 index 5fcde42..0000000 --- a/software/raspberry/testeur/testeur/nbproject/Makefile-Debug.mk +++ /dev/null @@ -1,107 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Debug -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/_ext/e4d40e25/image.o \ - ${OBJECTDIR}/_ext/e4d40e25/message.o \ - ${OBJECTDIR}/_ext/e4d40e25/robot.o \ - ${OBJECTDIR}/_ext/e4d40e25/server.o \ - ${OBJECTDIR}/main.o - - -# C Compiler Flags -CFLAGS= - -# CC Compiler Flags -CCFLAGS= -CXXFLAGS= - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS=`pkg-config --libs opencv` -lpthread - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur ${OBJECTFILES} ${LDLIBSOPTIONS} - -${OBJECTDIR}/_ext/e4d40e25/image.o: ../../superviseur-robot/lib/src/image.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -D__FOR_PC__ -I../../superviseur-robot/lib `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/image.o ../../superviseur-robot/lib/src/image.cpp - -${OBJECTDIR}/_ext/e4d40e25/message.o: ../../superviseur-robot/lib/src/message.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -D__FOR_PC__ -I../../superviseur-robot/lib `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/message.o ../../superviseur-robot/lib/src/message.cpp - -${OBJECTDIR}/_ext/e4d40e25/robot.o: ../../superviseur-robot/lib/src/robot.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -D__FOR_PC__ -I../../superviseur-robot/lib `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/robot.o ../../superviseur-robot/lib/src/robot.cpp - -${OBJECTDIR}/_ext/e4d40e25/server.o: ../../superviseur-robot/lib/src/server.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -D__FOR_PC__ -I../../superviseur-robot/lib `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/server.o ../../superviseur-robot/lib/src/server.cpp - -${OBJECTDIR}/main.o: main.cpp - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.cc) -g -DD_REENTRANT -D__FOR_PC__ -I../../superviseur-robot/lib `pkg-config --cflags opencv` -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/software/raspberry/testeur/testeur/nbproject/Makefile-Release.mk b/software/raspberry/testeur/testeur/nbproject/Makefile-Release.mk deleted file mode 100644 index 28c0602..0000000 --- a/software/raspberry/testeur/testeur/nbproject/Makefile-Release.mk +++ /dev/null @@ -1,107 +0,0 @@ -# -# Generated Makefile - do not edit! -# -# Edit the Makefile in the project folder instead (../Makefile). Each target -# has a -pre and a -post target defined where you can add customized code. -# -# This makefile implements configuration specific macros and targets. - - -# Environment -MKDIR=mkdir -CP=cp -GREP=grep -NM=nm -CCADMIN=CCadmin -RANLIB=ranlib -CC=gcc -CCC=g++ -CXX=g++ -FC=gfortran -AS=as - -# Macros -CND_PLATFORM=GNU-Linux -CND_DLIB_EXT=so -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build - -# Include project Makefile -include Makefile - -# Object Directory -OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} - -# Object Files -OBJECTFILES= \ - ${OBJECTDIR}/_ext/e4d40e25/image.o \ - ${OBJECTDIR}/_ext/e4d40e25/message.o \ - ${OBJECTDIR}/_ext/e4d40e25/robot.o \ - ${OBJECTDIR}/_ext/e4d40e25/server.o \ - ${OBJECTDIR}/main.o - - -# C Compiler Flags -CFLAGS= - -# CC Compiler Flags -CCFLAGS= -CXXFLAGS= - -# Fortran Compiler Flags -FFLAGS= - -# Assembler Flags -ASFLAGS= - -# Link Libraries and Options -LDLIBSOPTIONS= - -# Build Targets -.build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur - -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur: ${OBJECTFILES} - ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur ${OBJECTFILES} ${LDLIBSOPTIONS} - -${OBJECTDIR}/_ext/e4d40e25/image.o: ../../superviseur-robot/lib/src/image.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/image.o ../../superviseur-robot/lib/src/image.cpp - -${OBJECTDIR}/_ext/e4d40e25/message.o: ../../superviseur-robot/lib/src/message.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/message.o ../../superviseur-robot/lib/src/message.cpp - -${OBJECTDIR}/_ext/e4d40e25/robot.o: ../../superviseur-robot/lib/src/robot.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/robot.o ../../superviseur-robot/lib/src/robot.cpp - -${OBJECTDIR}/_ext/e4d40e25/server.o: ../../superviseur-robot/lib/src/server.cpp - ${MKDIR} -p ${OBJECTDIR}/_ext/e4d40e25 - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/_ext/e4d40e25/server.o ../../superviseur-robot/lib/src/server.cpp - -${OBJECTDIR}/main.o: main.cpp - ${MKDIR} -p ${OBJECTDIR} - ${RM} "$@.d" - $(COMPILE.cc) -O2 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp - -# Subprojects -.build-subprojects: - -# Clean Targets -.clean-conf: ${CLEAN_SUBPROJECTS} - ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - -# Subprojects -.clean-subprojects: - -# Enable dependency checking -.dep.inc: .depcheck-impl - -include .dep.inc diff --git a/software/raspberry/testeur/testeur/nbproject/Makefile-variables.mk b/software/raspberry/testeur/testeur/nbproject/Makefile-variables.mk deleted file mode 100644 index bd191c9..0000000 --- a/software/raspberry/testeur/testeur/nbproject/Makefile-variables.mk +++ /dev/null @@ -1,43 +0,0 @@ -# -# Generated - do not edit! -# -# NOCDDL -# -CND_BASEDIR=`pwd` -CND_BUILDDIR=build -CND_DISTDIR=dist -# Debug configuration -CND_PLATFORM_Debug=GNU-Linux -CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux -CND_ARTIFACT_NAME_Debug=testeur -CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/testeur -CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package -CND_PACKAGE_NAME_Debug=testeur.tar -CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/testeur.tar -# Release configuration -CND_PLATFORM_Release=GNU-Linux -CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux -CND_ARTIFACT_NAME_Release=testeur -CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/testeur -CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package -CND_PACKAGE_NAME_Release=testeur.tar -CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/testeur.tar -# Debug-rpi configuration -CND_PLATFORM_Debug-rpi=GNU-Linux -CND_ARTIFACT_DIR_Debug-rpi=dist/Debug-rpi/GNU-Linux -CND_ARTIFACT_NAME_Debug-rpi=testeur -CND_ARTIFACT_PATH_Debug-rpi=dist/Debug-rpi/GNU-Linux/testeur -CND_PACKAGE_DIR_Debug-rpi=dist/Debug-rpi/GNU-Linux/package -CND_PACKAGE_NAME_Debug-rpi=testeur.tar -CND_PACKAGE_PATH_Debug-rpi=dist/Debug-rpi/GNU-Linux/package/testeur.tar -# -# include compiler specific variables -# -# dmake command -ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ - (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) -# -# gmake command -.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) -# -include nbproject/private/Makefile-variables.mk diff --git a/software/raspberry/testeur/testeur/nbproject/Package-Debug-rpi.bash b/software/raspberry/testeur/testeur/nbproject/Package-Debug-rpi.bash deleted file mode 100644 index 3da996c..0000000 --- a/software/raspberry/testeur/testeur/nbproject/Package-Debug-rpi.bash +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux -CND_CONF=Debug-rpi -CND_DISTDIR=dist -CND_BUILDDIR=build -CND_DLIB_EXT=so -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur -OUTPUT_BASENAME=testeur -PACKAGE_TOP_DIR=testeur/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/testeur/bin" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/testeur.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/testeur.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/software/raspberry/testeur/testeur/nbproject/Package-Debug.bash b/software/raspberry/testeur/testeur/nbproject/Package-Debug.bash deleted file mode 100644 index 460a865..0000000 --- a/software/raspberry/testeur/testeur/nbproject/Package-Debug.bash +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux -CND_CONF=Debug -CND_DISTDIR=dist -CND_BUILDDIR=build -CND_DLIB_EXT=so -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur -OUTPUT_BASENAME=testeur -PACKAGE_TOP_DIR=testeur/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/testeur/bin" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/testeur.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/testeur.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/software/raspberry/testeur/testeur/nbproject/Package-Release.bash b/software/raspberry/testeur/testeur/nbproject/Package-Release.bash deleted file mode 100644 index acbac81..0000000 --- a/software/raspberry/testeur/testeur/nbproject/Package-Release.bash +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -x - -# -# Generated - do not edit! -# - -# Macros -TOP=`pwd` -CND_PLATFORM=GNU-Linux -CND_CONF=Release -CND_DISTDIR=dist -CND_BUILDDIR=build -CND_DLIB_EXT=so -NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging -TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/testeur -OUTPUT_BASENAME=testeur -PACKAGE_TOP_DIR=testeur/ - -# Functions -function checkReturnCode -{ - rc=$? - if [ $rc != 0 ] - then - exit $rc - fi -} -function makeDirectory -# $1 directory path -# $2 permission (optional) -{ - mkdir -p "$1" - checkReturnCode - if [ "$2" != "" ] - then - chmod $2 "$1" - checkReturnCode - fi -} -function copyFileToTmpDir -# $1 from-file path -# $2 to-file path -# $3 permission -{ - cp "$1" "$2" - checkReturnCode - if [ "$3" != "" ] - then - chmod $3 "$2" - checkReturnCode - fi -} - -# Setup -cd "${TOP}" -mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package -rm -rf ${NBTMPDIR} -mkdir -p ${NBTMPDIR} - -# Copy files and create directories and links -cd "${TOP}" -makeDirectory "${NBTMPDIR}/testeur/bin" -copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 - - -# Generate tar file -cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/testeur.tar -cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/testeur.tar * -checkReturnCode - -# Cleanup -cd "${TOP}" -rm -rf ${NBTMPDIR} diff --git a/software/raspberry/testeur/testeur/nbproject/configurations.xml b/software/raspberry/testeur/testeur/nbproject/configurations.xml deleted file mode 100644 index 97ded86..0000000 --- a/software/raspberry/testeur/testeur/nbproject/configurations.xml +++ /dev/null @@ -1,275 +0,0 @@ - - - - - ../../superviseur-robot/lib/definitions.h - ../../superviseur-robot/lib/image.h - ../../superviseur-robot/lib/message.h - ../../superviseur-robot/lib/robot.h - ../../superviseur-robot/lib/server.h - - - - - ../../superviseur-robot/lib/src/image.cpp - main.cpp - ../../superviseur-robot/lib/src/message.cpp - ../../superviseur-robot/lib/src/robot.cpp - ../../superviseur-robot/lib/src/server.cpp - - - - - Makefile - - - - ../../superviseur-robot/lib/src - - Makefile - - - - default - true - false - - - - - ../../superviseur-robot/lib - - - __FOR_PC__ - - - - - ../../superviseur-robot/lib - - - D_REENTRANT - __FOR_PC__ - - - - - `pkg-config --libs opencv` - PosixThreads - - - - - - - - - - - - - - - - - - - - - - - - - - - default - true - false - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - - - - - - - - - - - - - - - - - - - - GNU|GNU - true - false - - - - - ../../superviseur-robot/lib - - - __FOR_PC__ - - - - 8 - - ../../superviseur-robot/lib - - - D_REENTRANT - - - - - /usr/local/lib - - - `pkg-config --libs opencv` - PosixThreads - raspicam - raspicam_cv - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/software/raspberry/testeur/testeur/nbproject/private/Makefile-variables.mk b/software/raspberry/testeur/testeur/nbproject/private/Makefile-variables.mk deleted file mode 100644 index 4327168..0000000 --- a/software/raspberry/testeur/testeur/nbproject/private/Makefile-variables.mk +++ /dev/null @@ -1,8 +0,0 @@ -# -# Generated - do not edit! -# -# NOCDDL -# -# Debug configuration -# Release configuration -# Debug-rpi configuration diff --git a/software/raspberry/testeur/testeur/nbproject/private/c_standard_headers_indexer.c b/software/raspberry/testeur/testeur/nbproject/private/c_standard_headers_indexer.c deleted file mode 100644 index c2548d2..0000000 --- a/software/raspberry/testeur/testeur/nbproject/private/c_standard_headers_indexer.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * 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/testeur/testeur/nbproject/private/configurations.xml b/software/raspberry/testeur/testeur/nbproject/private/configurations.xml deleted file mode 100644 index b589ab9..0000000 --- a/software/raspberry/testeur/testeur/nbproject/private/configurations.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - Makefile - - - - localhost - 2 - - - - - - - - - - - - - - - gdb - - - - "${OUTPUT_PATH}" - - "${OUTPUT_PATH}" - - true - 0 - 0 - - - - - - - localhost - 2 - - - - - - - - - - - - - - - gdb - - - - "${OUTPUT_PATH}" - - "${OUTPUT_PATH}" - - true - 0 - 0 - - - - - - - pi@10.105.1.13:22 - 2 - - - - - - - - - - - - - - - - - gdb - - - - "${OUTPUT_PATH}" - - "${OUTPUT_PATH}" - - true - 0 - 0 - - - - - - diff --git a/software/raspberry/testeur/testeur/nbproject/private/cpp_standard_headers_indexer.cpp b/software/raspberry/testeur/testeur/nbproject/private/cpp_standard_headers_indexer.cpp deleted file mode 100644 index 04f6fa6..0000000 --- a/software/raspberry/testeur/testeur/nbproject/private/cpp_standard_headers_indexer.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/* - * 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 // std::map and std::multimap associative containers -#include // std::stack container adaptor -#include // std::queue and std::priority_queue container adaptors -#include // Algorithms that operate on containers -#include // Container iterators -#include // Common mathematics functions -#include // Complex number type -#include // Class for representing and manipulating arrays of values -#include // Numeric operations on values in containers -#include // forward declarations of all classes in the input/output library -#include // std::ios_base class, std::basic_ios class template and several typedefs -#include // std::basic_istream class template and several typedefs -#include // std::basic_ostream, std::basic_iostream class templates and several typedefs -#include // several standard stream objects -#include // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs -#include // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs -#include // std::strstream, std::istrstream, std::ostrstream(deprecated) -#include // Helper functions to control the format or input and output -#include // std::basic_streambuf class template -#include // C-style input-output functions -#include // Localization utilities -#include // C localization utilities -#include // empty header. The macros that appear in iso646.h in C are keywords in C++ -#if __cplusplus >= 201103L -#include // (since C++11) std::type_index -#include // (since C++11) Compile-time type information -#include // (since C++11) C++ time utilites -#include // (since C++11) std::initializer_list class template -#include // (since C++11) std::tuple class template -#include // (since C++11) Nested allocator class -#include // (since C++11) fixed-size types and limits of other types -#include // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions -#include // (since C++11) defines std::error_code, a platform-dependent error code -#include // (since C++11) C-style Unicode character conversion functions -#include // (since C++11) std::array container -#include // (since C++11) std::forward_list container -#include // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers -#include // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers -#include // (since C++11) Random number generators and distributions -#include // (since C++11) Compile-time rational arithmetic -#include // (since C++11) Floating-point environment access functions -#include // (since C++11) Unicode conversion facilities -#include // (since C++11) Classes, algorithms and iterators to support regular expression processing -#include // (since C++11) Atomic operations library -#include // (since C++11)(deprecated in C++17) simply includes the header -#include // (since C++11)(deprecated in C++17) simply includes the headers (until C++17) (since C++17) and : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers -#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant -#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant -#include // (since C++11) std::thread class and supporting functions -#include // (since C++11) mutual exclusion primitives -#include // (since C++11) primitives for asynchronous computations -#include // (since C++11) thread waiting conditions -#endif -#if __cplusplus >= 201300L -#include // (since C++14) shared mutual exclusion primitives -#endif -#if __cplusplus >= 201500L -#include // (since C++17) std::any class template -#include // (since C++17) std::optional class template -#include // (since C++17) std::variant class template -#include // (since C++17) Polymorphic allocators and memory resources -#include // (since C++17) std::basic_string_view class template -#include // (since C++17) Predefined execution policies for parallel versions of the algorithms -#include // (since C++17) std::path class and supporting functions -#endif diff --git a/software/raspberry/testeur/testeur/nbproject/private/downloads-10.105.1.13-pi-22 b/software/raspberry/testeur/testeur/nbproject/private/downloads-10.105.1.13-pi-22 deleted file mode 100644 index e69de29..0000000 diff --git a/software/raspberry/testeur/testeur/nbproject/private/launcher.properties b/software/raspberry/testeur/testeur/nbproject/private/launcher.properties deleted file mode 100644 index 3edc2d8..0000000 --- a/software/raspberry/testeur/testeur/nbproject/private/launcher.properties +++ /dev/null @@ -1,42 +0,0 @@ -# Launchers File syntax: -# -# [Must-have property line] -# launcher1.runCommand= -# [Optional extra properties] -# launcher1.displayName= -# launcher1.hide= -# launcher1.buildCommand= -# launcher1.runDir= -# launcher1.runInOwnTab= -# launcher1.symbolFiles= -# launcher1.env.= -# (If this value is quoted with ` it is handled as a native command which execution result will become the value) -# [Common launcher properties] -# common.runDir= -# (This value is overwritten by a launcher specific runDir value if the latter exists) -# common.env.= -# (Environment variables from common launcher are merged with launcher specific variables) -# common.symbolFiles= -# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) -# -# In runDir, symbolFiles and env fields you can use these macroses: -# ${PROJECT_DIR} - project directory absolute path -# ${OUTPUT_PATH} - linker output path (relative to project directory path) -# ${OUTPUT_BASENAME}- linker output filename -# ${TESTDIR} - test files directory (relative to project directory path) -# ${OBJECTDIR} - object files directory (relative to project directory path) -# ${CND_DISTDIR} - distribution directory (relative to project directory path) -# ${CND_BUILDDIR} - build directory (relative to project directory path) -# ${CND_PLATFORM} - platform name -# ${CND_CONF} - configuration name -# ${CND_DLIB_EXT} - dynamic library extension -# -# All the project launchers must be listed in the file! -# -# launcher1.runCommand=... -# launcher2.runCommand=... -# ... -# common.runDir=... -# common.env.KEY=VALUE - -# launcher1.runCommand= \ No newline at end of file diff --git a/software/raspberry/testeur/testeur/nbproject/private/private.xml b/software/raspberry/testeur/testeur/nbproject/private/private.xml deleted file mode 100644 index b87adb5..0000000 --- a/software/raspberry/testeur/testeur/nbproject/private/private.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - 1 - 2 - - - - - file:/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/main.cpp - - - diff --git a/software/raspberry/testeur/testeur/nbproject/private/timestamps-10.105.1.13-pi-22 b/software/raspberry/testeur/testeur/nbproject/private/timestamps-10.105.1.13-pi-22 deleted file mode 100644 index 727d827..0000000 --- a/software/raspberry/testeur/testeur/nbproject/private/timestamps-10.105.1.13-pi-22 +++ /dev/null @@ -1,26 +0,0 @@ -#Mon Nov 12 11:20:04 CET 2018 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/robot.h=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/project.xml=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Makefile-impl.mk=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/robot.cpp=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/image.h=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/main.cpp=c1542017998000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/server.cpp=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Makefile-Release.mk=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/message.cpp=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Package-Debug.bash=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/.gitignore=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Makefile-variables.mk=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/private/Makefile-variables.mk=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/Makefile=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Makefile-Debug-rpi.mk=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Makefile-Debug.mk=c1541775193000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/message.h=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/image.cpp=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Package-Release.bash=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/.dep.inc=c1541685829000 -VERSION=1.3 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/server.h=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/definitions.h=c1541685829000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/testeur/testeur/nbproject/Package-Debug-rpi.bash=c1542014288000 -/home/dimercur/Documents/Travail/git/dumber/software/raspberry/superviseur-robot/lib/src/monitor.cpp=c1541685829000 diff --git a/software/raspberry/testeur/testeur/nbproject/project.xml b/software/raspberry/testeur/testeur/nbproject/project.xml deleted file mode 100644 index b9da082..0000000 --- a/software/raspberry/testeur/testeur/nbproject/project.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - org.netbeans.modules.cnd.makeproject - - - testeur - - cpp - h - UTF-8 - - - ../../superviseur-robot/lib/src - - - - Debug - 1 - - - Release - 1 - - - Debug-rpi - 1 - - - - false - - - - diff --git a/software/robot/.cproject b/software/robot/.cproject index 2a15f6b..5629029 100644 --- a/software/robot/.cproject +++ b/software/robot/.cproject @@ -174,6 +174,7 @@ +