package com.o3dr.services.android.lib.drone.property; import android.os.Parcel; /** * Reports the vehicle vibration levels and accelerometer clipping. * Created by Fredia Huya-Kouadio on 9/14/15. */ public class Vibration implements DroneAttribute { /* Vibration levels thresholds: - Good <= 30 - 30 < Warning <= 60 - 60 < Danger */ /** * Vibration levels on the x-axis. */ private float vibrationX; /** * Vibration levels on the y-axis. */ private float vibrationY; /** * Vibration levels on the z-axis. */ private float vibrationZ; /** * First accelerometer clipping count. */ private long firstAccelClipping; /** * Second accelerometer clipping count. */ private long secondAccelClipping; /** * Third accelerometer clipping count. */ private long thirdAccelClipping; public Vibration(){} public Vibration(long firstAccelClipping, long secondAccelClipping, long thirdAccelClipping, float vibrationX, float vibrationY, float vibrationZ) { this.firstAccelClipping = firstAccelClipping; this.secondAccelClipping = secondAccelClipping; this.thirdAccelClipping = thirdAccelClipping; this.vibrationX = vibrationX; this.vibrationY = vibrationY; this.vibrationZ = vibrationZ; } public long getFirstAccelClipping() { return firstAccelClipping; } public void setFirstAccelClipping(long firstAccelClipping) { this.firstAccelClipping = firstAccelClipping; } public long getSecondAccelClipping() { return secondAccelClipping; } public void setSecondAccelClipping(long secondAccelClipping) { this.secondAccelClipping = secondAccelClipping; } public long getThirdAccelClipping() { return thirdAccelClipping; } public void setThirdAccelClipping(long thirdAccelClipping) { this.thirdAccelClipping = thirdAccelClipping; } public float getVibrationX() { return vibrationX; } public void setVibrationX(float vibrationX) { this.vibrationX = vibrationX; } public float getVibrationY() { return vibrationY; } public void setVibrationY(float vibrationY) { this.vibrationY = vibrationY; } public float getVibrationZ() { return vibrationZ; } public void setVibrationZ(float vibrationZ) { this.vibrationZ = vibrationZ; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Vibration)) return false; Vibration vibration = (Vibration) o; if (Float.compare(vibration.vibrationX, vibrationX) != 0) return false; if (Float.compare(vibration.vibrationY, vibrationY) != 0) return false; if (Float.compare(vibration.vibrationZ, vibrationZ) != 0) return false; if (firstAccelClipping != vibration.firstAccelClipping) return false; if (secondAccelClipping != vibration.secondAccelClipping) return false; return thirdAccelClipping == vibration.thirdAccelClipping; } @Override public int hashCode() { int result = (vibrationX != +0.0f ? Float.floatToIntBits(vibrationX) : 0); result = 31 * result + (vibrationY != +0.0f ? Float.floatToIntBits(vibrationY) : 0); result = 31 * result + (vibrationZ != +0.0f ? Float.floatToIntBits(vibrationZ) : 0); result = 31 * result + (int) (firstAccelClipping ^ (firstAccelClipping >>> 32)); result = 31 * result + (int) (secondAccelClipping ^ (secondAccelClipping >>> 32)); result = 31 * result + (int) (thirdAccelClipping ^ (thirdAccelClipping >>> 32)); return result; } @Override public String toString() { return "Vibration{" + "firstAccelClipping=" + firstAccelClipping + ", vibrationX=" + vibrationX + ", vibrationY=" + vibrationY + ", vibrationZ=" + vibrationZ + ", secondAccelClipping=" + secondAccelClipping + ", thirdAccelClipping=" + thirdAccelClipping + '}'; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeFloat(this.vibrationX); dest.writeFloat(this.vibrationY); dest.writeFloat(this.vibrationZ); dest.writeLong(this.firstAccelClipping); dest.writeLong(this.secondAccelClipping); dest.writeLong(this.thirdAccelClipping); } protected Vibration(Parcel in) { this.vibrationX = in.readFloat(); this.vibrationY = in.readFloat(); this.vibrationZ = in.readFloat(); this.firstAccelClipping = in.readLong(); this.secondAccelClipping = in.readLong(); this.thirdAccelClipping = in.readLong(); } public static final Creator<Vibration> CREATOR = new Creator<Vibration>() { public Vibration createFromParcel(Parcel source) { return new Vibration(source); } public Vibration[] newArray(int size) { return new Vibration[size]; } }; }