LEcture GPS Xbee sous interruption

Files at this revision

API Documentation at this revision

Comitter:
pascalreygner
Date:
Tue Aug 07 09:06:22 2018 +0000
Parent:
1:fba6b514d8d7
Child:
3:9a24090ff482
Commit message:
V03

Changed in this revision

Threads.lib Show diff for this revision Revisions of this file
gps-ea-acc023.cpp Show annotated file Show diff for this revision Revisions of this file
gps-ea-acc023.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show diff for this revision Revisions of this file
--- a/Threads.lib	Wed Jul 11 12:47:09 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/lemniskata/code/Threads/#d370bed31f45
--- a/gps-ea-acc023.cpp	Wed Jul 11 12:47:09 2018 +0000
+++ b/gps-ea-acc023.cpp	Tue Aug 07 09:06:22 2018 +0000
@@ -8,7 +8,6 @@
 #include "mbed.h"
 #include <stdlib.h>
 #include <stdio.h>
-#include "Threads.h"
 
 using namespace gpsxbee_MT3339;
 static GpsXbee gpsxbee;
@@ -16,7 +15,6 @@
 
 void GpsXbee::GpsXbeeInit(void)
 {
-    InitRMC();
     NmeaSentence = NMEA_INVALID;
     gpsTrameRMC = TRAME_WAIT;
     gpsTrameGGA = TRAME_WAIT;
@@ -94,22 +92,22 @@
 
                     if (NmeaSentence == NmeaRmc ) { // décodage trame type "RMC"
                         if (rmc_warning == 'A') { // si données GPS valables : les afficher
-                            sprintf(gpsData,"%.2i/%.2i/%.2i:%.2iH%.2imn%.2is - Lat. = %f%c - Long. = %f%c",rmc_jours,rmc_mois,rmc_ans,rmc_hours,rmc_minutes,rmc_seconds,getLatitudeAsDegrees(rmc_latitude,rmc_nsIndicator),rmc_nsIndicator,getLongitudeAsDegrees(rmc_longitude,rmc_ewIndicator),rmc_ewIndicator);
+                            sprintf(gpsDataRMC,"%.2i/%.2i/%.2i:%.2iH%.2imn%.2is - Lat. = %f%c - Long. = %f%c",rmc_jours,rmc_mois,rmc_ans,rmc_hours,rmc_minutes,rmc_seconds,getLatitudeAsDegrees(rmc_latitude,rmc_nsIndicator),rmc_nsIndicator,getLongitudeAsDegrees(rmc_longitude,rmc_ewIndicator),rmc_ewIndicator);
                             gpsTrameRMC = TRAME_OK;  // Trame complète OK
 
                         } else {
-                            sprintf(gpsData,"NMEARMC : %.2i/%.2i/%.2i:%.2iH%.2imn%.2is --- Valeurs GPS incorrectes",rmc_jours,rmc_mois,rmc_ans,rmc_hours,rmc_minutes,rmc_seconds);
+                            sprintf(gpsDataRMC,"NMEARMC : %.2i/%.2i/%.2i:%.2iH%.2imn%.2is --- Valeurs GPS incorrectes",rmc_jours,rmc_mois,rmc_ans,rmc_hours,rmc_minutes,rmc_seconds);
                         }
                     }
                     /* pour afficher les autres protocoles */
                     else if (NmeaSentence == NmeaGga) { // décodage trame type "RMC"
                         if (gga_fix == 1) {// si données GPS valables : les afficher
-                            sprintf(gpsData,"%.2iH%.2imn%.2is --- Latitude = %f%c  --- Longitude = %f%c - Nb sat = %i",gga_hours,gga_minutes,gga_seconds,getLatitudeAsDegrees(gga_latitude,gga_nsIndicator),gga_nsIndicator,getLongitudeAsDegrees(gga_longitude,gga_ewIndicator),gga_ewIndicator,gga_satellites);
+                            sprintf(gpsDataGGA,"%.2iH%.2imn%.2is --- Latitude = %f%c  --- Longitude = %f%c - Nb sat = %i",gga_hours,gga_minutes,gga_seconds,getLatitudeAsDegrees(gga_latitude,gga_nsIndicator),gga_nsIndicator,getLongitudeAsDegrees(gga_longitude,gga_ewIndicator),gga_ewIndicator,gga_satellites);
                             gpsTrameGGA = TRAME_OK;  // Trame complète OK
                         } else
-                            sprintf(gpsData,"NMEAGGA : %.2iH%.2imn%.2is --- Valeurs GPS incorrectes",gga_hours,gga_minutes,gga_seconds);
+                            sprintf(gpsDataGGA,"NMEAGGA : %.2iH%.2imn%.2is --- Valeurs GPS incorrectes",gga_hours,gga_minutes,gga_seconds);
                     }    // pour les autres types (VTG/GGA/GSV) affiche uniquement la trame reçue
-                    else memcpy(gpsData,gpsBuf,sizeof(gpsBuf));
+                    else memcpy(gpsDataRMC,gpsBuf,sizeof(gpsBuf));
                 } else {
                     gpsBuf[gpsBufPos++] = car; // enregistre caractère suivant de la trame
                 }
--- a/gps-ea-acc023.h	Wed Jul 11 12:47:09 2018 +0000
+++ b/gps-ea-acc023.h	Tue Aug 07 09:06:22 2018 +0000
@@ -6,7 +6,8 @@
  * Caractères reçus sous interruption (UART1-RX)
  *
  * V2 14/3/2018 - ajout décodage trame GGA
- *
+ * V3 7/8/2018  - DEBUG AFFICHAGE RMC + GGA / suppression librairies inutiles
+ 
  * Exemple d'utilisation class GpsXbee (IRQ compatible) :
 @code
 #include "mbed.h"
@@ -24,14 +25,12 @@
     pc2.baud(115200); // liaison vers PC DEBUG
     gpsxbee.GpsXbeeInit();
     while(1) {
-        if (gpsxbee.gpsTrameRMC == gpsxbee.TRAME_OK) {
+        if (gpsxbee.gpsTrameRMC == gpsxbee.TRAME_OK && gpsxbee.gpsTrameGGA == gpsxbee.TRAME_OK) {
             gpsxbee.gpsTrameRMC = gpsxbee.TRAME_WAIT;
-            printf(" RMC = %s\r\n",gpsxbee.gpsData);
-            led4_GPSON = !led4_GPSON;
-        }
-        if (gpsxbee.gpsTrameGGA == gpsxbee.TRAME_OK) {
+            printf(" RMC = %s\r\n",gpsxbee.gpsDataRMC);
+
             gpsxbee.gpsTrameGGA = gpsxbee.TRAME_WAIT;
-            printf(" GGA = %s\r\n",gpsxbee.gpsData);
+            printf(" GGA = %s\r\n",gpsxbee.gpsDataGGA);
             led4_GPSON = !led4_GPSON;
         }
     }
@@ -39,8 +38,9 @@
 @endcode
 
  *  Résultat  = Affichage sur terminal PC (115200 bauds) : Trames décodées :
-        NMEAGGA : 08H34mn32s --- Latitude = 44.957730N  --- Longitude = -0.666333W - Nb sat = 9
-        NMEARMC : 08/06/18:10H34mn32s - Lat. = 44.957730N - Long. = -0.666333W
+        RMC : 08/06/18:10H34mn32s - Lat. = 44.957730N - Long. = -0.666333W
+        GGA : 08H34mn32s --- Latitude = 44.957730N  --- Longitude = -0.666333W - Nb sat = 9
+
  */
 
 #ifndef GPSXBEE_H_
@@ -114,7 +114,8 @@
     double gga_altitude;    /** antenna altitude above/below mean sea-level */
     double gga_geoidal;     /** geoidal separation */
 
-    char gpsData[200];      /** buffer pour affichage */
+    char gpsDataRMC[200];      /** buffer pour affichage data RMC*/
+    char gpsDataGGA[200];      /** buffer pour affichage data GGA*/
 
 private :
     #define MTK3339_BUF_SZ 200      // Taille gpsBuf
--- a/main.cpp	Wed Jul 11 12:47:09 2018 +0000
+++ b/main.cpp	Tue Aug 07 09:06:22 2018 +0000
@@ -13,14 +13,12 @@
     pc2.baud(115200); // liaison vers PC DEBUG
     gpsxbee.GpsXbeeInit();
     while(1) {
-        if (gpsxbee.gpsTrameRMC == gpsxbee.TRAME_OK) {
+        if (gpsxbee.gpsTrameRMC == gpsxbee.TRAME_OK && gpsxbee.gpsTrameGGA == gpsxbee.TRAME_OK) {
             gpsxbee.gpsTrameRMC = gpsxbee.TRAME_WAIT;
-            printf(" RMC = %s\r\n",gpsxbee.gpsData);
-            led4_GPSON = !led4_GPSON;
-        }
-        if (gpsxbee.gpsTrameGGA == gpsxbee.TRAME_OK) {
+            printf(" RMC = %s\r\n",gpsxbee.gpsDataRMC);
+
             gpsxbee.gpsTrameGGA = gpsxbee.TRAME_WAIT;
-            printf(" GGA = %s\r\n",gpsxbee.gpsData);
+            printf(" GGA = %s\r\n",gpsxbee.gpsDataGGA);
             led4_GPSON = !led4_GPSON;
         }
     }
--- a/mbed-rtos.lib	Wed Jul 11 12:47:09 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/#5dfe422a963d