package com.o3dr.services.android.lib.drone.attribute.error; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.StringRes; import android.text.TextUtils; import com.o3dr.android.client.R; /** * List all the possible error types. * Created by Fredia Huya-Kouadio on 4/15/15. */ public enum ErrorType implements Parcelable { NO_ERROR(R.string.error_no_error), ARM_THROTTLE_BELOW_FAILSAFE(R.string.error_throttle_below_failsafe), ARM_GYRO_CALIBRATION_FAILED(R.string.error_gyro_calibration_failed), ARM_MODE_NOT_ARMABLE (R.string.error_mode_not_armable), ARM_ROTOR_NOT_SPINNING(R.string.error_rotor_not_spinning), ARM_LEANING (R.string.error_vehicle_leaning), ARM_THROTTLE_TOO_HIGH (R.string.error_throttle_too_high), ARM_SAFETY_SWITCH(R.string.error_safety_switch), ARM_COMPASS_CALIBRATION_RUNNING (R.string.error_compass_calibration_running), PRE_ARM_RC_NOT_CALIBRATED(R.string.error_rc_not_calibrated), PRE_ARM_BAROMETER_NOT_HEALTHY (R.string.error_barometer_not_healthy), PRE_ARM_COMPASS_NOT_HEALTHY(R.string.error_compass_not_healthy), PRE_ARM_COMPASS_NOT_CALIBRATED (R.string.error_compass_not_calibrated), PRE_ARM_COMPASS_OFFSETS_TOO_HIGH (R.string.error_compass_offsets_too_high), PRE_ARM_CHECK_MAGNETIC_FIELD(R.string.error_check_magnetic_field), PRE_ARM_INCONSISTENT_COMPASSES (R.string.error_inconsistent_compass), PRE_ARM_CHECK_FENCE (R.string.error_check_geo_fence), PRE_ARM_INS_NOT_CALIBRATED (R.string.error_ins_not_calibrated), PRE_ARM_ACCELEROMETERS_NOT_HEALTHY (R.string.error_accelerometers_not_healthy), PRE_ARM_INCONSISTENT_ACCELEROMETERS (R.string.error_inconsistent_accelerometers), PRE_ARM_GYROS_NOT_HEALTHY (R.string.error_gyros_not_healthy), PRE_ARM_INCONSISTENT_GYROS (R.string.error_inconsistent_gyros), PRE_ARM_CHECK_BOARD_VOLTAGE (R.string.error_check_board_voltage), PRE_ARM_DUPLICATE_AUX_SWITCH_OPTIONS (R.string.error_duplicate_aux_switch_options), PRE_ARM_CHECK_FAILSAFE_THRESHOLD_VALUE (R.string.error_check_failsafe_threshold), PRE_ARM_CHECK_ANGLE_MAX (R.string.error_check_angle_max), PRE_ARM_ACRO_BAL_ROLL_PITCH (R.string.error_acro_bal_roll_pitch), PRE_ARM_NEED_GPS_LOCK (R.string.error_need_gps_lock), PRE_ARM_EKF_HOME_VARIANCE (R.string.error_ekf_home_variance), PRE_ARM_HIGH_GPS_HDOP (R.string.error_high_gps_hdop), PRE_ARM_GPS_GLITCH (R.string.error_gps_glitch), WAITING_FOR_NAVIGATION_ALIGNMENT (R.string.error_waiting_for_navigation_alignment), ALTITUDE_DISPARITY (R.string.error_altitude_disparity), LOW_BATTERY (R.string.error_low_battery), AUTO_TUNE_FAILED (R.string.error_auto_tune_failed), CRASH_DISARMING (R.string.error_crash), PARACHUTE_TOO_LOW (R.string.error_parachute_too_low), EKF_VARIANCE (R.string.error_ekf_variance), NO_DATAFLASH_INSERTED (R.string.error_no_dataflash), RC_FAILSAFE(R.string.error_rc_failsafe); @StringRes private final int labelResId; private ErrorType(@StringRes int labelResId){ this.labelResId = labelResId; } public CharSequence getLabel(Context context){ if(context == null) return null; return context.getText(this.labelResId); } public static ErrorType getErrorById(String errorId){ if(TextUtils.isEmpty(errorId)) return null; return ErrorType.valueOf(errorId); } @Override public int describeContents(){ return 0; } @Override public void writeToParcel(Parcel dest, int flags){ dest.writeString(name()); } public static final Creator<ErrorType> CREATOR = new Creator<ErrorType>() { @Override public ErrorType createFromParcel(Parcel source) { return ErrorType.valueOf(source.readString()); } @Override public ErrorType[] newArray(int size) { return new ErrorType[size]; } }; }