/*
RawDataParseUtils
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.deviceplugin.heartrate.util;
import org.deviceconnect.android.deviceplugin.heartrate.data.HeartRateDevice;
import org.deviceconnect.android.deviceplugin.heartrate.data.health.HeartData;
import org.deviceconnect.android.deviceplugin.heartrate.data.health.TargetDeviceData;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
/**
* A class containing utility methods parse raw data.
* @author NTT DOCOMO, INC.
*/
public final class RawDataParseUtils {
/**
* Private Constructor.
*/
private RawDataParseUtils() {
}
/**
* Parse HeartRate data.
* @param raw raw data
* @return HeartRate object
*/
public static HeartData parseHeartRate(final float raw) {
return parseHeartRate(raw, HeartData.HeartRateType.Rate, "heart rate",
147842, "beat per min", 264864);
}
/**
* Parse RRI data.
* @param raw raw data
* @return RRI object
*/
public static HeartData parseRRI(final float raw) {
return parseHeartRate(raw, HeartData.HeartRateType.RRI, "RR interval",
147240, "ms", 264338);
}
/**
* Parse EnergyExpended data.
* @param raw raw data
* @return EnergyExpended object
*/
public static HeartData parseEnergyExpended(final float raw) {
return parseHeartRate(raw, HeartData.HeartRateType.EnergyExpended, "energy expended",
119, "Calories", 6784);
}
/**
* Parse heartrate Device info data.
* @param hearRateDevice heartrate device
* @param batteryLevel battery level
* @return heartrate device info object
*/
public static TargetDeviceData parseDeviceData(final HeartRateDevice hearRateDevice, final float batteryLevel) {
TargetDeviceData device = new TargetDeviceData();
device.setProductName(hearRateDevice.getName());
if (batteryLevel > -1.0) {
device.setBatteryLevel(batteryLevel);
}
return device;
}
/**
* Parse HeartRate data.
* @param raw raw data
* @param heartRateType HeartRate type
* @param type type
* @param typeCode type code
* @param unit unit
* @param unitCode unit Code
* @return HeartRate data
*/
private static HeartData parseHeartRate(final float raw, final HeartData.HeartRateType heartRateType,
final String type, final int typeCode,
final String unit, final int unitCode) {
HeartData heart = new HeartData();
heart.setHeartRateType(heartRateType);
heart.setValue(raw);
heart.setMderFloat(MDERFloatConvreterUtils.convertMDERFloatToFloat(raw));
heart.setType(type);
heart.setTypeCode(typeCode);
heart.setUnit(unit);
heart.setUnitCode(unitCode);
long timestamp = System.currentTimeMillis();
heart.setTimeStamp(timestamp);
heart.setTimeStampString(nowTimeStampString(timestamp));
return heart;
}
/**
* Now TimeStamp String.
* @param now now timestamp
* @return timestamp string
*/
private static String nowTimeStampString(final long now) {
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss.SSSZZZ");
df.setTimeZone(TimeZone.getDefault());
return df.format(new Date(System.currentTimeMillis()));
}
}