001/*
002 * Copyright (C) Cross The Road Electronics.  All rights reserved.
003 * License information can be found in CTRE_LICENSE.txt
004 * For support and suggestions contact support@ctr-electronics.com or file
005 * an issue tracker at https://github.com/CrossTheRoadElec/Phoenix-Releases
006 */
007package com.ctre.phoenix6.signals;
008
009import java.util.HashMap;
010
011/**
012 * The active control mode of the motor controller
013 */
014public enum ControlModeValue
015{
016    DisabledOutput(0),
017    NeutralOut(1),
018    StaticBrake(2),
019    DutyCycleOut(3),
020    PositionDutyCycle(4),
021    VelocityDutyCycle(5),
022    MotionMagicDutyCycle(6),
023    DutyCycleFOC(7),
024    PositionDutyCycleFOC(8),
025    VelocityDutyCycleFOC(9),
026    MotionMagicDutyCycleFOC(10),
027    VoltageOut(11),
028    PositionVoltage(12),
029    VelocityVoltage(13),
030    MotionMagicVoltage(14),
031    VoltageFOC(15),
032    PositionVoltageFOC(16),
033    VelocityVoltageFOC(17),
034    MotionMagicVoltageFOC(18),
035    TorqueCurrentFOC(19),
036    PositionTorqueCurrentFOC(20),
037    VelocityTorqueCurrentFOC(21),
038    MotionMagicTorqueCurrentFOC(22),
039    Follower(23),
040    Reserved(24),
041    CoastOut(25),
042    UnauthorizedDevice(26),
043    MusicTone(27),
044    MotionMagicVelocityDutyCycle(28),
045    MotionMagicVelocityDutyCycleFOC(29),
046    MotionMagicVelocityVoltage(30),
047    MotionMagicVelocityVoltageFOC(31),
048    MotionMagicVelocityTorqueCurrentFOC(32),
049    MotionMagicExpoDutyCycle(33),
050    MotionMagicExpoDutyCycleFOC(34),
051    MotionMagicExpoVoltage(35),
052    MotionMagicExpoVoltageFOC(36),
053    MotionMagicExpoTorqueCurrentFOC(37),;
054
055    public final int value;
056
057    ControlModeValue(int initValue)
058    {
059        this.value = initValue;
060    }
061
062    private static HashMap<Integer, ControlModeValue> _map = null;
063    static
064    {
065        _map = new HashMap<Integer, ControlModeValue>();
066        for (ControlModeValue type : ControlModeValue.values())
067        {
068            _map.put(type.value, type);
069        }
070    }
071
072    /**
073     * Gets ControlModeValue from specified value
074     * @param value Value of ControlModeValue
075     * @return ControlModeValue of specified value
076     */
077    public static ControlModeValue valueOf(int value)
078    {
079        ControlModeValue retval = _map.get(value);
080        if (retval != null) return retval;
081        return ControlModeValue.values()[0];
082    }
083}