package com.o3dr.services.android.lib.drone.companion.solo.tlv;
import android.os.Parcel;
import java.nio.ByteBuffer;
/**
* Sent from app to Solo or vice versa to transmit selfie options.
*/
public class SoloShotOptions extends TLVPacket {
public static final int PAUSED_CRUISE_SPEED = 0; // meter per second
public static final int MIN_ABS_CRUISE_SPEED = 1; // meter per second
public static final int MAX_ABS_CRUISE_SPEED = 8; // meters per second
public static final int DEFAULT_ABS_CRUISE_SPEED = 4; //meters per second
/**
* Cruise speed (in meters/second)
*/
private float cruiseSpeed;
public SoloShotOptions(){
this(TLVMessageTypes.TYPE_SOLO_SHOT_OPTIONS, 4, PAUSED_CRUISE_SPEED);
}
public SoloShotOptions(float cruiseSpeed) {
this(TLVMessageTypes.TYPE_SOLO_SHOT_OPTIONS, 4, cruiseSpeed);
}
protected SoloShotOptions(int type, int length, float cruiseSpeed){
super(type, length);
this.cruiseSpeed = cruiseSpeed;
}
public float getCruiseSpeed() {
return cruiseSpeed;
}
public void setCruiseSpeed(float cruiseSpeed) {
this.cruiseSpeed = cruiseSpeed;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof SoloShotOptions)) return false;
if (!super.equals(o)) return false;
SoloShotOptions that = (SoloShotOptions) o;
return Float.compare(that.cruiseSpeed, cruiseSpeed) == 0;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + (cruiseSpeed != +0.0f ? Float.floatToIntBits(cruiseSpeed) : 0);
return result;
}
@Override
protected void getMessageValue(ByteBuffer valueCarrier) {
valueCarrier.putFloat(cruiseSpeed);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeFloat(this.cruiseSpeed);
}
protected SoloShotOptions(Parcel in) {
super(in);
this.cruiseSpeed = in.readFloat();
}
public static final Creator<SoloShotOptions> CREATOR = new Creator<SoloShotOptions>(){
@Override
public SoloShotOptions createFromParcel(Parcel source) {
return new SoloShotOptions(source);
}
@Override
public SoloShotOptions[] newArray(int size) {
return new SoloShotOptions[size];
}
};
}