Skip to content

Commit

Permalink
Implement TCX {Average,Maximum}HeartRateBpm elements
Browse files Browse the repository at this point in the history
Relates to issue #16.
  • Loading branch information
pcolby committed Aug 1, 2014
1 parent 163ae23 commit ca66f99
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 5 deletions.
12 changes: 9 additions & 3 deletions src/polar/v2/trainingsession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1425,6 +1425,8 @@ QDomDocument TrainingSession::toTCX(const QString &buildTime) const
qWarning() << "skipping exercise with no 'create' request data";
continue;
}
const QVariantMap create = map.value(CREATE).toMap();
const QVariantMap stats = map.value(STATISTICS).toMap();

QDomElement activity = doc.createElement(QLatin1String("Activity"));
if (multiSportSession.isNull()) {
Expand All @@ -1440,7 +1442,6 @@ QDomDocument TrainingSession::toTCX(const QString &buildTime) const
}
Q_ASSERT(!activity.parentNode().isNull());

const QVariantMap create = map.value(CREATE).toMap();

// Get the sport type.
activity.setAttribute(QLatin1String("Sport"),
Expand All @@ -1467,8 +1468,13 @@ QDomDocument TrainingSession::toTCX(const QString &buildTime) const
lap.appendChild(doc.createElement(QLatin1String("Calories")))
.appendChild(doc.createTextNode(QString::fromLatin1("%1")
.arg(first(create.value(QLatin1String("calories"))).toUInt())));
/// @todo [Optional] AverageHeartRateBpm/Value (ubyte)
/// @todo [Optional] MaximumHeartRateBpm/Value (ubyte)
const QVariantMap hrStats = firstMap(stats.value(QLatin1String("heartrate")));
lap.appendChild(doc.createElement(QLatin1String("AverageHeartRateBpm")))
.appendChild(doc.createElement(QLatin1String("Value")))
.appendChild(doc.createTextNode(first(hrStats.value(QLatin1String("average"))).toString()));
lap.appendChild(doc.createElement(QLatin1String("MaximumHeartRateBpm")))
.appendChild(doc.createElement(QLatin1String("Value")))
.appendChild(doc.createTextNode(first(hrStats.value(QLatin1String("maximum"))).toString()));
/// @todo Intensity must be one of: Active, Resting.
lap.appendChild(doc.createElement(QLatin1String("Intensity")))
.appendChild(doc.createTextNode(QString::fromLatin1("Active")));
Expand Down
8 changes: 7 additions & 1 deletion test/polar/v2/testdata/training-sessions-19401412.tcx
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
<?xml version='1.0' encoding='utf-8'?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
<TrainingCenterDatabase xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2">
<Activities>
<Activity Sport="Running">
<Id>2014-07-13T07:26:23+10:00</Id>
<Lap StartTime="2014-07-13T07:26:23+10:00">
<TotalTimeSeconds>5238.75</TotalTimeSeconds>
<DistanceMeters>8483.9</DistanceMeters>
<Calories>1212</Calories>
<AverageHeartRateBpm>
<Value>162</Value>
</AverageHeartRateBpm>
<MaximumHeartRateBpm>
<Value>181</Value>
</MaximumHeartRateBpm>
<Intensity>Active</Intensity>
<TriggerMethod>Manual</TriggerMethod>
<Track>
Expand Down
8 changes: 7 additions & 1 deletion test/polar/v2/testdata/training-sessions-19946380.tcx
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
<?xml version='1.0' encoding='utf-8'?>
<TrainingCenterDatabase xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd" xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<TrainingCenterDatabase xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2">
<Activities>
<Activity Sport="Other">
<Id>2014-07-18T07:48:56+10:00</Id>
<Lap StartTime="2014-07-18T07:48:56+10:00">
<TotalTimeSeconds>3900.25</TotalTimeSeconds>
<DistanceMeters>4571.6</DistanceMeters>
<Calories>537</Calories>
<AverageHeartRateBpm>
<Value>119</Value>
</AverageHeartRateBpm>
<MaximumHeartRateBpm>
<Value>161</Value>
</MaximumHeartRateBpm>
<Intensity>Active</Intensity>
<TriggerMethod>Manual</TriggerMethod>
<Track>
Expand Down

0 comments on commit ca66f99

Please sign in to comment.