forked from upstream-mirrors/OpenTracks
Addressing review comments for revision ca3651f10063.
+ limiting RunCadence to 254, same as it was done for cycling Cadence.
This commit is contained in:
@@ -65,6 +65,9 @@ public class TcxTrackWriter implements TrackFormatWriter {
|
|||||||
private PrintWriter pw = null;
|
private PrintWriter pw = null;
|
||||||
private Track track;
|
private Track track;
|
||||||
|
|
||||||
|
// Determines whether to encode cadence value as running or cycling cadence.
|
||||||
|
private boolean sportIsCycling;
|
||||||
|
|
||||||
public TcxTrackWriter(Context context) {
|
public TcxTrackWriter(Context context) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
|
|
||||||
@@ -77,7 +80,7 @@ public class TcxTrackWriter implements TrackFormatWriter {
|
|||||||
public void prepare(Track track, OutputStream out) {
|
public void prepare(Track track, OutputStream out) {
|
||||||
this.track = track;
|
this.track = track;
|
||||||
this.pw = new PrintWriter(out);
|
this.pw = new PrintWriter(out);
|
||||||
|
this.sportIsCycling = categoryToTcxSport(track.getCategory()).equals(TCX_SPORT_BIKING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -176,41 +179,38 @@ public class TcxTrackWriter implements TrackFormatWriter {
|
|||||||
pw.println("</HeartRateBpm>");
|
pw.println("</HeartRateBpm>");
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean cadenceAsCyclingCadence = categoryToTcxSport(track.getCategory()).equals(TCX_SPORT_BIKING);
|
boolean cadenceAvailable = sensorData.hasCadence()
|
||||||
|
|
||||||
boolean cadenceValueAvailable = sensorData.hasCadence()
|
|
||||||
&& sensorData.getCadence().getState() == Sensor.SensorState.SENDING
|
&& sensorData.getCadence().getState() == Sensor.SensorState.SENDING
|
||||||
&& sensorData.getCadence().hasValue();
|
&& sensorData.getCadence().hasValue();
|
||||||
|
|
||||||
// TCX Trackpoint_t contains a sequence,
|
// TCX Trackpoint_t contains a sequence. Thus, the legacy XML element
|
||||||
// legacy XML element <Cadence> needs to be put before <Extensions>
|
// <Cadence> needs to be put before <Extensions>.
|
||||||
// Only for the case that activity was marked as biking.
|
// This field should only be used for the case that activity was marked as biking.
|
||||||
// Otherwise cadence we interpret it as running cadence data
|
// Otherwise cadence is interpreted as running cadence data which
|
||||||
// and put it into <Extensions>.
|
// is written in the <Extensions> as <RunCadence>.
|
||||||
if (cadenceAsCyclingCadence && cadenceValueAvailable) {
|
if (sportIsCycling && cadenceAvailable) {
|
||||||
pw.print(" <Cadence>");
|
pw.print(" <Cadence>");
|
||||||
pw.print(Math.min(254, sensorData.getCadence().getValue()));
|
pw.print(Math.min(254, sensorData.getCadence().getValue()));
|
||||||
pw.println("</Cadence>");
|
pw.println("</Cadence>");
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean powerValueAvailable = sensorData.hasPower()
|
boolean powerAvailable = sensorData.hasPower()
|
||||||
&& sensorData.getPower().getState() == Sensor.SensorState.SENDING
|
&& sensorData.getPower().getState() == Sensor.SensorState.SENDING
|
||||||
&& sensorData.getPower().hasValue();
|
&& sensorData.getPower().hasValue();
|
||||||
|
|
||||||
if(powerValueAvailable
|
if(powerAvailable || (!sportIsCycling && cadenceAvailable)) {
|
||||||
|| (!cadenceAsCyclingCadence && cadenceValueAvailable)) {
|
|
||||||
pw.print(" <Extensions>");
|
pw.print(" <Extensions>");
|
||||||
pw.print("<TPX xmlns=\"http://www.garmin.com/xmlschemas/ActivityExtension/v2\">");
|
pw.print("<TPX xmlns=\"http://www.garmin.com/xmlschemas/ActivityExtension/v2\">");
|
||||||
|
|
||||||
// RunCadence needs to be put before power in order to be understood
|
// RunCadence needs to be put before power in order to be understood
|
||||||
// by Garmin Training Center.
|
// by Garmin Training Center.
|
||||||
if (!cadenceAsCyclingCadence && cadenceValueAvailable) {
|
if (!sportIsCycling && cadenceAvailable) {
|
||||||
pw.print("<RunCadence>");
|
pw.print("<RunCadence>");
|
||||||
pw.print(sensorData.getCadence().getValue());
|
pw.print(Math.min(254, sensorData.getCadence().getValue()));
|
||||||
pw.print("</RunCadence>");
|
pw.print("</RunCadence>");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (powerValueAvailable) {
|
if (powerAvailable) {
|
||||||
pw.print("<Watts>");
|
pw.print("<Watts>");
|
||||||
pw.print(sensorData.getPower().getValue());
|
pw.print(sensorData.getPower().getValue());
|
||||||
pw.print("</Watts>");
|
pw.print("</Watts>");
|
||||||
|
|||||||
Reference in New Issue
Block a user