package com.o3dr.services.android.lib.drone.companion.solo.tlv; import android.os.Parcel; import java.nio.ByteBuffer; /** * Created by Fredia Huya-Kouadio on 5/24/15. */ public class SoloFollowOptions extends SoloShotOptions { protected static final int LOOK_AT_ENABLED_VALUE = 1; private static final int LOOK_AT_DISABLED_VALUE = 0; private boolean lookAt; public SoloFollowOptions(float cruiseSpeed, boolean lookAt){ this(TLVMessageTypes.TYPE_SOLO_FOLLOW_OPTIONS, 8, cruiseSpeed, lookAt); } protected SoloFollowOptions(int type, int length, float cruiseSpeed, boolean lookAt){ super(type, length, cruiseSpeed); this.lookAt = lookAt; } public SoloFollowOptions(){ this(PAUSED_CRUISE_SPEED, true); } SoloFollowOptions(float cruiseSpeed, int lookAtValue){ this(cruiseSpeed, lookAtValue == LOOK_AT_ENABLED_VALUE); } SoloFollowOptions(ByteBuffer buffer){ this(buffer.getFloat(), buffer.getInt()); } public boolean isLookAt() { return lookAt; } public void setLookAt(boolean lookAt) { this.lookAt = lookAt; } @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof SoloFollowOptions)) return false; if (!super.equals(o)) return false; SoloFollowOptions that = (SoloFollowOptions) o; return lookAt == that.lookAt; } @Override public int hashCode() { int result = super.hashCode(); result = 31 * result + (lookAt ? 1 : 0); return result; } @Override protected void getMessageValue(ByteBuffer valueCarrier){ super.getMessageValue(valueCarrier); valueCarrier.putInt(lookAt ? LOOK_AT_ENABLED_VALUE : LOOK_AT_DISABLED_VALUE); } @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeByte(lookAt ? (byte) 1 : (byte) 0); } protected SoloFollowOptions(Parcel in) { super(in); this.lookAt = in.readByte() != 0; } public static final Creator<SoloFollowOptions> CREATOR = new Creator<SoloFollowOptions>() { public SoloFollowOptions createFromParcel(Parcel source) { return new SoloFollowOptions(source); } public SoloFollowOptions[] newArray(int size) { return new SoloFollowOptions[size]; } }; @Override public String toString() { return "SoloFollowOptions{" + "lookAt=" + lookAt + '}'; } }