/* This file is part of Wattzap Community Edition.
*
* Wattzap Community Edtion is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Wattzap Community Edition is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Wattzap. If not, see <http://www.gnu.org/licenses/>.
*/
package com.wattzap.model.dto;
import java.io.Serializable;
/**
* Data object for telemetry coming from the ANT Speed, Cadence and Heart Rate
* Sensors
*
* @author David George (c) Copyright 2013
* @date 19 June 2013
*/
public class Telemetry extends Point implements Serializable {
private static final double KMTOMILES = 1.609344;
private int cadence;
//private double distance;
private int heartRate;
private long time;
private int resistance;
public Telemetry() {
setSpeed(-1);
setPower(-1);
setLatitude(91);
setLongitude(181);
heartRate = -1;
}
public Telemetry(Telemetry t) {
setSpeed(t.getSpeed());
cadence = t.cadence;
//distance = t.distance;
setDistanceFromStart(t.getDistanceFromStart());
setPower(t.getPower());
setElevation(t.getElevation());
setGradient(t.getGradient());
setLatitude(t.getLatitude());
setLongitude(t.getLongitude());
heartRate = t.heartRate;
time = t.time;
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
public int getHeartRate() {
return heartRate;
}
public void setHeartRate(int heartRate) {
this.heartRate = heartRate;
}
public double getSpeedMPH() {
return getSpeed() / KMTOMILES;
}
public double getSpeedKMH() {
return getSpeed();
}
public void setCadence(int cadence) {
this.cadence = cadence;
}
/**
* Distance in meters
*/
public void setDistanceMeters(double distance) {
super.setDistanceFromStart(distance);
}
public double getDistanceMeters() {
return getDistanceFromStart();
}
public double getDistanceKM() {
return getDistanceFromStart() / 1000;
}
public double getDistanceMiles() {
return getDistanceFromStart() / (KMTOMILES * 1000);
}
public int getCadence() {
return cadence;
}
// for player only mode
public void setVirtualSpeed(double v) {
cadence = (int) v;
}
public double getTrainerSpeed() {
return cadence;
}
// for player only mode
public void setResistance(int v) {
resistance = v;
}
public int getResistance() {
return resistance;
}
@Override
public String toString() {
return "Telemetry [cadence=" + cadence
+ ", heartRate=" + heartRate + " tt " + heartRate + ", time="
+ time / 1000 + "]" + super.toString();
}
@Override
public String getTcxExtensionsXml() {
StringBuilder sb = new StringBuilder();
sb.append(" <HeartRateBpm>");
sb.append("<Value>");
sb.append(heartRate);
sb.append("</Value>");
sb.append("</HeartRateBpm>\n");
sb.append(" <Cadence>");
sb.append(Math.min(254, cadence));
sb.append("</Cadence>\n");
sb.append(" <Extensions>");
sb.append("<TPX xmlns=\"http://www.garmin.com/xmlschemas/ActivityExtension/v2\">");
sb.append("<Watts>");
sb.append(getPower());
sb.append("</Watts>");
sb.append("<Speed>");
sb.append(getSpeedKMH());
sb.append("</Speed>");
sb.append("</TPX></Extensions>");
return sb.toString();
}
}