/* * Author: Bryan Stern 2011 * A wrapper class for accelerometer readings */ package org.spin.gaitlib.sensor; import org.spin.gaitlib.GaitAnalysis; import java.util.concurrent.TimeUnit; /** * An abstract class for signal reading, handles timestamp management. * * @author Mike */ public abstract class SignalReading { /** * Amount of time elapsed since {@link GaitAnalysis} instance is created, in nanoseconds. */ private final long timeSinceStart; /** * {@link #timeSinceStart} in seconds, with precision equivalent to nanosecond. */ private final float timeSinceStartInS; /** * Timestamp of the reading, measured in Unix time. */ private final long absoluteTime; /** * Unit of {@link #absoluteTime}. */ private final TimeUnit absoluteTimeUnit; /** * @param timeSinceStart Amount of time elapsed since {@link GaitAnalysis} instance is created, * in nanoseconds. * @param absoluteTime Timestamp of the reading, measured in Unix time. * @param absoluteTimeUnit Unit of Unix time. */ public SignalReading(long timeSinceStart, long absoluteTime, TimeUnit absoluteTimeUnit) { this.timeSinceStart = timeSinceStart; this.timeSinceStartInS = this.timeSinceStart / 1000000000f; this.absoluteTime = absoluteTime; this.absoluteTimeUnit = absoluteTimeUnit; } /** * @return the time elapsed since the <code>GaitAnalysis</code> instance is created, measured in * nanoseconds. */ public long getTimeSinceStart() { return timeSinceStart; } /** * @return the time elapsed since the <code>GaitAnalysis</code> instance is created, measured in * seconds, with precision equivalent to nanosecond. */ public float getTimeSinceStartInS() { return this.timeSinceStartInS; } /** * @param unit {@link TimeUnit} to which the timestamp to be converted. * @return Unix time timestamp converted to the given {@link TimeUnit}. */ public long getAbsoluteTime(TimeUnit unit) { return unit.convert(this.absoluteTime, absoluteTimeUnit); } }