package com.o3dr.services.android.lib.drone.property; import android.os.Parcel; /** * Stores information about the drone's type. */ public class Type implements DroneAttribute { public static final int TYPE_UNKNOWN = -1; public static final int TYPE_PLANE = 1; public static final int TYPE_COPTER = 2; public static final int TYPE_ROVER = 10; public static enum Firmware { ARDU_PLANE("ArduPlane"), ARDU_COPTER("ArduCopter"), APM_ROVER("APMRover"); private final String label; Firmware(String label){ this.label = label; } public String getLabel(){ return this.label; } } private int droneType = TYPE_UNKNOWN; private String firmwareVersion; private Firmware firmware; public Type(){} public Type(int droneType, String firmwareVersion){ this.droneType = droneType; this.firmwareVersion = firmwareVersion; this.firmware = getTypeFirmware(droneType); } private static Firmware getTypeFirmware(int droneType) { switch(droneType){ case TYPE_COPTER: return Firmware.ARDU_COPTER; case TYPE_PLANE: return Firmware.ARDU_PLANE; case TYPE_ROVER: return Firmware.APM_ROVER; case TYPE_UNKNOWN: default: return null; } } public int getDroneType(){ return droneType; } public Firmware getFirmware(){ return firmware; } public String getFirmwareVersion(){ return firmwareVersion; } public void setDroneType(int droneType) { this.droneType = droneType; } public void setFirmwareVersion(String firmwareVersion) { this.firmwareVersion = firmwareVersion; } public void setFirmware(Firmware firmware) { this.firmware = firmware; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.droneType); dest.writeString(this.firmwareVersion); // We're no longer passing the firmware ordinal since it'll be inferred from the drone type. dest.writeInt(-1); } private Type(Parcel in) { this(in.readInt(), in.readString()); // Last value is the drone firmware ordinal, which is no longer of use. in.readInt(); } public static final Creator<Type> CREATOR = new Creator<Type>() { public Type createFromParcel(Parcel source) { return new Type(source); } public Type[] newArray(int size) { return new Type[size]; } }; }