Index: branch/lacheze/sp4a12/main.c
===================================================================
--- branch/lacheze/sp4a12/main.c	(revision 188)
+++ branch/lacheze/sp4a12/main.c	(revision 189)
@@ -14,8 +14,13 @@
                     "$GPZDA,141914.00,01,02,2006,00,00*69",
                     0};
 
+typedef struct {
+    float latitude;
+    float longitude;
+}position;
+position p1;
 
-/*int trame_cmp(char* trame, char* type)
+int trame_cmp(char* trame, char* type)
 {
     int i ;
     int res;
@@ -28,7 +33,7 @@
         }
     }
     return res;
-}*/
+}
 
 int decode_int(char c)
 {
@@ -57,10 +62,10 @@
     float minute;
     float diminute;
     float resultat;
-    deg=(float)decode_nombre(&ch[0], 2);
-    minute=(float)decode_nombre(&ch[0+2],2);
+    deg=(float)decode_nombre(&ch[17], 2);
+    minute=(float)decode_nombre(&ch[17+2],2);
     minute=minute/60;
-    diminute=(float)decode_nombre(&ch[0+5],4);
+    diminute=(float)decode_nombre(&ch[17+5],4);
     diminute=diminute/600000;
     resultat=deg+minute+diminute;
     return resultat;
@@ -72,10 +77,10 @@
     float minute;
     float diminute;
     float resultat;
-    deg=decode_nombre(&ch[0],3);
-    minute=(float)decode_nombre(&ch[0+3],2);
+    deg=decode_nombre(&ch[29],3);
+    minute=(float)decode_nombre(&ch[29+3],2);
     minute=minute/60;
-    diminute=(float)decode_nombre(&ch[0+6],4);
+    diminute=(float)decode_nombre(&ch[29+6],4);
     diminute=diminute/600000;
     resultat=(float)deg+minute+diminute;
     return resultat;
@@ -93,6 +98,37 @@
         res=longitude(ch);
     }
     return res;
+}
+int decode_trame(char* trame, position *p)
+{
+    int res;
+    int trame_ok;
+    int i;
+    if(trame_cmp(trame,"GPGGA")==1)
+    {
+       trame_ok=1;
+       for (i=0;i<40;i++)
+       {
+           if(trame[i]==trame[i+1]&&trame[i]==',')
+           {
+               trame_ok=0;
+               res=0;
+               p->latitude=0;
+               p->longitude=0;
+           }
+       }
+       if(trame_ok==1)
+        {
+            p->latitude=latitude(trame);
+            p->longitude=longitude(trame);
+
+            res=1;
+        }
+    }
+    else{
+        res=0;
+    }
+    return res;
 }
 /*Fonction à modifier !!!!!*/
 void traitement(char * trame)
@@ -100,11 +136,21 @@
     static int cpt=0;
     cpt++;
     printf ("> %s\n",trame);
+    decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&p1);
+    printf("lat=%f  long=%f \n",p1.latitude, p1.longitude);
+    decode_trame("$GPGGA,141915.00,4545.0242,N,00306.6039,E,1,05,3.4,499.5,M,,M,,*72",&p1);
+    printf("lat=%f  long=%f \n",p1.latitude, p1.longitude);
+    decode_trame("$GPGGA,141915.00,,,00306.6039,E,1,05,3.4,499.5,M,,M,,*72",&p1);
+    printf("lat=%f  long=%f \n",p1.latitude, p1.longitude);
+    decode_trame("$GPGGC,141914.00,4545.0000,N,,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&p1);
+    printf("lat=%f  long=%f \n",p1.latitude, p1.longitude);
+    exit(-1);
 
     /*if (trame_cmp(trame, "GPGGA")==1)
     {
         printf ("> %s\n",trame);
-    }*/
+    }*/
+
 }
 
 /*Ajouter vos tests unitaires dans cette fonction.*/
@@ -177,7 +223,7 @@
         exit(-1);
     }
     }*/
-    if ((lat_long("00306.6036")-003.11006)>0.01)
+    /*if ((lat_long("00306.6036")-003.11005)>0.01)
     {
         printf("Erreur Test unitaire trame\n");
         exit(-1);
@@ -186,7 +232,47 @@
     {
         printf("Erreur Test unitaire trame\n");
         exit(-1);
-    }
+    }*/
+
+    /*if (decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&p1)!=1)
+    {
+        printf("valeur de retour differente de 1 ");
+        if(decode_trame("$GPGGA,141914.00,4545.0000,N,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&p1)!=0)
+        {
+            printf("Erreur test unitaire trame \n");
+            exit(-1);
+        }
+    }
+
+    if (decode_trame("$GPGGA,141915.00,4545.0242,N,00306.6039,E,1,05,3.4,499.5,M,,M,,*72",&p1)!=1)
+    {
+        printf("valeur de retour differente de 1 ");
+        if(decode_trame("$GPGGA,141915.00,4545.0242,N,00306.6039,E,1,05,3.4,499.5,M,,M,,*72",&p1)!=0)
+        {
+            printf("Erreur test unitaire trame \n");
+            exit(-1);
+        }
+    }
+
+    if (decode_trame("$GPGGA,141915.00,,,00306.6039,E,1,05,3.4,499.5,M,,M,,*72",&p1)!=1)
+    {
+        printf("valeur de retour differente de 1 ");
+        if(decode_trame("$GPGGA,141915.00,,,00306.6039,E,1,05,3.4,499.5,M,,M,,*72",&p1)!=0)
+        {
+            printf("Erreur test unitaire trame \n");
+            exit(-1);
+        }
+    }
+
+    if (decode_trame("$GPGGC,141914.00,4545.0000,N,,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&p1)!=1)
+    {
+        printf("valeur de retour differente de 1 ");
+        if(decode_trame("$GPGGC,141914.00,4545.0000,N,,00306.6036,E,1,05,3.4,499.3,M,,M,,*7D",&p1)!=0)
+        {
+            printf("Erreur test unitaire trame \n");
+            exit(-1);
+        }
+    }*/
 }
 
 /* Ne pas modifier cette fonction*/
