Index: branch/MARIMOUTOU_Mourougen/main.c
===================================================================
--- branch/MARIMOUTOU_Mourougen/main.c	(revision 383)
+++ branch/MARIMOUTOU_Mourougen/main.c	(revision 384)
@@ -183,11 +183,9 @@
 
 float decode_trame(char *trame,Position *P)//Fonction qui extrait la position(latitude,longitude) pour les trame trame valide
 {
-    if(trame_cmp(trame,"GPPGA")==1)
-    {
-        P->Latitude=decode_latitude(trame);
-        P->Longitude=decode_longitude(trame);
-    }
+    P->Latitude=decode_latitude(trame);
+    P->Longitude=decode_longitude(trame);
+
 }
 
 float calcul_distance(Position *p_1,Position *p_2)
@@ -199,25 +197,25 @@
     return D;
 }
 
-float calcul_vitesse(Position p_1,Position p_2)
+float calcul_vitesse(Position *p_1,Position *p_2)
 {
-    int R_terre=6371;
-    float Vitesse=(calcul_distance(&p_1,&p_2))*3600;
+    float Vitesse=(calcul_distance(&p_1,&p_2))*3600.0;
     return Vitesse;
 }
 
 int distance_a_la_plus_proche_zone(Position p,Zone r[],int nb_zones,float*d)//fonction qui retourne l'indice de la position de la plus proche zone
 {
-    int i,j;
-    float pos_init=calcul_distance(&p,&r[0].rpos);//Initialisation d'une position initial de reference
+    int i;
+    int j=0;
+    float distance_init=calcul_distance(&p,&r[0].rpos);//Initialisation d'une distance initial de reference
     if(nb_zones>0){
         for(i=1;i<nb_zones;i++)
         {
         *d=calcul_distance(&p,&r[i].rpos);
-            if(*d<=pos_init)
+            if(*d<=distance_init)
             {
                 j=i;
-                pos_init=*d;
+                distance_init=*d;
             }
         }
         return j;
@@ -231,10 +229,15 @@
 int test_distance_de_la_plus_proche_zone()
 {
     float distance;
-    P.Latitude=decode_latitude("$GPGGA,141917.00,4545.0726,N,00306.6039,E,1,05,3.4,499.6,M,,M,,*73");
-    P.Longitude=decode_longitude("$GPGGA,141917.00,4545.0726,N,00306.6039,E,1,05,3.4,499.6,M,,M,,*73");
+    P.Latitude=decode_latitude("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D");
+    P.Longitude=decode_longitude("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D");
 
-    int indice=distance_a_la_plus_proche_zone(P,zones,strlen(zones),&distance);
+    int indice=distance_a_la_plus_proche_zone(P,zones,sizeof(zones),&distance);
+    if(indice!=1 && fabs(distance-4980.238)>0.01)
+    {
+        printf("erreur distance de la plus proche zone");
+        exit(-1);
+    }
 
     return indice;
 
@@ -244,11 +247,45 @@
 //Fonction à modifier !!!!!
 void traitement(char * trame)
 {
+/*
     static int cpt=0;
     if(trame_cmp(trame,"GPGGA")==1)
     {
         printf ("> %s\n",trame);
         cpt++;
+    }
+*/
+
+    Position pos_init,p;
+    //initialisation d'une position initiale a partir d'une trame de test valide
+    pos_init.Latitude=decode_latitude("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D");
+    pos_init.Longitude=decode_longitude("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D");
+
+    float distance,vitesse;
+    float seuil=5089.0;//Definition du seuil en evaluant les distance retourner afin de valider le foncionnement du bloc
+    int indice;
+
+    if(trame_cmp(trame,"GPGGA")==1)
+    {
+        printf ("> %s\n",trame);
+        decode_trame(trame,&p);
+        printf("Latitude:%f\nLongitude:%f\n",p.Latitude,p.Longitude);
+        vitesse=calcul_vitesse(&pos_init,&p);
+        indice=distance_a_la_plus_proche_zone(p,zones,sizeof(zones),&distance);
+        if(distance<seuil && vitesse>zones[indice].vitmax)
+        {
+            printf("alarme on\n");
+            printf("Vitesse limiter a :%f\n",vitesse);
+            printf("Distance de:%f\n\n",distance);
+            printf("debug:%f\n\n",calcul_distance(&pos_init,&p));
+            printf("debug:%f\n\n",calcul_vitesse(&pos_init,&p));
+
+        }else
+            {
+                printf("alarme off\n");
+                pos_init=p;
+
+            }
     }
 }
 
@@ -333,6 +370,7 @@
     printf("distance Paris-Toulouse : %f\n",calcul_distance(&P1,&P3));
 */
 //Test de la fonction distance la plus proche
+/*
     printf("%f\n",decode_latitude("$GPGGA,141917.00,4545.0726,N,00306.6039,E,1,05,3.4,499.6,M,,M,,*73"));
     printf("%f\n",decode_longitude("$GPGGA,141917.00,4545.0726,N,00306.6039,E,1,05,3.4,499.6,M,,M,,*73"));
 
@@ -346,9 +384,12 @@
 
     printf("distance 1 : %f\n",calcul_distance(&P,&P1));
     printf("distance 2 : %f\n",calcul_distance(&P,&P2));
-    printf("%d\n",strlen(zones));
-    printf("%d\n",test_distance_de_la_plus_proche_zone());
+*/
 
+//Test de la fonctionn distance de la plus proche zone
+/*
+    test_distance_de_la_plus_proche_zone();
+*/
 
 }
 
