CTRE_Phoenix 5.20.2
VictorSPX.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/BaseMotorController.h"
8#include "ctre/phoenix/CustomParamConfiguration.h"
9
10namespace ctre {
11namespace phoenix {
12namespace motorcontrol{
13namespace can {
14
23
26 {
27 }
28
32 std::string toString() {
33 return toString("");
34 }
35
41 std::string toString(std::string prependString) {
42
43 std::string retstr = prependString + ".selectedFeedbackSensor = " + FeedbackDeviceRoutines::toString(selectedFeedbackSensor) + ";\n";
44 retstr += BasePIDSetConfiguration::toString(prependString);
45 return retstr;
46 }
47};
48
53 private:
54 static VictorSPXPIDSetConfiguration _default;
55 public:
62 static bool SelectedFeedbackSensorDifferent (const VictorSPXPIDSetConfiguration & settings) { return (!(settings.selectedFeedbackSensor == _default.selectedFeedbackSensor)); }
63 static bool SelectedFeedbackCoefficientDifferent (const VictorSPXPIDSetConfiguration & settings) { return (!(settings.selectedFeedbackCoefficient == _default.selectedFeedbackCoefficient)); }
65};
66
127
139 {
140 }
141
145 std::string toString() {
146 return toString("");
147 }
148
154 std::string toString(std::string prependString) {
155 std::string retstr = primaryPID.toString(prependString + ".primaryPID");
156 retstr += auxiliaryPID.toString(prependString + ".auxiliaryPID");
157 retstr += prependString + ".forwardLimitSwitchSource = " + LimitSwitchRoutines::toString(forwardLimitSwitchSource) + ";\n";
158 retstr += prependString + ".reverseLimitSwitchSource = " + LimitSwitchRoutines::toString(reverseLimitSwitchSource) + ";\n";
159 retstr += prependString + ".forwardLimitSwitchDeviceID = " + std::to_string(forwardLimitSwitchDeviceID) + ";\n";
160 retstr += prependString + ".reverseLimitSwitchDeviceID = " + std::to_string(reverseLimitSwitchDeviceID) + ";\n";
161 retstr += prependString + ".forwardLimitSwitchNormal = " + LimitSwitchRoutines::toString(forwardLimitSwitchNormal) + ";\n";
162 retstr += prependString + ".reverseLimitSwitchNormal = " + LimitSwitchRoutines::toString(reverseLimitSwitchNormal) + ";\n";
163 retstr += prependString + ".sum0Term = " + FeedbackDeviceRoutines::toString(sum0Term) + ";\n";
164 retstr += prependString + ".sum1Term = " + FeedbackDeviceRoutines::toString(sum1Term) + ";\n";
165 retstr += prependString + ".diff0Term = " + FeedbackDeviceRoutines::toString(diff0Term) + ";\n";
166 retstr += prependString + ".diff1Term = " + FeedbackDeviceRoutines::toString(diff1Term) + ";\n";
167 retstr += BaseMotorControllerConfiguration::toString(prependString);
168
169 return retstr;
170 }
171};
172
177 private:
178 static struct VictorSPXConfiguration _default;
179 public:
186 static bool ForwardLimitSwitchSourceDifferent (const VictorSPXConfiguration & settings) { return (!(settings.forwardLimitSwitchSource == _default.forwardLimitSwitchSource)) || !settings.enableOptimizations; }
187 static bool ReverseLimitSwitchSourceDifferent (const VictorSPXConfiguration & settings) { return (!(settings.reverseLimitSwitchSource == _default.reverseLimitSwitchSource)) || !settings.enableOptimizations; }
188 static bool ForwardLimitSwitchDeviceIDDifferent (const VictorSPXConfiguration & settings) { return (!(settings.forwardLimitSwitchDeviceID == _default.forwardLimitSwitchDeviceID)) || !settings.enableOptimizations; }
189 static bool ReverseLimitSwitchDeviceIDDifferent (const VictorSPXConfiguration & settings) { return (!(settings.reverseLimitSwitchDeviceID == _default.reverseLimitSwitchDeviceID)) || !settings.enableOptimizations; }
190 static bool ForwardLimitSwitchNormalDifferent (const VictorSPXConfiguration & settings) { return (!(settings.forwardLimitSwitchNormal == _default.forwardLimitSwitchNormal)) || !settings.enableOptimizations; }
191 static bool ReverseLimitSwitchNormalDifferent (const VictorSPXConfiguration & settings) { return (!(settings.reverseLimitSwitchNormal == _default.reverseLimitSwitchNormal)) || !settings.enableOptimizations; }
192 static bool Sum0TermDifferent (const VictorSPXConfiguration & settings) { return (!(settings.sum0Term == _default.sum0Term)) || !settings.enableOptimizations; }
193 static bool Sum1TermDifferent (const VictorSPXConfiguration & settings) { return (!(settings.sum1Term == _default.sum1Term)) || !settings.enableOptimizations; }
194 static bool Diff0TermDifferent (const VictorSPXConfiguration & settings) { return (!(settings.diff0Term == _default.diff0Term)) || !settings.enableOptimizations; }
195 static bool Diff1TermDifferent (const VictorSPXConfiguration & settings) { return (!(settings.diff1Term == _default.diff1Term)) || !settings.enableOptimizations; }
196
197 static bool ForwardLimitSwitchDifferent (const VictorSPXConfiguration & settings) {
198 return ForwardLimitSwitchDeviceIDDifferent(settings) || ForwardLimitSwitchNormalDifferent(settings) || ForwardLimitSwitchSourceDifferent(settings);
199 }
200 static bool ReverseLimitSwitchDifferent (const VictorSPXConfiguration & settings) {
201 return ReverseLimitSwitchDeviceIDDifferent(settings) || ReverseLimitSwitchNormalDifferent(settings) || ReverseLimitSwitchSourceDifferent(settings);
202 }
204};
205
227
228private:
240 ctre::phoenix::ErrorCode ConfigurePID(const VictorSPXPIDSetConfiguration &pid, int pidIdx, int timeoutMs, bool enableOptimizations);
241public:
248 VictorSPX(int deviceNumber);
249 virtual ~VictorSPX() {
250 }
251 VictorSPX(VictorSPX const&) = delete;
252 VictorSPX& operator=(VictorSPX const&) = delete;
253
254 // ------ Set output routines. ----------//
311
312 //------ Simulation API ----------//
317
318 //------ All Configs ----------//
329 void GetPIDConfigs(VictorSPXPIDSetConfiguration &pid, int pidIdx = 0, int timeoutMs = 50);
341 virtual ctre::phoenix::ErrorCode ConfigAllSettings(const VictorSPXConfiguration &allConfigs, int timeoutMs = 50);
351 virtual void GetAllConfigs(VictorSPXConfiguration &allConfigs, int timeoutMs = 50);
352
353 /* ----- virtual re-directs ------- */
354 virtual void Set(ctre::phoenix::motorcontrol::ControlMode mode, double value);
355 virtual void Set(ctre::phoenix::motorcontrol::ControlMode mode, double demand0, ctre::phoenix::motorcontrol::DemandType demand1Type, double demand1);
356
357};// class VictorSPX
358} // namespace can
359} // namespace motorcontrol
360} // namespace phoenix
361} // namespace ctre
362
363#if defined(WIN32) || defined(_WIN32) || defined(_WIN64)
364#pragma warning (pop)
365#endif
static std::string toString(FeedbackDevice value)
Definition: FeedbackDevice.h:250
Definition: IMotorController.h:34
static std::string toString(LimitSwitchSource value)
Definition: LimitSwitchType.h:109
Definition: VictorSPXSimCollection.h:25
Definition: BaseMotorController.h:577
static bool ForwardLimitSwitchSourceDifferent(const VictorSPXConfiguration &settings)
Definition: VictorSPX.h:186
virtual ctre::phoenix::ErrorCode ConfigAllSettings(const VictorSPXConfiguration &allConfigs, int timeoutMs=50)
virtual void GetAllConfigs(VictorSPXConfiguration &allConfigs, int timeoutMs=50)
void Set(ctre::phoenix::motorcontrol::VictorSPXControlMode mode, double value)
virtual void Set(ctre::phoenix::motorcontrol::ControlMode mode, double value)
ctre::phoenix::motorcontrol::VictorSPXSimCollection & GetSimCollection()
void Set(ctre::phoenix::motorcontrol::VictorSPXControlMode mode, double demand0, ctre::phoenix::motorcontrol::DemandType demand1Type, double demand1)
virtual void Set(ctre::phoenix::motorcontrol::ControlMode mode, double demand0, ctre::phoenix::motorcontrol::DemandType demand1Type, double demand1)
void GetPIDConfigs(VictorSPXPIDSetConfiguration &pid, int pidIdx=0, int timeoutMs=50)
ControlMode
Definition: ControlMode.h:10
DemandType
Definition: DemandType.h:9
LimitSwitchNormal
Definition: LimitSwitchType.h:61
@ LimitSwitchNormal_NormallyOpen
Definition: LimitSwitchType.h:66
RemoteFeedbackDevice
Definition: FeedbackDevice.h:169
RemoteLimitSwitchSource
Definition: LimitSwitchType.h:34
@ RemoteLimitSwitchSource_Deactivated
Definition: LimitSwitchType.h:54
VictorSPXControlMode
Definition: ControlMode.h:143
ErrorCode
Definition: ErrorCode.h:12
Definition: ErrorCode.h:5
bool enableOptimizations
Definition: CustomParamConfiguration.h:22
std::string toString()
Definition: BaseMotorController.h:473
double selectedFeedbackCoefficient
Definition: BaseMotorController.h:54
std::string toString()
Definition: BaseMotorController.h:64
int reverseLimitSwitchDeviceID
Definition: VictorSPX.h:102
VictorSPXPIDSetConfiguration auxiliaryPID
Definition: VictorSPX.h:78
std::string toString(std::string prependString)
Definition: VictorSPX.h:154
LimitSwitchNormal forwardLimitSwitchNormal
Definition: VictorSPX.h:106
VictorSPXPIDSetConfiguration primaryPID
Definition: VictorSPX.h:74
RemoteFeedbackDevice diff0Term
Definition: VictorSPX.h:122
RemoteFeedbackDevice diff1Term
Definition: VictorSPX.h:126
LimitSwitchNormal reverseLimitSwitchNormal
Definition: VictorSPX.h:110
int forwardLimitSwitchDeviceID
Definition: VictorSPX.h:96
RemoteLimitSwitchSource reverseLimitSwitchSource
Definition: VictorSPX.h:90
RemoteFeedbackDevice sum0Term
Definition: VictorSPX.h:114
RemoteFeedbackDevice sum1Term
Definition: VictorSPX.h:118
std::string toString()
Definition: VictorSPX.h:145
RemoteLimitSwitchSource forwardLimitSwitchSource
Definition: VictorSPX.h:84
static bool SelectedFeedbackSensorDifferent(const VictorSPXPIDSetConfiguration &settings)
Definition: VictorSPX.h:62
std::string toString()
Definition: VictorSPX.h:32
std::string toString(std::string prependString)
Definition: VictorSPX.h:41
RemoteFeedbackDevice selectedFeedbackSensor
Definition: VictorSPX.h:22