gps

Dependents:   adafruit-gps BMC

Revision:
1:42f840c832b6
Parent:
0:a23e3099bb0a
Child:
2:90f2232bbdfd
--- a/MBed_Adafruit_GPS.cpp	Sat Mar 22 05:00:47 2014 +0000
+++ b/MBed_Adafruit_GPS.cpp	Thu Jan 23 18:08:12 2020 +0000
@@ -12,6 +12,8 @@
 
 #include "MBed_Adafruit_GPS.h"
 
+#define M_PI 3.14159265358979323846
+
 // how long are max NMEA lines to parse?
 #define MAXLINELENGTH 120
 
@@ -347,4 +349,72 @@
   else {
       return false;  // Returns false if not in standby mode, nothing to wakeup
   }
-}
\ No newline at end of file
+}
+
+float Adafruit_GPS::coordToDegDec(float coord) {
+    float dd, ss, codd;
+    
+    dd = (int)(coord/100);
+    dd = (float)dd;    
+    ss = coord - dd*100;   
+    codd = dd + (ss/60);
+    
+    return codd;
+}
+
+float Adafruit_GPS::getDistance(float lat_1, float lon_1, float lat_2, float lon_2) {
+    float dlat; 
+    float dlon; 
+    float a, c, d;
+    float R = 6371000;
+    //char u[] = "km";
+    
+    dlat = (lat_2-lat_1)/100;
+    dlon = (lon_2-lon_1)/100;
+    
+    dlat = dlat * (M_PI/180);
+    dlon = dlon * (M_PI/180);
+    
+    lat_1 = (lat_1/100) * (M_PI/180);
+    lat_2 = (lat_2/100) * (M_PI/180);   
+    
+    a = pow((sin(dlat/2)),2)+cos(lat_1)*cos(lat_2)*pow((sin(dlon/2)),2);
+    c = 2*atan2((sqrt(a)),(sqrt(1-a)));
+    d = R*c;
+    
+    //if (R<1) {
+    //    u = "m"
+    // }
+    
+    return d;
+}
+
+float Adafruit_GPS::getSteps(float distance, float height) {
+    float steps, avg_steps;
+    
+    avg_steps = 0.413*(height/100);
+    steps = distance/avg_steps;
+    
+    return steps;
+}
+
+float Adafruit_GPS::getAvgSpeed(float distance, int t) {
+    float avg_speed;
+    
+    t = (float) t;
+    
+    avg_speed = (distance/1000)/(t/3600);
+    
+    return avg_speed;
+}
+
+/*
+float toRadians(float deg) {
+    float rad;
+    
+    rad = deg * (M_PI/180);
+    
+    return rad;
+}
+*/
+    
\ No newline at end of file