Index: branch/Ndong_Yaye_Oumy/sp4a12/main.c
===================================================================
--- branch/Ndong_Yaye_Oumy/sp4a12/main.c	(revision 352)
+++ branch/Ndong_Yaye_Oumy/sp4a12/main.c	(revision 353)
@@ -34,8 +34,10 @@
 
  int trame_cmp(char* trame,char *type){ // fonction qui renvoie 1 si la trame commence par la chaîne de caractère type et zéro dans les autres cas
 	int i, ok =1 ;
-	for(i=0 ;i<=4 ;i=i+1){
-		if (trame[i+1] !=type[i]){ //comparaison de la première chaine (sans le '$') et de la deuxième chaine passées en paramètre
+	for(i=0 ;i<=4 ;i=i+1)
+    {
+		if (trame[i+1] !=type[i])
+		{ //comparaison de la première chaine (sans le '$') et de la deuxième chaine passées en paramètre
 			ok=0; // si des caractères diffèrent lors de la comparaison ok=0 et on en conclut que les deux chaines comparées ne sont pas pareils
 		}
 	}
@@ -42,9 +44,11 @@
 	 return ok;
 }
 
-int decode_int(char car){  //qui renvoie la valeur décimale associée à un caractère donné en paramètre
+int decode_int(char car)
+{  //qui renvoie la valeur décimale associée à un caractère donné en paramètre
     int entier;
-    if(car<='9' && car>='0'){
+    if(car<='9' && car>='0')
+    {
         entier= car-48;  // on soustrait au code ascii du caractère le code ascii du caractère '0'
     }else{
         entier=-1;  // si le caractere entré ne correspond pas à un chiffre on renvoie -1
@@ -57,7 +61,8 @@
 int decode_nombre (char *ch,int n){ // fonction qui renvoie qui renvoie la valeur décimale des n premiers caractères de la chaîne ch
 
     int i,s=0;
-    for(i=0;i<n;i++){
+    for(i=0;i<n;i++)
+    {
        s=s + decode_int(ch[i])*pow(10,n-1-i);
     }
     return s;
@@ -122,7 +127,7 @@
     float distance;
     int perimetre=40000;   // perimetre de la terre
     distance= sqrt((pos_prec.longitude-pos.longitude)*(pos_prec.longitude-pos.longitude)+(pos_prec.latitude-pos.latitude)*(pos_prec.latitude-pos.latitude)) *( perimetre/360);
-    return distance;
+    return distance;  // on renvoie la distance en km
 }
 
 float calcul_vitesse(Position pos, Position pos_prec)
@@ -139,9 +144,9 @@
     int a=0,i;
     *d=calcul_distance(p, r[0].rpos); // on calcule la distance entre la position actuelle et la premiere zone dangereuse du tableau
     if(nb_zones==0)a=-1;
-    for(i=1;i<nb_zones;++i)
+    for(i=1;i<nb_zones;i++)
     {
-        d1=calcul_vitesse(p, r[i].rpos);  // a chaque itération on calcule la distance entre la position actuelle et une zone dangeureuse
+        d1=calcul_distance(p, r[i].rpos);  // a chaque itération on calcule la distance entre la position actuelle et une zone dangeureuse
         if(d1<(*d)){   // si cette distance est inférieure à la distance d calculée,on remplace d par cette nouvelle distance
             (*d)=d1;
             a=i;  // a prend la valeur de l'indice correspondant à cette zone dangereuse
@@ -155,7 +160,6 @@
 {
    /*// Position a={0.0,0.0};
     //int a;
-    Position p;
     //p=&a;
     static int cpt=0;
     cpt++;
@@ -163,13 +167,25 @@
     if(decode_trame(trame,&p))
     {
          printf("latitude:%f longitude:%f \n", p.latitude,p.longitude);
-    }
-    Position p1={45.750000,3.11006};
-    float d;
-    int a;
+    }*/
+    //Position p1={45.750000,3.11006};
+    float d,vitesse;  //d=distance
+    int a,b;
     int nb_zones=4;
-    a=distance_a_la_plus_proche_zone(p1,zones,nb_zones,&d);
-    printf("%d",a); */
+    Position p;
+    b=decode_trame(trame,&p);
+    if(b==1){  // si la trame est valide
+    printf("%s\n", trame);  // on affiche juste pour vérifier que la trame est valide
+    a=distance_a_la_plus_proche_zone(p,zones,nb_zones,&d);   // on recupere l'indice de la zone dangereuse et la distance entre la zone et la position actuelle
+        vitesse=calcul_vitesse(p,zones[a].rpos);  // on calcule la vitesse
+        if(d>680 && vitesse>2464.89){  // 680=seuil de la distance et 2464.89=seuil dela vitesse
+            printf("alarme=on\n");   // si les conditions sont respectées alarme=on
+            printf("distance: %f  ", d);
+            printf("vitesse;%f\n",vitesse);
+        }else{
+            printf("alarme=off\n");  // sinon alarme=off
+        }
+    }
 }
 
 //Ajouter vos tests unitaires dans cette fonction.
@@ -280,7 +296,7 @@
         printf ("Erreur Test unitaire calcul_vitesse.\n");
          exit(-1);
     }
-   if(distance_a_la_plus_proche_zone(p1,zones,nb_zones,&d)!=0){                             //test  distance_a_la_plus_proche (prise en compte de l'erreur)
+   if(distance_a_la_plus_proche_zone(p1,zones,nb_zones,&d)!=2){                             //test  distance_a_la_plus_proche (prise en compte de l'erreur)
         printf ("Erreur Test unitaire calcul_distance_plus_proche.\n");
          exit(-1);
     }
