From d993f7b3c8222ecbd2cb2a5290cdb7864e802614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Walter=20B=C3=BCrki?= Date: Sun, 15 Sep 2013 19:17:02 +0200 Subject: [PATCH] adding hr,cad,power,temp of Suunto Ambit gpx files --- src/GpxParser.cpp | 34 +++++++++++++++++++++++++++------- src/GpxParser.h | 17 ++++++++++------- 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/GpxParser.cpp b/src/GpxParser.cpp index f8c2b7249..b7ae6924c 100644 --- a/src/GpxParser.cpp +++ b/src/GpxParser.cpp @@ -38,12 +38,15 @@ GpxParser::GpxParser (RideFile* rideFile) if (GarminHWM.isNull() || GarminHWM.toInt() == 0) GarminHWM.setValue(25); // default to 25 seconds. + cad = 0; distance = 0; lastLat = lastLon = 0; - alt =0; + watts = 0; + alt = 0; lon = 0; lat = 0; hr = 0; + temp = RideFile::noTemp; firstTime = true; metadata = false; @@ -122,8 +125,25 @@ bool } else if (qName == "gpxtpx:hr") { - hr = buffer.toInt(); // metric + hr = buffer.toInt(); } + else if (qName == "gpxdata:hr") + { + hr = buffer.toDouble(); // on suunto ambit export file, there are sometimes double values + } + else if (qName == "gpxdata:temp") + { + temp = buffer.toDouble(); + } + else if (qName == "gpxdata:cadence") + { + cad = buffer.toDouble(); + } + else if (qName == "gpxdata:bikepower") // hopefully suunto adds bikepower data to gpx export file, as it is on saved moveslink log_.xml + { + watts = buffer.toDouble(); + } + else if (qName == "trkpt") { @@ -177,7 +197,7 @@ bool if(rideFile->dataPoints().empty()) { // first point - rideFile->appendPoint(secs, 0, hr, distance, speed, 0, 0, alt, lon, lat, 0, 0.0, RideFile::noTemp, 0.0, 0); + rideFile->appendPoint(secs, cad, hr, distance, speed, 0, watts, alt, lon, lat, 0, 0.0, temp, 0.0, 0); } else { // assumption that the change in ride is linear... :) @@ -196,7 +216,7 @@ bool (secs == 0)) { // no smart recording, or delta exceeds HW treshold, or no time elements; just insert the data - rideFile->appendPoint(secs, 0, hr, distance, speed, 0,0, alt, lon, lat, 0, 0.0, RideFile::noTemp, 0.0, 0); + rideFile->appendPoint(secs, cad, hr, distance, speed, 0,watts, alt, lon, lat, 0, 0.0, temp, 0.0, 0); } else { @@ -210,18 +230,18 @@ bool double lon = prevPoint->lon + (deltaLon * weight); rideFile->appendPoint( prevPoint->secs + (deltaSecs * weight), - 0, + cad, hr, prevPoint->km + (deltaDist * weight), kph, 0, - 0, + watts, prevPoint->alt + (deltaAlt * weight), lon, // lon lat, // lat 0, 0.0, - RideFile::noTemp, + temp, 0, 0); } diff --git a/src/GpxParser.h b/src/GpxParser.h index 4685bb2bd..06ebd2f00 100644 --- a/src/GpxParser.h +++ b/src/GpxParser.h @@ -42,22 +42,25 @@ public: private: - RideFile* rideFile; + RideFile* rideFile; - QString buffer; + QString buffer; QVariant isGarminSmartRecording; QVariant GarminHWM; - QDateTime start_time; - QDateTime last_time; - QDateTime time; - double distance; + QDateTime start_time; + QDateTime last_time; + QDateTime time; + double distance; double lastLat, lastLon; double alt; double lat; double lon; - int hr; + double hr; + double temp; + double cad; + double watts; // set to false after the first time element is seen (not in metadata) bool firstTime;