package com.o3dr.services.android.lib.drone.property; import android.os.Parcel; import java.util.ArrayList; import java.util.List; /** * Created by fhuya on 10/28/14. */ public enum VehicleMode implements DroneAttribute { PLANE_MANUAL(0, Type.TYPE_PLANE, "Manual"), PLANE_CIRCLE(1, Type.TYPE_PLANE, "Circle"), PLANE_STABILIZE(2, Type.TYPE_PLANE, "Stabilize"), PLANE_TRAINING(3, Type.TYPE_PLANE, "Training"), PLANE_ACRO(4, Type.TYPE_PLANE, "Acro"), PLANE_FLY_BY_WIRE_A(5, Type.TYPE_PLANE, "FBW A"), PLANE_FLY_BY_WIRE_B(6, Type.TYPE_PLANE, "FBW B"), PLANE_CRUISE(7, Type.TYPE_PLANE, "Cruise"), PLANE_AUTOTUNE(8, Type.TYPE_PLANE, "Autotune"), PLANE_AUTO(10, Type.TYPE_PLANE, "Auto"), PLANE_RTL(11, Type.TYPE_PLANE, "RTL"), PLANE_LOITER(12, Type.TYPE_PLANE, "Loiter"), PLANE_GUIDED(15, Type.TYPE_PLANE, "Guided"), COPTER_STABILIZE(0, Type.TYPE_COPTER, "Stabilize"), COPTER_ACRO(1, Type.TYPE_COPTER, "Acro"), COPTER_ALT_HOLD(2, Type.TYPE_COPTER, "Alt Hold"), COPTER_AUTO(3, Type.TYPE_COPTER, "Auto"), COPTER_GUIDED(4, Type.TYPE_COPTER, "Guided"), COPTER_LOITER(5, Type.TYPE_COPTER, "Loiter"), COPTER_RTL(6, Type.TYPE_COPTER, "RTL"), COPTER_CIRCLE(7, Type.TYPE_COPTER, "Circle"), COPTER_LAND(9, Type.TYPE_COPTER, "Land"), COPTER_DRIFT(11, Type.TYPE_COPTER, "Drift"), COPTER_SPORT(13, Type.TYPE_COPTER, "Sport"), COPTER_FLIP(14, Type.TYPE_COPTER, "Flip"), COPTER_AUTOTUNE(15, Type.TYPE_COPTER, "Autotune"), COPTER_POSHOLD(16, Type.TYPE_COPTER, "PosHold"), COPTER_BRAKE(17,Type.TYPE_COPTER,"Brake"), ROVER_MANUAL(0, Type.TYPE_ROVER, "Manual"), ROVER_LEARNING(2, Type.TYPE_ROVER, "Learning"), ROVER_STEERING(3, Type.TYPE_ROVER, "Steering"), ROVER_HOLD(4, Type.TYPE_ROVER, "Hold"), ROVER_AUTO(10, Type.TYPE_ROVER, "Auto"), ROVER_RTL(11, Type.TYPE_ROVER, "RTL"), ROVER_GUIDED(15, Type.TYPE_ROVER, "Guided"), ROVER_INITIALIZING(16, Type.TYPE_ROVER, "Initializing"), UNKNOWN(-1, Type.TYPE_UNKNOWN, "Unknown"); private final int mode; private final int droneType; private final String label; VehicleMode(int mode, int droneType, String label){ this.mode = mode; this.droneType = droneType; this.label = label; } public int getMode() { return mode; } public int getDroneType() { return droneType; } public String getLabel() { return label; } @Override public String toString(){ return getLabel(); } @Override public int describeContents(){ return 0; } @Override public void writeToParcel(final Parcel dest, final int flags){ dest.writeString(name()); } public static final Creator<VehicleMode> CREATOR = new Creator<VehicleMode>() { @Override public VehicleMode createFromParcel(Parcel source) { return VehicleMode.valueOf(source.readString()); } @Override public VehicleMode[] newArray(int size) { return new VehicleMode[size]; } }; public static List<VehicleMode> getVehicleModePerDroneType(int droneType){ VehicleMode[] availableModes = VehicleMode.values(); final List<VehicleMode> vehicleModes = new ArrayList<VehicleMode>(availableModes.length); for(VehicleMode vehicleMode: availableModes){ if(vehicleMode.getDroneType() == droneType) vehicleModes.add(vehicleMode); } return vehicleModes; } }