Index: branch/CLEMENT/sp4a12/main.c
===================================================================
--- branch/CLEMENT/sp4a12/main.c	(revision 497)
+++ branch/CLEMENT/sp4a12/main.c	(revision 498)
@@ -15,19 +15,17 @@
                     "$GPZDA,141914.00,01,02,2006,00,00*69",
                     0};
 
-// On Définit la structure position
-
-typedef struct{
+typedef struct{             // On Définit la structure position
         float latitude;
         float longitude;
     }position;
 
-typedef struct{
+typedef struct{             // On Définit la structure zone
 position rpos;
 float vitmax;
 }zone;
 
- zone zones[] = {
+ zone zones[] = {               //Pour nos tests ont créer une zone.
     {{44.7887762, -3.012}, 50}, /* Descripteur de la première zone */
     {{44.7891220, -3,013}, 70},
     };
@@ -58,7 +56,7 @@
 
 
 
-int decode_int(char c){ /* Fonction permettant de transformer un code ASCII en décimale */
+int decode_int(char c){ // Fonction permettant de transformer un code ASCII en décimale
 
     int res;
     if (c < 48 || c > 57){ // Si on est pas entre 0 et 9 on retourne -1
@@ -65,7 +63,7 @@
         res = -1;
     }
     else {
-        res = c-48; // Car 48 = code ascii de 0
+        res = c-48; // 48 = code ascii de 0
     }
     return res;
 
@@ -72,14 +70,14 @@
 }
 
 
-int decode_nombre(char * ch, int n){
+int decode_nombre(char * ch, int n){ //Fonction permettant de décoder un nombre
 
-    int i;
+    int i;                           //Initialisation des variables.
     int finale;
     int temp;
     for(i=0; i<n; i++){
 
-        finale = (pow(10, n-i-1)) * (decode_int(ch[i])) + temp;
+        finale = (pow(10, n-i-1)) * (decode_int(ch[i])) + temp;     //Suivant la place du nombre dans le chiffre on multiplie par une puissance de 10
         temp = finale;
     }
     return finale;
@@ -87,18 +85,18 @@
 }
 
 
-float conv_lat(char * latitude){
+float conv_lat(char * latitude){        //Fonction permettant de convertir la latitude en float.
 
-    float val = decode_nombre(latitude,4);
+    float val = decode_nombre(latitude,4);      //On décode d'abord l'ensemble en float.
     float res = 0;
-    for (int i = 5; i < 9;i++){
+    for (int i = 5; i < 9;i++){                 //On connait les chiffres que l'on veut donc on multiplie par puissance de 10
         val += (decode_int(latitude[i]))*pow(10,-i+4);
     }
-    res = (int)(val/100);
+    res = (int)(val/100);                       //On convertir le sexa en décimale.
     res += (val - res*100)/60;
     return res;}
 
-float conv_long(char * longitude){
+float conv_long(char * longitude){          //Même principe que la fonction précédente mais avec un chiffre de plus.
 
     float val = decode_nombre(longitude,5);
     float res = 0;
@@ -109,7 +107,7 @@
     res += (val - res*100)/60;
     return res;}
 
-float conversion(char * chaine){
+float conversion(char * chaine){            //On regroupe les deux fonctions précédentes en une seule.
 
     int cpt = 0;
     while (chaine[cpt]!='\0'){
@@ -122,22 +120,21 @@
         return conv_long(chaine);
     }
     else{
-        return 1000.0;
+        return 1000.0;                      //On créer un code d'erreur au cas ou
     }
 }
 
+position decode_trame(char * trame){        //On va décoder la trame et l'afficher
 
-position decode_trame(char * trame){
 
-
-    if (trame_cmp(trame, "GPGGA")!= 1){
+    if (trame_cmp(trame, "GPGGA")!= 1){     //On regarde si on est au bon format.
         printf("Cette trame n'est pas au bon format.");
     }
 
-    else{
+    else{                                   //Si c'est le cas on continue
     //On définit notre structure
 
-    position position_trame;
+    position position_trame;                //Initialisation.
     char latitude[10];
     char longitude[11];
     int n = 0;
@@ -145,7 +142,7 @@
     int j = 0;
     int k = 0;
 
-        while (trame[i] != '\0'){
+        while (trame[i] != '\0'){           //On veut récupérer les différentes informations suivant le modèle précis de trame.
             if (trame[i] == ','){ //On repère les virgules
                 n = n + 1;
                 i = i + 1;
@@ -160,7 +157,7 @@
             }
             i ++;
         }
-        latitude[j] = '\0';
+        latitude[j] = '\0';     //On ferme bien la chaine
         longitude[k] = '\0';
         position_trame.latitude = conversion(latitude);
         position_trame.longitude = conversion(longitude); //On stocke la latitude et la longitude convertie dans structure position.
@@ -171,7 +168,7 @@
 
 float calcule_distance(position position_trame1, position position_trame2){
 
-    //On doit d'abord calcule la distance :
+    //On utilise la formule en connaissant le rayon de la terre.
 
     float x = (position_trame2.longitude - position_trame1.longitude) * cos( (position_trame1.latitude + position_trame2.latitude) / 2);
     float y = position_trame2.latitude - position_trame1.latitude;
@@ -191,17 +188,15 @@
     return v;
 }
 
-float p;
+float p;        //On initialise notre pointeur de distance.
 float * d = &p;
 
-
-
 int distance_a_la_plus_proche_zone(position p, zone r[], int nb_zones, float *d){
 
     int i = 1;
     *d = calcule_distance(p, r[0].rpos); //On initialise par défaut que la première zone est la plus proche
     float temp_d;
-    while (i < nb_zones){
+    while (i < nb_zones){                //On compare si elle est plus proche que celle d'avant, si oui on remplace.
         temp_d = calcule_distance(p, r[i].rpos);
         if (temp_d < *d){
             *d = temp_d;
@@ -212,31 +207,39 @@
 }
 
 //Fonction à modifier !!!!!
-void traitement(char * trame)
+void traitement(char * trame) // C'est ici qu'on gère tout l'affichage.
 {
-    position affichage;
+    position affichage;       //On initialise ce dont on aura besoin.
     static int cpt=0 ;
     int i;
     float vitesse;
     position temp_trame;
 
-    if ((trame_cmp(trame, "GPGGA")) == 1){
-        printf("> %s\n",trame);
+    if ((trame_cmp(trame, "GPGGA")) == 1){ //On vérifie qu'on est bien dans une trame valide.
+
+
+        temp_trame.longitude = affichage.longitude;     //On retient la trame précédente pour le calcul de la vitesse.
+        temp_trame.latitude = affichage.latitude;
+
+
+        printf("> %s\n",trame);         //On affiche la trame et on la décode.
         affichage = decode_trame(trame);
         printf("Latitude : %f \nLongitude %f\n\n", affichage.latitude, affichage.longitude);
 
-        /* A essayer uniquement sur des trames qui se suivent
-
-        i = distance_a_la_plus_proche_zone(affichage, zones, 2, d);
-        vitesse = calcule_vitesse(temp_trame, affichage);
-        printf("\nVous roulez a une vitesse de %f km/h et vous etes proches d'une zone a %f km/h.", vitesse, zones[i-1].vitmax);
-        if (vitesse > zones[i].vitmax){
+        i = distance_a_la_plus_proche_zone(affichage, zones, 2, d); //On calcule la distance jusqu'à la prochaine zone
+        vitesse = calcule_vitesse(temp_trame, affichage);           //La vitesse du véhicule
+        if (vitesse < 10000){                                       //Si le résultat est aberrant c'est que la trame précédente ne suivait pas.
+        printf("Vous roulez a une vitesse de %f km/h et vous etes proches d'une zone a %f km/h.", vitesse, zones[i-1].vitmax); //On affiche les informations.
+        if (vitesse > zones[i-1].vitmax){
             printf("\n\nAlarme : On\n\n");
         }
         else{
             printf("\n\nAlarme : Off\n\n");
         }
-        temp_trame = affichage; */
+        }
+        else{
+            printf("Nous ne sommes pas encore en mesure de vous donner la vitesse.\n\n"); // Au cas ou la vitesse est aberrante.
+        }
     }
     cpt++ ;
 
