Library for the EM-406 GPS module with time export support added

Fork of GPS by Simon Ford

Files at this revision

API Documentation at this revision

Comitter:
WilliamO7
Date:
Tue Mar 06 14:34:03 2018 +0000
Parent:
5:fdac9c46157b
Commit message:
this is useless

Changed in this revision

GPS.cpp Show diff for this revision Revisions of this file
GPS.h Show diff for this revision Revisions of this file
diff -r fdac9c46157b -r c22b014ae4d0 GPS.cpp
--- a/GPS.cpp	Mon Mar 05 16:17:03 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,90 +0,0 @@
-/* mbed EM-406 GPS Module Library with time return support
- * Copyright (c) 2008-2010, sford
- * Copyright (c) 2018 WilliamO7
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-#include <cstdlib>
-#include "GPS.h"
-
-GPS::GPS(PinName tx, PinName rx) : _gps(tx, rx) {
-    _gps.baud(4800);    
-    longitude = 0.0;
-    latitude = 0.0;  
-    time_utc = 0.0;
-    sats = 0;   
-}
-
-int GPS::sample() {
-    float time;
-    char ns, ew;
-    int lock;
-    char satnum_buf[2];
-
-    while(1) {        
-        getline();
-
-        // Check if it is a GPGGA msg (matches both locked and non-locked msg)
-        if(sscanf(msg, "GPGGA,%f,%f,%c,%f,%c,%d,%s", &time, &latitude, &ns, &longitude, &ew, &lock, satnum_buf) >= 1) { 
-            int satnum = std::atoi(satnum_buf);
-            if(!lock || satnum < 4) {
-                longitude = 0.0;
-                latitude = 0.0;   
-                time_utc = 0.0; 
-                sats = satnum;    
-                return 0;
-            } else {
-                if(ns == 'S') {    latitude  *= -1.0; }
-                if(ew == 'W') {    longitude *= -1.0; }
-                float degrees = trunc(latitude / 100.0f);
-                float minutes = latitude - (degrees * 100.0f);
-                latitude = degrees + minutes / 60.0f;    
-                degrees = trunc(longitude / 100.0f * 0.01f);
-                minutes = longitude - (degrees * 100.0f);
-                longitude = degrees + minutes / 60.0f;
-                time_utc = time;
-                sats = satnum; 
-                return 1;
-            }
-        }
-    }
-}
-
-float GPS::trunc(float v) {
-    if(v < 0.0) {
-        v*= -1.0;
-        v = floor(v);
-        v*=-1.0;
-    } else {
-        v = floor(v);
-    }
-    return v;
-}
-
-void GPS::getline() {
-    while(_gps.getc() != '$');    // wait for the start of a line
-    for(int i=0; i<256; i++) {
-        msg[i] = _gps.getc();
-        if(msg[i] == '\r') {
-            msg[i] = 0;
-            return;
-        }
-    }
-    error("Overflowed message limit");
-}
\ No newline at end of file
diff -r fdac9c46157b -r c22b014ae4d0 GPS.h
--- a/GPS.h	Mon Mar 05 16:17:03 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/* mbed EM-406 GPS Module Library with time return support
- * Copyright (c) 2008-2010, sford
- * Copyright (c) 2018 WilliamO7
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-
-#include "mbed.h"
-
-#ifndef MBED_GPS_H
-#define MBED_GPS_H
-
-/**  A GPS interface for reading from a Globalsat EM-406 GPS Module */
-class GPS {
-public:
-
-    /** Create the GPS interface, connected to the specified serial port
-     */    
-    GPS(PinName tx, PinName rx);
-    
-    /** Sample the incoming GPS data, returning whether there is a lock
-     * 
-     * @return 1 if there was a lock when the sample was taken (and therefore .longitude and .latitude are valid), else 0
-     */
-    int sample();
-    
-    /** The longitude (call sample() to set) */
-    float longitude;
-
-    /** The latitude (call sample() to set) */
-    float latitude;
-    
-    /** The time in UTC float format (call sample() to set) */
-    float time_utc;
-    
-    /** Number of satellites (call sample() to set) */
-    int sats;
-    
-private:
-    float trunc(float v);
-    void getline();
-    
-    Serial _gps;
-    char msg[256];
-
-};
-
-#endif