package com.o3dr.services.android.lib.gcs.returnToMe; import android.os.Parcel; import android.support.annotation.IntDef; import com.o3dr.services.android.lib.coordinate.LatLongAlt; import com.o3dr.services.android.lib.drone.property.DroneAttribute; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * Created by Fredia Huya-Kouadio on 9/22/15. */ public class ReturnToMeState implements DroneAttribute { @IntDef({STATE_IDLE, STATE_USER_LOCATION_UNAVAILABLE, STATE_USER_LOCATION_INACCURATE, STATE_WAITING_FOR_VEHICLE_GPS, STATE_UPDATING_HOME, STATE_ERROR_UPDATING_HOME}) @Retention(RetentionPolicy.SOURCE) public @interface ReturnToMeStates{} public static final int STATE_IDLE = 0; public static final int STATE_USER_LOCATION_UNAVAILABLE = 1; public static final int STATE_USER_LOCATION_INACCURATE = 2; public static final int STATE_WAITING_FOR_VEHICLE_GPS = 3; public static final int STATE_UPDATING_HOME = 4; public static final int STATE_ERROR_UPDATING_HOME = 5; private LatLongAlt originalHomeLocation; private LatLongAlt currentHomeLocation; @ReturnToMeStates private int state = STATE_IDLE; public ReturnToMeState(){} public ReturnToMeState(@ReturnToMeStates int state){ this.state = state; } @ReturnToMeStates public int getState() { return state; } public void setState(@ReturnToMeStates int state) { this.state = state; } public LatLongAlt getCurrentHomeLocation() { return currentHomeLocation; } public void setCurrentHomeLocation(LatLongAlt currentHomeLocation) { this.currentHomeLocation = currentHomeLocation == null ? null : new LatLongAlt(currentHomeLocation); } public LatLongAlt getOriginalHomeLocation() { return originalHomeLocation; } public void setOriginalHomeLocation(LatLongAlt originalHomeLocation) { this.originalHomeLocation = originalHomeLocation == null ? null : new LatLongAlt(originalHomeLocation); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.state); dest.writeParcelable(this.originalHomeLocation, 0); dest.writeParcelable(this.currentHomeLocation, 0); } protected ReturnToMeState(Parcel in) { @ReturnToMeStates final int temp = in.readInt(); this.state = temp; this.originalHomeLocation = in.readParcelable(LatLongAlt.class.getClassLoader()); this.currentHomeLocation = in.readParcelable(LatLongAlt.class.getClassLoader()); } public static final Creator<ReturnToMeState> CREATOR = new Creator<ReturnToMeState>() { public ReturnToMeState createFromParcel(Parcel source) { return new ReturnToMeState(source); } public ReturnToMeState[] newArray(int size) { return new ReturnToMeState[size]; } }; }