Index: branch/faye_awasemou/sp4a12/main.c
===================================================================
--- branch/faye_awasemou/sp4a12/main.c	(revision 385)
+++ branch/faye_awasemou/sp4a12/main.c	(revision 386)
@@ -68,24 +68,66 @@
 
 
 // fonction qui convertit la latitude en un nombre flottant
-float conversion_latitude(char* latitude)
+float conversionLatitude(char* latitude)
 {
-    //exemple latitude=3723.2475--> 37valDegre, 23Min_Entiere,.2475MinDecimal
-    int i;
-    int valDegre, MinEntiere,MinDecimal;
-   // float DegreConverti, MinEntiereConverti,MinDecimalConverti;
-    float resultatConversion;
-    valDegre=decode_nombre(latitude,2);
-    MinEntiere=decode_nombre(&latitude[i+2],2);
-    MinDecimal=decode_nombre(&latitude[i+5],2);
-    resultatConversion=
+    //exemple latitude=3723.2475--> 37valDegre, 23Min_Entiere, (0.2475=2475*0.0001)2475MinDecimal donc 37,387458=37+(23+2475*0.0001)/60
+    int valDegre,MinEntiere,MinDecimal; //declaration des variables permettant de recuperer les valeurs en degre,minutes entieres et minutes decimales de la latitude
+    float resultatConversion ;
+    valDegre=decode_nombre(latitude,2);             //recuperer la valeur degre  de la latitude
+    MinEntiere=decode_nombre(&latitude[2],2);      //recuperer la valeur minute entiere de la latitude
+    MinDecimal=decode_nombre(&latitude[5],4);         //recuperer la valeur minute entiere de la latitude
+    resultatConversion=valDegre+((MinEntiere+MinDecimal*0.0001)/60);// resultat du conversion de la latitude en valeur reelle
+    return resultatConversion;
+}
 
 
 
+
+// fonction qui convertit la longitude en un nombre flottant
+float conversionLongitude(char* longitude)
+{
+    //exemple longitude =00306.6036,E signifie 3valDegre 06=MinEntiere , MinDecimal=6036' de longitude Est, soit 3,11006°
+    int valDegre, MinEntiere,MinDecimal;     //declaration des variables permettant de recuperer les valeurs en degre,minutes entieres et minutes decimales de la longitude
+    float resultatConversion;
+    valDegre=decode_nombre(longitude,3);             //recuperer la valeur degre  de la longitude
+    MinEntiere=decode_nombre(&longitude[3],2);      //recuperer la valeur minute entiere de la longitude
+    MinDecimal=decode_nombre(&longitude[6],4);         //recuperer la valeur minute entiere de la longitude
+    resultatConversion=valDegre +((MinEntiere+MinDecimal*0.0001)/60);// resultat de la conversion de la longitude en valeur reelle
+    return resultatConversion;
 }
 
+ // fonction qui convertit la latitude ou la longitude en flottant
+float fonctionGenerique(char* chaine)
+{
+float resultatConversion; // resultat de la conversion de la longitude ou la latitude en valeur reelle
+    if(chaine[4]=='.')  //comparaison pour connaitre si la 4ieme variable de la chaine est un point comme le montre cet exemple 3723.2475
+     {
+         resultatConversion=conversionLatitude(chaine);
+     }
+    else
+        if(chaine[5]=='.') //comparaison pour connaitre si la 5ieme variable de la chaine est un point comme le montre cet exemple 00306.6036
+        {
+            resultatConversion=conversionLongitude(chaine);
+        }
 
+    return resultatConversion;
+}
 
+// fonction qui permet de savoir si les trames sont au bon format "GPGGA" en renvoyant 1 et d'afficher la position cad la latitude et la longitude
+int decode_trame(char* trame,position * pos)
+{
+    //exempletrame="$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",
+    int i;
+    char ch[10];
+    if (trame_cmp(trame,"GPGGA"))
+    {
+            for (i=0;i<10;i++) ch[i]=trame[29+i];
+            pos->latitude=conversionLatitude(trame+17);
+            pos->longitude=conversionLongitude(ch);
+            return 1;
+    }
+     return 0;
+}
 
 
 
@@ -117,55 +159,80 @@
 
 
 //Ajouter vos tests unitaires dans cette fonction.
-void tests_unitaires(void){
-    if (5!=5){
-        printf ("Erreur Test unitaire basique.\n");
-        exit(-1);
-    }
-    if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
-        printf ("Erreur Test unitaire trame_cmp.\n");
-        exit(-1);
-    }
-    if (trame_cmp("$GPRMC suite chaine","GPGGA")!=0){
-         printf ("Erreur Test unitaire trame_cmp.\n");
+void tests_unitaires(void)
+{
+        if (5!=5){
+            printf ("Erreur Test unitaire basique.\n");
+            exit(-1);
+            }
+        if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
+            printf ("Erreur Test unitaire trame_cmp.\n");
+            exit(-1);
+            }
+        if (trame_cmp("$GPRMC suite chaine","GPGGA")!=0){
+             printf ("Erreur Test unitaire trame_cmp.\n");
+             exit(-1);
+            }
+        if (trame_cmp("$GPRMC... ", "GPRMC" )!=1){
+             printf ("Erreur Test unitaire trame_cmp.\n");
+             exit(-1);
+            }
+        if (trame_cmp("$APRMC...", "GPGGA")!=0){
+             printf ("Erreur Test unitaire trame_cmp.\n");
+             exit(-1);
+            }
+
+        if (decode_int('0')!=0){
+             printf ("Erreur Test unitaire decode_int.\n");
+             exit(-1);
+            }
+        if (decode_int('7')!=7){
+             printf ("Erreur Test unitaire decode_int.\n");
+             exit(-1);
+            }
+        if (decode_int('A')!=-1){
+             printf ("Erreur Test unitaire decode_int.\n");
+             exit(-1);
+            }
+
+        if (decode_nombre("7541",2)!=75){
+             printf ("Erreur Test unitaire decode_nombre.\n");
+             exit(-1);
+            }
+        if (decode_nombre("7541",3)!=754){
+             printf ("Erreur Test unitaire decode_nombre.\n");
+             exit(-1);
+            }
+
+
+        if (conversionLatitude("3723.2475")-37,387458 > 0.0001){
+         printf ("Erreur Test unitaire conversion Latitude.\n");
          exit(-1);
-    }
-    if (trame_cmp("$GPRMC... ", "GPRMC" )!=1){
-         printf ("Erreur Test unitaire trame_cmp.\n");
+            }
+
+            if (conversionLatitude("4545.0000")-45.7500 > 0.0001){
+         printf ("Erreur Test unitaire conversion Latitude.\n");
          exit(-1);
-    }
-    if (trame_cmp("$APRMC...", "GPGGA")!=0){
-         printf ("Erreur Test unitaire trame_cmp.\n");
+            }
+
+        if (conversionLongitude("00306.6039")- 3.110065 > 0.0001){
+         printf ("Erreur Test unitaire conversion Longitude.\n");
          exit(-1);
- }
-    if (decode_int('0')!=0){
-         printf ("Erreur Test unitaire decode_int.\n");
+            }
+
+
+        if (conversionLongitude("00306.6036")- 3.11006 > 0.0001){
+         printf ("Erreur Test unitaire conversion Longitude.\n");
          exit(-1);
-    }
-    if (decode_int('7')!=7){
-         printf ("Erreur Test unitaire decode_int.\n");
-         exit(-1);
- }
-   if (decode_int('A')!=-1){
-         printf ("Erreur Test unitaire decode_int.\n");
-         exit(-1);
- }
-    if (decode_nombre("7541",2)!=75){
-         printf ("Erreur Test unitaire decode_nombre.\n");
-         exit(-1);
- }
-   if (decode_nombre("7541",3)!=754){
-         printf ("Erreur Test unitaire decode_nombre.\n");
-         exit(-1);
- }
-}
+            }
+}
 
+
 // Ne pas modifier cette fonction
 int main(int argc,char ** argv)
 {
 
     tests_unitaires();
-
     // Affichage des trames definies dans la table trames.
     printf ("Trames de tests tableau trames:\n");
     int i=0;
