Addressing review comments for revision ca3651f10063.

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