Index: branch/faye_awasemou/sp4a12/main.c
===================================================================
--- branch/faye_awasemou/sp4a12/main.c	(revision 482)
+++ branch/faye_awasemou/sp4a12/main.c	(revision 483)
@@ -62,7 +62,7 @@
     int Vdecimal; //valeur en decimal du caractere passé en parametre
     if ( c <= '9' && c >='0' ) //comparaison pour savoir si le parametre recu est compris entre 0 et 9
     {
-        Vdecimal =c-48; //affectation(methode permettant de donner la valeur en decimal du caractere)
+        Vdecimal =c-48; // si oui affectation(methode permettant de donner la valeur en decimal du caractere)
 
 
     }else
@@ -83,7 +83,7 @@
         s=s*10 + decode_int(ch[i]);// on fait la somme des valeurs decimales apres avoir calculer la valeur décimale associée au caractère en utilisant la fonction decode_int
 
     }
-    return s;
+    return s;// on retourne la somme;
 }
 
 
@@ -140,9 +140,12 @@
     //exempletrame="$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",
     if (trame_cmp(trame,"GPGGA"))  //on utilise la fonction trame_cmp pour savoir si la trame a le bon format GPGGA
     {
-            position->latitude=conversionLatitude(trame+17);//on recupere la position en latitude en acccedant au champ de la latitude dans la trame
-            position->longitude=conversionLongitude(trame+29);//on recupere la position en longitude en acccedant au champ de la longitude dans la trame
-            return 1;//on retourne 1 pour montrer qu'on a le trame type GPGGA et qu'on a recuperé la position en latitude et longitude
+        int i;
+        char ch[10];// tableau dans lequel on stocke la longitude de la trame
+        for (i=0;i<10;i++) ch[i]=trame[29+i];// on recupere la valeur de la longitude et on le met dans le tableau ch
+            position->latitude=conversionLatitude(trame+17);//on fait la conversion de la latitude apres avoir recuperer la latitude
+            position->longitude=conversionLongitude(ch);//on fait la conversion de la longitude
+        return 1;//on retourne 1 pour montrer qu'on a la trame type GPGGA et qu'on a recuperé la position en latitude et longitude
     }
      return 0;//on retourne 0 sinon, la trame est ignorée
 }
@@ -159,7 +162,7 @@
 float calcul_vitesse(Position P1, Position P2)// on prend en parametre les positions des deux points en latitude et longitude
 {
     float vitesse;//Variable contenant la vitesse resultante entre les deux points
-    vitesse=3600*calcul_distance(P1,P2);//on affecte a la vitesse la methode de calcul correspondante cad vitesse =distance /temps en faisant appel a la fonction calcul_distance sachant que le temps cest 1s on a directement la vitesse en km/s donc on miltiplie par 3600 pour avoir la vitesse km/heure vu que 1h=3600s
+    vitesse=3600*calcul_distance(P1,P2);//on affecte a la vitesse la methode de calcul correspondante cad vitesse =distance /temps en faisant appel a la fonction calcul_distance sachant que le temps c'est 1s on a directement la vitesse en km/s donc on miltiplie par 3600 pour avoir la vitesse km/heure vu que 1h=3600s
 
     return vitesse; //on revoie la valeur du la vistesse calculée
 }
@@ -194,9 +197,37 @@
 //Fonction à modifier !!!!!
 void traitement(char * trame)
 {
-    static int cpt=0;
+static int cpt=0;
     cpt++;
 
+Position p;
+Position p_initiale; // on declare une position a laquelle on initialise la latitude et la longitude avec des valeurs
+p_initiale.latitude=45.750403;
+p_initiale.longitude= 3.110065;
+float distance; //distance a laquelle se trouve le vehicule
+float vitesse;
+float seuil=710;//seuil que le distance du vehicule ne doit pas depasser
+int index;
+if (decode_trame(trame,&p)) // on regarde si la trame est valide
+    {
+        printf ("> %s\n",trame);// on affiche la trame recue
+        vitesse=calcul_vitesse(p_initiale,p);//on calcule la vitesse entre la position du vehicule et une position premiere d'une zone dangereuse
+        index=distance_a_la_proche_zone(p,zones,sizeof(zones),&distance);// on calcule la distance la plus proche pour trouver l'index
+        if ((distance<seuil) && (vitesse>zones[index].vitmax))// on compare si la distance est inferieur au seuil donne et si la vitesse est superieur a celle definie pour cette zone
+            {
+                //si cest cas on affiche la  distance et la vistance puis on declenche une alarme
+
+                printf(" La vitesse est egale a %f\n ",vitesse);
+                printf("La distance est egale a %f \n ",distance);
+                printf("Alarme ON \n");
+                printf(" Zone numero %d \n ",index);
+            }
+        else
+            //sinon l'alarme reste eteinte
+            printf("Alarme OFF \n ");
+            p_initiale = p;// on affecte a la position initiale la nouvelle position du vehicule car plus le vehicule roule plus il s'approche des zones dangereuses
+    }
+
     return 0;
 }
 
@@ -212,9 +243,6 @@
      //variable concernant le test unitaire  decode_trame
     Position * position;
     //variables concernant le test unitaire distance_a_la_proche_zone
-    Position p;
-    p.latitude=45.7500;
-    p.longitude=3.11006;
     int nb_zones=3;
     float d;
         //test unutaire basique
@@ -290,31 +318,32 @@
              exit(-1);
             }
              //tests unutaires de la fonction decode_trame
-   /*   if(decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",position)==0){
+    if(decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&position)!=1){
             printf("Erreur Test decode trame \n");
             exit(-1);
-            }*/
+            }
 
 
+
             //tests unutaires de la fonction calcul_distance
-     /*if (calcul_distance(P1,P2)- 0.0448 > 0.0001){
+        if (calcul_distance(P1,P2)- 0.04481788787 > 0.001){
             printf ("Erreur Test unitaire calcul_distance.\n");
             exit(-1);
             }
 
             //tests unutaires de la fonction calcul_vitesse
-     /*  if (calcul_vitesse(P1,P2)-161.28  > 0.0001){
+        if (calcul_vitesse(P1,P2)-1613.443 > 0.01){
              printf ("Erreur Test unitaire calcul_vitesse.\n");
              exit(-1);
-             }*/
+             }
 
             //tests unutaires de la fonction distance_a_la_proche_zone
-      /*if (distance_a_la_proche_zone(P1,zones,nb_zones,&d)!=2){
+      if (distance_a_la_proche_zone(P1,zones,nb_zones,&d)!=2){
              printf ("Erreur Test unitaire distance_a_la_proche_zone.\n");
              exit(-1);
              }
             // Test unitaire de la fonctionGenerique
-      /* if (fonctionGenerique("4545.0242") - 45.75040333 > 0.0001 )
+      if (fonctionGenerique("4545.0242") - 45.75040333 > 0.0001 )
             {
             printf("Erreur Test unitaire conversion latitude !!! \n");
             exit(-1);
@@ -323,7 +352,7 @@
             {
             printf("Erreur Test unitaire conversion longitude !!! \n");
             exit(-1);
-            }*/
+            }
 }
 
 
