CTRE_Phoenix 5.20.2
TalonFX.h
1#pragma once
2#if defined(WIN32) || defined(_WIN32) || defined(_WIN64)
3#pragma warning (push)
4#pragma warning (disable : 4250)
5#endif
6
7#include "ctre/phoenix/motorcontrol/can/BaseTalon.h"
8#include "ctre/phoenix/motorcontrol/IMotorControllerEnhanced.h"
9#include "ctre/phoenix/motorcontrol/MotorCommutation.h"
10#include "ctre/phoenix/motorcontrol/StatorCurrentLimitConfiguration.h"
11#include "ctre/phoenix/CustomParamConfiguration.h"
12#include "ctre/phoenix/sensors/AbsoluteSensorRange.h"
13#include "ctre/phoenix/sensors/SensorInitializationStrategy.h"
14
15namespace ctre {
16 namespace phoenix {
17 namespace motorcontrol {
18 namespace can {
19
24
29
38
43
49 ctre::phoenix::sensors::AbsoluteSensorRange absoluteSensorRange = ctre::phoenix::sensors::AbsoluteSensorRange::Unsigned_0_to_360;
66 ctre::phoenix::sensors::SensorInitializationStrategy initializationStrategy = ctre::phoenix::sensors::SensorInitializationStrategy::BootToZero;
67
68
70 {
71 }
72
76 std::string toString() {
77 return toString("");
78 }
79
85 std::string toString(std::string prependString) {
86
87 std::string retstr;
88 retstr += prependString + ".supplyCurrLimit = " + supplyCurrLimit.ToString() + ";\n";
89 retstr += prependString + ".statorCurrLimit = " + statorCurrLimit.ToString() + ";\n";
90 retstr += prependString + ".motorCommutation = " + std::to_string((int)motorCommutation) + ";\n";
91 retstr += prependString + ".absoluteSensorRange = " + std::to_string(absoluteSensorRange) + ";\n";
92 retstr += prependString + ".integratedSensorOffsetDegrees = " + std::to_string(integratedSensorOffsetDegrees) + ";\n";
93 retstr += prependString + ".initializationStrategy = " + std::to_string(initializationStrategy) + ";\n";
94 retstr += BaseTalonConfiguration::toString(prependString);
95
96 return retstr;
97 }
98 };// struct TalonFXConfiguration
99
104 private:
105 static struct TalonFXConfiguration _default;
106 public:
113 static bool SupplyCurrentLimitDifferent(const TalonFXConfiguration& settings) { return (!settings.supplyCurrLimit.Equals(_default.supplyCurrLimit)) || !settings.enableOptimizations; }
114 static bool StatorCurrentDurationDifferent(const TalonFXConfiguration& settings) { return (!settings.statorCurrLimit.Equals(_default.statorCurrLimit)) || !settings.enableOptimizations; }
115 static bool MotorCommutationDifferent(const TalonFXConfiguration& settings) { return (settings.motorCommutation != _default.motorCommutation) || !settings.enableOptimizations; }
116 static bool AbsoluteSensorRangeDifferent(const TalonFXConfiguration& settings) { return (settings.absoluteSensorRange != _default.absoluteSensorRange) || !settings.enableOptimizations; }
117 static bool IntegratedSensorOffsetDegreesDifferent(const TalonFXConfiguration& settings) { return (settings.integratedSensorOffsetDegrees != _default.integratedSensorOffsetDegrees) || !settings.enableOptimizations; }
118 static bool InitializationStrategyDifferent(const TalonFXConfiguration& settings) { return (settings.initializationStrategy != _default.initializationStrategy) || !settings.enableOptimizations; }
120 };
121
152 class TalonFX : public virtual BaseTalon
153 {
154 private:
155
156 public:
163 TalonFX(int deviceNumber, std::string const &canbus = "");
164 ~TalonFX();
165 TalonFX() = delete;
166 TalonFX(TalonFX const&) = delete;
167 TalonFX& operator=(TalonFX const&) = delete;
168 // ------ Set output routines. ----------//
187 void Set(TalonFXControlMode mode, double value);
226 void Set(TalonFXControlMode mode, double demand0, DemandType demand1Type, double demand1);
227 //------ Invert behavior ----------//
243 //------ sensor selection ----------//
257 ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(TalonFXFeedbackDevice feedbackDevice, int pidIdx = 0, int timeoutMs = 0);
258 //------ Current Limit ----------//
297
298 //------ RAW Sensor API ----------//
303
304 //------ Simulation API ----------//
309
310 //------ All Configs ----------//
311
322 ctre::phoenix::ErrorCode ConfigurePID(const TalonFXPIDSetConfiguration& pid, int pidIdx = 0, int timeoutMs = 50);
333 void GetPIDConfigs(TalonFXPIDSetConfiguration& pid, int pidIdx = 0, int timeoutMs = 50);
334
356 void GetAllConfigs(TalonFXConfiguration& allConfigs, int timeoutMs = 50);
375
402 ErrorCode ConfigIntegratedSensorOffset(double offsetDegrees, int timeoutMs = 0);
419
420 /* ----- virtual re-directs ------- */
421 virtual void Set(ControlMode mode, double value);
422 virtual void Set(ControlMode mode, double demand0, DemandType demand1Type, double demand1);
423 virtual void SetInverted(InvertType invertType);
424 virtual void SetInverted(bool bInvert);
425 virtual ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(FeedbackDevice feedbackDevice, int pidIdx = 0, int timeoutMs = 0);
426 virtual ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(RemoteFeedbackDevice feedbackDevice, int pidIdx = 0, int timeoutMs = 0);
427
428 };// class TalonFX
429
430 } // namespace can
431 } // namespace motorcontrol
432 } // namespace phoenix
433} // namespace ctre
434
435#if defined(WIN32) || defined(_WIN32) || defined(_WIN64)
436#pragma warning (pop)
437#endif
Definition: TalonFXSensorCollection.h:30
Definition: TalonFXSimCollection.h:25
static bool SupplyCurrentLimitDifferent(const TalonFXConfiguration &settings)
Definition: TalonFX.h:113
ctre::phoenix::ErrorCode ConfigGetSupplyCurrentLimit(ctre::phoenix::motorcontrol::SupplyCurrentLimitConfiguration &currLimitConfigsToFill, int timeoutMs=50)
ctre::phoenix::motorcontrol::TalonFXSimCollection & GetSimCollection()
ErrorCode ConfigIntegratedSensorInitializationStrategy(ctre::phoenix::sensors::SensorInitializationStrategy initializationStrategy, int timeoutMs=0)
ErrorCode ConfigIntegratedSensorOffset(double offsetDegrees, int timeoutMs=0)
void Set(TalonFXControlMode mode, double demand0, DemandType demand1Type, double demand1)
ctre::phoenix::ErrorCode ConfigAllSettings(const TalonFXConfiguration &allConfigs, int timeoutMs=50)
void GetAllConfigs(TalonFXConfiguration &allConfigs, int timeoutMs=50)
ErrorCode ConfigIntegratedSensorAbsoluteRange(ctre::phoenix::sensors::AbsoluteSensorRange absoluteSensorRange, int timeoutMs=0)
ctre::phoenix::ErrorCode ConfigStatorCurrentLimit(const ctre::phoenix::motorcontrol::StatorCurrentLimitConfiguration &currLimitConfigs, int timeoutMs=50)
virtual ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(RemoteFeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)
virtual void SetInverted(bool bInvert)
TalonFX(int deviceNumber, std::string const &canbus="")
virtual ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(FeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)
void GetPIDConfigs(TalonFXPIDSetConfiguration &pid, int pidIdx=0, int timeoutMs=50)
ctre::phoenix::ErrorCode ConfigGetStatorCurrentLimit(ctre::phoenix::motorcontrol::StatorCurrentLimitConfiguration &currLimitConfigsToFill, int timeoutMs=50)
virtual void Set(ControlMode mode, double demand0, DemandType demand1Type, double demand1)
void SetInverted(TalonFXInvertType invertType)
void Set(TalonFXControlMode mode, double value)
virtual void Set(ControlMode mode, double value)
ctre::phoenix::ErrorCode ConfigSupplyCurrentLimit(const ctre::phoenix::motorcontrol::SupplyCurrentLimitConfiguration &currLimitConfigs, int timeoutMs=50)
ctre::phoenix::ErrorCode ConfigSelectedFeedbackSensor(TalonFXFeedbackDevice feedbackDevice, int pidIdx=0, int timeoutMs=0)
ctre::phoenix::ErrorCode ConfigMotorCommutation(ctre::phoenix::motorcontrol::MotorCommutation motorCommutation, int timeoutMs=0)
ctre::phoenix::ErrorCode ConfigGetMotorCommutation(ctre::phoenix::motorcontrol::MotorCommutation &motorCommutation, int timeoutMs=0)
ctre::phoenix::ErrorCode ConfigurePID(const TalonFXPIDSetConfiguration &pid, int pidIdx=0, int timeoutMs=50)
virtual void SetInverted(InvertType invertType)
ctre::phoenix::motorcontrol::TalonFXSensorCollection & GetSensorCollection()
ControlMode
Definition: ControlMode.h:10
DemandType
Definition: DemandType.h:9
InvertType
Definition: InvertType.h:13
TalonFXFeedbackDevice
Definition: FeedbackDevice.h:134
MotorCommutation
Definition: MotorCommutation.h:10
RemoteFeedbackDevice
Definition: FeedbackDevice.h:169
FeedbackDevice
Definition: FeedbackDevice.h:13
TalonFXControlMode
Definition: ControlMode.h:55
TalonFXInvertType
Definition: InvertType.h:24
SensorInitializationStrategy
Definition: SensorInitializationStrategy.h:12
AbsoluteSensorRange
Definition: AbsoluteSensorRange.h:12
ErrorCode
Definition: ErrorCode.h:12
Definition: ErrorCode.h:5
bool enableOptimizations
Definition: CustomParamConfiguration.h:22
Definition: StatorCurrentLimitConfiguration.h:13
std::string ToString() const
Definition: StatorCurrentLimitConfiguration.h:53
Definition: SupplyCurrentLimitConfiguration.h:13
std::string ToString() const
Definition: SupplyCurrentLimitConfiguration.h:53
std::string toString()
Definition: BaseTalon.h:196
ctre::phoenix::motorcontrol::MotorCommutation motorCommutation
Definition: TalonFX.h:42
std::string toString(std::string prependString)
Definition: TalonFX.h:85
ctre::phoenix::sensors::SensorInitializationStrategy initializationStrategy
Definition: TalonFX.h:66
double integratedSensorOffsetDegrees
Definition: TalonFX.h:56
ctre::phoenix::sensors::AbsoluteSensorRange absoluteSensorRange
Definition: TalonFX.h:49
SupplyCurrentLimitConfiguration supplyCurrLimit
Definition: TalonFX.h:33
std::string toString()
Definition: TalonFX.h:76
StatorCurrentLimitConfiguration statorCurrLimit
Definition: TalonFX.h:37