package com.o3dr.services.android.lib.drone.companion.solo.tlv; import android.os.Parcel; import com.o3dr.services.android.lib.coordinate.LatLongAlt; import java.nio.ByteBuffer; /** * Sent from app to solo to communicate a location. */ public class SoloMessageLocation extends TLVPacket { private LatLongAlt coordinate; public SoloMessageLocation(double latitude, double longitude, float altitudeInMeters) { super(TLVMessageTypes.TYPE_SOLO_MESSAGE_LOCATION, 20); this.coordinate = new LatLongAlt(latitude, longitude, altitudeInMeters); } public SoloMessageLocation(LatLongAlt coordinate){ super(TLVMessageTypes.TYPE_SOLO_MESSAGE_LOCATION, 20); this.coordinate = coordinate; } public LatLongAlt getCoordinate() { return coordinate; } public void setCoordinate(LatLongAlt coordinate) { this.coordinate = coordinate; } @Override protected void getMessageValue(ByteBuffer valueCarrier) { valueCarrier.putDouble(coordinate.getLatitude()); valueCarrier.putDouble(coordinate.getLongitude()); valueCarrier.putFloat((float) coordinate.getAltitude()); } @Override public void writeToParcel(Parcel dest, int flags) { super.writeToParcel(dest, flags); dest.writeParcelable(this.coordinate, 0); } protected SoloMessageLocation(Parcel in) { super(in); this.coordinate = in.readParcelable(LatLongAlt.class.getClassLoader()); } public static final Creator<SoloMessageLocation> CREATOR = new Creator<SoloMessageLocation>() { public SoloMessageLocation createFromParcel(Parcel source) { return new SoloMessageLocation(source); } public SoloMessageLocation[] newArray(int size) { return new SoloMessageLocation[size]; } }; }