Skip to content

Commit

Permalink
Implement Garmin (GPX) TrackPoint Extension (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
pcolby committed Jan 8, 2015
1 parent 31aa06b commit bc7a13f
Show file tree
Hide file tree
Showing 14 changed files with 122,661 additions and 14 deletions.
35 changes: 35 additions & 0 deletions src/polar/v2/trainingsession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1283,6 +1283,10 @@ QDomDocument TrainingSession::toGPX(const QDateTime &creationTime) const
gpx.setAttribute(QLatin1String("xmlns:gpxdata"),
QLatin1String("http://www.cluetrust.com/XML/GPXDATA/1/0"));
}
if (gpxOptions.testFlag(GarminTrackPointExtension)) {
gpx.setAttribute(QLatin1String("xmlns:gpxtpx"),
QLatin1String("http://www.garmin.com/xmlschemas/TrackPointExtension/v1"));
}
doc.appendChild(gpx);

QDomElement metaData = doc.createElement(QLatin1String("metadata"));
Expand Down Expand Up @@ -1415,6 +1419,37 @@ QDomDocument TrainingSession::toGPX(const QDateTime &creationTime) const
}
}

if (gpxOptions.testFlag(GarminTrackPointExtension)) {
QDomElement trackPointExtension = doc.createElement(
QLatin1String("gpxtpx:TrackPointExtension"));

if (index < temperature.length()) {
trackPointExtension.appendChild(doc.createElement(QLatin1String("gpxtpx:atemp")))
.appendChild(doc.createTextNode(QString::fromLatin1("%1")
.arg(temperature.at(index).toFloat())));
}

if ((index < heartrate.length()) &&
(!sensorOffline(samples.value(QLatin1String("heartrate-offline")).toList(), index))) {
const uint hr = heartrate.at(index).toUInt();
if ((hr >= 1) && (hr <= 255)) { // Schema enforced.
trackPointExtension.appendChild(doc.createElement(QLatin1String("gpxtpx:hr")))
.appendChild(doc.createTextNode(QString::fromLatin1("%1").arg(hr)));
}
}

if ((index < cadence.length()) &&
(!sensorOffline(samples.value(QLatin1String("altitude-offline")).toList(), index))) {
const uint cad = cadence.at(index).toUInt();
if (cad <= 254) { // Schema enforced.
trackPointExtension.appendChild(doc.createElement(QLatin1String("gpxtpx:cad")))
.appendChild(doc.createTextNode(QString::fromLatin1("%1").arg(cad)));
}
}

extensions.appendChild(trackPointExtension);
}

trkpt.appendChild(extensions);
}
trkseg.appendChild(trkpt);
Expand Down
Loading

0 comments on commit bc7a13f

Please sign in to comment.