Index: branch/fall_massamba/sp4a12/main.c
===================================================================
--- branch/fall_massamba/sp4a12/main.c	(revision 297)
+++ branch/fall_massamba/sp4a12/main.c	(revision 298)
@@ -1,268 +1,391 @@
+
 #include <stdio.h>
+
 #include <stdlib.h>
-#include <string.h>
+
+#include <strings.h>
+
 #include "trame.h"
+
 #include <math.h>
 
-//Trames de tests à modifier si nécessaire.
+//Trames de tests ? modifier si n?cessaire.
+
 char * trames[]=  {"$GPGSV,3,2,10,15,03,077,,18,04,041,42,19,85,271,,20,08,214,*7C",
+
                     "$GPGSV,3,3,10,22,39,053,50,28,15,320,*7E",
+
                     "$GPRMC,141914.00,A,4545.6424,N,00306.6036,E,0.4,99.4,010206,,*0C",
+
                     "$GPGLL,4545.6424,N,00306.6036,E,141914.00,A*0E",
+
                     "$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",
+
                     "$GPGSA,A,3,,03,,22,14,,01,,18,,,,3.9,3.4,1.9*39",
+
                     "$GPVTG,99.4,T,,M,0.4,N,0.7,K*57",
+
                     "$GPZDA,141914.00,01,02,2006,00,00*69",
+
                     0};
 
+ // Fonction trame_cmp
 
-int decode_int(char c) /* je l'avais mis en dessous du void decode voila pourquoi ça ne marchait pas*/
+int trame_cmp (char * trame, char * type) {
+
+    int i=0;
+
+    int verif = 0;
+
+    int j;
+
+    while (type[i] != '\0') {
+
+        i++;
+
+    }
+
+    for (j=0;j<i;j++){
+
+        if (trame[j+1] != type[j]){
+
+            verif = 0;
+
+            j=i;
+
+        }
+
+        else {
+
+            verif = 1;
+
+        }
+
+    }
+
+    return verif;
+
+    }
+
+// Fonction decode_int
+
+int decode_int(char c)
+
 {
 
     int res;
 
-    if(c >= 48 && c <= 57)
-    {
+    if (c >= 48 && c<=57) {
+
         res = c-48;
+
     }
-    else
-    {
+
+    else {
+
         res = -1;
+
     }
+
     return res;
+
 }
 
-void test_decode_int(void)
-{
-    if(decode_int('0') != 0)
+// Fonction decode_nombre
+
+/*
+
+ int decode_nombre_1(char *ch,int n)
+
+ {
+
+ int tab[n],i=0;
+
+ int res2=0;
+
+
+    for(i=0;i<n;i++)
+
     {
-        printf ("Erreur Test unitaire decode_int.\n");
-        exit(-1);
+
+        tab[i]=decode_int(ch[i]);
+
+        res2=res2*10+tab[i];
+
+
     }
-    if(decode_int('1') != 1)
+
+    return res2;
+
+ } */
+
+ float decode_nombre (char * trame) {
+
+    int i=0;
+
+    int j=0,memoire=0;
+
+    long res3=0;
+
+    char tab[9];
+
+    long res4=0;
+
+    while (i<10)
+
     {
-        printf ("Erreur Test unitaire decode_int.\n");
-        exit(-1);
+
+        if (decode_int(trame[i])!=(-1))
+
+        {
+
+            tab [j]=decode_int(trame[i]);
+
+            res3 = res3*10+tab[j];
+
+            memoire++;
+
+        }
+
+        i++;
+
+        j++;
+
     }
-    if(decode_int('2') != 2)
+
+   /* while (i<12)
+
     {
-        printf ("Erreur Test unitaire decode_int.\n");
-        exit(-1);
-    }
-    if(decode_int('3') != 3)
+
+        if (decode_int(trame[i]=='S'))
+
+        {
+
+
+            res4 = res3 - (2*res3);
+
+            printf("%d\n",res4);
+
+        }
+
+        else
+
+        {
+
+            res4 = res3;
+
+        }
+
+        i++;
+
+    } */
+
+    switch(trame[memoire+2])
+
     {
-        printf ("Erreur Test unitaire decode_int.\n");
-        exit(-1);
+
+    case 'S' :
+
+        res3 = res3*(-1);
+
+        break;
+
+    case 'W' :
+
+        res3 = res3*(-1);
+
+        break;
+
     }
-    if(decode_int('4') != 4)
-    {
-        printf ("Erreur Test unitaire decode_int.\n");
-        exit(-1);
+
+    return res3;
+
+ }
+
+ float Conversion_sexagesimale(long nb_sexa)
+
+{
+
+    float result=0,reste, result_min=0;
+
+    int degres=0;
+
+    degres=nb_sexa/1000000;
+
+    result_min=(nb_sexa-(degres*1000000));
+
+    result_min=(reste/10000);
+
+    result=(degres+(reste/60));
+
+    return result;
+
+}
+
+//Fonction ? modifier !!!!!
+
+void traitement(char * trame)
+
+{
+
+    static int cpt=0 ;
+
+    cpt++ ;
+
+    if (trame_cmp(trame,"GPGGA")==1) {
+
+       printf ("> %s\n",trame);
+
     }
-    if(decode_int('5') != 5)
-    {
-        printf ("Erreur Test unitaire decode_int.\n");
+
+}
+
+//Ajouter vos tests unitaires dans cette fonction.
+
+void tests_unitaires(void){
+
+    if (5!=5){
+
+        printf ("Erreur Test unitaire basique.\n");
+
         exit(-1);
+
     }
-    if(decode_int('6') != 6)
-    {
-        printf ("Erreur Test unitaire decode_int.\n");
+
+    if (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
+
+        printf ("Erreur Test unitaire trame_cmp.\n");
+
         exit(-1);
+
     }
-    if(decode_int('7') != 7)
-    {
-        printf ("Erreur Test unitaire decode_int.\n");
+
+    if (trame_cmp("$GPRMC suite chaine","GPGGA")!=0){
+
+        printf ("Erreur Test unitaire trame_cmp.\n");
+
         exit(-1);
+
     }
-    if(decode_int('8') != 8)
-    {
-        printf ("Erreur Test unitaire decode_int.\n");
+
+    if (trame_cmp("$GPRMC... ", "GPRMC" )!=1){
+
+        printf ("Erreur Test unitaire trame_cmp.\n");
+
         exit(-1);
+
     }
-    if(decode_int('9') != 9)
-    {
-        printf ("Erreur Test unitaire decode_int.\n");
+
+    if (trame_cmp("$APRMC...", "GPGGA")!=0){
+
+        printf ("Erreur Test unitaire trame_cmp.\n");
+
         exit(-1);
+
     }
-    if(decode_int('L') != (-1))
-    {
-        printf ("Erreur Test unitaire decode_int.\n");
-        exit(-1);
-    }
-}
 
+    test_decode_int();
 
-int decode_nombre(char *ch, int n)
-{
-    int i, r=0;
-    for (i=0; i<n; i++)
-    {
-        r=r*10+decode_int(ch[i]);
-    }
-    return r;
-}
+    test_decode_nombre();
 
-
-void test_decode_nombre(void)
-{
-    if (decode_nombre("171",3)!=171)
-    {
-        printf ("Erreur Test unitaire decode_nombre.\n");
-        exit(-1);
-    }
 }
 
-double decode_latitude(char *ch)
-{
-    // Par exemple ch = "4545.1234"
-    double res;
+void test_decode_int(void) {
 
-    char c1[5];
-    char c2[5];
+  /*  char i;
 
-    for (int i = 0; i < 4; i++)
-    {
-        c1[i] = ch[i];
-    }
+   for (i=0;i>127;i++)
 
-    for (int i = 0; i < 4; i++)
     {
-        c2[i] = ch[i+5];
-    }
 
-    float partie_1 = (float) decode_nombre(c1, 4); // = 4545
-    float partie_2 = (float) decode_nombre(c2, 4); // = 1234 => 0.1234
+        if (decode_int(i)==(-1))
 
-    res = partie_1 + partie_2 * 0.0001;
+        {
 
-    return res;
-}
+            printf("La conversion est pas bonne \n");
 
-double decode_longitude(char *ch)
-{
-    // Par exemple ch = "4848.2456"
-    double res;
+            exit (-1);
 
-    char c1[5];
-    char c2[5];
+        }
 
-    for (int i = 0; i < 4; i++)
-    {
-        c1[i] = ch[i];
     }
 
-    for (int i = 0; i < 4; i++)
-    {
-        c2[i] = ch[i+5];
+    if (decode_int('A')!=(-1)) {
+
+        printf("La conversion c'est mal pass? \n");
+
+        exit (-1);
+
     }
 
-    float partie_1 = (float) decode_nombre(c1, 4); // = 4848
-    float partie_2 = (float) decode_nombre(c2, 4); // = 2456=> 0.2456
+    if (decode_int('0')==(-1)) {
 
-    res = partie_1 + partie_2 * 0.0001;
+        printf("La conversion c'est mal pass? \n");
 
-    return res;
-}
+        exit (-1);
 
+    }
 
-void test_decode_latitude()
-{
-    if (!(fabs(decode_latitude("4545.1234") - 4545.1234 ) < 1e-10))
-        exit(-1);
-}
+*/
 
-void test_decode_longitude()
-{
-    if (!(fabs(decode_latitude("4848.2456") - 4848.2456 ) < 1e-10))
-        exit(-1);
 }
 
-int trame_cmp(char*trame,char*type)
-{
-    int i =0, j=0, res=1;
-    while(type[i]!='\0')
-    {
-        i++;
+void test_decode_nombre (void) {
 
-    }
-    while(j<i)
-    {
-        if(trame[j+1]!=type[j])
-        {
-            res =0;
-        }
-            j++;
-    }
-    return res;
+  long resultat = decode_nombre("4343.0000,N");
+
+    printf("Le resultat est : %d\n",resultat);
+
+  float resultat2 = Conversion_sexagesimale(resultat);
+
+    printf("Le resultat de la conversion est : %f\n",resultat2);
+
 }
-//Fonction à modifier !!!!!
-void traitement(char * trame)//https://forge.uca.fr/svn/https-forge-uca-fr-svn-polytech-ge-sp4abc-2022/branch/fall_massamba
-{
-    static int cpt=0;//https://forge.uca.fr/svn/https-forge-uca-fr-svn-polytech-ge-sp4abc-2022/branch/fall_massamba
-    cpt++;
-    if (trame_cmp( trame,"GPGGA"))
-        printf ("> %s\n",trame);
-}
 
-//Ajouter vos tests unitaires dans cette fonction.
-void tests_unitaires(void)
-{
+/*
 
-    test_decode_int();
+void test_conversion (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 (trame_cmp("$GPGGA suite chaine","GPGGA")!=1){
-        printf ("Erreur Test uhttps://forge.uca.fr/svn/https-forge-uca-fr-svn-polytech-ge-sp4abc-2022/branch/fall_massambanitaire trame_cmp.\n");
-        exit(-1);
-    }*/
 
-    test_decode_latitude();
+
 }
 
+*/
 
 // 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;
+
     while (trames[i])
+
         traitement(trames[i++]);
 
-//    if (!trame_init())
-//        exit(-1);
-//    // Affichage des trames du fichier gps.log
-//    char *trame;
-//    printf ("Trames de tests du fichier gps.log\n");
-//    while  ((trame = trame_suivante()))
-//        traitement(trame);
+    if (!trame_init())
 
+        exit(-1);
+
+    // Affichage des trames du fichier gps.log
+
+    char *trame;
+
+    printf ("Trames de tests du fichier gps.log\n");
+
+    while  ((trame = trame_suivante()))
+
+        traitement(trame);
+
     return 0;
-}
+
+}
+
+
