From 3468190b387f67b4d5140680797efe9eea8f1f02 Mon Sep 17 00:00:00 2001 From: Chavi Weingarten Date: Tue, 29 Mar 2016 18:23:58 -0700 Subject: [PATCH] Added new follow preferences --- .../companion/solo/tlv/SoloFollowOptions.java | 7 ++ .../solo/tlv/SoloFollowOptionsV2.java | 99 ++++++++++++------- 2 files changed, 70 insertions(+), 36 deletions(-) diff --git a/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptions.java b/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptions.java index 0da33d5566..dcc6ae7cd3 100644 --- a/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptions.java +++ b/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptions.java @@ -88,4 +88,11 @@ public SoloFollowOptions[] newArray(int size) { return new SoloFollowOptions[size]; } }; + + @Override + public String toString() { + return "SoloFollowOptions{" + + "lookAt=" + lookAt + + '}'; + } } diff --git a/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptionsV2.java b/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptionsV2.java index 1531d0d786..c8a953fc12 100644 --- a/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptionsV2.java +++ b/ClientLib/src/main/java/com/o3dr/services/android/lib/drone/companion/solo/tlv/SoloFollowOptionsV2.java @@ -1,6 +1,7 @@ package com.o3dr.services.android.lib.drone.companion.solo.tlv; import android.os.Parcel; +import android.support.annotation.IntDef; import java.nio.ByteBuffer; @@ -9,70 +10,64 @@ */ public class SoloFollowOptionsV2 extends SoloFollowOptions { - private static final int FREE_LOOK_ENABLED_VALUE = 1; - private static final int FREE_LOOK_DISABLED_VALUE = 0; + @IntDef ({ + FOLLOW_PREFERENCE_NONE, + FOLLOW_PREFERENCE_ORBIT, + FOLLOW_PREFERENCE_FREE_LOOK, + FOLLOW_PREFERENCE_LEASH + }) + public @interface FollowPreference{} - private boolean freeLook; + public static final int FOLLOW_PREFERENCE_NONE = -1; + public static final int FOLLOW_PREFERENCE_ORBIT = 0; + public static final int FOLLOW_PREFERENCE_FREE_LOOK = 1; + public static final int FOLLOW_PREFERENCE_LEASH = 2; + + @FollowPreference + private int followPreference; public SoloFollowOptionsV2() { - this(PAUSED_CRUISE_SPEED, true, false); + this(PAUSED_CRUISE_SPEED, true, FOLLOW_PREFERENCE_NONE); } - public SoloFollowOptionsV2(float cruiseSpeed, boolean lookAt, boolean freeLook){ + public SoloFollowOptionsV2(float cruiseSpeed, boolean lookAt, @FollowPreference int followPreference) { super(TLVMessageTypes.TYPE_SOLO_FOLLOW_OPTIONS_V2, 12, cruiseSpeed, lookAt); - this.freeLook = freeLook; + this.followPreference = followPreference; } - SoloFollowOptionsV2(float cruiseSpeed, int lookAtValue, int freeLookValue){ - this(cruiseSpeed, lookAtValue == LOOK_AT_ENABLED_VALUE, freeLookValue == FREE_LOOK_ENABLED_VALUE); + SoloFollowOptionsV2(float cruiseSpeed, int lookAtValue, int followPreference) { + this(cruiseSpeed, lookAtValue == LOOK_AT_ENABLED_VALUE, followPreference); } - SoloFollowOptionsV2(ByteBuffer buffer){ + SoloFollowOptionsV2(ByteBuffer buffer) { this(buffer.getFloat(), buffer.getInt(), buffer.getInt()); } - public boolean isFreeLook() { - return freeLook; - } - - public void setFreeLook(boolean freeLook) { - this.freeLook = freeLook; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof SoloFollowOptionsV2)) return false; - if (!super.equals(o)) return false; - - SoloFollowOptionsV2 that = (SoloFollowOptionsV2) o; - - return freeLook == that.freeLook; - + @FollowPreference + public int getFollowPreference() { + return followPreference; } - @Override - public int hashCode() { - int result = super.hashCode(); - result = 31 * result + (freeLook ? FREE_LOOK_ENABLED_VALUE : FREE_LOOK_DISABLED_VALUE); - return result; + public void setFollowPreference(@FollowPreference int followPreference) { + this.followPreference = followPreference; } @Override - protected void getMessageValue(ByteBuffer valueCarrier){ + protected void getMessageValue(ByteBuffer valueCarrier) { super.getMessageValue(valueCarrier); - valueCarrier.putInt(freeLook ? FREE_LOOK_ENABLED_VALUE : FREE_LOOK_DISABLED_VALUE); + valueCarrier.putInt(followPreference); } @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); - dest.writeByte(freeLook ? (byte) FREE_LOOK_ENABLED_VALUE : (byte) FREE_LOOK_DISABLED_VALUE); + dest.writeInt(followPreference); } protected SoloFollowOptionsV2(Parcel in) { super(in); - this.freeLook = in.readByte() != FREE_LOOK_DISABLED_VALUE; + @FollowPreference int followPreference = in.readInt(); + this.followPreference = followPreference; } public static final Creator CREATOR = new Creator() { @@ -84,4 +79,36 @@ public SoloFollowOptionsV2[] newArray(int size) { return new SoloFollowOptionsV2[size]; } }; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + + SoloFollowOptionsV2 that = (SoloFollowOptionsV2) o; + + return followPreference == that.followPreference; + + } + + @Override + public int hashCode() { + int result = super.hashCode(); + result = 31 * result + followPreference; + return result; + } + + @Override + public String toString() { + return "SoloFollowOptionsV2{" + + "followPreference=" + followPreference + + '}'; + } }