CTRE_Phoenix 5.20.2
ctre::phoenix::motorcontrol::IMotorControllerEnhanced Class Referenceabstract

#include <IMotorControllerEnhanced.h>

Inherits ctre::phoenix::motorcontrol::IMotorController.

Inherited by ctre::phoenix::motorcontrol::can::BaseTalon [virtual].

Public Member Functions

virtual ErrorCode ConfigSelectedFeedbackSensor (FeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)=0
 
virtual ErrorCode ConfigSelectedFeedbackSensor (RemoteFeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)=0
 
virtual ErrorCode ConfigSupplyCurrentLimit (const SupplyCurrentLimitConfiguration &currLimitConfigs, int timeoutMs=50)=0
 
virtual ErrorCode SetStatusFramePeriod (StatusFrame frame, uint8_t periodMs, int timeoutMs=0)=0
 
virtual ErrorCode SetStatusFramePeriod (StatusFrameEnhanced frame, uint8_t periodMs, int timeoutMs=0)=0
 
virtual int GetStatusFramePeriod (StatusFrame frame, int timeoutMs=0)=0
 
virtual int GetStatusFramePeriod (StatusFrameEnhanced frame, int timeoutMs=0)=0
 
virtual double GetOutputCurrent ()=0
 
virtual ErrorCode ConfigVelocityMeasurementPeriod (VelocityMeasPeriod period, int timeoutMs=0)=0
 
virtual ErrorCode ConfigVelocityMeasurementWindow (int windowSize, int timeoutMs=0)=0
 
virtual ErrorCode ConfigForwardLimitSwitchSource (RemoteLimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int deviceID, int timeoutMs=0)=0
 
virtual ErrorCode ConfigReverseLimitSwitchSource (RemoteLimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int deviceID, int timeoutMs=0)=0
 
virtual ErrorCode ConfigForwardLimitSwitchSource (LimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int timeoutMs=0)=0
 
virtual ErrorCode ConfigReverseLimitSwitchSource (LimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int timeoutMs=0)=0
 
- Public Member Functions inherited from ctre::phoenix::motorcontrol::IMotorController
virtual void Set (ControlMode Mode, double demand)=0
 
virtual void Set (ControlMode mode, double demand0, DemandType demand1Type, double demand1)=0
 
virtual void NeutralOutput ()=0
 
virtual void SetNeutralMode (NeutralMode neutralMode)=0
 
virtual void SetSensorPhase (bool PhaseSensor)=0
 
virtual void SetInverted (bool invert)=0
 
virtual void SetInverted (InvertType invertType)=0
 
virtual bool GetInverted () const =0
 
virtual ErrorCode ConfigFactoryDefault (int timeout)=0
 
virtual ErrorCode ConfigOpenloopRamp (double secondsFromNeutralToFull, int timeoutMs=0)=0
 
virtual ErrorCode ConfigClosedloopRamp (double secondsFromNeutralToFull, int timeoutMs=0)=0
 
virtual ErrorCode ConfigPeakOutputForward (double percentOut, int timeoutMs=0)=0
 
virtual ErrorCode ConfigPeakOutputReverse (double percentOut, int timeoutMs=0)=0
 
virtual ErrorCode ConfigNominalOutputForward (double percentOut, int timeoutMs=0)=0
 
virtual ErrorCode ConfigNominalOutputReverse (double percentOut, int timeoutMs=0)=0
 
virtual ErrorCode ConfigNeutralDeadband (double percentDeadband, int timeoutMs=0)=0
 
virtual ErrorCode ConfigVoltageCompSaturation (double voltage, int timeoutMs=0)=0
 
virtual ErrorCode ConfigVoltageMeasurementFilter (int filterWindowSamples, int timeoutMs=0)=0
 
virtual void EnableVoltageCompensation (bool enable)=0
 
virtual bool IsVoltageCompensationEnabled ()=0
 
virtual double GetBusVoltage ()=0
 
virtual double GetMotorOutputPercent ()=0
 
virtual double GetMotorOutputVoltage ()=0
 
virtual double GetTemperature ()=0
 
virtual ErrorCode ConfigSelectedFeedbackSensor (RemoteFeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)=0
 
virtual ErrorCode ConfigSelectedFeedbackCoefficient (double coefficient, int pidIdx=0, int timeoutMs=0)=0
 
virtual ErrorCode ConfigRemoteFeedbackFilter (int deviceID, RemoteSensorSource remoteSensorSource, int remoteOrdinal, int timeoutMs=0)=0
 
virtual ErrorCode ConfigRemoteFeedbackFilter (ctre::phoenix::sensors::CANCoder &canCoderRef, int remoteOrdinal, int timeoutMs=0)=0
 
virtual ErrorCode ConfigRemoteFeedbackFilter (ctre::phoenix::motorcontrol::can::BaseTalon &talonRef, int remoteOrdinal, int timeoutMs=0)=0
 
virtual ErrorCode ConfigSensorTerm (SensorTerm sensorTerm, FeedbackDevice feedbackDevice, int timeoutMs=0)=0
 
virtual double GetSelectedSensorPosition (int pidIdx=0)=0
 
virtual double GetSelectedSensorVelocity (int pidIdx=0)=0
 
virtual ErrorCode SetSelectedSensorPosition (double sensorPos, int pidIdx=0, int timeoutMs=50)=0
 
virtual ErrorCode SetControlFramePeriod (ControlFrame frame, int periodMs)=0
 
virtual ErrorCode SetStatusFramePeriod (StatusFrame frame, uint8_t periodMs, int timeoutMs=0)=0
 
virtual int GetStatusFramePeriod (StatusFrame frame, int timeoutMs=0)=0
 
virtual ErrorCode ConfigForwardLimitSwitchSource (RemoteLimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int deviceID, int timeoutMs=0)=0
 
virtual ErrorCode ConfigReverseLimitSwitchSource (RemoteLimitSwitchSource type, LimitSwitchNormal normalOpenOrClose, int deviceID, int timeoutMs=0)=0
 
virtual void OverrideLimitSwitchesEnable (bool enable)=0
 
virtual ErrorCode ConfigForwardSoftLimitThreshold (double forwardSensorLimit, int timeoutMs=0)=0
 
virtual ErrorCode ConfigReverseSoftLimitThreshold (double reverseSensorLimit, int timeoutMs=0)=0
 
virtual ErrorCode ConfigForwardSoftLimitEnable (bool enable, int timeoutMs=0)=0
 
virtual ErrorCode ConfigReverseSoftLimitEnable (bool enable, int timeoutMs=0)=0
 
virtual void OverrideSoftLimitsEnable (bool enable)=0
 
virtual ErrorCode Config_kP (int slotIdx, double value, int timeoutMs=0)=0
 
virtual ErrorCode Config_kI (int slotIdx, double value, int timeoutMs=0)=0
 
virtual ErrorCode Config_kD (int slotIdx, double value, int timeoutMs=0)=0
 
virtual ErrorCode Config_kF (int slotIdx, double value, int timeoutMs=0)=0
 
virtual ErrorCode Config_IntegralZone (int slotIdx, double izone, int timeoutMs=0)=0
 
virtual ErrorCode ConfigAllowableClosedloopError (int slotIdx, double allowableCloseLoopError, int timeoutMs=0)=0
 
virtual ErrorCode ConfigMaxIntegralAccumulator (int slotIdx, double iaccum, int timeoutMs=0)=0
 
virtual ErrorCode ConfigClosedLoopPeakOutput (int slotIdx, double percentOut, int timeoutMs=0)=0
 
virtual ErrorCode ConfigClosedLoopPeriod (int slotIdx, int loopTimeMs, int timeoutMs=0)=0
 
virtual ErrorCode ConfigAuxPIDPolarity (bool invert, int timeoutMs=0)=0
 
virtual ErrorCode SetIntegralAccumulator (double iaccum, int pidIdx=0, int timeoutMs=0)=0
 
virtual double GetClosedLoopError (int pidIdx=0)=0
 
virtual double GetIntegralAccumulator (int pidIdx=0)=0
 
virtual double GetErrorDerivative (int pidIdx=0)=0
 
virtual ErrorCode SelectProfileSlot (int slotIdx, int pidIdx)=0
 
virtual double GetClosedLoopTarget (int pidIdx=0)=0
 
virtual double GetActiveTrajectoryPosition (int pidIdx=0)=0
 
virtual double GetActiveTrajectoryVelocity (int pidIdx=0)=0
 
virtual double GetActiveTrajectoryArbFeedFwd (int pidIdx=0)=0
 
virtual ErrorCode ConfigMotionCruiseVelocity (double sensorUnitsPer100ms, int timeoutMs=0)=0
 
virtual ErrorCode ConfigMotionAcceleration (double sensorUnitsPer100msPerSec, int timeoutMs=0)=0
 
virtual ErrorCode ConfigMotionSCurveStrength (int curveStrength, int timeoutMs)=0
 
virtual ErrorCode ClearMotionProfileTrajectories ()=0
 
virtual int GetMotionProfileTopLevelBufferCount ()=0
 
virtual ErrorCode PushMotionProfileTrajectory (const ctre::phoenix::motion::TrajectoryPoint &trajPt)=0
 
virtual bool IsMotionProfileTopLevelBufferFull ()=0
 
virtual void ProcessMotionProfileBuffer ()=0
 
virtual ErrorCode GetMotionProfileStatus (ctre::phoenix::motion::MotionProfileStatus &statusToFill)=0
 
virtual ErrorCode ClearMotionProfileHasUnderrun (int timeoutMs=0)=0
 
virtual ErrorCode ChangeMotionControlFramePeriod (int periodMs)=0
 
virtual ErrorCode ConfigMotionProfileTrajectoryPeriod (int baseTrajDurationMs, int timeoutMs=0)=0
 
virtual ErrorCode ConfigFeedbackNotContinuous (bool feedbackNotContinuous, int timeoutMs=0)=0
 
virtual ErrorCode ConfigRemoteSensorClosedLoopDisableNeutralOnLOS (bool remoteSensorClosedLoopDisableNeutralOnLOS, int timeoutMs=0)=0
 
virtual ErrorCode ConfigClearPositionOnLimitF (bool clearPositionOnLimitF, int timeoutMs=0)=0
 
virtual ErrorCode ConfigClearPositionOnLimitR (bool clearPositionOnLimitR, int timeoutMs=0)=0
 
virtual ErrorCode ConfigClearPositionOnQuadIdx (bool clearPositionOnQuadIdx, int timeoutMs=0)=0
 
virtual ErrorCode ConfigLimitSwitchDisableNeutralOnLOS (bool limitSwitchDisableNeutralOnLOS, int timeoutMs=0)=0
 
virtual ErrorCode ConfigSoftLimitDisableNeutralOnLOS (bool softLimitDisableNeutralOnLOS, int timeoutMs=0)=0
 
virtual ErrorCode ConfigPulseWidthPeriod_EdgesPerRot (int pulseWidthPeriod_EdgesPerRot, int timeoutMs=0)=0
 
virtual ErrorCode ConfigPulseWidthPeriod_FilterWindowSz (int pulseWidthPeriod_FilterWindowSz, int timeoutMs=0)=0
 
virtual ErrorCode GetLastError ()=0
 
virtual ErrorCode GetFaults (Faults &toFill)=0
 
virtual ErrorCode GetStickyFaults (StickyFaults &toFill)=0
 
virtual ErrorCode ClearStickyFaults (int timeoutMs=0)=0
 
virtual int GetFirmwareVersion ()=0
 
virtual bool HasResetOccurred ()=0
 
virtual ErrorCode ConfigSetCustomParam (int newValue, int paramIndex, int timeoutMs=0)=0
 
virtual int ConfigGetCustomParam (int paramIndex, int timeoutMs=0)=0
 
virtual ErrorCode ConfigSetParameter (ParamEnum param, double value, uint8_t subValue, int ordinal, int timeoutMs=0)=0
 
virtual double ConfigGetParameter (ParamEnum paramEnum, int ordinal, int timeoutMs=0)=0
 
virtual int GetBaseID ()=0
 
virtual int GetDeviceID ()=0
 
virtual ControlMode GetControlMode ()=0
 
- Public Member Functions inherited from ctre::phoenix::motorcontrol::IFollower
virtual void Follow (ctre::phoenix::motorcontrol::IMotorController &masterToFollow)=0
 
virtual void ValueUpdated ()=0
 

Detailed Description

Interface for enhanced motor controllers

Member Function Documentation

◆ ConfigForwardLimitSwitchSource() [1/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigForwardLimitSwitchSource ( LimitSwitchSource  type,
LimitSwitchNormal  normalOpenOrClose,
int  timeoutMs = 0 
)
pure virtual

Configures the forward limit switch for a remote source. For example, a CAN motor controller may need to monitor the Limit-F pin of another Talon or CANifier.

Parameters
typeRemote limit switch source. User can choose between a remote Talon SRX, CANifier, or deactivate the feature.
normalOpenOrCloseSetting for normally open, normally closed, or disabled. This setting matches the Phoenix Tuner drop down.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ ConfigForwardLimitSwitchSource() [2/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigForwardLimitSwitchSource ( RemoteLimitSwitchSource  type,
LimitSwitchNormal  normalOpenOrClose,
int  deviceID,
int  timeoutMs = 0 
)
pure virtual

Configures the forward limit switch for a remote source. For example, a CAN motor controller may need to monitor the Limit-F pin of another Talon or CANifier.

Parameters
typeRemote limit switch source. User can choose between a remote Talon SRX, CANifier, or deactivate the feature.
normalOpenOrCloseSetting for normally open, normally closed, or disabled. This setting matches the Phoenix Tuner drop down.
deviceIDDevice ID of remote source (Talon SRX or CANifier device ID).
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implements ctre::phoenix::motorcontrol::IMotorController.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ ConfigReverseLimitSwitchSource() [1/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigReverseLimitSwitchSource ( LimitSwitchSource  type,
LimitSwitchNormal  normalOpenOrClose,
int  timeoutMs = 0 
)
pure virtual

Configures the reverse limit switch for a remote source. For example, a CAN motor controller may need to monitor the Limit-R pin of another Talon or CANifier.

Parameters
typeRemote limit switch source. User can choose between a remote Talon SRX, CANifier, or deactivate the feature.
normalOpenOrCloseSetting for normally open, normally closed, or disabled. This setting matches the Phoenix Tuner drop down.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ ConfigReverseLimitSwitchSource() [2/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigReverseLimitSwitchSource ( RemoteLimitSwitchSource  type,
LimitSwitchNormal  normalOpenOrClose,
int  deviceID,
int  timeoutMs = 0 
)
pure virtual

Configures the reverse limit switch for a remote source. For example, a CAN motor controller may need to monitor the Limit-R pin of another Talon or CANifier.

Parameters
typeRemote limit switch source. User can choose between a remote Talon SRX, CANifier, or deactivate the feature.
normalOpenOrCloseSetting for normally open, normally closed, or disabled. This setting matches the Phoenix Tuner drop down.
deviceIDDevice ID of remote source (Talon SRX or CANifier device ID).
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implements ctre::phoenix::motorcontrol::IMotorController.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ ConfigSelectedFeedbackSensor() [1/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigSelectedFeedbackSensor ( FeedbackDevice  feedbackDevice,
int  pidIdx = 0,
int  timeoutMs = 0 
)
pure virtual

Select the feedback device for the motor controller.

Parameters
feedbackDeviceFeedback Device to select.
pidIdx0 for Primary closed-loop. 1 for auxiliary closed-loop.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implemented in ctre::phoenix::motorcontrol::can::TalonSRX, ctre::phoenix::motorcontrol::can::BaseTalon, ctre::phoenix::motorcontrol::can::TalonFX, ctre::phoenix::motorcontrol::can::WPI_TalonFX, and ctre::phoenix::motorcontrol::can::WPI_TalonSRX.

◆ ConfigSelectedFeedbackSensor() [2/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigSelectedFeedbackSensor ( RemoteFeedbackDevice  feedbackDevice,
int  pidIdx = 0,
int  timeoutMs = 0 
)
pure virtual

Select the feedback device for the motor controller.

Parameters
feedbackDeviceFeedback Device to select.
pidIdx0 for Primary closed-loop. 1 for auxiliary closed-loop.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implements ctre::phoenix::motorcontrol::IMotorController.

Implemented in ctre::phoenix::motorcontrol::can::TalonSRX, ctre::phoenix::motorcontrol::can::BaseTalon, ctre::phoenix::motorcontrol::can::TalonFX, ctre::phoenix::motorcontrol::can::WPI_TalonFX, and ctre::phoenix::motorcontrol::can::WPI_TalonSRX.

◆ ConfigSupplyCurrentLimit()

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigSupplyCurrentLimit ( const SupplyCurrentLimitConfiguration currLimitConfigs,
int  timeoutMs = 50 
)
pure virtual

Configures the supply-side current limit.

Parameters
currLimitCfgCurrent limit configuration
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implemented in ctre::phoenix::motorcontrol::can::TalonFX, ctre::phoenix::motorcontrol::can::BaseTalon, and ctre::phoenix::motorcontrol::can::TalonSRX.

◆ ConfigVelocityMeasurementPeriod()

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigVelocityMeasurementPeriod ( VelocityMeasPeriod  period,
int  timeoutMs = 0 
)
pure virtual

Sets the period over which velocity measurements are taken.

Parameters
periodDesired period for the velocity measurement.
See also
com.ctre.phoenix.motorcontrol.VelocityMeasPeriod
Parameters
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigVelocityMeasurementWindow()

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::ConfigVelocityMeasurementWindow ( int  windowSize,
int  timeoutMs = 0 
)
pure virtual

Sets the number of velocity samples used in the rolling average velocity measurement.

Parameters
windowSizeNumber of samples in the rolling average of velocity measurement. Valid values are 1,2,4,8,16,32. If another value is specified, it will truncate to nearest support value.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ GetOutputCurrent()

virtual double ctre::phoenix::motorcontrol::IMotorControllerEnhanced::GetOutputCurrent ( )
pure virtual

Gets the output current of the motor controller. In the case of TalonSRX class, this routine returns supply current for legacy reasons. In order to get the "true" output current, call GetStatorCurrent(). In the case of TalonFX class, this routine returns the true output stator current.

[[deprecated("Use GetStatorCurrent/GetSupplyCurrent instead.")]]

Returns
The output current (in amps).

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ GetStatusFramePeriod() [1/2]

virtual int ctre::phoenix::motorcontrol::IMotorControllerEnhanced::GetStatusFramePeriod ( StatusFrame  frame,
int  timeoutMs = 0 
)
pure virtual

Gets the period of the given status frame.

Parameters
frameFrame to get the period of.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Period of the given status frame.

Implements ctre::phoenix::motorcontrol::IMotorController.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ GetStatusFramePeriod() [2/2]

virtual int ctre::phoenix::motorcontrol::IMotorControllerEnhanced::GetStatusFramePeriod ( StatusFrameEnhanced  frame,
int  timeoutMs = 0 
)
pure virtual

Gets the period of the given status frame.

Parameters
frameFrame to get the period of.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Period of the given status frame.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ SetStatusFramePeriod() [1/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::SetStatusFramePeriod ( StatusFrame  frame,
uint8_t  periodMs,
int  timeoutMs = 0 
)
pure virtual

Sets the period of the given status frame.

User ensure CAN Bus utilization is not high.

This setting is not persistent and is lost when device is reset. If this is a concern, calling application can use HasResetOccurred() to determine if the status frame needs to be reconfigured.

Parameters
frameFrame whose period is to be changed.
periodMsPeriod in ms for the given frame.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implements ctre::phoenix::motorcontrol::IMotorController.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.

◆ SetStatusFramePeriod() [2/2]

virtual ErrorCode ctre::phoenix::motorcontrol::IMotorControllerEnhanced::SetStatusFramePeriod ( StatusFrameEnhanced  frame,
uint8_t  periodMs,
int  timeoutMs = 0 
)
pure virtual

Sets the period of the given status frame.

User ensure CAN Bus utilization is not high.

This setting is not persistent and is lost when device is reset. If this is a concern, calling application can use HasResetOccurred() to determine if the status frame needs to be reconfigured.

Parameters
frameFrame whose period is to be changed.
periodMsPeriod in ms for the given frame.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

Implemented in ctre::phoenix::motorcontrol::can::BaseTalon.


The documentation for this class was generated from the following file: