CTRE Phoenix 6 C++ 25.2.1
Loading...
Searching...
No Matches
SpnValue.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) Cross The Road Electronics.  All rights reserved.
3 * License information can be found in CTRE_LICENSE.txt
4 * For support and suggestions contact support@ctr-electronics.com or file
5 * an issue tracker at https://github.com/CrossTheRoadElec/Phoenix-Releases
6 */
7#pragma once
8
9#include <ostream>
10#include <string>
11
12namespace ctre
13{
14 namespace phoenix6
15 {
16 namespace spns
17 {
18 /**
19 * \private
20 *
21 * \brief Class that holds all the SPN values used in Phoenix Pro devices.
22 */
23 class SpnValue
24 {
25 public:
26 int value;
27
28 static constexpr int TalonFX_System_State = 614;
29 static constexpr int Startup_ResetFlags = 635;
30 static constexpr int Version_Major = 733;
31 static constexpr int Version_Minor = 734;
32 static constexpr int Version_Bugfix = 735;
33 static constexpr int Version_Build = 736;
34 static constexpr int Version_Full = 737;
35 static constexpr int Licensing_IsProLicensed = 750;
36 static constexpr int Licensing_IsSeasonPassed = 753;
37 static constexpr int CustomParam0 = 822;
38 static constexpr int CustomParam1 = 823;
39 static constexpr int CANcoder_SensorDirection = 827;
40 static constexpr int FrcLock = 829;
41 static constexpr int RobotEnabled = 830;
42 static constexpr int LED1_OnColor = 832;
43 static constexpr int LED1_OffColor = 833;
44 static constexpr int LED2_OnColor = 834;
45 static constexpr int LED2_OffColor = 835;
46 static constexpr int AllFaults = 841;
47 static constexpr int AllStickyFaults = 842;
48 static constexpr int Pigeon2UseCompass = 916;
49 static constexpr int Pigeon2DisableTemperatureCompensation = 951;
50 static constexpr int Pigeon2DisableNoMotionCalibration = 953;
51 static constexpr int Pigeon2MountPoseYaw = 958;
52 static constexpr int Pigeon2MountPosePitch = 959;
53 static constexpr int Pigeon2MountPoseRoll = 960;
54 static constexpr int Pigeon2GyroScalarX = 964;
55 static constexpr int Pigeon2GyroScalarY = 965;
56 static constexpr int Pigeon2GyroScalarZ = 966;
57 static constexpr int Pigeon2Yaw = 973;
58 static constexpr int Pigeon2Pitch = 974;
59 static constexpr int Pigeon2Roll = 975;
60 static constexpr int Pigeon2QuatW = 976;
61 static constexpr int Pigeon2QuatX = 977;
62 static constexpr int Pigeon2QuatY = 978;
63 static constexpr int Pigeon2QuatZ = 979;
64 static constexpr int Pigeon2GravityVectorX = 980;
65 static constexpr int Pigeon2GravityVectorY = 981;
66 static constexpr int Pigeon2GravityVectorZ = 982;
67 static constexpr int Pigeon2Temperature = 983;
68 static constexpr int Pigeon2NoMotionCalEnabled = 984;
69 static constexpr int Pigeon2NoMotionCount = 985;
70 static constexpr int Pigeon2TempCompDisabled = 986;
71 static constexpr int Pigeon2UpTime = 987;
72 static constexpr int Pigeon2AccumGyroX = 988;
73 static constexpr int Pigeon2AccumGyroY = 989;
74 static constexpr int Pigeon2AccumGyroZ = 990;
75 static constexpr int Pigeon2AngularVelocityXWorld = 991;
76 static constexpr int Pigeon2AngularVelocityYWorld = 992;
77 static constexpr int Pigeon2AngularVelocityZWorld = 993;
78 static constexpr int Pigeon2AccelerationX = 994;
79 static constexpr int Pigeon2AccelerationY = 995;
80 static constexpr int Pigeon2AccelerationZ = 996;
81 static constexpr int Pigeon2_SupplyVoltage = 997;
82 static constexpr int Pigeon2AngularVelocityX = 1000;
83 static constexpr int Pigeon2AngularVelocityY = 1001;
84 static constexpr int Pigeon2AngularVelocityZ = 1002;
85 static constexpr int Pigeon2MagneticFieldX = 1005;
86 static constexpr int Pigeon2MagneticFieldY = 1006;
87 static constexpr int Pigeon2MagneticFieldZ = 1007;
88 static constexpr int Pigeon2RawMagneticFieldX = 1008;
89 static constexpr int Pigeon2RawMagneticFieldY = 1009;
90 static constexpr int Pigeon2RawMagneticFieldZ = 1010;
91 static constexpr int CANCoder_MagnetOffset = 1011;
92 static constexpr int TalonFX_SetSensorPosition = 1016;
93 static constexpr int CANcoder_SetSensorPosition = 1018;
94 static constexpr int Pigeon2_SetYaw = 1020;
95 static constexpr int DeviceEnabled = 1049;
96 static constexpr int PRO_MotorOutput_MotorVoltage = 2028;
97 static constexpr int ForwardLimit = 2029;
98 static constexpr int ReverseLimit = 2030;
99 static constexpr int PRO_MotorOutput_RotorPolarity = 2031;
100 static constexpr int PRO_MotorOutput_DutyCycle = 2032;
101 static constexpr int PRO_MotorOutput_TorqueCurrent = 2034;
102 static constexpr int PRO_SupplyAndTemp_StatorCurrent = 2035;
103 static constexpr int PRO_SupplyAndTemp_SupplyCurrent = 2036;
104 static constexpr int PRO_SupplyAndTemp_SupplyVoltage = 2037;
105 static constexpr int PRO_SupplyAndTemp_DeviceTemp = 2038;
106 static constexpr int PRO_SupplyAndTemp_ProcessorTemp = 2039;
107 static constexpr int PRO_RotorPosAndVel_Velocity = 2041;
108 static constexpr int PRO_RotorPosAndVel_Position = 2042;
109 static constexpr int PRO_PosAndVel_Velocity = 2045;
110 static constexpr int PRO_PosAndVel_Position = 2046;
111 static constexpr int PRO_PosAndVel_Acceleration = 2047;
112 static constexpr int PRO_PIDStateEnables_IntegratedAccum_DC = 2049;
113 static constexpr int PRO_PIDStateEnables_IntegratedAccum_V = 2050;
114 static constexpr int PRO_PIDStateEnables_IntegratedAccum_A = 2051;
115 static constexpr int PRO_PIDStateEnables_FeedForward_DC = 2052;
116 static constexpr int PRO_PIDStateEnables_FeedForward_V = 2053;
117 static constexpr int PRO_PIDStateEnables_FeedForward_A = 2054;
118 static constexpr int TalonFX_ControlMode = 2055;
119 static constexpr int ExternalMotorTempStatus = 2056;
120 static constexpr int ExternalMotorTemp = 2057;
121 static constexpr int PRO_PIDStateEnables_IsMotionMagicRunning = 2061;
122 static constexpr int PRO_PIDStateEnables_DeviceEnable = 2063;
123 static constexpr int PRO_PIDRefPIDErr_PIDRef_Position = 2065;
124 static constexpr int PRO_PIDRefPIDErr_PIDRef_Velocity = 2066;
125 static constexpr int PRO_PIDRefPIDErr_PIDErr_Position = 2067;
126 static constexpr int PRO_PIDRefPIDErr_PIDErr_Velocity = 2068;
127 static constexpr int PRO_PIDRefPIDErr_ClosedLoopMode = 2069;
128 static constexpr int PRO_PIDOutput_PIDOutputMode = 2071;
129 static constexpr int PRO_PIDOutput_ProportionalOutput_DC = 2072;
130 static constexpr int PRO_PIDOutput_ProportionalOutput_V = 2073;
131 static constexpr int PRO_PIDOutput_ProportionalOutput_A = 2074;
132 static constexpr int PRO_PIDOutput_DerivativeOutput_DC = 2075;
133 static constexpr int PRO_PIDOutput_DerivativeOutput_V = 2076;
134 static constexpr int PRO_PIDOutput_DerivativeOutput_A = 2077;
135 static constexpr int PRO_PIDOutput_Output_DC = 2078;
136 static constexpr int PRO_PIDOutput_Output_V = 2079;
137 static constexpr int PRO_PIDOutput_Output_A = 2080;
138 static constexpr int PRO_PIDOutput_Slot = 2081;
139 static constexpr int PRO_PIDRefSlopeECUTime_ReferenceSlope_Position = 2082;
140 static constexpr int PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity = 2083;
141 static constexpr int PRO_PIDRefSlopeECUTime_ClosedLoopMode = 2084;
142 static constexpr int TalonFX_MotorOutputStatus = 2085;
143 static constexpr int PRO_MotorOutput_PIDState_Diff_DutyCycle = 2088;
144 static constexpr int PRO_MotorOutput_PIDState_Diff_TorqueCurrent = 2089;
145 static constexpr int TalonFX_DifferentialControlMode = 2092;
146 static constexpr int PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC = 2093;
147 static constexpr int PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V = 2094;
148 static constexpr int PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A = 2095;
149 static constexpr int PRO_MotorOutput_PIDState_Diff_FeedForward_DC = 2096;
150 static constexpr int PRO_MotorOutput_PIDState_Diff_FeedForward_V = 2097;
151 static constexpr int PRO_MotorOutput_PIDState_Diff_FeedForward_A = 2098;
152 static constexpr int PRO_AvgPosAndVel_Velocity = 2100;
153 static constexpr int PRO_AvgPosAndVel_Position = 2101;
154 static constexpr int PRO_DiffPosAndVel_Velocity = 2104;
155 static constexpr int PRO_DiffPosAndVel_Position = 2105;
156 static constexpr int PRO_DiffPIDRefPIDErr_PIDRef_Position = 2107;
157 static constexpr int PRO_DiffPIDRefPIDErr_PIDRef_Velocity = 2108;
158 static constexpr int PRO_DiffPIDRefPIDErr_PIDErr_Position = 2109;
159 static constexpr int PRO_DiffPIDRefPIDErr_PIDErr_Velocity = 2110;
160 static constexpr int PRO_DiffPIDRefPIDErr_ClosedLoopMode = 2111;
161 static constexpr int PRO_DiffPIDOutput_PIDOutputMode = 2113;
162 static constexpr int PRO_DiffPIDOutput_ProportionalOutput_DC = 2114;
163 static constexpr int PRO_DiffPIDOutput_ProportionalOutput_V = 2115;
164 static constexpr int PRO_DiffPIDOutput_ProportionalOutput_A = 2116;
165 static constexpr int PRO_DiffPIDOutput_DerivativeOutput_DC = 2117;
166 static constexpr int PRO_DiffPIDOutput_DerivativeOutput_V = 2118;
167 static constexpr int PRO_DiffPIDOutput_DerivativeOutput_A = 2119;
168 static constexpr int PRO_DiffPIDOutput_Output_DC = 2120;
169 static constexpr int PRO_DiffPIDOutput_Output_V = 2121;
170 static constexpr int PRO_DiffPIDOutput_Output_A = 2122;
171 static constexpr int PRO_DiffPIDOutput_Slot = 2123;
172 static constexpr int PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position = 2124;
173 static constexpr int PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity = 2125;
174 static constexpr int PRO_DiffPIDRefSlopeECUTime_ClosedLoopMode = 2126;
175 static constexpr int TalonFX_MotorConstants_kT = 2128;
176 static constexpr int TalonFX_MotorConstants_kV = 2129;
177 static constexpr int TalonFX_MotorConstants_StallCurrent = 2130;
178 static constexpr int Slot0_kP = 2131;
179 static constexpr int Slot0_kI = 2132;
180 static constexpr int Slot0_kD = 2133;
181 static constexpr int Slot0_kS = 2134;
182 static constexpr int Slot0_kV = 2135;
183 static constexpr int Slot0_kA = 2136;
184 static constexpr int Slot0_kG = 2137;
185 static constexpr int Slot0_kG_Type = 2138;
186 static constexpr int Slot1_kP = 2139;
187 static constexpr int Slot1_kI = 2140;
188 static constexpr int Slot1_kD = 2141;
189 static constexpr int Slot1_kS = 2142;
190 static constexpr int Slot1_kV = 2143;
191 static constexpr int Slot1_kA = 2144;
192 static constexpr int Slot1_kG = 2145;
193 static constexpr int Slot1_kG_Type = 2146;
194 static constexpr int Slot2_kP = 2147;
195 static constexpr int Slot2_kI = 2148;
196 static constexpr int Slot2_kD = 2149;
197 static constexpr int Slot2_kS = 2150;
198 static constexpr int Slot2_kV = 2151;
199 static constexpr int Slot2_kA = 2152;
200 static constexpr int Slot2_kG = 2153;
201 static constexpr int Slot2_kG_Type = 2154;
202 static constexpr int Config_Inverted = 2155;
203 static constexpr int Config_SupplyVLowpassTau = 2156;
204 static constexpr int Config_BeepOnBoot = 2157;
205 static constexpr int Config_NeutralMode = 2158;
206 static constexpr int Config_DutyCycleNeutralDB = 2159;
207 static constexpr int Config_StatorCurrentLimit = 2160;
208 static constexpr int Config_StatorCurrLimitEn = 2161;
209 static constexpr int Config_SupplyCurrentLimit = 2162;
210 static constexpr int Config_SupplyCurrLimitEn = 2163;
211 static constexpr int Config_PeakForwardDC = 2164;
212 static constexpr int Config_PeakReverseDC = 2165;
213 static constexpr int Config_PeakForwardV = 2166;
214 static constexpr int Config_PeakReverseV = 2167;
215 static constexpr int Config_PeakForTorqCurr = 2168;
216 static constexpr int Config_PeakRevTorqCurr = 2169;
217 static constexpr int Config_TorqueNeutralDB = 2170;
218 static constexpr int Config_FeedbackRotorOffset = 2171;
219 static constexpr int Config_SensorToMechanismRatio = 2172;
220 static constexpr int Config_RotorToSensorRatio = 2173;
221 static constexpr int Config_FeedbackSensorSource = 2174;
222 static constexpr int Config_FeedbackRemoteSensorID = 2175;
223 static constexpr int Config_DutyCycleOpenLoopRampPeriod = 2176;
224 static constexpr int Config_VoltageOpenLoopRampPeriod = 2177;
225 static constexpr int Config_TorqueOpenLoopRampPeriod = 2178;
226 static constexpr int Config_DutyCycleClosedLoopRampPeriod = 2179;
227 static constexpr int Config_VoltageClosedLoopRampPeriod = 2180;
228 static constexpr int Config_TorqueClosedLoopRampPeriod = 2181;
229 static constexpr int Config_ForwardLimitType = 2182;
230 static constexpr int Config_ForwardLimitAutosetPosEnable = 2183;
231 static constexpr int Config_ForwardLimitAutosetPosValue = 2184;
232 static constexpr int Config_ForwardLimitEnable = 2185;
233 static constexpr int Config_ForwardLimitSource = 2186;
234 static constexpr int Config_ForwardLimitRemoteSensorID = 2187;
235 static constexpr int Config_ReverseLimitType = 2188;
236 static constexpr int Config_ReverseLimitAutosetPosEnable = 2189;
237 static constexpr int Config_ReverseLimitAutosetPosValue = 2190;
238 static constexpr int Config_ReverseLimitEnable = 2191;
239 static constexpr int Config_ReverseLimitSource = 2192;
240 static constexpr int Config_ReverseLimitRemoteSensorID = 2193;
241 static constexpr int Config_ForwardSoftLimitEnable = 2194;
242 static constexpr int Config_ReverseSoftLimitEnable = 2195;
243 static constexpr int Config_ForwardSoftLimitThreshold = 2196;
244 static constexpr int Config_ReverseSoftLimitThreshold = 2197;
245 static constexpr int Config_MotionMagicCruiseVelocity = 2198;
246 static constexpr int Config_MotionMagicAcceleration = 2199;
247 static constexpr int Config_MotionMagicJerk = 2200;
248 static constexpr int Config_MotionMagicExpo_kV = 2201;
249 static constexpr int Config_MotionMagicExpo_kA = 2202;
250 static constexpr int Config_PeakDiffDC = 2203;
251 static constexpr int Config_PeakDiffV = 2204;
252 static constexpr int Config_PeakDiffTorqCurr = 2205;
253 static constexpr int CANcoder_Velocity = 2206;
254 static constexpr int CANcoder_Position = 2207;
255 static constexpr int CANcoder_AbsPosition = 2208;
256 static constexpr int CANCoder_RawVel = 2210;
257 static constexpr int CANCoder_RawPos = 2211;
258 static constexpr int CANCoder_SupplyVoltage = 2212;
259 static constexpr int CANcoder_MagHealth = 2213;
260 static constexpr int SPN_ClearStickyFaults = 2216;
261 static constexpr int PRO_MotorOutput_BridgeType_Public = 2217;
262 static constexpr int Config_ContinuousWrap = 2239;
263 static constexpr int Config_SupplyCurrentLowerLimit = 2245;
264 static constexpr int Config_SupplyCurrentLowerTime = 2246;
265 static constexpr int Config_DifferentialSensorSource = 2260;
266 static constexpr int Config_DifferentialTalonFXSensorID = 2261;
267 static constexpr int Config_DifferentialRemoteSensorID = 2262;
268 static constexpr int Config_BeepOnConfig = 2301;
269 static constexpr int Config_AllowMusicDurDisable = 2302;
270 static constexpr int Compliancy_Version = 2303;
271 static constexpr int Version_IsProLicensed = 2304;
272 static constexpr int PRO_SupplyAndTemp_DeviceTemp2 = 2343;
273 static constexpr int Slot0_kS_Sign = 2366;
274 static constexpr int Slot1_kS_Sign = 2367;
275 static constexpr int Slot2_kS_Sign = 2368;
276 static constexpr int TalonFX_ConnectedMotor = 2369;
277 static constexpr int CANrange_SupplyVoltage = 2391;
278 static constexpr int CANrange_Distance_Meters = 2392;
279 static constexpr int CANrange_MeasTime = 2394;
280 static constexpr int CANrange_SignalStrength = 2395;
281 static constexpr int CANrange_ProximityDetected = 2396;
282 static constexpr int CANrange_MeasState = 2397;
283 static constexpr int CANrange_AmbientSignal = 2398;
284 static constexpr int CANrange_DistanceStdDev = 2399;
285 static constexpr int CANrange_RealFOVCenterX = 2402;
286 static constexpr int CANrange_RealFOVCenterY = 2403;
287 static constexpr int CANrange_RealFOVRangeX = 2404;
288 static constexpr int CANrange_RealFOVRangeY = 2405;
289 static constexpr int CANrange_UpdateMode = 2409;
290 static constexpr int CANrange_UpdateFreq = 2410;
291 static constexpr int CANrange_ProximityThreshold = 2412;
292 static constexpr int CANrange_ProximityHysteresis = 2413;
293 static constexpr int CANrange_MinSigStrengthForValidMeas = 2414;
294 static constexpr int CANrange_FOVCenterX = 2415;
295 static constexpr int CANrange_FOVCenterY = 2416;
296 static constexpr int CANrange_FOVRangeX = 2417;
297 static constexpr int CANrange_FOVRangeY = 2418;
298 static constexpr int Config_ControlTimesyncFreq = 2419;
299 static constexpr int Config_VelocityFilterTimeConstant = 2420;
300 static constexpr int Config_AdvancedHallSupport = 2617;
301 static constexpr int Config_MotorType = 2618;
302 static constexpr int CANdi_Pin1State = 2677;
303 static constexpr int CANdi_Pin2State = 2678;
304 static constexpr int CANdi_QuadPosition = 2679;
305 static constexpr int CANdi_Pwm1_RiseToRise = 2685;
306 static constexpr int CANdi_Pwm1_Position = 2686;
307 static constexpr int CANdi_Pwm1_Velocity = 2688;
308 static constexpr int CANdi_Pwm2_RiseToRise = 2689;
309 static constexpr int CANdi_Pwm2_Position = 2690;
310 static constexpr int CANdi_Overcurrent = 2692;
311 static constexpr int CANdi_VSense = 2693;
312 static constexpr int CANdi_OutputCurrent = 2694;
313 static constexpr int CANdi_S1FloatState = 2695;
314 static constexpr int CANdi_S2FloatState = 2696;
315 static constexpr int Config_AbsoluteSensorOffset = 2705;
316 static constexpr int Config_ExternalFeedbackSensorSource = 2706;
317 static constexpr int Config_SensorPhase = 2707;
318 static constexpr int Config_QuadratureEdgesPerRotation = 2708;
319 static constexpr int Config_AbsoluteSensorDiscontinuityPoint = 2709;
320 static constexpr int CANdi_Pwm2_Velocity = 2847;
321 static constexpr int TalonFXS_5VRailVoltage = 2849;
322 static constexpr int CANdi_QuadVelocity = 2857;
323 static constexpr int Config_PWM1_AbsoluteSensorOffset = 2858;
324 static constexpr int Config_PWM1_AbsoluteSensorDiscontinuityPoint = 2859;
325 static constexpr int Config_PWM1_SensorDirection = 2860;
326 static constexpr int Config_PWM2_AbsoluteSensorOffset = 2862;
327 static constexpr int Config_PWM2_AbsoluteSensorDiscontinuityPoint = 2863;
328 static constexpr int Config_PWM2_SensorDirection = 2864;
329 static constexpr int Config_Quad_SensorDirection = 2866;
330 static constexpr int CANdi_SetQuadPosition = 2868;
331 static constexpr int Config_S1_CloseState = 2869;
332 static constexpr int Config_S2_CloseState = 2870;
333 static constexpr int CANdi_S1Closed = 2871;
334 static constexpr int CANdi_S2Closed = 2872;
335 static constexpr int Config_BrushedMotorWiring = 2878;
336 static constexpr int Fault_Hardware = 10001;
337 static constexpr int StickyFault_Hardware = 10002;
338 static constexpr int ClearStickyFault_Hardware = 10003;
339 static constexpr int Fault_ProcTemp = 10004;
340 static constexpr int StickyFault_ProcTemp = 10005;
341 static constexpr int ClearStickyFault_ProcTemp = 10006;
342 static constexpr int Fault_DeviceTemp = 10007;
343 static constexpr int StickyFault_DeviceTemp = 10008;
344 static constexpr int ClearStickyFault_DeviceTemp = 10009;
345 static constexpr int Fault_Undervoltage = 10010;
346 static constexpr int StickyFault_Undervoltage = 10011;
347 static constexpr int ClearStickyFault_Undervoltage = 10012;
348 static constexpr int Fault_BootDuringEnable = 10013;
349 static constexpr int StickyFault_BootDuringEnable = 10014;
350 static constexpr int ClearStickyFault_BootDuringEnable = 10015;
351 static constexpr int Fault_UnlicensedFeatureInUse = 10016;
352 static constexpr int StickyFault_UnlicensedFeatureInUse = 10017;
353 static constexpr int ClearStickyFault_UnlicensedFeatureInUse = 10018;
354 static constexpr int Fault_PIGEON2_BootupAccel = 10019;
355 static constexpr int StickyFault_PIGEON2_BootupAccel = 10020;
356 static constexpr int ClearStickyFault_PIGEON2_BootupAccel = 10021;
357 static constexpr int Fault_PIGEON2_BootupGyros = 10022;
358 static constexpr int StickyFault_PIGEON2_BootupGyros = 10023;
359 static constexpr int ClearStickyFault_PIGEON2_BootupGyros = 10024;
360 static constexpr int Fault_PIGEON2_BootupMagne = 10025;
361 static constexpr int StickyFault_PIGEON2_BootupMagne = 10026;
362 static constexpr int ClearStickyFault_PIGEON2_BootupMagne = 10027;
363 static constexpr int Fault_PIGEON2_BootIntoMotion = 10028;
364 static constexpr int StickyFault_PIGEON2_BootIntoMotion = 10029;
365 static constexpr int ClearStickyFault_PIGEON2_BootIntoMotion = 10030;
366 static constexpr int Fault_PIGEON2_DataAcquiredLate = 10031;
367 static constexpr int StickyFault_PIGEON2_DataAcquiredLate = 10032;
368 static constexpr int ClearStickyFault_PIGEON2_DataAcquiredLate = 10033;
369 static constexpr int Fault_PIGEON2_LoopTimeSlow = 10034;
370 static constexpr int StickyFault_PIGEON2_LoopTimeSlow = 10035;
371 static constexpr int ClearStickyFault_PIGEON2_LoopTimeSlow = 10036;
372 static constexpr int Fault_PIGEON2_SaturatedMagne = 10037;
373 static constexpr int StickyFault_PIGEON2_SaturatedMagne = 10038;
374 static constexpr int ClearStickyFault_PIGEON2_SaturatedMagne = 10039;
375 static constexpr int Fault_PIGEON2_SaturatedAccel = 10040;
376 static constexpr int StickyFault_PIGEON2_SaturatedAccel = 10041;
377 static constexpr int ClearStickyFault_PIGEON2_SaturatedAccel = 10042;
378 static constexpr int Fault_PIGEON2_SaturatedGyros = 10043;
379 static constexpr int StickyFault_PIGEON2_SaturatedGyros = 10044;
380 static constexpr int ClearStickyFault_PIGEON2_SaturatedGyros = 10045;
381 static constexpr int Fault_CANCODER_BadMagnet = 10046;
382 static constexpr int StickyFault_CANCODER_BadMagnet = 10047;
383 static constexpr int ClearStickyFault_CANCODER_BadMagnet = 10048;
384 static constexpr int Fault_TALONFX_BridgeBrownout = 10049;
385 static constexpr int StickyFault_TALONFX_BridgeBrownout = 10050;
386 static constexpr int ClearStickyFault_TALONFX_BridgeBrownout = 10051;
387 static constexpr int Fault_TALONFX_RemoteSensorReset = 10052;
388 static constexpr int StickyFault_TALONFX_RemoteSensorReset = 10053;
389 static constexpr int ClearStickyFault_TALONFX_RemoteSensorReset = 10054;
390 static constexpr int Fault_TALONFX_MissingDifferentialFX = 10055;
391 static constexpr int StickyFault_TALONFX_MissingDifferentialFX = 10056;
392 static constexpr int ClearStickyFault_TALONFX_MissingDifferentialFX = 10057;
393 static constexpr int Fault_TALONFX_RemoteSensorPosOverflow = 10058;
394 static constexpr int StickyFault_TALONFX_RemoteSensorPosOverflow = 10059;
395 static constexpr int ClearStickyFault_TALONFX_RemoteSensorPosOverflow = 10060;
396 static constexpr int Fault_TALONFX_OverSupplyV = 10061;
397 static constexpr int StickyFault_TALONFX_OverSupplyV = 10062;
398 static constexpr int ClearStickyFault_TALONFX_OverSupplyV = 10063;
399 static constexpr int Fault_TALONFX_UnstableSupplyV = 10064;
400 static constexpr int StickyFault_TALONFX_UnstableSupplyV = 10065;
401 static constexpr int ClearStickyFault_TALONFX_UnstableSupplyV = 10066;
402 static constexpr int Fault_TALONFX_ReverseHardLimit = 10067;
403 static constexpr int StickyFault_TALONFX_ReverseHardLimit = 10068;
404 static constexpr int ClearStickyFault_TALONFX_ReverseHardLimit = 10069;
405 static constexpr int Fault_TALONFX_ForwardHardLimit = 10070;
406 static constexpr int StickyFault_TALONFX_ForwardHardLimit = 10071;
407 static constexpr int ClearStickyFault_TALONFX_ForwardHardLimit = 10072;
408 static constexpr int Fault_TALONFX_ReverseSoftLimit = 10073;
409 static constexpr int StickyFault_TALONFX_ReverseSoftLimit = 10074;
410 static constexpr int ClearStickyFault_TALONFX_ReverseSoftLimit = 10075;
411 static constexpr int Fault_TALONFX_ForwardSoftLimit = 10076;
412 static constexpr int StickyFault_TALONFX_ForwardSoftLimit = 10077;
413 static constexpr int ClearStickyFault_TALONFX_ForwardSoftLimit = 10078;
414 static constexpr int Fault_TALONFX_MissingRemSoftLim = 10079;
415 static constexpr int StickyFault_TALONFX_MissingRemSoftLim = 10080;
416 static constexpr int ClearStickyFault_TALONFX_MissingRemSoftLim = 10081;
417 static constexpr int Fault_TALONFX_MissingRemHardLim = 10082;
418 static constexpr int StickyFault_TALONFX_MissingRemHardLim = 10083;
419 static constexpr int ClearStickyFault_TALONFX_MissingRemHardLim = 10084;
420 static constexpr int Fault_TALONFX_MissingRemoteSensor = 10085;
421 static constexpr int StickyFault_TALONFX_MissingRemoteSensor = 10086;
422 static constexpr int ClearStickyFault_TALONFX_MissingRemoteSensor = 10087;
423 static constexpr int Fault_TALONFX_FusedSensorOutOfSync = 10088;
424 static constexpr int StickyFault_TALONFX_FusedSensorOutOfSync = 10089;
425 static constexpr int ClearStickyFault_TALONFX_FusedSensorOutOfSync = 10090;
426 static constexpr int Fault_TALONFX_StatorCurrLimit = 10091;
427 static constexpr int StickyFault_TALONFX_StatorCurrLimit = 10092;
428 static constexpr int ClearStickyFault_TALONFX_StatorCurrLimit = 10093;
429 static constexpr int Fault_TALONFX_SupplyCurrLimit = 10094;
430 static constexpr int StickyFault_TALONFX_SupplyCurrLimit = 10095;
431 static constexpr int ClearStickyFault_TALONFX_SupplyCurrLimit = 10096;
432 static constexpr int Fault_TALONFX_UsingFusedCCWhileUnlicensed = 10097;
433 static constexpr int StickyFault_TALONFX_UsingFusedCCWhileUnlicensed = 10098;
434 static constexpr int ClearStickyFault_TALONFX_UsingFusedCCWhileUnlicensed = 10099;
435 static constexpr int Fault_TALONFX_StaticBrakeDisabled = 10100;
436 static constexpr int StickyFault_TALONFX_StaticBrakeDisabled = 10101;
437 static constexpr int ClearStickyFault_TALONFX_StaticBrakeDisabled = 10102;
438 static constexpr int Fault_TALONFX_BridgeShort = 10103;
439 static constexpr int StickyFault_TALONFX_BridgeShort = 10104;
440 static constexpr int ClearStickyFault_TALONFX_BridgeShort = 10105;
441 static constexpr int Fault_TALONFX_HallSensorMissing = 10106;
442 static constexpr int StickyFault_TALONFX_HallSensorMissing = 10107;
443 static constexpr int ClearStickyFault_TALONFX_HallSensorMissing = 10108;
444 static constexpr int Fault_TALONFX_DriveDisabledHallSensor = 10109;
445 static constexpr int StickyFault_TALONFX_DriveDisabledHallSensor = 10110;
446 static constexpr int ClearStickyFault_TALONFX_DriveDisabledHallSensor = 10111;
447 static constexpr int Fault_TALONFX_MotorTempSensorMissing = 10112;
448 static constexpr int StickyFault_TALONFX_MotorTempSensorMissing = 10113;
449 static constexpr int ClearStickyFault_TALONFX_MotorTempSensorMissing = 10114;
450 static constexpr int Fault_TALONFX_MotorTempSensorTooHot = 10115;
451 static constexpr int StickyFault_TALONFX_MotorTempSensorTooHot = 10116;
452 static constexpr int ClearStickyFault_TALONFX_MotorTempSensorTooHot = 10117;
453 static constexpr int Fault_CANDI_5V = 10118;
454 static constexpr int StickyFault_CANDI_5V = 10119;
455 static constexpr int ClearStickyFault_CANDI_5V = 10120;
456
457 constexpr bool operator==(SpnValue data) const
458 {
459 return this->value == data.value;
460 }
461 constexpr bool operator==(int data) const
462 {
463 return this->value == data;
464 }
465 constexpr bool operator!=(SpnValue data) const
466 {
467 return this->value != data.value;
468 }
469 constexpr bool operator!=(int data) const
470 {
471 return this->value != data;
472 }
473 constexpr bool operator<(SpnValue data) const
474 {
475 return this->value < data.value;
476 }
477 constexpr bool operator<(int data) const
478 {
479 return this->value < data;
480 }
481
482 /**
483 * \brief Gets the string representation of this enum
484 *
485 * \returns String representation of this enum
486 */
487 std::string ToString() const
488 {
489 switch (value)
490 {
491 case SpnValue::TalonFX_System_State: return "TalonFX_System_State";
492 case SpnValue::Startup_ResetFlags: return "Startup_ResetFlags";
493 case SpnValue::Version_Major: return "Version_Major";
494 case SpnValue::Version_Minor: return "Version_Minor";
495 case SpnValue::Version_Bugfix: return "Version_Bugfix";
496 case SpnValue::Version_Build: return "Version_Build";
497 case SpnValue::Version_Full: return "Version_Full";
498 case SpnValue::Licensing_IsProLicensed: return "Licensing_IsProLicensed";
499 case SpnValue::Licensing_IsSeasonPassed: return "Licensing_IsSeasonPassed";
500 case SpnValue::CustomParam0: return "CustomParam0";
501 case SpnValue::CustomParam1: return "CustomParam1";
502 case SpnValue::CANcoder_SensorDirection: return "CANcoder_SensorDirection";
503 case SpnValue::FrcLock: return "FrcLock";
504 case SpnValue::RobotEnabled: return "RobotEnabled";
505 case SpnValue::LED1_OnColor: return "LED1_OnColor";
506 case SpnValue::LED1_OffColor: return "LED1_OffColor";
507 case SpnValue::LED2_OnColor: return "LED2_OnColor";
508 case SpnValue::LED2_OffColor: return "LED2_OffColor";
509 case SpnValue::AllFaults: return "AllFaults";
510 case SpnValue::AllStickyFaults: return "AllStickyFaults";
511 case SpnValue::Pigeon2UseCompass: return "Pigeon2UseCompass";
512 case SpnValue::Pigeon2DisableTemperatureCompensation: return "Pigeon2DisableTemperatureCompensation";
513 case SpnValue::Pigeon2DisableNoMotionCalibration: return "Pigeon2DisableNoMotionCalibration";
514 case SpnValue::Pigeon2MountPoseYaw: return "Pigeon2MountPoseYaw";
515 case SpnValue::Pigeon2MountPosePitch: return "Pigeon2MountPosePitch";
516 case SpnValue::Pigeon2MountPoseRoll: return "Pigeon2MountPoseRoll";
517 case SpnValue::Pigeon2GyroScalarX: return "Pigeon2GyroScalarX";
518 case SpnValue::Pigeon2GyroScalarY: return "Pigeon2GyroScalarY";
519 case SpnValue::Pigeon2GyroScalarZ: return "Pigeon2GyroScalarZ";
520 case SpnValue::Pigeon2Yaw: return "Pigeon2Yaw";
521 case SpnValue::Pigeon2Pitch: return "Pigeon2Pitch";
522 case SpnValue::Pigeon2Roll: return "Pigeon2Roll";
523 case SpnValue::Pigeon2QuatW: return "Pigeon2QuatW";
524 case SpnValue::Pigeon2QuatX: return "Pigeon2QuatX";
525 case SpnValue::Pigeon2QuatY: return "Pigeon2QuatY";
526 case SpnValue::Pigeon2QuatZ: return "Pigeon2QuatZ";
527 case SpnValue::Pigeon2GravityVectorX: return "Pigeon2GravityVectorX";
528 case SpnValue::Pigeon2GravityVectorY: return "Pigeon2GravityVectorY";
529 case SpnValue::Pigeon2GravityVectorZ: return "Pigeon2GravityVectorZ";
530 case SpnValue::Pigeon2Temperature: return "Pigeon2Temperature";
531 case SpnValue::Pigeon2NoMotionCalEnabled: return "Pigeon2NoMotionCalEnabled";
532 case SpnValue::Pigeon2NoMotionCount: return "Pigeon2NoMotionCount";
533 case SpnValue::Pigeon2TempCompDisabled: return "Pigeon2TempCompDisabled";
534 case SpnValue::Pigeon2UpTime: return "Pigeon2UpTime";
535 case SpnValue::Pigeon2AccumGyroX: return "Pigeon2AccumGyroX";
536 case SpnValue::Pigeon2AccumGyroY: return "Pigeon2AccumGyroY";
537 case SpnValue::Pigeon2AccumGyroZ: return "Pigeon2AccumGyroZ";
538 case SpnValue::Pigeon2AngularVelocityXWorld: return "Pigeon2AngularVelocityXWorld";
539 case SpnValue::Pigeon2AngularVelocityYWorld: return "Pigeon2AngularVelocityYWorld";
540 case SpnValue::Pigeon2AngularVelocityZWorld: return "Pigeon2AngularVelocityZWorld";
541 case SpnValue::Pigeon2AccelerationX: return "Pigeon2AccelerationX";
542 case SpnValue::Pigeon2AccelerationY: return "Pigeon2AccelerationY";
543 case SpnValue::Pigeon2AccelerationZ: return "Pigeon2AccelerationZ";
544 case SpnValue::Pigeon2_SupplyVoltage: return "Pigeon2_SupplyVoltage";
545 case SpnValue::Pigeon2AngularVelocityX: return "Pigeon2AngularVelocityX";
546 case SpnValue::Pigeon2AngularVelocityY: return "Pigeon2AngularVelocityY";
547 case SpnValue::Pigeon2AngularVelocityZ: return "Pigeon2AngularVelocityZ";
548 case SpnValue::Pigeon2MagneticFieldX: return "Pigeon2MagneticFieldX";
549 case SpnValue::Pigeon2MagneticFieldY: return "Pigeon2MagneticFieldY";
550 case SpnValue::Pigeon2MagneticFieldZ: return "Pigeon2MagneticFieldZ";
551 case SpnValue::Pigeon2RawMagneticFieldX: return "Pigeon2RawMagneticFieldX";
552 case SpnValue::Pigeon2RawMagneticFieldY: return "Pigeon2RawMagneticFieldY";
553 case SpnValue::Pigeon2RawMagneticFieldZ: return "Pigeon2RawMagneticFieldZ";
554 case SpnValue::CANCoder_MagnetOffset: return "CANCoder_MagnetOffset";
555 case SpnValue::TalonFX_SetSensorPosition: return "TalonFX_SetSensorPosition";
556 case SpnValue::CANcoder_SetSensorPosition: return "CANcoder_SetSensorPosition";
557 case SpnValue::Pigeon2_SetYaw: return "Pigeon2_SetYaw";
558 case SpnValue::DeviceEnabled: return "DeviceEnabled";
559 case SpnValue::PRO_MotorOutput_MotorVoltage: return "PRO_MotorOutput_MotorVoltage";
560 case SpnValue::ForwardLimit: return "ForwardLimit";
561 case SpnValue::ReverseLimit: return "ReverseLimit";
562 case SpnValue::PRO_MotorOutput_RotorPolarity: return "PRO_MotorOutput_RotorPolarity";
563 case SpnValue::PRO_MotorOutput_DutyCycle: return "PRO_MotorOutput_DutyCycle";
564 case SpnValue::PRO_MotorOutput_TorqueCurrent: return "PRO_MotorOutput_TorqueCurrent";
565 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "PRO_SupplyAndTemp_StatorCurrent";
566 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "PRO_SupplyAndTemp_SupplyCurrent";
567 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "PRO_SupplyAndTemp_SupplyVoltage";
568 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "PRO_SupplyAndTemp_DeviceTemp";
569 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "PRO_SupplyAndTemp_ProcessorTemp";
570 case SpnValue::PRO_RotorPosAndVel_Velocity: return "PRO_RotorPosAndVel_Velocity";
571 case SpnValue::PRO_RotorPosAndVel_Position: return "PRO_RotorPosAndVel_Position";
572 case SpnValue::PRO_PosAndVel_Velocity: return "PRO_PosAndVel_Velocity";
573 case SpnValue::PRO_PosAndVel_Position: return "PRO_PosAndVel_Position";
574 case SpnValue::PRO_PosAndVel_Acceleration: return "PRO_PosAndVel_Acceleration";
575 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "PRO_PIDStateEnables_IntegratedAccum_DC";
576 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "PRO_PIDStateEnables_IntegratedAccum_V";
577 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "PRO_PIDStateEnables_IntegratedAccum_A";
578 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "PRO_PIDStateEnables_FeedForward_DC";
579 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "PRO_PIDStateEnables_FeedForward_V";
580 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "PRO_PIDStateEnables_FeedForward_A";
581 case SpnValue::TalonFX_ControlMode: return "TalonFX_ControlMode";
582 case SpnValue::ExternalMotorTempStatus: return "ExternalMotorTempStatus";
583 case SpnValue::ExternalMotorTemp: return "ExternalMotorTemp";
584 case SpnValue::PRO_PIDStateEnables_IsMotionMagicRunning: return "PRO_PIDStateEnables_IsMotionMagicRunning";
585 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "PRO_PIDStateEnables_DeviceEnable";
586 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "PRO_PIDRefPIDErr_PIDRef_Position";
587 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "PRO_PIDRefPIDErr_PIDRef_Velocity";
588 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "PRO_PIDRefPIDErr_PIDErr_Position";
589 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "PRO_PIDRefPIDErr_PIDErr_Velocity";
590 case SpnValue::PRO_PIDRefPIDErr_ClosedLoopMode: return "PRO_PIDRefPIDErr_ClosedLoopMode";
591 case SpnValue::PRO_PIDOutput_PIDOutputMode: return "PRO_PIDOutput_PIDOutputMode";
592 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "PRO_PIDOutput_ProportionalOutput_DC";
593 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "PRO_PIDOutput_ProportionalOutput_V";
594 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "PRO_PIDOutput_ProportionalOutput_A";
595 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "PRO_PIDOutput_DerivativeOutput_DC";
596 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "PRO_PIDOutput_DerivativeOutput_V";
597 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "PRO_PIDOutput_DerivativeOutput_A";
598 case SpnValue::PRO_PIDOutput_Output_DC: return "PRO_PIDOutput_Output_DC";
599 case SpnValue::PRO_PIDOutput_Output_V: return "PRO_PIDOutput_Output_V";
600 case SpnValue::PRO_PIDOutput_Output_A: return "PRO_PIDOutput_Output_A";
601 case SpnValue::PRO_PIDOutput_Slot: return "PRO_PIDOutput_Slot";
602 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "PRO_PIDRefSlopeECUTime_ReferenceSlope_Position";
603 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity";
604 case SpnValue::PRO_PIDRefSlopeECUTime_ClosedLoopMode: return "PRO_PIDRefSlopeECUTime_ClosedLoopMode";
605 case SpnValue::TalonFX_MotorOutputStatus: return "TalonFX_MotorOutputStatus";
606 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "PRO_MotorOutput_PIDState_Diff_DutyCycle";
607 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "PRO_MotorOutput_PIDState_Diff_TorqueCurrent";
608 case SpnValue::TalonFX_DifferentialControlMode: return "TalonFX_DifferentialControlMode";
609 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC";
610 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V";
611 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A";
612 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "PRO_MotorOutput_PIDState_Diff_FeedForward_DC";
613 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "PRO_MotorOutput_PIDState_Diff_FeedForward_V";
614 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "PRO_MotorOutput_PIDState_Diff_FeedForward_A";
615 case SpnValue::PRO_AvgPosAndVel_Velocity: return "PRO_AvgPosAndVel_Velocity";
616 case SpnValue::PRO_AvgPosAndVel_Position: return "PRO_AvgPosAndVel_Position";
617 case SpnValue::PRO_DiffPosAndVel_Velocity: return "PRO_DiffPosAndVel_Velocity";
618 case SpnValue::PRO_DiffPosAndVel_Position: return "PRO_DiffPosAndVel_Position";
619 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "PRO_DiffPIDRefPIDErr_PIDRef_Position";
620 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "PRO_DiffPIDRefPIDErr_PIDRef_Velocity";
621 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "PRO_DiffPIDRefPIDErr_PIDErr_Position";
622 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "PRO_DiffPIDRefPIDErr_PIDErr_Velocity";
623 case SpnValue::PRO_DiffPIDRefPIDErr_ClosedLoopMode: return "PRO_DiffPIDRefPIDErr_ClosedLoopMode";
624 case SpnValue::PRO_DiffPIDOutput_PIDOutputMode: return "PRO_DiffPIDOutput_PIDOutputMode";
625 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "PRO_DiffPIDOutput_ProportionalOutput_DC";
626 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "PRO_DiffPIDOutput_ProportionalOutput_V";
627 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "PRO_DiffPIDOutput_ProportionalOutput_A";
628 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "PRO_DiffPIDOutput_DerivativeOutput_DC";
629 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "PRO_DiffPIDOutput_DerivativeOutput_V";
630 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "PRO_DiffPIDOutput_DerivativeOutput_A";
631 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "PRO_DiffPIDOutput_Output_DC";
632 case SpnValue::PRO_DiffPIDOutput_Output_V: return "PRO_DiffPIDOutput_Output_V";
633 case SpnValue::PRO_DiffPIDOutput_Output_A: return "PRO_DiffPIDOutput_Output_A";
634 case SpnValue::PRO_DiffPIDOutput_Slot: return "PRO_DiffPIDOutput_Slot";
635 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position";
636 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity";
637 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ClosedLoopMode: return "PRO_DiffPIDRefSlopeECUTime_ClosedLoopMode";
638 case SpnValue::TalonFX_MotorConstants_kT: return "TalonFX_MotorConstants_kT";
639 case SpnValue::TalonFX_MotorConstants_kV: return "TalonFX_MotorConstants_kV";
640 case SpnValue::TalonFX_MotorConstants_StallCurrent: return "TalonFX_MotorConstants_StallCurrent";
641 case SpnValue::Slot0_kP: return "Slot0_kP";
642 case SpnValue::Slot0_kI: return "Slot0_kI";
643 case SpnValue::Slot0_kD: return "Slot0_kD";
644 case SpnValue::Slot0_kS: return "Slot0_kS";
645 case SpnValue::Slot0_kV: return "Slot0_kV";
646 case SpnValue::Slot0_kA: return "Slot0_kA";
647 case SpnValue::Slot0_kG: return "Slot0_kG";
648 case SpnValue::Slot0_kG_Type: return "Slot0_kG_Type";
649 case SpnValue::Slot1_kP: return "Slot1_kP";
650 case SpnValue::Slot1_kI: return "Slot1_kI";
651 case SpnValue::Slot1_kD: return "Slot1_kD";
652 case SpnValue::Slot1_kS: return "Slot1_kS";
653 case SpnValue::Slot1_kV: return "Slot1_kV";
654 case SpnValue::Slot1_kA: return "Slot1_kA";
655 case SpnValue::Slot1_kG: return "Slot1_kG";
656 case SpnValue::Slot1_kG_Type: return "Slot1_kG_Type";
657 case SpnValue::Slot2_kP: return "Slot2_kP";
658 case SpnValue::Slot2_kI: return "Slot2_kI";
659 case SpnValue::Slot2_kD: return "Slot2_kD";
660 case SpnValue::Slot2_kS: return "Slot2_kS";
661 case SpnValue::Slot2_kV: return "Slot2_kV";
662 case SpnValue::Slot2_kA: return "Slot2_kA";
663 case SpnValue::Slot2_kG: return "Slot2_kG";
664 case SpnValue::Slot2_kG_Type: return "Slot2_kG_Type";
665 case SpnValue::Config_Inverted: return "Config_Inverted";
666 case SpnValue::Config_SupplyVLowpassTau: return "Config_SupplyVLowpassTau";
667 case SpnValue::Config_BeepOnBoot: return "Config_BeepOnBoot";
668 case SpnValue::Config_NeutralMode: return "Config_NeutralMode";
669 case SpnValue::Config_DutyCycleNeutralDB: return "Config_DutyCycleNeutralDB";
670 case SpnValue::Config_StatorCurrentLimit: return "Config_StatorCurrentLimit";
671 case SpnValue::Config_StatorCurrLimitEn: return "Config_StatorCurrLimitEn";
672 case SpnValue::Config_SupplyCurrentLimit: return "Config_SupplyCurrentLimit";
673 case SpnValue::Config_SupplyCurrLimitEn: return "Config_SupplyCurrLimitEn";
674 case SpnValue::Config_PeakForwardDC: return "Config_PeakForwardDC";
675 case SpnValue::Config_PeakReverseDC: return "Config_PeakReverseDC";
676 case SpnValue::Config_PeakForwardV: return "Config_PeakForwardV";
677 case SpnValue::Config_PeakReverseV: return "Config_PeakReverseV";
678 case SpnValue::Config_PeakForTorqCurr: return "Config_PeakForTorqCurr";
679 case SpnValue::Config_PeakRevTorqCurr: return "Config_PeakRevTorqCurr";
680 case SpnValue::Config_TorqueNeutralDB: return "Config_TorqueNeutralDB";
681 case SpnValue::Config_FeedbackRotorOffset: return "Config_FeedbackRotorOffset";
682 case SpnValue::Config_SensorToMechanismRatio: return "Config_SensorToMechanismRatio";
683 case SpnValue::Config_RotorToSensorRatio: return "Config_RotorToSensorRatio";
684 case SpnValue::Config_FeedbackSensorSource: return "Config_FeedbackSensorSource";
685 case SpnValue::Config_FeedbackRemoteSensorID: return "Config_FeedbackRemoteSensorID";
686 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "Config_DutyCycleOpenLoopRampPeriod";
687 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "Config_VoltageOpenLoopRampPeriod";
688 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "Config_TorqueOpenLoopRampPeriod";
689 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "Config_DutyCycleClosedLoopRampPeriod";
690 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "Config_VoltageClosedLoopRampPeriod";
691 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "Config_TorqueClosedLoopRampPeriod";
692 case SpnValue::Config_ForwardLimitType: return "Config_ForwardLimitType";
693 case SpnValue::Config_ForwardLimitAutosetPosEnable: return "Config_ForwardLimitAutosetPosEnable";
694 case SpnValue::Config_ForwardLimitAutosetPosValue: return "Config_ForwardLimitAutosetPosValue";
695 case SpnValue::Config_ForwardLimitEnable: return "Config_ForwardLimitEnable";
696 case SpnValue::Config_ForwardLimitSource: return "Config_ForwardLimitSource";
697 case SpnValue::Config_ForwardLimitRemoteSensorID: return "Config_ForwardLimitRemoteSensorID";
698 case SpnValue::Config_ReverseLimitType: return "Config_ReverseLimitType";
699 case SpnValue::Config_ReverseLimitAutosetPosEnable: return "Config_ReverseLimitAutosetPosEnable";
700 case SpnValue::Config_ReverseLimitAutosetPosValue: return "Config_ReverseLimitAutosetPosValue";
701 case SpnValue::Config_ReverseLimitEnable: return "Config_ReverseLimitEnable";
702 case SpnValue::Config_ReverseLimitSource: return "Config_ReverseLimitSource";
703 case SpnValue::Config_ReverseLimitRemoteSensorID: return "Config_ReverseLimitRemoteSensorID";
704 case SpnValue::Config_ForwardSoftLimitEnable: return "Config_ForwardSoftLimitEnable";
705 case SpnValue::Config_ReverseSoftLimitEnable: return "Config_ReverseSoftLimitEnable";
706 case SpnValue::Config_ForwardSoftLimitThreshold: return "Config_ForwardSoftLimitThreshold";
707 case SpnValue::Config_ReverseSoftLimitThreshold: return "Config_ReverseSoftLimitThreshold";
708 case SpnValue::Config_MotionMagicCruiseVelocity: return "Config_MotionMagicCruiseVelocity";
709 case SpnValue::Config_MotionMagicAcceleration: return "Config_MotionMagicAcceleration";
710 case SpnValue::Config_MotionMagicJerk: return "Config_MotionMagicJerk";
711 case SpnValue::Config_MotionMagicExpo_kV: return "Config_MotionMagicExpo_kV";
712 case SpnValue::Config_MotionMagicExpo_kA: return "Config_MotionMagicExpo_kA";
713 case SpnValue::Config_PeakDiffDC: return "Config_PeakDiffDC";
714 case SpnValue::Config_PeakDiffV: return "Config_PeakDiffV";
715 case SpnValue::Config_PeakDiffTorqCurr: return "Config_PeakDiffTorqCurr";
716 case SpnValue::CANcoder_Velocity: return "CANcoder_Velocity";
717 case SpnValue::CANcoder_Position: return "CANcoder_Position";
718 case SpnValue::CANcoder_AbsPosition: return "CANcoder_AbsPosition";
719 case SpnValue::CANCoder_RawVel: return "CANCoder_RawVel";
720 case SpnValue::CANCoder_RawPos: return "CANCoder_RawPos";
721 case SpnValue::CANCoder_SupplyVoltage: return "CANCoder_SupplyVoltage";
722 case SpnValue::CANcoder_MagHealth: return "CANcoder_MagHealth";
723 case SpnValue::SPN_ClearStickyFaults: return "SPN_ClearStickyFaults";
724 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "PRO_MotorOutput_BridgeType_Public";
725 case SpnValue::Config_ContinuousWrap: return "Config_ContinuousWrap";
726 case SpnValue::Config_SupplyCurrentLowerLimit: return "Config_SupplyCurrentLowerLimit";
727 case SpnValue::Config_SupplyCurrentLowerTime: return "Config_SupplyCurrentLowerTime";
728 case SpnValue::Config_DifferentialSensorSource: return "Config_DifferentialSensorSource";
729 case SpnValue::Config_DifferentialTalonFXSensorID: return "Config_DifferentialTalonFXSensorID";
730 case SpnValue::Config_DifferentialRemoteSensorID: return "Config_DifferentialRemoteSensorID";
731 case SpnValue::Config_BeepOnConfig: return "Config_BeepOnConfig";
732 case SpnValue::Config_AllowMusicDurDisable: return "Config_AllowMusicDurDisable";
733 case SpnValue::Compliancy_Version: return "Compliancy_Version";
734 case SpnValue::Version_IsProLicensed: return "Version_IsProLicensed";
735 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "PRO_SupplyAndTemp_DeviceTemp2";
736 case SpnValue::Slot0_kS_Sign: return "Slot0_kS_Sign";
737 case SpnValue::Slot1_kS_Sign: return "Slot1_kS_Sign";
738 case SpnValue::Slot2_kS_Sign: return "Slot2_kS_Sign";
739 case SpnValue::TalonFX_ConnectedMotor: return "TalonFX_ConnectedMotor";
740 case SpnValue::CANrange_SupplyVoltage: return "CANrange_SupplyVoltage";
741 case SpnValue::CANrange_Distance_Meters: return "CANrange_Distance_Meters";
742 case SpnValue::CANrange_MeasTime: return "CANrange_MeasTime";
743 case SpnValue::CANrange_SignalStrength: return "CANrange_SignalStrength";
744 case SpnValue::CANrange_ProximityDetected: return "CANrange_ProximityDetected";
745 case SpnValue::CANrange_MeasState: return "CANrange_MeasState";
746 case SpnValue::CANrange_AmbientSignal: return "CANrange_AmbientSignal";
747 case SpnValue::CANrange_DistanceStdDev: return "CANrange_DistanceStdDev";
748 case SpnValue::CANrange_RealFOVCenterX: return "CANrange_RealFOVCenterX";
749 case SpnValue::CANrange_RealFOVCenterY: return "CANrange_RealFOVCenterY";
750 case SpnValue::CANrange_RealFOVRangeX: return "CANrange_RealFOVRangeX";
751 case SpnValue::CANrange_RealFOVRangeY: return "CANrange_RealFOVRangeY";
752 case SpnValue::CANrange_UpdateMode: return "CANrange_UpdateMode";
753 case SpnValue::CANrange_UpdateFreq: return "CANrange_UpdateFreq";
754 case SpnValue::CANrange_ProximityThreshold: return "CANrange_ProximityThreshold";
755 case SpnValue::CANrange_ProximityHysteresis: return "CANrange_ProximityHysteresis";
756 case SpnValue::CANrange_MinSigStrengthForValidMeas: return "CANrange_MinSigStrengthForValidMeas";
757 case SpnValue::CANrange_FOVCenterX: return "CANrange_FOVCenterX";
758 case SpnValue::CANrange_FOVCenterY: return "CANrange_FOVCenterY";
759 case SpnValue::CANrange_FOVRangeX: return "CANrange_FOVRangeX";
760 case SpnValue::CANrange_FOVRangeY: return "CANrange_FOVRangeY";
761 case SpnValue::Config_ControlTimesyncFreq: return "Config_ControlTimesyncFreq";
762 case SpnValue::Config_VelocityFilterTimeConstant: return "Config_VelocityFilterTimeConstant";
763 case SpnValue::Config_AdvancedHallSupport: return "Config_AdvancedHallSupport";
764 case SpnValue::Config_MotorType: return "Config_MotorType";
765 case SpnValue::CANdi_Pin1State: return "CANdi_Pin1State";
766 case SpnValue::CANdi_Pin2State: return "CANdi_Pin2State";
767 case SpnValue::CANdi_QuadPosition: return "CANdi_QuadPosition";
768 case SpnValue::CANdi_Pwm1_RiseToRise: return "CANdi_Pwm1_RiseToRise";
769 case SpnValue::CANdi_Pwm1_Position: return "CANdi_Pwm1_Position";
770 case SpnValue::CANdi_Pwm1_Velocity: return "CANdi_Pwm1_Velocity";
771 case SpnValue::CANdi_Pwm2_RiseToRise: return "CANdi_Pwm2_RiseToRise";
772 case SpnValue::CANdi_Pwm2_Position: return "CANdi_Pwm2_Position";
773 case SpnValue::CANdi_Overcurrent: return "CANdi_Overcurrent";
774 case SpnValue::CANdi_VSense: return "CANdi_VSense";
775 case SpnValue::CANdi_OutputCurrent: return "CANdi_OutputCurrent";
776 case SpnValue::CANdi_S1FloatState: return "CANdi_S1FloatState";
777 case SpnValue::CANdi_S2FloatState: return "CANdi_S2FloatState";
778 case SpnValue::Config_AbsoluteSensorOffset: return "Config_AbsoluteSensorOffset";
779 case SpnValue::Config_ExternalFeedbackSensorSource: return "Config_ExternalFeedbackSensorSource";
780 case SpnValue::Config_SensorPhase: return "Config_SensorPhase";
781 case SpnValue::Config_QuadratureEdgesPerRotation: return "Config_QuadratureEdgesPerRotation";
782 case SpnValue::Config_AbsoluteSensorDiscontinuityPoint: return "Config_AbsoluteSensorDiscontinuityPoint";
783 case SpnValue::CANdi_Pwm2_Velocity: return "CANdi_Pwm2_Velocity";
784 case SpnValue::TalonFXS_5VRailVoltage: return "TalonFXS_5VRailVoltage";
785 case SpnValue::CANdi_QuadVelocity: return "CANdi_QuadVelocity";
786 case SpnValue::Config_PWM1_AbsoluteSensorOffset: return "Config_PWM1_AbsoluteSensorOffset";
787 case SpnValue::Config_PWM1_AbsoluteSensorDiscontinuityPoint: return "Config_PWM1_AbsoluteSensorDiscontinuityPoint";
788 case SpnValue::Config_PWM1_SensorDirection: return "Config_PWM1_SensorDirection";
789 case SpnValue::Config_PWM2_AbsoluteSensorOffset: return "Config_PWM2_AbsoluteSensorOffset";
790 case SpnValue::Config_PWM2_AbsoluteSensorDiscontinuityPoint: return "Config_PWM2_AbsoluteSensorDiscontinuityPoint";
791 case SpnValue::Config_PWM2_SensorDirection: return "Config_PWM2_SensorDirection";
792 case SpnValue::Config_Quad_SensorDirection: return "Config_Quad_SensorDirection";
793 case SpnValue::CANdi_SetQuadPosition: return "CANdi_SetQuadPosition";
794 case SpnValue::Config_S1_CloseState: return "Config_S1_CloseState";
795 case SpnValue::Config_S2_CloseState: return "Config_S2_CloseState";
796 case SpnValue::CANdi_S1Closed: return "CANdi_S1Closed";
797 case SpnValue::CANdi_S2Closed: return "CANdi_S2Closed";
798 case SpnValue::Config_BrushedMotorWiring: return "Config_BrushedMotorWiring";
799 case SpnValue::Fault_Hardware: return "Fault_Hardware";
800 case SpnValue::StickyFault_Hardware: return "StickyFault_Hardware";
801 case SpnValue::ClearStickyFault_Hardware: return "ClearStickyFault_Hardware";
802 case SpnValue::Fault_ProcTemp: return "Fault_ProcTemp";
803 case SpnValue::StickyFault_ProcTemp: return "StickyFault_ProcTemp";
804 case SpnValue::ClearStickyFault_ProcTemp: return "ClearStickyFault_ProcTemp";
805 case SpnValue::Fault_DeviceTemp: return "Fault_DeviceTemp";
806 case SpnValue::StickyFault_DeviceTemp: return "StickyFault_DeviceTemp";
807 case SpnValue::ClearStickyFault_DeviceTemp: return "ClearStickyFault_DeviceTemp";
808 case SpnValue::Fault_Undervoltage: return "Fault_Undervoltage";
809 case SpnValue::StickyFault_Undervoltage: return "StickyFault_Undervoltage";
810 case SpnValue::ClearStickyFault_Undervoltage: return "ClearStickyFault_Undervoltage";
811 case SpnValue::Fault_BootDuringEnable: return "Fault_BootDuringEnable";
812 case SpnValue::StickyFault_BootDuringEnable: return "StickyFault_BootDuringEnable";
813 case SpnValue::ClearStickyFault_BootDuringEnable: return "ClearStickyFault_BootDuringEnable";
814 case SpnValue::Fault_UnlicensedFeatureInUse: return "Fault_UnlicensedFeatureInUse";
815 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "StickyFault_UnlicensedFeatureInUse";
816 case SpnValue::ClearStickyFault_UnlicensedFeatureInUse: return "ClearStickyFault_UnlicensedFeatureInUse";
817 case SpnValue::Fault_PIGEON2_BootupAccel: return "Fault_PIGEON2_BootupAccel";
818 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "StickyFault_PIGEON2_BootupAccel";
819 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "ClearStickyFault_PIGEON2_BootupAccel";
820 case SpnValue::Fault_PIGEON2_BootupGyros: return "Fault_PIGEON2_BootupGyros";
821 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "StickyFault_PIGEON2_BootupGyros";
822 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "ClearStickyFault_PIGEON2_BootupGyros";
823 case SpnValue::Fault_PIGEON2_BootupMagne: return "Fault_PIGEON2_BootupMagne";
824 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "StickyFault_PIGEON2_BootupMagne";
825 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "ClearStickyFault_PIGEON2_BootupMagne";
826 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "Fault_PIGEON2_BootIntoMotion";
827 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "StickyFault_PIGEON2_BootIntoMotion";
828 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "ClearStickyFault_PIGEON2_BootIntoMotion";
829 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "Fault_PIGEON2_DataAcquiredLate";
830 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "StickyFault_PIGEON2_DataAcquiredLate";
831 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "ClearStickyFault_PIGEON2_DataAcquiredLate";
832 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "Fault_PIGEON2_LoopTimeSlow";
833 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "StickyFault_PIGEON2_LoopTimeSlow";
834 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "ClearStickyFault_PIGEON2_LoopTimeSlow";
835 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "Fault_PIGEON2_SaturatedMagne";
836 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "StickyFault_PIGEON2_SaturatedMagne";
837 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "ClearStickyFault_PIGEON2_SaturatedMagne";
838 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "Fault_PIGEON2_SaturatedAccel";
839 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "StickyFault_PIGEON2_SaturatedAccel";
840 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "ClearStickyFault_PIGEON2_SaturatedAccel";
841 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "Fault_PIGEON2_SaturatedGyros";
842 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "StickyFault_PIGEON2_SaturatedGyros";
843 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "ClearStickyFault_PIGEON2_SaturatedGyros";
844 case SpnValue::Fault_CANCODER_BadMagnet: return "Fault_CANCODER_BadMagnet";
845 case SpnValue::StickyFault_CANCODER_BadMagnet: return "StickyFault_CANCODER_BadMagnet";
846 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "ClearStickyFault_CANCODER_BadMagnet";
847 case SpnValue::Fault_TALONFX_BridgeBrownout: return "Fault_TALONFX_BridgeBrownout";
848 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "StickyFault_TALONFX_BridgeBrownout";
849 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "ClearStickyFault_TALONFX_BridgeBrownout";
850 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "Fault_TALONFX_RemoteSensorReset";
851 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "StickyFault_TALONFX_RemoteSensorReset";
852 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "ClearStickyFault_TALONFX_RemoteSensorReset";
853 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "Fault_TALONFX_MissingDifferentialFX";
854 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "StickyFault_TALONFX_MissingDifferentialFX";
855 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "ClearStickyFault_TALONFX_MissingDifferentialFX";
856 case SpnValue::Fault_TALONFX_RemoteSensorPosOverflow: return "Fault_TALONFX_RemoteSensorPosOverflow";
857 case SpnValue::StickyFault_TALONFX_RemoteSensorPosOverflow: return "StickyFault_TALONFX_RemoteSensorPosOverflow";
858 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow: return "ClearStickyFault_TALONFX_RemoteSensorPosOverflow";
859 case SpnValue::Fault_TALONFX_OverSupplyV: return "Fault_TALONFX_OverSupplyV";
860 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "StickyFault_TALONFX_OverSupplyV";
861 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "ClearStickyFault_TALONFX_OverSupplyV";
862 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "Fault_TALONFX_UnstableSupplyV";
863 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "StickyFault_TALONFX_UnstableSupplyV";
864 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "ClearStickyFault_TALONFX_UnstableSupplyV";
865 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "Fault_TALONFX_ReverseHardLimit";
866 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "StickyFault_TALONFX_ReverseHardLimit";
867 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "ClearStickyFault_TALONFX_ReverseHardLimit";
868 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "Fault_TALONFX_ForwardHardLimit";
869 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "StickyFault_TALONFX_ForwardHardLimit";
870 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "ClearStickyFault_TALONFX_ForwardHardLimit";
871 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "Fault_TALONFX_ReverseSoftLimit";
872 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "StickyFault_TALONFX_ReverseSoftLimit";
873 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "ClearStickyFault_TALONFX_ReverseSoftLimit";
874 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "Fault_TALONFX_ForwardSoftLimit";
875 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "StickyFault_TALONFX_ForwardSoftLimit";
876 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "ClearStickyFault_TALONFX_ForwardSoftLimit";
877 case SpnValue::Fault_TALONFX_MissingRemSoftLim: return "Fault_TALONFX_MissingRemSoftLim";
878 case SpnValue::StickyFault_TALONFX_MissingRemSoftLim: return "StickyFault_TALONFX_MissingRemSoftLim";
879 case SpnValue::ClearStickyFault_TALONFX_MissingRemSoftLim: return "ClearStickyFault_TALONFX_MissingRemSoftLim";
880 case SpnValue::Fault_TALONFX_MissingRemHardLim: return "Fault_TALONFX_MissingRemHardLim";
881 case SpnValue::StickyFault_TALONFX_MissingRemHardLim: return "StickyFault_TALONFX_MissingRemHardLim";
882 case SpnValue::ClearStickyFault_TALONFX_MissingRemHardLim: return "ClearStickyFault_TALONFX_MissingRemHardLim";
883 case SpnValue::Fault_TALONFX_MissingRemoteSensor: return "Fault_TALONFX_MissingRemoteSensor";
884 case SpnValue::StickyFault_TALONFX_MissingRemoteSensor: return "StickyFault_TALONFX_MissingRemoteSensor";
885 case SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor: return "ClearStickyFault_TALONFX_MissingRemoteSensor";
886 case SpnValue::Fault_TALONFX_FusedSensorOutOfSync: return "Fault_TALONFX_FusedSensorOutOfSync";
887 case SpnValue::StickyFault_TALONFX_FusedSensorOutOfSync: return "StickyFault_TALONFX_FusedSensorOutOfSync";
888 case SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync: return "ClearStickyFault_TALONFX_FusedSensorOutOfSync";
889 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "Fault_TALONFX_StatorCurrLimit";
890 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "StickyFault_TALONFX_StatorCurrLimit";
891 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "ClearStickyFault_TALONFX_StatorCurrLimit";
892 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "Fault_TALONFX_SupplyCurrLimit";
893 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "StickyFault_TALONFX_SupplyCurrLimit";
894 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "ClearStickyFault_TALONFX_SupplyCurrLimit";
895 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "Fault_TALONFX_UsingFusedCCWhileUnlicensed";
896 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "StickyFault_TALONFX_UsingFusedCCWhileUnlicensed";
897 case SpnValue::ClearStickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "ClearStickyFault_TALONFX_UsingFusedCCWhileUnlicensed";
898 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "Fault_TALONFX_StaticBrakeDisabled";
899 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "StickyFault_TALONFX_StaticBrakeDisabled";
900 case SpnValue::ClearStickyFault_TALONFX_StaticBrakeDisabled: return "ClearStickyFault_TALONFX_StaticBrakeDisabled";
901 case SpnValue::Fault_TALONFX_BridgeShort: return "Fault_TALONFX_BridgeShort";
902 case SpnValue::StickyFault_TALONFX_BridgeShort: return "StickyFault_TALONFX_BridgeShort";
903 case SpnValue::ClearStickyFault_TALONFX_BridgeShort: return "ClearStickyFault_TALONFX_BridgeShort";
904 case SpnValue::Fault_TALONFX_HallSensorMissing: return "Fault_TALONFX_HallSensorMissing";
905 case SpnValue::StickyFault_TALONFX_HallSensorMissing: return "StickyFault_TALONFX_HallSensorMissing";
906 case SpnValue::ClearStickyFault_TALONFX_HallSensorMissing: return "ClearStickyFault_TALONFX_HallSensorMissing";
907 case SpnValue::Fault_TALONFX_DriveDisabledHallSensor: return "Fault_TALONFX_DriveDisabledHallSensor";
908 case SpnValue::StickyFault_TALONFX_DriveDisabledHallSensor: return "StickyFault_TALONFX_DriveDisabledHallSensor";
909 case SpnValue::ClearStickyFault_TALONFX_DriveDisabledHallSensor: return "ClearStickyFault_TALONFX_DriveDisabledHallSensor";
910 case SpnValue::Fault_TALONFX_MotorTempSensorMissing: return "Fault_TALONFX_MotorTempSensorMissing";
911 case SpnValue::StickyFault_TALONFX_MotorTempSensorMissing: return "StickyFault_TALONFX_MotorTempSensorMissing";
912 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorMissing: return "ClearStickyFault_TALONFX_MotorTempSensorMissing";
913 case SpnValue::Fault_TALONFX_MotorTempSensorTooHot: return "Fault_TALONFX_MotorTempSensorTooHot";
914 case SpnValue::StickyFault_TALONFX_MotorTempSensorTooHot: return "StickyFault_TALONFX_MotorTempSensorTooHot";
915 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorTooHot: return "ClearStickyFault_TALONFX_MotorTempSensorTooHot";
916 case SpnValue::Fault_CANDI_5V: return "Fault_CANDI_5V";
917 case SpnValue::StickyFault_CANDI_5V: return "StickyFault_CANDI_5V";
918 case SpnValue::ClearStickyFault_CANDI_5V: return "ClearStickyFault_CANDI_5V";
919 default:
920 return "Invalid Value";
921 }
922 }
923
924 /**
925 * \brief Gets the API name for this enum
926 *
927 * \returns API name of this enum
928 */
929 std::string GetName() const
930 {
931 switch (value)
932 {
933 case SpnValue::TalonFX_System_State: return "System_State";
934 case SpnValue::Startup_ResetFlags: return "ResetFlags";
935 case SpnValue::Version_Major: return "VersionMajor";
936 case SpnValue::Version_Minor: return "VersionMinor";
937 case SpnValue::Version_Bugfix: return "VersionBugfix";
938 case SpnValue::Version_Build: return "VersionBuild";
939 case SpnValue::Version_Full: return "Version";
940 case SpnValue::Licensing_IsProLicensed: return "IsPROLicensed";
941 case SpnValue::Licensing_IsSeasonPassed: return "Licensing_IsSeasonPassed";
942 case SpnValue::CustomParam0: return "CustomParam0";
943 case SpnValue::CustomParam1: return "CustomParam1";
944 case SpnValue::CANcoder_SensorDirection: return "SensorDirection";
945 case SpnValue::FrcLock: return "FrcLock";
946 case SpnValue::RobotEnabled: return "RobotEnable";
947 case SpnValue::LED1_OnColor: return "Led1OnColor";
948 case SpnValue::LED1_OffColor: return "Led1OffColor";
949 case SpnValue::LED2_OnColor: return "Led2OnColor";
950 case SpnValue::LED2_OffColor: return "Led2OffColor";
951 case SpnValue::AllFaults: return "FaultField";
952 case SpnValue::AllStickyFaults: return "StickyFaultField";
953 case SpnValue::Pigeon2UseCompass: return "EnableCompass";
954 case SpnValue::Pigeon2DisableTemperatureCompensation: return "DisableTemperatureCompensation";
955 case SpnValue::Pigeon2DisableNoMotionCalibration: return "DisableNoMotionCalibration";
956 case SpnValue::Pigeon2MountPoseYaw: return "MountPoseYaw";
957 case SpnValue::Pigeon2MountPosePitch: return "MountPosePitch";
958 case SpnValue::Pigeon2MountPoseRoll: return "MountPoseRoll";
959 case SpnValue::Pigeon2GyroScalarX: return "GyroScalarX";
960 case SpnValue::Pigeon2GyroScalarY: return "GyroScalarY";
961 case SpnValue::Pigeon2GyroScalarZ: return "GyroScalarZ";
962 case SpnValue::Pigeon2Yaw: return "Yaw";
963 case SpnValue::Pigeon2Pitch: return "Pitch";
964 case SpnValue::Pigeon2Roll: return "Roll";
965 case SpnValue::Pigeon2QuatW: return "QuatW";
966 case SpnValue::Pigeon2QuatX: return "QuatX";
967 case SpnValue::Pigeon2QuatY: return "QuatY";
968 case SpnValue::Pigeon2QuatZ: return "QuatZ";
969 case SpnValue::Pigeon2GravityVectorX: return "GravityVectorX";
970 case SpnValue::Pigeon2GravityVectorY: return "GravityVectorY";
971 case SpnValue::Pigeon2GravityVectorZ: return "GravityVectorZ";
972 case SpnValue::Pigeon2Temperature: return "Temperature";
973 case SpnValue::Pigeon2NoMotionCalEnabled: return "NoMotionEnabled";
974 case SpnValue::Pigeon2NoMotionCount: return "NoMotionCount";
975 case SpnValue::Pigeon2TempCompDisabled: return "TemperatureCompensationDisabled";
976 case SpnValue::Pigeon2UpTime: return "UpTime";
977 case SpnValue::Pigeon2AccumGyroX: return "AccumGyroX";
978 case SpnValue::Pigeon2AccumGyroY: return "AccumGyroY";
979 case SpnValue::Pigeon2AccumGyroZ: return "AccumGyroZ";
980 case SpnValue::Pigeon2AngularVelocityXWorld: return "AngularVelocityXWorld";
981 case SpnValue::Pigeon2AngularVelocityYWorld: return "AngularVelocityYWorld";
982 case SpnValue::Pigeon2AngularVelocityZWorld: return "AngularVelocityZWorld";
983 case SpnValue::Pigeon2AccelerationX: return "AccelerationX";
984 case SpnValue::Pigeon2AccelerationY: return "AccelerationY";
985 case SpnValue::Pigeon2AccelerationZ: return "AccelerationZ";
986 case SpnValue::Pigeon2_SupplyVoltage: return "SupplyVoltage";
987 case SpnValue::Pigeon2AngularVelocityX: return "AngularVelocityXDevice";
988 case SpnValue::Pigeon2AngularVelocityY: return "AngularVelocityYDevice";
989 case SpnValue::Pigeon2AngularVelocityZ: return "AngularVelocityZDevice";
990 case SpnValue::Pigeon2MagneticFieldX: return "MagneticFieldX";
991 case SpnValue::Pigeon2MagneticFieldY: return "MagneticFieldY";
992 case SpnValue::Pigeon2MagneticFieldZ: return "MagneticFieldZ";
993 case SpnValue::Pigeon2RawMagneticFieldX: return "RawMagneticFieldX";
994 case SpnValue::Pigeon2RawMagneticFieldY: return "RawMagneticFieldY";
995 case SpnValue::Pigeon2RawMagneticFieldZ: return "RawMagneticFieldZ";
996 case SpnValue::CANCoder_MagnetOffset: return "MagnetOffset";
997 case SpnValue::TalonFX_SetSensorPosition: return "SetPosition";
998 case SpnValue::CANcoder_SetSensorPosition: return "SetPosition";
999 case SpnValue::Pigeon2_SetYaw: return "SetYaw";
1000 case SpnValue::DeviceEnabled: return "DeviceEnable";
1001 case SpnValue::PRO_MotorOutput_MotorVoltage: return "MotorVoltage";
1002 case SpnValue::ForwardLimit: return "ForwardLimit";
1003 case SpnValue::ReverseLimit: return "ReverseLimit";
1004 case SpnValue::PRO_MotorOutput_RotorPolarity: return "AppliedRotorPolarity";
1005 case SpnValue::PRO_MotorOutput_DutyCycle: return "DutyCycle";
1006 case SpnValue::PRO_MotorOutput_TorqueCurrent: return "TorqueCurrent";
1007 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "StatorCurrent";
1008 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "SupplyCurrent";
1009 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "SupplyVoltage";
1010 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "DeviceTemp";
1011 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "ProcessorTemp";
1012 case SpnValue::PRO_RotorPosAndVel_Velocity: return "RotorVelocity";
1013 case SpnValue::PRO_RotorPosAndVel_Position: return "RotorPosition";
1014 case SpnValue::PRO_PosAndVel_Velocity: return "Velocity";
1015 case SpnValue::PRO_PosAndVel_Position: return "Position";
1016 case SpnValue::PRO_PosAndVel_Acceleration: return "Acceleration";
1017 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "PIDDutyCycle_IntegratedAccum";
1018 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "PIDMotorVoltage_IntegratedAccum";
1019 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "PIDTorqueCurrent_IntegratedAccum";
1020 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "PIDDutyCycle_FeedForward";
1021 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "PIDMotorVoltage_FeedForward";
1022 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "PIDTorqueCurrent_FeedForward";
1023 case SpnValue::TalonFX_ControlMode: return "ControlMode";
1024 case SpnValue::ExternalMotorTempStatus: return "ExternalMotorTempStatus";
1025 case SpnValue::ExternalMotorTemp: return "ExternalMotorTemp";
1026 case SpnValue::PRO_PIDStateEnables_IsMotionMagicRunning: return "MotionMagicIsRunning";
1027 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "DeviceEnable";
1028 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "PIDPosition_Reference";
1029 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "PIDVelocity_Reference";
1030 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "PIDPosition_ClosedLoopError";
1031 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "PIDVelocity_ClosedLoopError";
1032 case SpnValue::PRO_PIDRefPIDErr_ClosedLoopMode: return "PIDRefPIDErr_ClosedLoopMode";
1033 case SpnValue::PRO_PIDOutput_PIDOutputMode: return "PIDOutput_PIDOutputMode";
1034 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "PIDDutyCycle_ProportionalOutput";
1035 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "PIDMotorVoltage_ProportionalOutput";
1036 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "PIDTorqueCurrent_ProportionalOutput";
1037 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "PIDDutyCycle_DerivativeOutput";
1038 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "PIDMotorVoltage_DerivativeOutput";
1039 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "PIDTorqueCurrent_DerivativeOutput";
1040 case SpnValue::PRO_PIDOutput_Output_DC: return "PIDDutyCycle_Output";
1041 case SpnValue::PRO_PIDOutput_Output_V: return "PIDMotorVoltage_Output";
1042 case SpnValue::PRO_PIDOutput_Output_A: return "PIDTorqueCurrent_Output";
1043 case SpnValue::PRO_PIDOutput_Slot: return "ClosedLoopSlot";
1044 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "PIDPosition_ReferenceSlope";
1045 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "PIDVelocity_ReferenceSlope";
1046 case SpnValue::PRO_PIDRefSlopeECUTime_ClosedLoopMode: return "PIDRefSlopeECUTime_ClosedLoopMode";
1047 case SpnValue::TalonFX_MotorOutputStatus: return "MotorOutputStatus";
1048 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "DifferentialDutyCycle";
1049 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "DifferentialTorqueCurrent";
1050 case SpnValue::TalonFX_DifferentialControlMode: return "DifferentialControlMode";
1051 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "Differential_PIDDutyCycle_IntegratedAccum";
1052 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "Differential_PIDMotorVoltage_IntegratedAccum";
1053 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "Differential_PIDTorqueCurrent_IntegratedAccum";
1054 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "Differential_PIDDutyCycle_FeedForward";
1055 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "Differential_PIDMotorVoltage_FeedForward";
1056 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "Differential_PIDTorqueCurrent_FeedForward";
1057 case SpnValue::PRO_AvgPosAndVel_Velocity: return "DifferentialAverageVelocity";
1058 case SpnValue::PRO_AvgPosAndVel_Position: return "DifferentialAveragePosition";
1059 case SpnValue::PRO_DiffPosAndVel_Velocity: return "DifferentialDifferenceVelocity";
1060 case SpnValue::PRO_DiffPosAndVel_Position: return "DifferentialDifferencePosition";
1061 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "Differential_PIDPosition_Reference";
1062 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "Differential_PIDVelocity_Reference";
1063 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "Differential_PIDPosition_ClosedLoopError";
1064 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "Differential_PIDVelocity_ClosedLoopError";
1065 case SpnValue::PRO_DiffPIDRefPIDErr_ClosedLoopMode: return "DiffPIDRefPIDErr_ClosedLoopMode";
1066 case SpnValue::PRO_DiffPIDOutput_PIDOutputMode: return "DiffPIDOutput_PIDOutputMode";
1067 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "Differential_PIDDutyCycle_ProportionalOutput";
1068 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "Differential_PIDMotorVoltage_ProportionalOutput";
1069 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "Differential_PIDTorqueCurrent_ProportionalOutput";
1070 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "Differential_PIDDutyCycle_DerivativeOutput";
1071 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "DiffPIDMotorVoltage_DerivativeOutput";
1072 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "Differential_PIDTorqueCurrent_DerivativeOutput";
1073 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "Differential_PIDDutyCycle_Output";
1074 case SpnValue::PRO_DiffPIDOutput_Output_V: return "Differential_PIDMotorVoltage_Output";
1075 case SpnValue::PRO_DiffPIDOutput_Output_A: return "Differential_PIDTorqueCurrent_Output";
1076 case SpnValue::PRO_DiffPIDOutput_Slot: return "DifferentialClosedLoopSlot";
1077 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "Differential_PIDPosition_ReferenceSlope";
1078 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "Differential_PIDVelocity_ReferenceSlope";
1079 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ClosedLoopMode: return "DiffPIDRefSlopeECUTime_ClosedLoopMode";
1080 case SpnValue::TalonFX_MotorConstants_kT: return "MotorKT";
1081 case SpnValue::TalonFX_MotorConstants_kV: return "MotorKV";
1082 case SpnValue::TalonFX_MotorConstants_StallCurrent: return "MotorStallCurrent";
1083 case SpnValue::Slot0_kP: return "kP";
1084 case SpnValue::Slot0_kI: return "kI";
1085 case SpnValue::Slot0_kD: return "kD";
1086 case SpnValue::Slot0_kS: return "kS";
1087 case SpnValue::Slot0_kV: return "kV";
1088 case SpnValue::Slot0_kA: return "kA";
1089 case SpnValue::Slot0_kG: return "kG";
1090 case SpnValue::Slot0_kG_Type: return "GravityType";
1091 case SpnValue::Slot1_kP: return "kP";
1092 case SpnValue::Slot1_kI: return "kI";
1093 case SpnValue::Slot1_kD: return "kD";
1094 case SpnValue::Slot1_kS: return "kS";
1095 case SpnValue::Slot1_kV: return "kV";
1096 case SpnValue::Slot1_kA: return "kA";
1097 case SpnValue::Slot1_kG: return "kG";
1098 case SpnValue::Slot1_kG_Type: return "GravityType";
1099 case SpnValue::Slot2_kP: return "kP";
1100 case SpnValue::Slot2_kI: return "kI";
1101 case SpnValue::Slot2_kD: return "kD";
1102 case SpnValue::Slot2_kS: return "kS";
1103 case SpnValue::Slot2_kV: return "kV";
1104 case SpnValue::Slot2_kA: return "kA";
1105 case SpnValue::Slot2_kG: return "kG";
1106 case SpnValue::Slot2_kG_Type: return "GravityType";
1107 case SpnValue::Config_Inverted: return "Inverted";
1108 case SpnValue::Config_SupplyVLowpassTau: return "SupplyVoltageTimeConstant";
1109 case SpnValue::Config_BeepOnBoot: return "BeepOnBoot";
1110 case SpnValue::Config_NeutralMode: return "NeutralMode";
1111 case SpnValue::Config_DutyCycleNeutralDB: return "DutyCycleNeutralDeadband";
1112 case SpnValue::Config_StatorCurrentLimit: return "StatorCurrentLimit";
1113 case SpnValue::Config_StatorCurrLimitEn: return "StatorCurrentLimitEnable";
1114 case SpnValue::Config_SupplyCurrentLimit: return "SupplyCurrentLimit";
1115 case SpnValue::Config_SupplyCurrLimitEn: return "SupplyCurrentLimitEnable";
1116 case SpnValue::Config_PeakForwardDC: return "PeakForwardDutyCycle";
1117 case SpnValue::Config_PeakReverseDC: return "PeakReverseDutyCycle";
1118 case SpnValue::Config_PeakForwardV: return "PeakForwardVoltage";
1119 case SpnValue::Config_PeakReverseV: return "PeakReverseVoltage";
1120 case SpnValue::Config_PeakForTorqCurr: return "PeakForwardTorqueCurrent";
1121 case SpnValue::Config_PeakRevTorqCurr: return "PeakReverseTorqueCurrent";
1122 case SpnValue::Config_TorqueNeutralDB: return "TorqueNeutralDeadband";
1123 case SpnValue::Config_FeedbackRotorOffset: return "FeedbackRotorOffset";
1124 case SpnValue::Config_SensorToMechanismRatio: return "SensorToMechanismRatio";
1125 case SpnValue::Config_RotorToSensorRatio: return "RotorToSensorRatio";
1126 case SpnValue::Config_FeedbackSensorSource: return "FeedbackSensorSource";
1127 case SpnValue::Config_FeedbackRemoteSensorID: return "FeedbackRemoteSensorID";
1128 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "DutyCycleOpenLoopRampPeriod";
1129 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "VoltageOpenLoopRampPeriod";
1130 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "TorqueOpenLoopRampPeriod";
1131 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "DutyCycleClosedLoopRampPeriod";
1132 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "VoltageClosedLoopRampPeriod";
1133 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "TorqueClosedLoopRampPeriod";
1134 case SpnValue::Config_ForwardLimitType: return "ForwardLimitType";
1135 case SpnValue::Config_ForwardLimitAutosetPosEnable: return "ForwardLimitAutosetPositionEnable";
1136 case SpnValue::Config_ForwardLimitAutosetPosValue: return "ForwardLimitAutosetPositionValue";
1137 case SpnValue::Config_ForwardLimitEnable: return "ForwardLimitEnable";
1138 case SpnValue::Config_ForwardLimitSource: return "ForwardLimitSource";
1139 case SpnValue::Config_ForwardLimitRemoteSensorID: return "ForwardLimitRemoteSensorID";
1140 case SpnValue::Config_ReverseLimitType: return "ReverseLimitType";
1141 case SpnValue::Config_ReverseLimitAutosetPosEnable: return "ReverseLimitAutosetPositionEnable";
1142 case SpnValue::Config_ReverseLimitAutosetPosValue: return "ReverseLimitAutosetPositionValue";
1143 case SpnValue::Config_ReverseLimitEnable: return "ReverseLimitEnable";
1144 case SpnValue::Config_ReverseLimitSource: return "ReverseLimitSource";
1145 case SpnValue::Config_ReverseLimitRemoteSensorID: return "ReverseLimitRemoteSensorID";
1146 case SpnValue::Config_ForwardSoftLimitEnable: return "ForwardSoftLimitEnable";
1147 case SpnValue::Config_ReverseSoftLimitEnable: return "ReverseSoftLimitEnable";
1148 case SpnValue::Config_ForwardSoftLimitThreshold: return "ForwardSoftLimitThreshold";
1149 case SpnValue::Config_ReverseSoftLimitThreshold: return "ReverseSoftLimitThreshold";
1150 case SpnValue::Config_MotionMagicCruiseVelocity: return "MotionMagicCruiseVelocity";
1151 case SpnValue::Config_MotionMagicAcceleration: return "MotionMagicAcceleration";
1152 case SpnValue::Config_MotionMagicJerk: return "MotionMagicJerk";
1153 case SpnValue::Config_MotionMagicExpo_kV: return "MotionMagicExpo_kV";
1154 case SpnValue::Config_MotionMagicExpo_kA: return "MotionMagicExpo_kA";
1155 case SpnValue::Config_PeakDiffDC: return "PeakDifferentialDutyCycle";
1156 case SpnValue::Config_PeakDiffV: return "PeakDifferentialVoltage";
1157 case SpnValue::Config_PeakDiffTorqCurr: return "PeakDifferentialTorqueCurrent";
1158 case SpnValue::CANcoder_Velocity: return "Velocity";
1159 case SpnValue::CANcoder_Position: return "Position";
1160 case SpnValue::CANcoder_AbsPosition: return "AbsolutePosition";
1161 case SpnValue::CANCoder_RawVel: return "UnfilteredVelocity";
1162 case SpnValue::CANCoder_RawPos: return "PositionSinceBoot";
1163 case SpnValue::CANCoder_SupplyVoltage: return "SupplyVoltage";
1164 case SpnValue::CANcoder_MagHealth: return "MagnetHealth";
1165 case SpnValue::SPN_ClearStickyFaults: return "ClearStickyFaults";
1166 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "BridgeOutput";
1167 case SpnValue::Config_ContinuousWrap: return "ContinuousWrap";
1168 case SpnValue::Config_SupplyCurrentLowerLimit: return "SupplyCurrentLowerLimit";
1169 case SpnValue::Config_SupplyCurrentLowerTime: return "SupplyCurrentLowerTime";
1170 case SpnValue::Config_DifferentialSensorSource: return "DifferentialSensorSource";
1171 case SpnValue::Config_DifferentialTalonFXSensorID: return "DifferentialTalonFXSensorID";
1172 case SpnValue::Config_DifferentialRemoteSensorID: return "DifferentialRemoteSensorID";
1173 case SpnValue::Config_BeepOnConfig: return "BeepOnConfig";
1174 case SpnValue::Config_AllowMusicDurDisable: return "AllowMusicDurDisable";
1175 case SpnValue::Compliancy_Version: return "Compliancy";
1176 case SpnValue::Version_IsProLicensed: return "IsProLicensed";
1177 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "AncillaryDeviceTemp";
1178 case SpnValue::Slot0_kS_Sign: return "StaticFeedforwardSign";
1179 case SpnValue::Slot1_kS_Sign: return "StaticFeedforwardSign";
1180 case SpnValue::Slot2_kS_Sign: return "StaticFeedforwardSign";
1181 case SpnValue::TalonFX_ConnectedMotor: return "ConnectedMotor";
1182 case SpnValue::CANrange_SupplyVoltage: return "SupplyVoltage";
1183 case SpnValue::CANrange_Distance_Meters: return "Distance";
1184 case SpnValue::CANrange_MeasTime: return "MeasurementTime";
1185 case SpnValue::CANrange_SignalStrength: return "SignalStrength";
1186 case SpnValue::CANrange_ProximityDetected: return "IsDetected";
1187 case SpnValue::CANrange_MeasState: return "MeasurementHealth";
1188 case SpnValue::CANrange_AmbientSignal: return "AmbientSignal";
1189 case SpnValue::CANrange_DistanceStdDev: return "DistanceStdDev";
1190 case SpnValue::CANrange_RealFOVCenterX: return "RealFOVCenterX";
1191 case SpnValue::CANrange_RealFOVCenterY: return "RealFOVCenterY";
1192 case SpnValue::CANrange_RealFOVRangeX: return "RealFOVRangeX";
1193 case SpnValue::CANrange_RealFOVRangeY: return "RealFOVRangeY";
1194 case SpnValue::CANrange_UpdateMode: return "UpdateMode";
1195 case SpnValue::CANrange_UpdateFreq: return "UpdateFrequency";
1196 case SpnValue::CANrange_ProximityThreshold: return "ProximityThreshold";
1197 case SpnValue::CANrange_ProximityHysteresis: return "ProximityHysteresis";
1198 case SpnValue::CANrange_MinSigStrengthForValidMeas: return "MinSignalStrengthForValidMeasurement";
1199 case SpnValue::CANrange_FOVCenterX: return "FOVCenterX";
1200 case SpnValue::CANrange_FOVCenterY: return "FOVCenterY";
1201 case SpnValue::CANrange_FOVRangeX: return "FOVRangeX";
1202 case SpnValue::CANrange_FOVRangeY: return "FOVRangeY";
1203 case SpnValue::Config_ControlTimesyncFreq: return "ControlTimesyncFreqHz";
1204 case SpnValue::Config_VelocityFilterTimeConstant: return "VelocityFilterTimeConstant";
1205 case SpnValue::Config_AdvancedHallSupport: return "AdvancedHallSupport";
1206 case SpnValue::Config_MotorType: return "MotorArrangement";
1207 case SpnValue::CANdi_Pin1State: return "S1State";
1208 case SpnValue::CANdi_Pin2State: return "S2State";
1209 case SpnValue::CANdi_QuadPosition: return "QuadraturePosition";
1210 case SpnValue::CANdi_Pwm1_RiseToRise: return "PWM1RiseToRise";
1211 case SpnValue::CANdi_Pwm1_Position: return "PWM1Position";
1212 case SpnValue::CANdi_Pwm1_Velocity: return "PWM1Velocity";
1213 case SpnValue::CANdi_Pwm2_RiseToRise: return "PWM2RiseToRise";
1214 case SpnValue::CANdi_Pwm2_Position: return "PWM2Position";
1215 case SpnValue::CANdi_Overcurrent: return "Overcurrent";
1216 case SpnValue::CANdi_VSense: return "SupplyVoltage";
1217 case SpnValue::CANdi_OutputCurrent: return "OutputCurrent";
1218 case SpnValue::CANdi_S1FloatState: return "S1FloatState";
1219 case SpnValue::CANdi_S2FloatState: return "S2FloatState";
1220 case SpnValue::Config_AbsoluteSensorOffset: return "AbsoluteSensorOffset";
1221 case SpnValue::Config_ExternalFeedbackSensorSource: return "ExternalFeedbackSensorSource";
1222 case SpnValue::Config_SensorPhase: return "SensorPhase";
1223 case SpnValue::Config_QuadratureEdgesPerRotation: return "QuadratureEdgesPerRotation";
1224 case SpnValue::Config_AbsoluteSensorDiscontinuityPoint: return "AbsoluteSensorDiscontinuityPoint";
1225 case SpnValue::CANdi_Pwm2_Velocity: return "PWM2Velocity";
1226 case SpnValue::TalonFXS_5VRailVoltage: return "FiveVRailVoltage";
1227 case SpnValue::CANdi_QuadVelocity: return "QuadratureVelocity";
1228 case SpnValue::Config_PWM1_AbsoluteSensorOffset: return "AbsoluteSensorOffset";
1229 case SpnValue::Config_PWM1_AbsoluteSensorDiscontinuityPoint: return "AbsoluteSensorDiscontinuityPoint";
1230 case SpnValue::Config_PWM1_SensorDirection: return "SensorDirection";
1231 case SpnValue::Config_PWM2_AbsoluteSensorOffset: return "AbsoluteSensorOffset";
1232 case SpnValue::Config_PWM2_AbsoluteSensorDiscontinuityPoint: return "AbsoluteSensorDiscontinuityPoint";
1233 case SpnValue::Config_PWM2_SensorDirection: return "SensorDirection";
1234 case SpnValue::Config_Quad_SensorDirection: return "SensorDirection";
1235 case SpnValue::CANdi_SetQuadPosition: return "SetQuadraturePosition";
1236 case SpnValue::Config_S1_CloseState: return "S1CloseState";
1237 case SpnValue::Config_S2_CloseState: return "S2CloseState";
1238 case SpnValue::CANdi_S1Closed: return "S1Closed";
1239 case SpnValue::CANdi_S2Closed: return "S2Closed";
1240 case SpnValue::Config_BrushedMotorWiring: return "BrushedMotorWiring";
1241 case SpnValue::Fault_Hardware: return "Fault_Hardware";
1242 case SpnValue::StickyFault_Hardware: return "StickyFault_Hardware";
1243 case SpnValue::ClearStickyFault_Hardware: return "ClearStickyFault_Hardware";
1244 case SpnValue::Fault_ProcTemp: return "Fault_ProcTemp";
1245 case SpnValue::StickyFault_ProcTemp: return "StickyFault_ProcTemp";
1246 case SpnValue::ClearStickyFault_ProcTemp: return "ClearStickyFault_ProcTemp";
1247 case SpnValue::Fault_DeviceTemp: return "Fault_DeviceTemp";
1248 case SpnValue::StickyFault_DeviceTemp: return "StickyFault_DeviceTemp";
1249 case SpnValue::ClearStickyFault_DeviceTemp: return "ClearStickyFault_DeviceTemp";
1250 case SpnValue::Fault_Undervoltage: return "Fault_Undervoltage";
1251 case SpnValue::StickyFault_Undervoltage: return "StickyFault_Undervoltage";
1252 case SpnValue::ClearStickyFault_Undervoltage: return "ClearStickyFault_Undervoltage";
1253 case SpnValue::Fault_BootDuringEnable: return "Fault_BootDuringEnable";
1254 case SpnValue::StickyFault_BootDuringEnable: return "StickyFault_BootDuringEnable";
1255 case SpnValue::ClearStickyFault_BootDuringEnable: return "ClearStickyFault_BootDuringEnable";
1256 case SpnValue::Fault_UnlicensedFeatureInUse: return "Fault_UnlicensedFeatureInUse";
1257 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "StickyFault_UnlicensedFeatureInUse";
1258 case SpnValue::ClearStickyFault_UnlicensedFeatureInUse: return "ClearStickyFault_UnlicensedFeatureInUse";
1259 case SpnValue::Fault_PIGEON2_BootupAccel: return "Fault_BootupAccelerometer";
1260 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "StickyFault_BootupAccelerometer";
1261 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "ClearStickyFault_BootupAccelerometer";
1262 case SpnValue::Fault_PIGEON2_BootupGyros: return "Fault_BootupGyroscope";
1263 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "StickyFault_BootupGyroscope";
1264 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "ClearStickyFault_BootupGyroscope";
1265 case SpnValue::Fault_PIGEON2_BootupMagne: return "Fault_BootupMagnetometer";
1266 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "StickyFault_BootupMagnetometer";
1267 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "ClearStickyFault_BootupMagnetometer";
1268 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "Fault_BootIntoMotion";
1269 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "StickyFault_BootIntoMotion";
1270 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "ClearStickyFault_BootIntoMotion";
1271 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "Fault_DataAcquiredLate";
1272 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "StickyFault_DataAcquiredLate";
1273 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "ClearStickyFault_DataAcquiredLate";
1274 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "Fault_LoopTimeSlow";
1275 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "StickyFault_LoopTimeSlow";
1276 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "ClearStickyFault_LoopTimeSlow";
1277 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "Fault_SaturatedMagnetometer";
1278 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "StickyFault_SaturatedMagnetometer";
1279 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "ClearStickyFault_SaturatedMagnetometer";
1280 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "Fault_SaturatedAccelerometer";
1281 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "StickyFault_SaturatedAccelerometer";
1282 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "ClearStickyFault_SaturatedAccelerometer";
1283 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "Fault_SaturatedGyroscope";
1284 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "StickyFault_SaturatedGyroscope";
1285 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "ClearStickyFault_SaturatedGyroscope";
1286 case SpnValue::Fault_CANCODER_BadMagnet: return "Fault_BadMagnet";
1287 case SpnValue::StickyFault_CANCODER_BadMagnet: return "StickyFault_BadMagnet";
1288 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "ClearStickyFault_BadMagnet";
1289 case SpnValue::Fault_TALONFX_BridgeBrownout: return "Fault_BridgeBrownout";
1290 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "StickyFault_BridgeBrownout";
1291 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "ClearStickyFault_BridgeBrownout";
1292 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "Fault_RemoteSensorReset";
1293 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "StickyFault_RemoteSensorReset";
1294 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "ClearStickyFault_RemoteSensorReset";
1295 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "Fault_MissingDifferentialFX";
1296 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "StickyFault_MissingDifferentialFX";
1297 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "ClearStickyFault_MissingDifferentialFX";
1298 case SpnValue::Fault_TALONFX_RemoteSensorPosOverflow: return "Fault_RemoteSensorPosOverflow";
1299 case SpnValue::StickyFault_TALONFX_RemoteSensorPosOverflow: return "StickyFault_RemoteSensorPosOverflow";
1300 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow: return "ClearStickyFault_RemoteSensorPosOverflow";
1301 case SpnValue::Fault_TALONFX_OverSupplyV: return "Fault_OverSupplyV";
1302 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "StickyFault_OverSupplyV";
1303 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "ClearStickyFault_OverSupplyV";
1304 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "Fault_UnstableSupplyV";
1305 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "StickyFault_UnstableSupplyV";
1306 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "ClearStickyFault_UnstableSupplyV";
1307 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "Fault_ReverseHardLimit";
1308 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "StickyFault_ReverseHardLimit";
1309 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "ClearStickyFault_ReverseHardLimit";
1310 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "Fault_ForwardHardLimit";
1311 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "StickyFault_ForwardHardLimit";
1312 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "ClearStickyFault_ForwardHardLimit";
1313 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "Fault_ReverseSoftLimit";
1314 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "StickyFault_ReverseSoftLimit";
1315 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "ClearStickyFault_ReverseSoftLimit";
1316 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "Fault_ForwardSoftLimit";
1317 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "StickyFault_ForwardSoftLimit";
1318 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "ClearStickyFault_ForwardSoftLimit";
1319 case SpnValue::Fault_TALONFX_MissingRemSoftLim: return "Fault_MissingSoftLimitRemote";
1320 case SpnValue::StickyFault_TALONFX_MissingRemSoftLim: return "StickyFault_MissingSoftLimitRemote";
1321 case SpnValue::ClearStickyFault_TALONFX_MissingRemSoftLim: return "ClearStickyFault_MissingSoftLimitRemote";
1322 case SpnValue::Fault_TALONFX_MissingRemHardLim: return "Fault_MissingHardLimitRemote";
1323 case SpnValue::StickyFault_TALONFX_MissingRemHardLim: return "StickyFault_MissingHardLimitRemote";
1324 case SpnValue::ClearStickyFault_TALONFX_MissingRemHardLim: return "ClearStickyFault_MissingHardLimitRemote";
1325 case SpnValue::Fault_TALONFX_MissingRemoteSensor: return "Fault_RemoteSensorDataInvalid";
1326 case SpnValue::StickyFault_TALONFX_MissingRemoteSensor: return "StickyFault_RemoteSensorDataInvalid";
1327 case SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor: return "ClearStickyFault_RemoteSensorDataInvalid";
1328 case SpnValue::Fault_TALONFX_FusedSensorOutOfSync: return "Fault_FusedSensorOutOfSync";
1329 case SpnValue::StickyFault_TALONFX_FusedSensorOutOfSync: return "StickyFault_FusedSensorOutOfSync";
1330 case SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync: return "ClearStickyFault_FusedSensorOutOfSync";
1331 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "Fault_StatorCurrLimit";
1332 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "StickyFault_StatorCurrLimit";
1333 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "ClearStickyFault_StatorCurrLimit";
1334 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "Fault_SupplyCurrLimit";
1335 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "StickyFault_SupplyCurrLimit";
1336 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "ClearStickyFault_SupplyCurrLimit";
1337 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "Fault_UsingFusedCANcoderWhileUnlicensed";
1338 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "StickyFault_UsingFusedCANcoderWhileUnlicensed";
1339 case SpnValue::ClearStickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "ClearStickyFault_UsingFusedCANcoderWhileUnlicensed";
1340 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "Fault_StaticBrakeDisabled";
1341 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "StickyFault_StaticBrakeDisabled";
1342 case SpnValue::ClearStickyFault_TALONFX_StaticBrakeDisabled: return "ClearStickyFault_StaticBrakeDisabled";
1343 case SpnValue::Fault_TALONFX_BridgeShort: return "Fault_BridgeShort";
1344 case SpnValue::StickyFault_TALONFX_BridgeShort: return "StickyFault_BridgeShort";
1345 case SpnValue::ClearStickyFault_TALONFX_BridgeShort: return "ClearStickyFault_BridgeShort";
1346 case SpnValue::Fault_TALONFX_HallSensorMissing: return "Fault_HallSensorMissing";
1347 case SpnValue::StickyFault_TALONFX_HallSensorMissing: return "StickyFault_HallSensorMissing";
1348 case SpnValue::ClearStickyFault_TALONFX_HallSensorMissing: return "ClearStickyFault_HallSensorMissing";
1349 case SpnValue::Fault_TALONFX_DriveDisabledHallSensor: return "Fault_DriveDisabledHallSensor";
1350 case SpnValue::StickyFault_TALONFX_DriveDisabledHallSensor: return "StickyFault_DriveDisabledHallSensor";
1351 case SpnValue::ClearStickyFault_TALONFX_DriveDisabledHallSensor: return "ClearStickyFault_DriveDisabledHallSensor";
1352 case SpnValue::Fault_TALONFX_MotorTempSensorMissing: return "Fault_MotorTempSensorMissing";
1353 case SpnValue::StickyFault_TALONFX_MotorTempSensorMissing: return "StickyFault_MotorTempSensorMissing";
1354 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorMissing: return "ClearStickyFault_MotorTempSensorMissing";
1355 case SpnValue::Fault_TALONFX_MotorTempSensorTooHot: return "Fault_MotorTempSensorTooHot";
1356 case SpnValue::StickyFault_TALONFX_MotorTempSensorTooHot: return "StickyFault_MotorTempSensorTooHot";
1357 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorTooHot: return "ClearStickyFault_MotorTempSensorTooHot";
1358 case SpnValue::Fault_CANDI_5V: return "Fault_5V";
1359 case SpnValue::StickyFault_CANDI_5V: return "StickyFault_5V";
1360 case SpnValue::ClearStickyFault_CANDI_5V: return "ClearStickyFault_5V";
1361 default:
1362 return "Invalid Value";
1363 }
1364 }
1365
1366 /**
1367 * \brief Gets the units for this enum if applicable
1368 *
1369 * \returns Units of this enum
1370 */
1371 std::string GetUnits() const
1372 {
1373 switch (value)
1374 {
1375 case SpnValue::TalonFX_System_State: return "";
1376 case SpnValue::Startup_ResetFlags: return "";
1377 case SpnValue::Version_Major: return "";
1378 case SpnValue::Version_Minor: return "";
1379 case SpnValue::Version_Bugfix: return "";
1380 case SpnValue::Version_Build: return "";
1381 case SpnValue::Version_Full: return "";
1382 case SpnValue::Licensing_IsProLicensed: return "";
1383 case SpnValue::Licensing_IsSeasonPassed: return "";
1384 case SpnValue::CustomParam0: return "";
1385 case SpnValue::CustomParam1: return "";
1386 case SpnValue::CANcoder_SensorDirection: return "";
1387 case SpnValue::FrcLock: return "";
1388 case SpnValue::RobotEnabled: return "";
1389 case SpnValue::LED1_OnColor: return "";
1390 case SpnValue::LED1_OffColor: return "";
1391 case SpnValue::LED2_OnColor: return "";
1392 case SpnValue::LED2_OffColor: return "";
1393 case SpnValue::AllFaults: return "";
1394 case SpnValue::AllStickyFaults: return "";
1395 case SpnValue::Pigeon2UseCompass: return "";
1396 case SpnValue::Pigeon2DisableTemperatureCompensation: return "";
1397 case SpnValue::Pigeon2DisableNoMotionCalibration: return "";
1398 case SpnValue::Pigeon2MountPoseYaw: return "deg";
1399 case SpnValue::Pigeon2MountPosePitch: return "deg";
1400 case SpnValue::Pigeon2MountPoseRoll: return "deg";
1401 case SpnValue::Pigeon2GyroScalarX: return "deg per rotation";
1402 case SpnValue::Pigeon2GyroScalarY: return "deg per rotation";
1403 case SpnValue::Pigeon2GyroScalarZ: return "deg per rotation";
1404 case SpnValue::Pigeon2Yaw: return "deg";
1405 case SpnValue::Pigeon2Pitch: return "deg";
1406 case SpnValue::Pigeon2Roll: return "deg";
1407 case SpnValue::Pigeon2QuatW: return "";
1408 case SpnValue::Pigeon2QuatX: return "";
1409 case SpnValue::Pigeon2QuatY: return "";
1410 case SpnValue::Pigeon2QuatZ: return "";
1411 case SpnValue::Pigeon2GravityVectorX: return "";
1412 case SpnValue::Pigeon2GravityVectorY: return "";
1413 case SpnValue::Pigeon2GravityVectorZ: return "";
1414 case SpnValue::Pigeon2Temperature: return "℃";
1415 case SpnValue::Pigeon2NoMotionCalEnabled: return "";
1416 case SpnValue::Pigeon2NoMotionCount: return "";
1417 case SpnValue::Pigeon2TempCompDisabled: return "";
1418 case SpnValue::Pigeon2UpTime: return "s";
1419 case SpnValue::Pigeon2AccumGyroX: return "deg";
1420 case SpnValue::Pigeon2AccumGyroY: return "deg";
1421 case SpnValue::Pigeon2AccumGyroZ: return "deg";
1422 case SpnValue::Pigeon2AngularVelocityXWorld: return "dps";
1423 case SpnValue::Pigeon2AngularVelocityYWorld: return "dps";
1424 case SpnValue::Pigeon2AngularVelocityZWorld: return "dps";
1425 case SpnValue::Pigeon2AccelerationX: return "g";
1426 case SpnValue::Pigeon2AccelerationY: return "g";
1427 case SpnValue::Pigeon2AccelerationZ: return "g";
1428 case SpnValue::Pigeon2_SupplyVoltage: return "V";
1429 case SpnValue::Pigeon2AngularVelocityX: return "dps";
1430 case SpnValue::Pigeon2AngularVelocityY: return "dps";
1431 case SpnValue::Pigeon2AngularVelocityZ: return "dps";
1432 case SpnValue::Pigeon2MagneticFieldX: return "uT";
1433 case SpnValue::Pigeon2MagneticFieldY: return "uT";
1434 case SpnValue::Pigeon2MagneticFieldZ: return "uT";
1435 case SpnValue::Pigeon2RawMagneticFieldX: return "uT";
1436 case SpnValue::Pigeon2RawMagneticFieldY: return "uT";
1437 case SpnValue::Pigeon2RawMagneticFieldZ: return "uT";
1438 case SpnValue::CANCoder_MagnetOffset: return "rotations";
1439 case SpnValue::TalonFX_SetSensorPosition: return "rotations";
1440 case SpnValue::CANcoder_SetSensorPosition: return "rotations";
1441 case SpnValue::Pigeon2_SetYaw: return "deg";
1442 case SpnValue::DeviceEnabled: return "";
1443 case SpnValue::PRO_MotorOutput_MotorVoltage: return "V";
1444 case SpnValue::ForwardLimit: return "";
1445 case SpnValue::ReverseLimit: return "";
1446 case SpnValue::PRO_MotorOutput_RotorPolarity: return "";
1447 case SpnValue::PRO_MotorOutput_DutyCycle: return "fractional";
1448 case SpnValue::PRO_MotorOutput_TorqueCurrent: return "A";
1449 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "A";
1450 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "A";
1451 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "V";
1452 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "℃";
1453 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "℃";
1454 case SpnValue::PRO_RotorPosAndVel_Velocity: return "rotations per second";
1455 case SpnValue::PRO_RotorPosAndVel_Position: return "rotations";
1456 case SpnValue::PRO_PosAndVel_Velocity: return "rotations per second";
1457 case SpnValue::PRO_PosAndVel_Position: return "rotations";
1458 case SpnValue::PRO_PosAndVel_Acceleration: return "rotations per second²";
1459 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "fractional";
1460 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "V";
1461 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "A";
1462 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "fractional";
1463 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "V";
1464 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "A";
1465 case SpnValue::TalonFX_ControlMode: return "";
1466 case SpnValue::ExternalMotorTempStatus: return "";
1467 case SpnValue::ExternalMotorTemp: return "℃";
1468 case SpnValue::PRO_PIDStateEnables_IsMotionMagicRunning: return "";
1469 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "";
1470 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "rotations";
1471 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "rotations per second";
1472 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "rotations";
1473 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "rotations per second";
1474 case SpnValue::PRO_PIDRefPIDErr_ClosedLoopMode: return "";
1475 case SpnValue::PRO_PIDOutput_PIDOutputMode: return "";
1476 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "fractional";
1477 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "V";
1478 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "A";
1479 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "fractional";
1480 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "V";
1481 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "A";
1482 case SpnValue::PRO_PIDOutput_Output_DC: return "fractional";
1483 case SpnValue::PRO_PIDOutput_Output_V: return "V";
1484 case SpnValue::PRO_PIDOutput_Output_A: return "A";
1485 case SpnValue::PRO_PIDOutput_Slot: return "";
1486 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "rotations per second";
1487 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "rotations per second²";
1488 case SpnValue::PRO_PIDRefSlopeECUTime_ClosedLoopMode: return "";
1489 case SpnValue::TalonFX_MotorOutputStatus: return "";
1490 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "fractional";
1491 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "A";
1492 case SpnValue::TalonFX_DifferentialControlMode: return "";
1493 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "fractional";
1494 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "V";
1495 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "A";
1496 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "fractional";
1497 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "V";
1498 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "A";
1499 case SpnValue::PRO_AvgPosAndVel_Velocity: return "rotations per second";
1500 case SpnValue::PRO_AvgPosAndVel_Position: return "rotations";
1501 case SpnValue::PRO_DiffPosAndVel_Velocity: return "rotations per second";
1502 case SpnValue::PRO_DiffPosAndVel_Position: return "rotations";
1503 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "rotations";
1504 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "rotations per second";
1505 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "rotations";
1506 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "rotations per second";
1507 case SpnValue::PRO_DiffPIDRefPIDErr_ClosedLoopMode: return "";
1508 case SpnValue::PRO_DiffPIDOutput_PIDOutputMode: return "";
1509 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "fractional";
1510 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "V";
1511 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "A";
1512 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "fractional";
1513 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "V";
1514 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "A";
1515 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "fractional";
1516 case SpnValue::PRO_DiffPIDOutput_Output_V: return "V";
1517 case SpnValue::PRO_DiffPIDOutput_Output_A: return "A";
1518 case SpnValue::PRO_DiffPIDOutput_Slot: return "";
1519 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "rotations per second";
1520 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "rotations per second²";
1521 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ClosedLoopMode: return "";
1522 case SpnValue::TalonFX_MotorConstants_kT: return "Nm/A";
1523 case SpnValue::TalonFX_MotorConstants_kV: return "RPM/V";
1524 case SpnValue::TalonFX_MotorConstants_StallCurrent: return "A";
1525 case SpnValue::Slot0_kP: return "";
1526 case SpnValue::Slot0_kI: return "";
1527 case SpnValue::Slot0_kD: return "";
1528 case SpnValue::Slot0_kS: return "";
1529 case SpnValue::Slot0_kV: return "";
1530 case SpnValue::Slot0_kA: return "";
1531 case SpnValue::Slot0_kG: return "";
1532 case SpnValue::Slot0_kG_Type: return "";
1533 case SpnValue::Slot1_kP: return "";
1534 case SpnValue::Slot1_kI: return "";
1535 case SpnValue::Slot1_kD: return "";
1536 case SpnValue::Slot1_kS: return "";
1537 case SpnValue::Slot1_kV: return "";
1538 case SpnValue::Slot1_kA: return "";
1539 case SpnValue::Slot1_kG: return "";
1540 case SpnValue::Slot1_kG_Type: return "";
1541 case SpnValue::Slot2_kP: return "";
1542 case SpnValue::Slot2_kI: return "";
1543 case SpnValue::Slot2_kD: return "";
1544 case SpnValue::Slot2_kS: return "";
1545 case SpnValue::Slot2_kV: return "";
1546 case SpnValue::Slot2_kA: return "";
1547 case SpnValue::Slot2_kG: return "";
1548 case SpnValue::Slot2_kG_Type: return "";
1549 case SpnValue::Config_Inverted: return "";
1550 case SpnValue::Config_SupplyVLowpassTau: return "seconds";
1551 case SpnValue::Config_BeepOnBoot: return "";
1552 case SpnValue::Config_NeutralMode: return "";
1553 case SpnValue::Config_DutyCycleNeutralDB: return "fractional";
1554 case SpnValue::Config_StatorCurrentLimit: return "A";
1555 case SpnValue::Config_StatorCurrLimitEn: return "";
1556 case SpnValue::Config_SupplyCurrentLimit: return "A";
1557 case SpnValue::Config_SupplyCurrLimitEn: return "";
1558 case SpnValue::Config_PeakForwardDC: return "fractional";
1559 case SpnValue::Config_PeakReverseDC: return "fractional";
1560 case SpnValue::Config_PeakForwardV: return "V";
1561 case SpnValue::Config_PeakReverseV: return "V";
1562 case SpnValue::Config_PeakForTorqCurr: return "A";
1563 case SpnValue::Config_PeakRevTorqCurr: return "A";
1564 case SpnValue::Config_TorqueNeutralDB: return "A";
1565 case SpnValue::Config_FeedbackRotorOffset: return "rotations";
1566 case SpnValue::Config_SensorToMechanismRatio: return "scalar";
1567 case SpnValue::Config_RotorToSensorRatio: return "scalar";
1568 case SpnValue::Config_FeedbackSensorSource: return "";
1569 case SpnValue::Config_FeedbackRemoteSensorID: return "";
1570 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "seconds";
1571 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "seconds";
1572 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "seconds";
1573 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "seconds";
1574 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "seconds";
1575 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "seconds";
1576 case SpnValue::Config_ForwardLimitType: return "";
1577 case SpnValue::Config_ForwardLimitAutosetPosEnable: return "";
1578 case SpnValue::Config_ForwardLimitAutosetPosValue: return "rotations";
1579 case SpnValue::Config_ForwardLimitEnable: return "";
1580 case SpnValue::Config_ForwardLimitSource: return "";
1581 case SpnValue::Config_ForwardLimitRemoteSensorID: return "";
1582 case SpnValue::Config_ReverseLimitType: return "";
1583 case SpnValue::Config_ReverseLimitAutosetPosEnable: return "";
1584 case SpnValue::Config_ReverseLimitAutosetPosValue: return "rotations";
1585 case SpnValue::Config_ReverseLimitEnable: return "";
1586 case SpnValue::Config_ReverseLimitSource: return "";
1587 case SpnValue::Config_ReverseLimitRemoteSensorID: return "";
1588 case SpnValue::Config_ForwardSoftLimitEnable: return "";
1589 case SpnValue::Config_ReverseSoftLimitEnable: return "";
1590 case SpnValue::Config_ForwardSoftLimitThreshold: return "rotations";
1591 case SpnValue::Config_ReverseSoftLimitThreshold: return "rotations";
1592 case SpnValue::Config_MotionMagicCruiseVelocity: return "rot per sec";
1593 case SpnValue::Config_MotionMagicAcceleration: return "rot per sec²";
1594 case SpnValue::Config_MotionMagicJerk: return "rot per sec³";
1595 case SpnValue::Config_MotionMagicExpo_kV: return "V/rps";
1596 case SpnValue::Config_MotionMagicExpo_kA: return "V/rps²";
1597 case SpnValue::Config_PeakDiffDC: return "fractional";
1598 case SpnValue::Config_PeakDiffV: return "V";
1599 case SpnValue::Config_PeakDiffTorqCurr: return "A";
1600 case SpnValue::CANcoder_Velocity: return "rotations per second";
1601 case SpnValue::CANcoder_Position: return "rotations";
1602 case SpnValue::CANcoder_AbsPosition: return "rotations";
1603 case SpnValue::CANCoder_RawVel: return "rotations per second";
1604 case SpnValue::CANCoder_RawPos: return "rotations";
1605 case SpnValue::CANCoder_SupplyVoltage: return "V";
1606 case SpnValue::CANcoder_MagHealth: return "";
1607 case SpnValue::SPN_ClearStickyFaults: return "";
1608 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "";
1609 case SpnValue::Config_ContinuousWrap: return "";
1610 case SpnValue::Config_SupplyCurrentLowerLimit: return "A";
1611 case SpnValue::Config_SupplyCurrentLowerTime: return "seconds";
1612 case SpnValue::Config_DifferentialSensorSource: return "";
1613 case SpnValue::Config_DifferentialTalonFXSensorID: return "";
1614 case SpnValue::Config_DifferentialRemoteSensorID: return "";
1615 case SpnValue::Config_BeepOnConfig: return "";
1616 case SpnValue::Config_AllowMusicDurDisable: return "";
1617 case SpnValue::Compliancy_Version: return "";
1618 case SpnValue::Version_IsProLicensed: return "";
1619 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "℃";
1620 case SpnValue::Slot0_kS_Sign: return "";
1621 case SpnValue::Slot1_kS_Sign: return "";
1622 case SpnValue::Slot2_kS_Sign: return "";
1623 case SpnValue::TalonFX_ConnectedMotor: return "";
1624 case SpnValue::CANrange_SupplyVoltage: return "V";
1625 case SpnValue::CANrange_Distance_Meters: return "m";
1626 case SpnValue::CANrange_MeasTime: return "s";
1627 case SpnValue::CANrange_SignalStrength: return "";
1628 case SpnValue::CANrange_ProximityDetected: return "";
1629 case SpnValue::CANrange_MeasState: return "";
1630 case SpnValue::CANrange_AmbientSignal: return "";
1631 case SpnValue::CANrange_DistanceStdDev: return "m";
1632 case SpnValue::CANrange_RealFOVCenterX: return "deg";
1633 case SpnValue::CANrange_RealFOVCenterY: return "deg";
1634 case SpnValue::CANrange_RealFOVRangeX: return "deg";
1635 case SpnValue::CANrange_RealFOVRangeY: return "deg";
1636 case SpnValue::CANrange_UpdateMode: return "";
1637 case SpnValue::CANrange_UpdateFreq: return "Hz";
1638 case SpnValue::CANrange_ProximityThreshold: return "m";
1639 case SpnValue::CANrange_ProximityHysteresis: return "m";
1640 case SpnValue::CANrange_MinSigStrengthForValidMeas: return "";
1641 case SpnValue::CANrange_FOVCenterX: return "deg";
1642 case SpnValue::CANrange_FOVCenterY: return "deg";
1643 case SpnValue::CANrange_FOVRangeX: return "deg";
1644 case SpnValue::CANrange_FOVRangeY: return "deg";
1645 case SpnValue::Config_ControlTimesyncFreq: return "Hz";
1646 case SpnValue::Config_VelocityFilterTimeConstant: return "seconds";
1647 case SpnValue::Config_AdvancedHallSupport: return "";
1648 case SpnValue::Config_MotorType: return "";
1649 case SpnValue::CANdi_Pin1State: return "";
1650 case SpnValue::CANdi_Pin2State: return "";
1651 case SpnValue::CANdi_QuadPosition: return "rotations";
1652 case SpnValue::CANdi_Pwm1_RiseToRise: return "us";
1653 case SpnValue::CANdi_Pwm1_Position: return "rotations";
1654 case SpnValue::CANdi_Pwm1_Velocity: return "rotations per second";
1655 case SpnValue::CANdi_Pwm2_RiseToRise: return "us";
1656 case SpnValue::CANdi_Pwm2_Position: return "rotations";
1657 case SpnValue::CANdi_Overcurrent: return "";
1658 case SpnValue::CANdi_VSense: return "V";
1659 case SpnValue::CANdi_OutputCurrent: return "A";
1660 case SpnValue::CANdi_S1FloatState: return "";
1661 case SpnValue::CANdi_S2FloatState: return "";
1662 case SpnValue::Config_AbsoluteSensorOffset: return "rotations";
1663 case SpnValue::Config_ExternalFeedbackSensorSource: return "";
1664 case SpnValue::Config_SensorPhase: return "";
1665 case SpnValue::Config_QuadratureEdgesPerRotation: return "";
1666 case SpnValue::Config_AbsoluteSensorDiscontinuityPoint: return "rotations";
1667 case SpnValue::CANdi_Pwm2_Velocity: return "rotations per second";
1668 case SpnValue::TalonFXS_5VRailVoltage: return "Volts";
1669 case SpnValue::CANdi_QuadVelocity: return "rotations per second";
1670 case SpnValue::Config_PWM1_AbsoluteSensorOffset: return "rotations";
1671 case SpnValue::Config_PWM1_AbsoluteSensorDiscontinuityPoint: return "rotations";
1672 case SpnValue::Config_PWM1_SensorDirection: return "";
1673 case SpnValue::Config_PWM2_AbsoluteSensorOffset: return "rotations";
1674 case SpnValue::Config_PWM2_AbsoluteSensorDiscontinuityPoint: return "rotations";
1675 case SpnValue::Config_PWM2_SensorDirection: return "";
1676 case SpnValue::Config_Quad_SensorDirection: return "";
1677 case SpnValue::CANdi_SetQuadPosition: return "rotations";
1678 case SpnValue::Config_S1_CloseState: return "";
1679 case SpnValue::Config_S2_CloseState: return "";
1680 case SpnValue::CANdi_S1Closed: return "";
1681 case SpnValue::CANdi_S2Closed: return "";
1682 case SpnValue::Config_BrushedMotorWiring: return "";
1683 case SpnValue::Fault_Hardware: return "";
1684 case SpnValue::StickyFault_Hardware: return "";
1685 case SpnValue::ClearStickyFault_Hardware: return "";
1686 case SpnValue::Fault_ProcTemp: return "";
1687 case SpnValue::StickyFault_ProcTemp: return "";
1688 case SpnValue::ClearStickyFault_ProcTemp: return "";
1689 case SpnValue::Fault_DeviceTemp: return "";
1690 case SpnValue::StickyFault_DeviceTemp: return "";
1691 case SpnValue::ClearStickyFault_DeviceTemp: return "";
1692 case SpnValue::Fault_Undervoltage: return "";
1693 case SpnValue::StickyFault_Undervoltage: return "";
1694 case SpnValue::ClearStickyFault_Undervoltage: return "";
1695 case SpnValue::Fault_BootDuringEnable: return "";
1696 case SpnValue::StickyFault_BootDuringEnable: return "";
1697 case SpnValue::ClearStickyFault_BootDuringEnable: return "";
1698 case SpnValue::Fault_UnlicensedFeatureInUse: return "";
1699 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "";
1700 case SpnValue::ClearStickyFault_UnlicensedFeatureInUse: return "";
1701 case SpnValue::Fault_PIGEON2_BootupAccel: return "";
1702 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "";
1703 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "";
1704 case SpnValue::Fault_PIGEON2_BootupGyros: return "";
1705 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "";
1706 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "";
1707 case SpnValue::Fault_PIGEON2_BootupMagne: return "";
1708 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "";
1709 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "";
1710 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "";
1711 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "";
1712 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "";
1713 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "";
1714 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "";
1715 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "";
1716 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "";
1717 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "";
1718 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "";
1719 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "";
1720 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "";
1721 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "";
1722 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "";
1723 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "";
1724 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "";
1725 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "";
1726 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "";
1727 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "";
1728 case SpnValue::Fault_CANCODER_BadMagnet: return "";
1729 case SpnValue::StickyFault_CANCODER_BadMagnet: return "";
1730 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "";
1731 case SpnValue::Fault_TALONFX_BridgeBrownout: return "";
1732 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "";
1733 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "";
1734 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "";
1735 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "";
1736 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "";
1737 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "";
1738 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "";
1739 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "";
1740 case SpnValue::Fault_TALONFX_RemoteSensorPosOverflow: return "";
1741 case SpnValue::StickyFault_TALONFX_RemoteSensorPosOverflow: return "";
1742 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow: return "";
1743 case SpnValue::Fault_TALONFX_OverSupplyV: return "";
1744 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "";
1745 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "";
1746 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "";
1747 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "";
1748 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "";
1749 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "";
1750 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "";
1751 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "";
1752 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "";
1753 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "";
1754 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "";
1755 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "";
1756 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "";
1757 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "";
1758 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "";
1759 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "";
1760 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "";
1761 case SpnValue::Fault_TALONFX_MissingRemSoftLim: return "";
1762 case SpnValue::StickyFault_TALONFX_MissingRemSoftLim: return "";
1763 case SpnValue::ClearStickyFault_TALONFX_MissingRemSoftLim: return "";
1764 case SpnValue::Fault_TALONFX_MissingRemHardLim: return "";
1765 case SpnValue::StickyFault_TALONFX_MissingRemHardLim: return "";
1766 case SpnValue::ClearStickyFault_TALONFX_MissingRemHardLim: return "";
1767 case SpnValue::Fault_TALONFX_MissingRemoteSensor: return "";
1768 case SpnValue::StickyFault_TALONFX_MissingRemoteSensor: return "";
1769 case SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor: return "";
1770 case SpnValue::Fault_TALONFX_FusedSensorOutOfSync: return "";
1771 case SpnValue::StickyFault_TALONFX_FusedSensorOutOfSync: return "";
1772 case SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync: return "";
1773 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "";
1774 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "";
1775 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "";
1776 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "";
1777 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "";
1778 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "";
1779 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "";
1780 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "";
1781 case SpnValue::ClearStickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "";
1782 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "";
1783 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "";
1784 case SpnValue::ClearStickyFault_TALONFX_StaticBrakeDisabled: return "";
1785 case SpnValue::Fault_TALONFX_BridgeShort: return "";
1786 case SpnValue::StickyFault_TALONFX_BridgeShort: return "";
1787 case SpnValue::ClearStickyFault_TALONFX_BridgeShort: return "";
1788 case SpnValue::Fault_TALONFX_HallSensorMissing: return "";
1789 case SpnValue::StickyFault_TALONFX_HallSensorMissing: return "";
1790 case SpnValue::ClearStickyFault_TALONFX_HallSensorMissing: return "";
1791 case SpnValue::Fault_TALONFX_DriveDisabledHallSensor: return "";
1792 case SpnValue::StickyFault_TALONFX_DriveDisabledHallSensor: return "";
1793 case SpnValue::ClearStickyFault_TALONFX_DriveDisabledHallSensor: return "";
1794 case SpnValue::Fault_TALONFX_MotorTempSensorMissing: return "";
1795 case SpnValue::StickyFault_TALONFX_MotorTempSensorMissing: return "";
1796 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorMissing: return "";
1797 case SpnValue::Fault_TALONFX_MotorTempSensorTooHot: return "";
1798 case SpnValue::StickyFault_TALONFX_MotorTempSensorTooHot: return "";
1799 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorTooHot: return "";
1800 case SpnValue::Fault_CANDI_5V: return "";
1801 case SpnValue::StickyFault_CANDI_5V: return "";
1802 case SpnValue::ClearStickyFault_CANDI_5V: return "";
1803 default:
1804 return "Invalid Value";
1805 }
1806 }
1807
1808 /**
1809 * \brief Gets the summary for this enum if applicable
1810 *
1811 * \returns Summary of this enum
1812 */
1813 std::string GetSummary() const
1814 {
1815 switch (value)
1816 {
1817 case SpnValue::TalonFX_System_State: return "System state of the device.";
1818 case SpnValue::Startup_ResetFlags: return "This signal needs a summary";
1819 case SpnValue::Version_Major: return "App Major Version number.";
1820 case SpnValue::Version_Minor: return "App Minor Version number.";
1821 case SpnValue::Version_Bugfix: return "App Bugfix Version number.";
1822 case SpnValue::Version_Build: return "App Build Version number.";
1823 case SpnValue::Version_Full: return "Full Version of firmware in device. The format is a four byte value.";
1824 case SpnValue::Licensing_IsProLicensed: return "Whether the device is Pro licensed.";
1825 case SpnValue::Licensing_IsSeasonPassed: return "Whether the device is Season Pass licensed.";
1826 case SpnValue::CustomParam0: return "Custom parameter 0. This is provided to allow end-applications to store persistent information in the device.";
1827 case SpnValue::CustomParam1: return "Custom parameter 1. This is provided to allow end-applications to store persistent information in the device.";
1828 case SpnValue::CANcoder_SensorDirection: return "Direction of the sensor to determine positive rotation, as seen facing the LED side of the CANcoder.";
1829 case SpnValue::FrcLock: return "Whether device is locked by FRC.";
1830 case SpnValue::RobotEnabled: return "Whether the robot is enabled.";
1831 case SpnValue::LED1_OnColor: return "The Color of LED1 when it's \"On\".";
1832 case SpnValue::LED1_OffColor: return "The Color of LED1 when it's \"Off\".";
1833 case SpnValue::LED2_OnColor: return "The Color of LED2 when it's \"On\".";
1834 case SpnValue::LED2_OffColor: return "The Color of LED2 when it's \"Off\".";
1835 case SpnValue::AllFaults: return "Integer representing all fault flags reported by the device.";
1836 case SpnValue::AllStickyFaults: return "Integer representing all (persistent) sticky fault flags reported by the device.";
1837 case SpnValue::Pigeon2UseCompass: return "Turns on or off the magnetometer fusing for 9-axis. FRC users are not recommended to turn this on, as the magnetic influence of the robot will likely negatively affect the performance of the Pigeon2.";
1838 case SpnValue::Pigeon2DisableTemperatureCompensation: return "Disables using the temperature compensation feature.";
1839 case SpnValue::Pigeon2DisableNoMotionCalibration: return "Disables using the no-motion calibration feature.";
1840 case SpnValue::Pigeon2MountPoseYaw: return "The mounting calibration yaw-component.";
1841 case SpnValue::Pigeon2MountPosePitch: return "The mounting calibration pitch-component.";
1842 case SpnValue::Pigeon2MountPoseRoll: return "The mounting calibration roll-component.";
1843 case SpnValue::Pigeon2GyroScalarX: return "The gyro scalar component for the X axis.";
1844 case SpnValue::Pigeon2GyroScalarY: return "The gyro scalar component for the Y axis.";
1845 case SpnValue::Pigeon2GyroScalarZ: return "The gyro scalar component for the Z axis.";
1846 case SpnValue::Pigeon2Yaw: return "Current reported yaw of the Pigeon2.";
1847 case SpnValue::Pigeon2Pitch: return "Current reported pitch of the Pigeon2.";
1848 case SpnValue::Pigeon2Roll: return "Current reported roll of the Pigeon2.";
1849 case SpnValue::Pigeon2QuatW: return "The W component of the reported Quaternion.";
1850 case SpnValue::Pigeon2QuatX: return "The X component of the reported Quaternion.";
1851 case SpnValue::Pigeon2QuatY: return "The Y component of the reported Quaternion.";
1852 case SpnValue::Pigeon2QuatZ: return "The Z component of the reported Quaternion.";
1853 case SpnValue::Pigeon2GravityVectorX: return "The X component of the gravity vector.";
1854 case SpnValue::Pigeon2GravityVectorY: return "The Y component of the gravity vector.";
1855 case SpnValue::Pigeon2GravityVectorZ: return "The Z component of the gravity vector.";
1856 case SpnValue::Pigeon2Temperature: return "Temperature of the Pigeon 2.";
1857 case SpnValue::Pigeon2NoMotionCalEnabled: return "Whether the no-motion calibration feature is enabled.";
1858 case SpnValue::Pigeon2NoMotionCount: return "The number of times a no-motion event occurred, wraps at 15.";
1859 case SpnValue::Pigeon2TempCompDisabled: return "Whether the temperature-compensation feature is disabled.";
1860 case SpnValue::Pigeon2UpTime: return "How long the Pigeon 2's been up in seconds, caps at 255 seconds.";
1861 case SpnValue::Pigeon2AccumGyroX: return "The accumulated gyro about the X axis without any sensor fusing.";
1862 case SpnValue::Pigeon2AccumGyroY: return "The accumulated gyro about the Y axis without any sensor fusing.";
1863 case SpnValue::Pigeon2AccumGyroZ: return "The accumulated gyro about the Z axis without any sensor fusing.";
1864 case SpnValue::Pigeon2AngularVelocityXWorld: return "The angular velocity (ω) of the Pigeon 2 about the X axis with respect to the world frame. This value is mount-calibrated.";
1865 case SpnValue::Pigeon2AngularVelocityYWorld: return "The angular velocity (ω) of the Pigeon 2 about the Y axis with respect to the world frame. This value is mount-calibrated.";
1866 case SpnValue::Pigeon2AngularVelocityZWorld: return "The angular velocity (ω) of the Pigeon 2 about the Z axis with respect to the world frame. This value is mount-calibrated.";
1867 case SpnValue::Pigeon2AccelerationX: return "The acceleration measured by Pigeon2 in the X direction.";
1868 case SpnValue::Pigeon2AccelerationY: return "The acceleration measured by Pigeon2 in the Y direction.";
1869 case SpnValue::Pigeon2AccelerationZ: return "The acceleration measured by Pigeon2 in the Z direction.";
1870 case SpnValue::Pigeon2_SupplyVoltage: return "Measured supply voltage to the Pigeon2.";
1871 case SpnValue::Pigeon2AngularVelocityX: return "The angular velocity (ω) of the Pigeon 2 about the device's X axis.";
1872 case SpnValue::Pigeon2AngularVelocityY: return "The angular velocity (ω) of the Pigeon 2 about the device's Y axis.";
1873 case SpnValue::Pigeon2AngularVelocityZ: return "The angular velocity (ω) of the Pigeon 2 about the device's Z axis.";
1874 case SpnValue::Pigeon2MagneticFieldX: return "The biased magnitude of the magnetic field measured by the Pigeon 2 in the X direction. This is only valid after performing a magnetometer calibration.";
1875 case SpnValue::Pigeon2MagneticFieldY: return "The biased magnitude of the magnetic field measured by the Pigeon 2 in the Y direction. This is only valid after performing a magnetometer calibration.";
1876 case SpnValue::Pigeon2MagneticFieldZ: return "The biased magnitude of the magnetic field measured by the Pigeon 2 in the Z direction. This is only valid after performing a magnetometer calibration.";
1877 case SpnValue::Pigeon2RawMagneticFieldX: return "The raw magnitude of the magnetic field measured by the Pigeon 2 in the X direction. This is only valid after performing a magnetometer calibration.";
1878 case SpnValue::Pigeon2RawMagneticFieldY: return "The raw magnitude of the magnetic field measured by the Pigeon 2 in the Y direction. This is only valid after performing a magnetometer calibration.";
1879 case SpnValue::Pigeon2RawMagneticFieldZ: return "The raw magnitude of the magnetic field measured by the Pigeon 2 in the Z direction. This is only valid after performing a magnetometer calibration.";
1880 case SpnValue::CANCoder_MagnetOffset: return "This offset is added to the reported position, allowing the application to trim the zero position. When set to the default value of zero, position reports zero when magnet north pole aligns with the LED.";
1881 case SpnValue::TalonFX_SetSensorPosition: return "Sets the mechanism position of the device in mechanism rotations.";
1882 case SpnValue::CANcoder_SetSensorPosition: return "Sets the current position of the device.";
1883 case SpnValue::Pigeon2_SetYaw: return "The yaw to set the Pigeon2 to right now.";
1884 case SpnValue::DeviceEnabled: return "Whether the device is enabled.";
1885 case SpnValue::PRO_MotorOutput_MotorVoltage: return "The applied (output) motor voltage.";
1886 case SpnValue::ForwardLimit: return "Forward Limit Pin.";
1887 case SpnValue::ReverseLimit: return "Reverse Limit Pin.";
1888 case SpnValue::PRO_MotorOutput_RotorPolarity: return "The applied rotor polarity as seen from the front of the motor. This typically is determined by the Inverted config, but can be overridden if using Follower features.";
1889 case SpnValue::PRO_MotorOutput_DutyCycle: return "The applied motor duty cycle.";
1890 case SpnValue::PRO_MotorOutput_TorqueCurrent: return "Current corresponding to the torque output by the motor. Similar to StatorCurrent. Users will likely prefer this current to calculate the applied torque to the rotor.";
1891 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "Current corresponding to the stator windings. Similar to TorqueCurrent. Users will likely prefer TorqueCurrent over StatorCurrent.";
1892 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "Measured supply side current.";
1893 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "Measured supply voltage to the device.";
1894 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "Temperature of device.";
1895 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "Temperature of the processor.";
1896 case SpnValue::PRO_RotorPosAndVel_Velocity: return "Velocity of the motor rotor. This velocity is not affected by any feedback configs.";
1897 case SpnValue::PRO_RotorPosAndVel_Position: return "Position of the motor rotor. This position is only affected by the RotorOffset config and calls to setPosition.";
1898 case SpnValue::PRO_PosAndVel_Velocity: return "Velocity of the device in mechanism rotations per second. This can be the velocity of a remote sensor and is affected by the RotorToSensorRatio and SensorToMechanismRatio configs.";
1899 case SpnValue::PRO_PosAndVel_Position: return "Position of the device in mechanism rotations. This can be the position of a remote sensor and is affected by the RotorToSensorRatio and SensorToMechanismRatio configs, as well as calls to setPosition.";
1900 case SpnValue::PRO_PosAndVel_Acceleration: return "Acceleration of the device in mechanism rotations per second². This can be the acceleration of a remote sensor and is affected by the RotorToSensorRatio and SensorToMechanismRatio configs.";
1901 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "Integrated Accumulator of PID controller when PID'ing under a DutyCycle Request.";
1902 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "Integrated Accumulator of PID controller when PID'ing under a Voltage Request.";
1903 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "Integrated Accumulator of PID controller when PID'ing under a TorqueCurrent Request.";
1904 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "Feedforward passed to PID controller.";
1905 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "Feedforward passed to PID controller.";
1906 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "Feedforward passed to PID controller.";
1907 case SpnValue::TalonFX_ControlMode: return "The active control mode of the motor controller.";
1908 case SpnValue::ExternalMotorTempStatus: return "Status of the temperature sensor of the external motor.";
1909 case SpnValue::ExternalMotorTemp: return "Temperature of the external motor.";
1910 case SpnValue::PRO_PIDStateEnables_IsMotionMagicRunning: return "Check if Motion Magic® is running. This is equivalent to checking that the reported control mode is a Motion Magic® based mode.";
1911 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "Indicates if device is actuator enabled.";
1912 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "Input position of PID controller when PID'ing to a position.";
1913 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "Input velocity of PID controller when PID'ing to a velocity.";
1914 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "The difference between target position and current position.";
1915 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "The difference between target velocity and current velocity.";
1916 case SpnValue::PRO_PIDRefPIDErr_ClosedLoopMode: return "Whether the closed-loop is running on position or velocity.";
1917 case SpnValue::PRO_PIDOutput_PIDOutputMode: return "The output mode of the PID controller.";
1918 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "Proportional output of PID controller when PID'ing under a DutyCycle Request.";
1919 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "Proportional output of PID controller when PID'ing under a Voltage Request.";
1920 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "Proportional output of PID controller when PID'ing under a TorqueCurrent Request.";
1921 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "Derivative Output of PID controller when PID'ing under a DutyCycle Request.";
1922 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "Derivative Output of PID controller when PID'ing under a Voltage Request.";
1923 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "Derivative Output of PID controller when PID'ing under a TorqueCurrent Request.";
1924 case SpnValue::PRO_PIDOutput_Output_DC: return "Output of PID controller when PID'ing under a DutyCycle Request.";
1925 case SpnValue::PRO_PIDOutput_Output_V: return "Output of PID controller when PID'ing under a Voltage Request.";
1926 case SpnValue::PRO_PIDOutput_Output_A: return "Output of PID controller when PID'ing under a TorqueCurrent Request.";
1927 case SpnValue::PRO_PIDOutput_Slot: return "The slot that the closed-loop PID is using.";
1928 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "Change in input (velocity) of PID controller when PID'ing to a position.";
1929 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "Change in input (acceleration) of PID controller when PID'ing to a velocity.";
1930 case SpnValue::PRO_PIDRefSlopeECUTime_ClosedLoopMode: return "Whether the closed-loop is running on position or velocity.";
1931 case SpnValue::TalonFX_MotorOutputStatus: return "Assess the status of the motor output with respect to load and supply.";
1932 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "The calculated motor duty cycle for differential followers.";
1933 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "The calculated motor torque current for differential followers.";
1934 case SpnValue::TalonFX_DifferentialControlMode: return "The active control mode of the differential controller.";
1935 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "Integrated Accumulator of differential PID controller when PID'ing under a DutyCycle Request.";
1936 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "Integrated Accumulator of differential PID controller when PID'ing under a Voltage Request.";
1937 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "Integrated Accumulator of differential PID controller when PID'ing under a TorqueCurrent Request.";
1938 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "Feedforward passed to differential PID controller.";
1939 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "Feedforward passed to differential PID controller.";
1940 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "Feedforward passed to differential PID controller.";
1941 case SpnValue::PRO_AvgPosAndVel_Velocity: return "Average component of the differential velocity of device.";
1942 case SpnValue::PRO_AvgPosAndVel_Position: return "Average component of the differential position of device.";
1943 case SpnValue::PRO_DiffPosAndVel_Velocity: return "Difference component of the differential velocity of device.";
1944 case SpnValue::PRO_DiffPosAndVel_Position: return "Difference component of the differential position of device.";
1945 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "Input position of differential PID controller when PID'ing to a differential position.";
1946 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "Input velocity of differential PID controller when PID'ing to a differential velocity.";
1947 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "The difference between target differential position and current differential position.";
1948 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "The difference between target differential velocity and current differential velocity.";
1949 case SpnValue::PRO_DiffPIDRefPIDErr_ClosedLoopMode: return "Whether the closed-loop is running on position or velocity.";
1950 case SpnValue::PRO_DiffPIDOutput_PIDOutputMode: return "The output mode of the differential PID controller.";
1951 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "Proportional output of differential PID controller when PID'ing under a DutyCycle Request.";
1952 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "Proportional output of differential PID controller when PID'ing under a Voltage Request.";
1953 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "Proportional output of differential PID controller when PID'ing under a TorqueCurrent Request.";
1954 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "Derivative Output of differential PID controller when PID'ing under a DutyCycle Request.";
1955 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "Derivative Output of differential PID controller when PID'ing under a Voltage Request.";
1956 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "Derivative Output of differential PID controller when PID'ing under a TorqueCurrent Request.";
1957 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "Output of differential PID controller when PID'ing under a DutyCycle Request.";
1958 case SpnValue::PRO_DiffPIDOutput_Output_V: return "Output of differential PID controller when PID'ing under a Voltage Request.";
1959 case SpnValue::PRO_DiffPIDOutput_Output_A: return "Output of differential PID controller when PID'ing under a TorqueCurrent Request.";
1960 case SpnValue::PRO_DiffPIDOutput_Slot: return "The slot that the closed-loop differential PID is using.";
1961 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "Change in input (velocity) of differential PID controller when PID'ing to a differential position.";
1962 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "Change in input (acceleration) of differential PID controller when PID'ing to a differential velocity.";
1963 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ClosedLoopMode: return "Whether the closed-loop is running on position or velocity.";
1964 case SpnValue::TalonFX_MotorConstants_kT: return "The torque constant (K_T) of the motor.";
1965 case SpnValue::TalonFX_MotorConstants_kV: return "The velocity constant (K_V) of the motor.";
1966 case SpnValue::TalonFX_MotorConstants_StallCurrent: return "The stall current of the motor at 12 V output.";
1967 case SpnValue::Slot0_kP: return "Proportional Gain.";
1968 case SpnValue::Slot0_kI: return "Integral Gain.";
1969 case SpnValue::Slot0_kD: return "Derivative Gain.";
1970 case SpnValue::Slot0_kS: return "Static Feedforward Gain.";
1971 case SpnValue::Slot0_kV: return "Velocity Feedforward Gain.";
1972 case SpnValue::Slot0_kA: return "Acceleration Feedforward Gain.";
1973 case SpnValue::Slot0_kG: return "Gravity Feedforward/Feedback Gain.";
1974 case SpnValue::Slot0_kG_Type: return "Gravity Feedforward/Feedback Type.\nThis determines the type of the gravity feedforward/feedback.\nChoose Elevator_Static for systems where the gravity feedforward is constant, such as an elevator. The gravity feedforward output will always have the same sign.\nChoose Arm_Cosine for systems where the gravity feedback is dependent on the angular position of the mechanism, such as an arm. The gravity feedback output will vary depending on the mechanism angular position. Note that the sensor offset and ratios must be configured so that the sensor reports a position of 0 when the mechanism is horizonal (parallel to the ground), and the reported sensor position is 1:1 with the mechanism.";
1975 case SpnValue::Slot1_kP: return "Proportional Gain.";
1976 case SpnValue::Slot1_kI: return "Integral Gain.";
1977 case SpnValue::Slot1_kD: return "Derivative Gain.";
1978 case SpnValue::Slot1_kS: return "Static Feedforward Gain.";
1979 case SpnValue::Slot1_kV: return "Velocity Feedforward Gain.";
1980 case SpnValue::Slot1_kA: return "Acceleration Feedforward Gain.";
1981 case SpnValue::Slot1_kG: return "Gravity Feedforward/Feedback Gain.";
1982 case SpnValue::Slot1_kG_Type: return "Gravity Feedforward/Feedback Type.\nThis determines the type of the gravity feedforward/feedback.\nChoose Elevator_Static for systems where the gravity feedforward is constant, such as an elevator. The gravity feedforward output will always be positive.\nChoose Arm_Cosine for systems where the gravity feedback is dependent on the angular position of the mechanism, such as an arm. The gravity feedback output will vary depending on the mechanism angular position. Note that the sensor offset and ratios must be configured so that the sensor position is 0 when the mechanism is horizonal, and one rotation of the mechanism corresponds to one rotation of the sensor position.";
1983 case SpnValue::Slot2_kP: return "Proportional Gain.";
1984 case SpnValue::Slot2_kI: return "Integral Gain.";
1985 case SpnValue::Slot2_kD: return "Derivative Gain.";
1986 case SpnValue::Slot2_kS: return "Static Feedforward Gain.";
1987 case SpnValue::Slot2_kV: return "Velocity Feedforward Gain.";
1988 case SpnValue::Slot2_kA: return "Acceleration Feedforward Gain.";
1989 case SpnValue::Slot2_kG: return "Gravity Feedforward/Feedback Gain.";
1990 case SpnValue::Slot2_kG_Type: return "Gravity Feedforward/Feedback Type.\nThis determines the type of the gravity feedforward/feedback.\nChoose Elevator_Static for systems where the gravity feedforward is constant, such as an elevator. The gravity feedforward output will always be positive.\nChoose Arm_Cosine for systems where the gravity feedback is dependent on the angular position of the mechanism, such as an arm. The gravity feedback output will vary depending on the mechanism angular position. Note that the sensor offset and ratios must be configured so that the sensor position is 0 when the mechanism is horizonal, and one rotation of the mechanism corresponds to one rotation of the sensor position.";
1991 case SpnValue::Config_Inverted: return "Invert state of the device as seen from the front of the motor.";
1992 case SpnValue::Config_SupplyVLowpassTau: return "The time constant (in seconds) of the low-pass filter for the supply voltage.";
1993 case SpnValue::Config_BeepOnBoot: return "If true, the TalonFX will beep during boot-up. This is useful for general debugging, and defaults to true. If rotor is moving during boot-up, the beep will not occur regardless of this setting.";
1994 case SpnValue::Config_NeutralMode: return "The state of the motor controller bridge when output is neutral or disabled.";
1995 case SpnValue::Config_DutyCycleNeutralDB: return "Configures the output deadband duty cycle during duty cycle and voltage based control modes.";
1996 case SpnValue::Config_StatorCurrentLimit: return "The amount of current allowed in the motor (motoring and regen current). Note this requires StatorCurrentLimitEnable to be true.\nFor torque current control, this is applied in addition to the PeakForwardTorqueCurrent and PeakReverseTorqueCurrent in TorqueCurrentConfigs.\nStator current is directly proportional to torque, so this limit can be used to restrict the torque output of the motor, such as preventing wheel slip for a drivetrain. Additionally, stator current limits can prevent brownouts during acceleration; supply current will never exceed the stator current limit and is often significantly lower than stator current.\nA reasonable starting point for a stator current limit is 120 A, with values commonly ranging from 80-160 A. Mechanisms with a hard stop may need a smaller limit to reduce the torque applied when running into the hard stop.";
1997 case SpnValue::Config_StatorCurrLimitEn: return "Enable motor stator current limiting.";
1998 case SpnValue::Config_SupplyCurrentLimit: return "The absolute maximum amount of supply current allowed. Note this requires SupplyCurrentLimitEnable to be true. Use SupplyCurrentLowerLimit and SupplyCurrentLowerTime to reduce the supply current limit after the time threshold is exceeded.\nSupply current is the current drawn from the battery, so this limit can be used to prevent breaker trips and improve battery longevity. Additionally, in scenarios where the robot experiences brownouts despite configuring stator current limits, a supply current limit can further help avoid brownouts. However, it is important to note that such brownouts may be caused by a bad battery or poor power wiring.\nA reasonable starting point for a supply current limit is 70 A with a lower limit of 40 A after 1.0 second. Supply current limits commonly range from 20-80 A depending on the breaker used.";
1999 case SpnValue::Config_SupplyCurrLimitEn: return "Enable motor supply current limiting.";
2000 case SpnValue::Config_PeakForwardDC: return "Maximum (forward) output during duty cycle based control modes.";
2001 case SpnValue::Config_PeakReverseDC: return "Minimum (reverse) output during duty cycle based control modes.";
2002 case SpnValue::Config_PeakForwardV: return "Maximum (forward) output during voltage based control modes.";
2003 case SpnValue::Config_PeakReverseV: return "Minimum (reverse) output during voltage based control modes.";
2004 case SpnValue::Config_PeakForTorqCurr: return "Maximum (forward) output during torque current based control modes.";
2005 case SpnValue::Config_PeakRevTorqCurr: return "Minimum (reverse) output during torque current based control modes.";
2006 case SpnValue::Config_TorqueNeutralDB: return "Configures the output deadband during torque current based control modes.";
2007 case SpnValue::Config_FeedbackRotorOffset: return "The offset applied to the absolute integrated rotor sensor. This can be used to zero the rotor in applications that are within one rotor rotation.";
2008 case SpnValue::Config_SensorToMechanismRatio: return "The ratio of sensor rotations to the mechanism's output, where a ratio greater than 1 is a reduction.\nThis is equivalent to the mechanism's gear ratio if the sensor is located on the input of a gearbox. If sensor is on the output of a gearbox, then this is typically set to 1.\nWe recommend against using this config to perform onboard unit conversions. Instead, unit conversions should be performed in robot code using the units library.\nIf this is set to zero, the device will reset back to one.";
2009 case SpnValue::Config_RotorToSensorRatio: return "The ratio of motor rotor rotations to remote sensor rotations, where a ratio greater than 1 is a reduction.\nThe Talon FX is capable of fusing a remote CANcoder with its rotor sensor to produce a high-bandwidth sensor source. This feature requires specifying the ratio between the motor rotor and the remote sensor.\nIf this is set to zero, the device will reset back to one.";
2010 case SpnValue::Config_FeedbackSensorSource: return "Choose what sensor source is reported via API and used by closed-loop and limit features. The default is RotorSensor, which uses the internal rotor sensor in the Talon.\nChoose Remote* to use another sensor on the same CAN bus (this also requires setting FeedbackRemoteSensorID). Talon will update its position and velocity whenever the remote sensor publishes its information on CAN bus, and the Talon internal rotor will not be used.\nChoose Fused* (requires Phoenix Pro) and Talon will fuse another sensor's information with the internal rotor, which provides the best possible position and velocity for accuracy and bandwidth (this also requires setting FeedbackRemoteSensorID). This was developed for applications such as swerve-azimuth.\nChoose Sync* (requires Phoenix Pro) and Talon will synchronize its internal rotor position against another sensor, then continue to use the rotor sensor for closed loop control (this also requires setting FeedbackRemoteSensorID). The Talon will report if its internal position differs significantly from the reported remote sensor position. This was developed for mechanisms where there is a risk of the sensor failing in such a way that it reports a position that does not match the mechanism, such as the sensor mounting assembly breaking off.\nChoose RemotePigeon2_Yaw, RemotePigeon2_Pitch, and RemotePigeon2_Roll to use another Pigeon2 on the same CAN bus (this also requires setting FeedbackRemoteSensorID). Talon will update its position to match the selected value whenever Pigeon2 publishes its information on CAN bus. Note that the Talon position will be in rotations and not degrees.";
2011 case SpnValue::Config_FeedbackRemoteSensorID: return "Device ID of which remote device to use. This is not used if the Sensor Source is the internal rotor sensor.";
2012 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0% output to 100% during the open-loop DutyCycleOut control mode.\nThis provides an easy way to limit the acceleration of the motor. However, the acceleration and current draw of the motor can be better restricted using current limits instead of a ramp rate.";
2013 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0V output to 12V during the open-loop VoltageOut control mode.\nThis provides an easy way to limit the acceleration of the motor. However, the acceleration and current draw of the motor can be better restricted using current limits instead of a ramp rate.";
2014 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0A output to 300A during the open-loop TorqueCurrent control mode.\nSince TorqueCurrent is directly proportional to acceleration, this ramp limits jerk instead of acceleration.";
2015 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0% output to 100% during the closed-loop DutyCycle control modes.\nIf the goal is to limit acceleration, it is more useful to ramp the closed-loop setpoint instead of the output. This can be achieved using Motion Magic® controls.\nThe acceleration and current draw of the motor can also be better restricted using current limits instead of a ramp rate.";
2016 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0V output to 12V during the closed-loop Voltage control modes.\nIf the goal is to limit acceleration, it is more useful to ramp the closed-loop setpoint instead of the output. This can be achieved using Motion Magic® controls.\nThe acceleration and current draw of the motor can also be better restricted using current limits instead of a ramp rate.";
2017 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0A output to 300A during the closed-loop TorqueCurrent control modes.\nSince TorqueCurrent is directly proportional to acceleration, this ramp limits jerk instead of acceleration.\nIf the goal is to limit acceleration or jerk, it is more useful to ramp the closed-loop setpoint instead of the output. This can be achieved using Motion Magic® controls.\nThe acceleration and current draw of the motor can also be better restricted using current limits instead of a ramp rate.";
2018 case SpnValue::Config_ForwardLimitType: return "Determines if the forward limit switch is normally-open (default) or normally-closed.";
2019 case SpnValue::Config_ForwardLimitAutosetPosEnable: return "If enabled, the position is automatically set to a specific value, specified by ForwardLimitAutosetPositionValue, when the forward limit switch is asserted.";
2020 case SpnValue::Config_ForwardLimitAutosetPosValue: return "The value to automatically set the position to when the forward limit switch is asserted. This has no effect if ForwardLimitAutosetPositionEnable is false.";
2021 case SpnValue::Config_ForwardLimitEnable: return "If enabled, motor output is set to neutral when the forward limit switch is asserted and positive output is requested.";
2022 case SpnValue::Config_ForwardLimitSource: return "Determines where to poll the forward limit switch. This defaults to the forward limit switch pin on the limit switch connector.\nChoose RemoteTalonFX to use the forward limit switch attached to another Talon FX on the same CAN bus (this also requires setting ForwardLimitRemoteSensorID).\nChoose RemoteCANifier to use the forward limit switch attached to another CANifier on the same CAN bus (this also requires setting ForwardLimitRemoteSensorID).\nChoose RemoteCANcoder to use another CANcoder on the same CAN bus (this also requires setting ForwardLimitRemoteSensorID). The forward limit will assert when the CANcoder magnet strength changes from BAD (red) to ADEQUATE (orange) or GOOD (green).";
2023 case SpnValue::Config_ForwardLimitRemoteSensorID: return "Device ID of the remote device if using remote limit switch features for the forward limit switch.";
2024 case SpnValue::Config_ReverseLimitType: return "Determines if the reverse limit switch is normally-open (default) or normally-closed.";
2025 case SpnValue::Config_ReverseLimitAutosetPosEnable: return "If enabled, the position is automatically set to a specific value, specified by ReverseLimitAutosetPositionValue, when the reverse limit switch is asserted.";
2026 case SpnValue::Config_ReverseLimitAutosetPosValue: return "The value to automatically set the position to when the reverse limit switch is asserted. This has no effect if ReverseLimitAutosetPositionEnable is false.";
2027 case SpnValue::Config_ReverseLimitEnable: return "If enabled, motor output is set to neutral when reverse limit switch is asseted and negative output is requested.";
2028 case SpnValue::Config_ReverseLimitSource: return "Determines where to poll the reverse limit switch. This defaults to the reverse limit switch pin on the limit switch connector.\nChoose RemoteTalonFX to use the reverse limit switch attached to another Talon FX on the same CAN bus (this also requires setting ReverseLimitRemoteSensorID).\nChoose RemoteCANifier to use the reverse limit switch attached to another CANifier on the same CAN bus (this also requires setting ReverseLimitRemoteSensorID).\nChoose RemoteCANcoder to use another CANcoder on the same CAN bus (this also requires setting ReverseLimitRemoteSensorID). The reverse limit will assert when the CANcoder magnet strength changes from BAD (red) to ADEQUATE (orange) or GOOD (green).";
2029 case SpnValue::Config_ReverseLimitRemoteSensorID: return "Device ID of the remote device if using remote limit switch features for the reverse limit switch.";
2030 case SpnValue::Config_ForwardSoftLimitEnable: return "If enabled, the motor output is set to neutral if position exceeds ForwardSoftLimitThreshold and forward output is requested.";
2031 case SpnValue::Config_ReverseSoftLimitEnable: return "If enabled, the motor output is set to neutral if position exceeds ReverseSoftLimitThreshold and reverse output is requested.";
2032 case SpnValue::Config_ForwardSoftLimitThreshold: return "Position threshold for forward soft limit features. ForwardSoftLimitEnable must be enabled for this to take effect.";
2033 case SpnValue::Config_ReverseSoftLimitThreshold: return "Position threshold for reverse soft limit features. ReverseSoftLimitEnable must be enabled for this to take effect.";
2034 case SpnValue::Config_MotionMagicCruiseVelocity: return "This is the maximum velocity Motion Magic® based control modes are allowed to use. Motion Magic® Velocity control modes do not use this config.\nWhen using Motion Magic® Expo control modes, setting this to 0 will allow the profile to run to the max possible velocity based on Expo_kV.";
2035 case SpnValue::Config_MotionMagicAcceleration: return "This is the target acceleration Motion Magic® based control modes are allowed to use. Motion Magic® Expo control modes do not use this config.";
2036 case SpnValue::Config_MotionMagicJerk: return "This is the target jerk (acceleration derivative) Motion Magic® based control modes are allowed to use. Motion Magic® Expo control modes do not use this config. This allows Motion Magic® to generate S-Curve profiles.\nJerk is optional; if this is set to zero, then Motion Magic® will not apply a Jerk limit.";
2037 case SpnValue::Config_MotionMagicExpo_kV: return "This is the target kV used only by Motion Magic® Expo control modes. Unlike the kV slot gain, this is always in units of V/rps.\nThis represents the amount of voltage necessary to hold a velocity. In terms of the Motion Magic® Expo profile, a higher kV results in a slower maximum velocity.";
2038 case SpnValue::Config_MotionMagicExpo_kA: return "This is the target kA used only by Motion Magic® Expo control modes. Unlike the kA slot gain, this is always in units of V/rps².\nThis represents the amount of voltage necessary to achieve an acceleration. In terms of the Motion Magic® Expo profile, a higher kA results in a slower acceleration.";
2039 case SpnValue::Config_PeakDiffDC: return "Maximum differential output during duty cycle based differential control modes.";
2040 case SpnValue::Config_PeakDiffV: return "Maximum differential output during voltage based differential control modes.";
2041 case SpnValue::Config_PeakDiffTorqCurr: return "Maximum differential output during torque current based differential control modes.";
2042 case SpnValue::CANcoder_Velocity: return "Velocity of the device.";
2043 case SpnValue::CANcoder_Position: return "Position of the device. This is initialized to the absolute position on boot.";
2044 case SpnValue::CANcoder_AbsPosition: return "Absolute Position of the device. The possible range is documented below; however, the exact expected range is determined by the AbsoluteSensorDiscontinuityPoint. This position is only affected by the MagnetSensor configs.";
2045 case SpnValue::CANCoder_RawVel: return "The unfiltered velocity reported by CANcoder.";
2046 case SpnValue::CANCoder_RawPos: return "The relative position reported by the CANcoder since boot.";
2047 case SpnValue::CANCoder_SupplyVoltage: return "Measured supply voltage to the CANcoder.";
2048 case SpnValue::CANcoder_MagHealth: return "Magnet health as measured by CANcoder.\nRed indicates too close or too far, Orange is adequate but with reduced accuracy, green is ideal. Invalid means the accuracy cannot be determined.";
2049 case SpnValue::SPN_ClearStickyFaults: return "Clear the sticky faults in the device.";
2050 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "The applied output of the bridge.";
2051 case SpnValue::Config_ContinuousWrap: return "Wrap position error within [-0.5,+0.5) mechanism rotations. Typically used for continuous position closed-loops like swerve azimuth.";
2052 case SpnValue::Config_SupplyCurrentLowerLimit: return "The amount of supply current allowed after the regular SupplyCurrentLimit is active for longer than SupplyCurrentLowerTime. This allows higher current draws for a fixed period of time before reducing the current limit to protect breakers. This has no effect if SupplyCurrentLimit is lower than this value or SupplyCurrentLowerTime is 0.";
2053 case SpnValue::Config_SupplyCurrentLowerTime: return "Reduces supply current to the SupplyCurrentLowerLimit after limiting to SupplyCurrentLimit for this period of time. If this is set to 0, SupplyCurrentLowerLimit will be ignored.";
2054 case SpnValue::Config_DifferentialSensorSource: return "Choose what sensor source is used for differential control of a mechanism. The default is Disabled. All other options require setting the DifferentialTalonFXSensorID, as the average of this Talon FX's sensor and the remote TalonFX's sensor is used for the differential controller's primary targets.\nChoose RemoteTalonFX_Diff to use another TalonFX on the same CAN bus. Talon FX will update its differential position and velocity whenever the remote TalonFX publishes its information on CAN bus. The differential controller will use the difference between this TalonFX's sensor and the remote Talon FX's sensor for the differential component of the output.\nChoose RemotePigeon2_Yaw, RemotePigeon2_Pitch, and RemotePigeon2_Roll to use another Pigeon2 on the same CAN bus (this also requires setting DifferentialRemoteSensorID). Talon FX will update its differential position to match the selected value whenever Pigeon2 publishes its information on CAN bus. Note that the Talon FX differential position will be in rotations and not degrees.\nChoose RemoteCANcoder to use another CANcoder on the same CAN bus (this also requires setting DifferentialRemoteSensorID). Talon FX will update its differential position and velocity to match the CANcoder whenever CANcoder publishes its information on CAN bus.";
2055 case SpnValue::Config_DifferentialTalonFXSensorID: return "Device ID of which remote Talon FX to use. This is used when the Differential Sensor Source is not disabled.";
2056 case SpnValue::Config_DifferentialRemoteSensorID: return "Device ID of which remote sensor to use on the differential axis. This is used when the Differential Sensor Source is not RemoteTalonFX_Diff.";
2057 case SpnValue::Config_BeepOnConfig: return "If true, the TalonFX will beep during configuration API calls if device is disabled. This is useful for general debugging, and defaults to true. Note that if the rotor is moving, the beep will not occur regardless of this setting.";
2058 case SpnValue::Config_AllowMusicDurDisable: return "If true, the TalonFX will allow Orchestra and MusicTone requests during disabled state. This can be used to address corner cases when music features are needed when disabled. This setting defaults to false. Note that if the rotor is moving, music features are always disabled regardless of this setting.";
2059 case SpnValue::Compliancy_Version: return "Compliancy number.";
2060 case SpnValue::Version_IsProLicensed: return "Whether the device is Phoenix Pro licensed.";
2061 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "Temperature of device from second sensor.";
2062 case SpnValue::Slot0_kS_Sign: return "Static Feedforward Sign during position closed loop.\nThis determines the sign of the applied kS during position closed-loop modes. The default behavior uses the velocity reference sign. This works well with velocity closed loop, Motion Magic® controls, and position closed loop when velocity reference is specified (motion profiling).\nHowever, when using position closed loop with zero velocity reference (no motion profiling), the application may want to apply static feedforward based on the sign of closed loop error instead. When doing so, we recommend using the minimal amount of kS, otherwise the motor output may dither when closed loop error is near zero.";
2063 case SpnValue::Slot1_kS_Sign: return "Static Feedforward Sign during position closed loop.\nThis determines the sign of the applied kS during position closed-loop modes. The default behavior uses the velocity reference sign. This works well with velocity closed loop, Motion Magic® controls, and position closed loop when velocity reference is specified (motion profiling).\nHowever, when using position closed loop with zero velocity reference (no motion profiling), the application may want to apply static feedforward based on the closed loop error sign instead. When doing so, we recommend using the minimal amount of kS, otherwise the motor output may dither when closed loop error is near zero.";
2064 case SpnValue::Slot2_kS_Sign: return "Static Feedforward Sign during position closed loop.\nThis determines the sign of the applied kS during position closed-loop modes. The default behavior uses the velocity reference sign. This works well with velocity closed loop, Motion Magic® controls, and position closed loop when velocity reference is specified (motion profiling).\nHowever, when using position closed loop with zero velocity reference (no motion profiling), the application may want to apply static feedforward based on the closed loop error sign instead. When doing so, we recommend using the minimal amount of kS, otherwise the motor output may dither when closed loop error is near zero.";
2065 case SpnValue::TalonFX_ConnectedMotor: return "The type of motor attached to the Talon.";
2066 case SpnValue::CANrange_SupplyVoltage: return "Measured supply voltage to the CANrange.";
2067 case SpnValue::CANrange_Distance_Meters: return "Distance to the nearest object in the configured field of view of the CANrange.";
2068 case SpnValue::CANrange_MeasTime: return "Timestamp of the most recent measurements. This is not synchronized to any other clock source.\nUsers can use this to check when the measurements are updated.";
2069 case SpnValue::CANrange_SignalStrength: return "Approximate signal strength of the measurement. A higher value indicates a higher strength of signal.\nA value of ~2500 is typical when detecting an object under short-range conditions.";
2070 case SpnValue::CANrange_ProximityDetected: return "Whether the CANrange detects an object using the configured proximity parameters.";
2071 case SpnValue::CANrange_MeasState: return "Health of the distance measurement.";
2072 case SpnValue::CANrange_AmbientSignal: return "The amount of ambient infrared light that the sensor is detecting. For ideal operation, this should be as low as possible.";
2073 case SpnValue::CANrange_DistanceStdDev: return "Standard Deviation of the distance measurement.";
2074 case SpnValue::CANrange_RealFOVCenterX: return "The actual center of the FOV in the X direction. This takes into account the user-configured FOVCenterX and FOVRangeX.";
2075 case SpnValue::CANrange_RealFOVCenterY: return "The actual center of the FOV in the Y direction. This takes into account the user-configured FOVCenterY and FOVRangeY.";
2076 case SpnValue::CANrange_RealFOVRangeX: return "The actual range of the FOV in the X direction. This takes into account the user-configured FOVRangeX.";
2077 case SpnValue::CANrange_RealFOVRangeY: return "The actual range of the FOV in the Y direction. This takes into account the user-configured FOVRangeY.";
2078 case SpnValue::CANrange_UpdateMode: return "Update mode of the CANrange. The CANrange supports short-range and long-range detection at various update frequencies.";
2079 case SpnValue::CANrange_UpdateFreq: return "Rate at which the CANrange will take measurements. A lower frequency may provide more stable readings but will reduce the data rate of the sensor.";
2080 case SpnValue::CANrange_ProximityThreshold: return "Threshold for object detection.";
2081 case SpnValue::CANrange_ProximityHysteresis: return "How far above and below the threshold the distance needs to be to trigger undetected and detected, respectively. This is used to prevent bouncing between the detected and undetected states for objects on the threshold.\nIf the threshold is set to 0.1 meters, and the hysteresis is 0.01 meters, then an object needs to be within 0.09 meters to be detected. After the object is first detected, the distance then needs to exceed 0.11 meters to become undetected again.";
2082 case SpnValue::CANrange_MinSigStrengthForValidMeas: return "The minimum allowable signal strength before determining the measurement is valid.\nIf the signal strength is particularly low, this typically means the object is far away and there's fewer total samples to derive the distance from. Set this value to be below the lowest strength you see when you're detecting an object with the CANrange; the default of 2500 is typically acceptable in most cases.";
2083 case SpnValue::CANrange_FOVCenterX: return "Specifies the target center of the Field of View in the X direction.";
2084 case SpnValue::CANrange_FOVCenterY: return "Specifies the target center of the Field of View in the Y direction.";
2085 case SpnValue::CANrange_FOVRangeX: return "Specifies the target range of the Field of View in the X direction. This is the full range of the FOV.\nThe magnitude of this is capped to abs(27 - 2*FOVCenterX).";
2086 case SpnValue::CANrange_FOVRangeY: return "Specifies the target range of the Field of View in the Y direction. This is the full range of the FOV.\nThe magnitude of this is capped to abs(27 - 2*FOVCenterY).";
2087 case SpnValue::Config_ControlTimesyncFreq: return "When a control request UseTimesync is enabled, this determines the time-sychronized frequency at which control requests are applied.";
2088 case SpnValue::Config_VelocityFilterTimeConstant: return "The configurable time constant of the Kalman velocity filter. The velocity Kalman filter will adjust to act as a low-pass with this value as its time constant.";
2089 case SpnValue::Config_AdvancedHallSupport: return "Requires Phoenix Pro; Improves commutation and velocity measurement for motors with hall sensors. Talon can use advanced features to improve commutation and velocity measurement when using a motor with hall sensors. This can improve peak efficiency by as high as 2% and reduce noise in the measured velocity.";
2090 case SpnValue::Config_MotorType: return "Selects the motor and motor connections used with Talon.\nThis setting determines what kind of motor and sensors are used with the Talon. This also determines what signals are used on the JST and Gadgeteer port.\nMotor drive will not function correctly if this setting does not match the physical setup.";
2091 case SpnValue::CANdi_Pin1State: return "State of the Signal 1 input (S1IN).";
2092 case SpnValue::CANdi_Pin2State: return "State of the Signal 2 input (S2IN).";
2093 case SpnValue::CANdi_QuadPosition: return "Position from a quadrature encoder sensor connected to both the S1IN and S2IN inputs.";
2094 case SpnValue::CANdi_Pwm1_RiseToRise: return "Measured rise to rise time of the PWM signal at the S1 input of CANdi.";
2095 case SpnValue::CANdi_Pwm1_Position: return "Measured position of the PWM sensor at the S1 input of CANdi.";
2096 case SpnValue::CANdi_Pwm1_Velocity: return "Measured velocity of the PWM sensor at the S1 input of CANdi.";
2097 case SpnValue::CANdi_Pwm2_RiseToRise: return "Measured rise to rise time of the PWM signal at the S2 input of CANdi.";
2098 case SpnValue::CANdi_Pwm2_Position: return "Measured position of the PWM sensor at the S2 input of CANdi.";
2099 case SpnValue::CANdi_Overcurrent: return "True when the CANdi is in overcurrent protection mode. This may be due to either overcurrent or a short-circuit.";
2100 case SpnValue::CANdi_VSense: return "Measured supply voltage to the CANdi.";
2101 case SpnValue::CANdi_OutputCurrent: return "Measured output current. This includes both Vbat and 5V output current.";
2102 case SpnValue::CANdi_S1FloatState: return "The floating state of the Signal 1 input (S1IN).";
2103 case SpnValue::CANdi_S2FloatState: return "The floating state of the Signal 2 input (S2IN).";
2104 case SpnValue::Config_AbsoluteSensorOffset: return "The offset applied to any absolute sensor connected to the Talon data port. This is only supported when using the PulseWidth sensor source.\nThis can be used to zero the sensor position in applications where the sensor is 1:1 with the mechanism.";
2105 case SpnValue::Config_ExternalFeedbackSensorSource: return "Choose what sensor source is reported via API and used by closed-loop and limit features. The default is Commutation, which uses the external sensor used for motor commutation.\nChoose Remote* to use another sensor on the same CAN bus (this also requires setting FeedbackRemoteSensorID). Talon will update its position and velocity whenever the remote sensor publishes its information on CAN bus, and the Talon commutation sensor will not be used.\nChoose Fused* (requires Phoenix Pro) and Talon will fuse another sensor's information with the commutation sensor, which provides the best possible position and velocity for accuracy and bandwidth (this also requires setting FeedbackRemoteSensorID). This was developed for applications such as swerve-azimuth.\nChoose Sync* (requires Phoenix Pro) and Talon will synchronize its commutation sensor position against another sensor, then continue to use the rotor sensor for closed loop control (this also requires setting FeedbackRemoteSensorID). The Talon will report if its internal position differs significantly from the reported remote sensor position. This was developed for mechanisms where there is a risk of the sensor failing in such a way that it reports a position that does not match the mechanism, such as the sensor mounting assembly breaking off.\nChoose RemotePigeon2_Yaw, RemotePigeon2_Pitch, and RemotePigeon2_Roll to use another Pigeon2 on the same CAN bus (this also requires setting FeedbackRemoteSensorID). Talon will update its position to match the selected value whenever Pigeon2 publishes its information on CAN bus. Note that the Talon position will be in rotations and not degrees.\nChoose Quadrature to use a quadrature encoder directly attached to the Talon data port. This provides velocity and relative position measurements.\nChoose PulseWidth to use a pulse-width encoder directly attached to the Talon data port. This provides velocity and absolute position measurements.";
2106 case SpnValue::Config_SensorPhase: return "The relationship between the motor controlled by a Talon and the external sensor connected to the data port. This does not affect the commutation sensor or remote sensors.\nTo determine the sensor phase, set this config to Aligned and drive the motor with positive output. If the reported sensor velocity is positive, then the phase is Aligned. If the reported sensor velocity is negative, then the phase is Opposed.\nThe sensor direction is automatically inverted along with motor invert, so the sensor phase does not need to be changed when motor invert changes.";
2107 case SpnValue::Config_QuadratureEdgesPerRotation: return "The number of quadrature edges in one rotation for the quadrature sensor connected to the Talon data port.\nThis is the total number of transitions from high-to-low or low-to-high across both channels per rotation of the sensor. This is also equivalent to the Counts Per Revolution when using 4x decoding.\nFor example, the SRX Mag Encoder has 4096 edges per rotation, and a US Digital 1024 CPR (Cycles Per Revolution) quadrature encoder has 4096 edges per rotation.";
2108 case SpnValue::Config_AbsoluteSensorDiscontinuityPoint: return "The positive discontinuity point of the absolute sensor in rotations. This determines the point at which the absolute sensor wraps around, keeping the absolute position in the range [x-1, x). <list><item>Setting this to 1 makes the absolute position unsigned [0, 1) <item>Setting this to 0.5 makes the absolute position signed [-0.5, 0.5) <item>Setting this to 0 makes the absolute position always negative [-1, 0)</list> Many rotational mechanisms such as arms have a region of motion that is unreachable. This should be set to the center of that region of motion, in non-negative rotations. This affects the position of the device at bootup.";
2109 case SpnValue::CANdi_Pwm2_Velocity: return "Measured velocity of the PWM sensor at the S2 input of CANdi.";
2110 case SpnValue::TalonFXS_5VRailVoltage: return "The measured voltage of the 5V rail available on the JST and dataport connectors.";
2111 case SpnValue::CANdi_QuadVelocity: return "Velocity from a quadrature encoder sensor connected to both the S1IN and S2IN inputs.";
2112 case SpnValue::Config_PWM1_AbsoluteSensorOffset: return "The offset applied to the PWM sensor.\nThis can be used to zero the sensor position in applications where the sensor is 1:1 with the mechanism.";
2113 case SpnValue::Config_PWM1_AbsoluteSensorDiscontinuityPoint: return "The positive discontinuity point of the absolute sensor in rotations. This determines the point at which the absolute sensor wraps around, keeping the absolute position in the range [x-1, x). <list><item>Setting this to 1 makes the absolute position unsigned [0, 1) <item>Setting this to 0.5 makes the absolute position signed [-0.5, 0.5) <item>Setting this to 0 makes the absolute position always negative [-1, 0)</list> Many rotational mechanisms such as arms have a region of motion that is unreachable. This should be set to the center of that region of motion, in non-negative rotations. This affects the position of the device at bootup.";
2114 case SpnValue::Config_PWM1_SensorDirection: return "Direction of the PWM sensor to determine positive rotation. Invert this so that forward motion on the mechanism results in an increase in PWM position.";
2115 case SpnValue::Config_PWM2_AbsoluteSensorOffset: return "The offset applied to the PWM sensor.\nThis can be used to zero the sensor position in applications where the sensor is 1:1 with the mechanism.";
2116 case SpnValue::Config_PWM2_AbsoluteSensorDiscontinuityPoint: return "The positive discontinuity point of the absolute sensor in rotations. This determines the point at which the absolute sensor wraps around, keeping the absolute position in the range [x-1, x). <list><item>Setting this to 1 makes the absolute position unsigned [0, 1) <item>Setting this to 0.5 makes the absolute position signed [-0.5, 0.5) <item>Setting this to 0 makes the absolute position always negative [-1, 0)</list> Many rotational mechanisms such as arms have a region of motion that is unreachable. This should be set to the center of that region of motion, in non-negative rotations. This affects the position of the device at bootup.";
2117 case SpnValue::Config_PWM2_SensorDirection: return "Direction of the PWM sensor to determine positive rotation. Invert this so that forward motion on the mechanism results in an increase in PWM position.";
2118 case SpnValue::Config_Quad_SensorDirection: return "Direction of the quadrature sensor to determine positive rotation. Invert this so that forward motion on the mechanism results in an increase in quadrature position.";
2119 case SpnValue::CANdi_SetQuadPosition: return "Sets the position of the quadrature input.";
2120 case SpnValue::Config_S1_CloseState: return "What value the Signal 1 input (S1IN) needs to be for the CANdi to detect as Closed.";
2121 case SpnValue::Config_S2_CloseState: return "What value the Signal 2 input (S2IN) needs to be for the CANdi to detect as Closed.";
2122 case SpnValue::CANdi_S1Closed: return "True if the Signal 1 input (S1IN) matches the configured S1 Closed State.";
2123 case SpnValue::CANdi_S2Closed: return "True if the Signal 2 input (S2IN) matches the configured S2 Closed State.";
2124 case SpnValue::Config_BrushedMotorWiring: return "If a brushed motor is selected with Motor Arrangement, this config determines which of three leads to use.";
2125 case SpnValue::Fault_Hardware: return "Hardware fault occurred";
2126 case SpnValue::StickyFault_Hardware: return "Hardware fault occurred";
2127 case SpnValue::ClearStickyFault_Hardware: return "Clear sticky fault: Hardware fault occurred";
2128 case SpnValue::Fault_ProcTemp: return "Processor temperature exceeded limit";
2129 case SpnValue::StickyFault_ProcTemp: return "Processor temperature exceeded limit";
2130 case SpnValue::ClearStickyFault_ProcTemp: return "Clear sticky fault: Processor temperature exceeded limit";
2131 case SpnValue::Fault_DeviceTemp: return "Device temperature exceeded limit";
2132 case SpnValue::StickyFault_DeviceTemp: return "Device temperature exceeded limit";
2133 case SpnValue::ClearStickyFault_DeviceTemp: return "Clear sticky fault: Device temperature exceeded limit";
2134 case SpnValue::Fault_Undervoltage: return "Device supply voltage dropped to near brownout levels";
2135 case SpnValue::StickyFault_Undervoltage: return "Device supply voltage dropped to near brownout levels";
2136 case SpnValue::ClearStickyFault_Undervoltage: return "Clear sticky fault: Device supply voltage dropped to near brownout levels";
2137 case SpnValue::Fault_BootDuringEnable: return "Device boot while detecting the enable signal";
2138 case SpnValue::StickyFault_BootDuringEnable: return "Device boot while detecting the enable signal";
2139 case SpnValue::ClearStickyFault_BootDuringEnable: return "Clear sticky fault: Device boot while detecting the enable signal";
2140 case SpnValue::Fault_UnlicensedFeatureInUse: return "An unlicensed feature is in use, device may not behave as expected.";
2141 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "An unlicensed feature is in use, device may not behave as expected.";
2142 case SpnValue::ClearStickyFault_UnlicensedFeatureInUse: return "Clear sticky fault: An unlicensed feature is in use, device may not behave as expected.";
2143 case SpnValue::Fault_PIGEON2_BootupAccel: return "Bootup checks failed: Accelerometer";
2144 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "Bootup checks failed: Accelerometer";
2145 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "Clear sticky fault: Bootup checks failed: Accelerometer";
2146 case SpnValue::Fault_PIGEON2_BootupGyros: return "Bootup checks failed: Gyroscope";
2147 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "Bootup checks failed: Gyroscope";
2148 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "Clear sticky fault: Bootup checks failed: Gyroscope";
2149 case SpnValue::Fault_PIGEON2_BootupMagne: return "Bootup checks failed: Magnetometer";
2150 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "Bootup checks failed: Magnetometer";
2151 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "Clear sticky fault: Bootup checks failed: Magnetometer";
2152 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "Motion Detected during bootup.";
2153 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "Motion Detected during bootup.";
2154 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "Clear sticky fault: Motion Detected during bootup.";
2155 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "Motion stack data acquisition was slower than expected";
2156 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "Motion stack data acquisition was slower than expected";
2157 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "Clear sticky fault: Motion stack data acquisition was slower than expected";
2158 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "Motion stack loop time was slower than expected.";
2159 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "Motion stack loop time was slower than expected.";
2160 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "Clear sticky fault: Motion stack loop time was slower than expected.";
2161 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "Magnetometer values are saturated";
2162 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "Magnetometer values are saturated";
2163 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "Clear sticky fault: Magnetometer values are saturated";
2164 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "Accelerometer values are saturated";
2165 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "Accelerometer values are saturated";
2166 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "Clear sticky fault: Accelerometer values are saturated";
2167 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "Gyroscope values are saturated";
2168 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "Gyroscope values are saturated";
2169 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "Clear sticky fault: Gyroscope values are saturated";
2170 case SpnValue::Fault_CANCODER_BadMagnet: return "The magnet distance is not correct or magnet is missing";
2171 case SpnValue::StickyFault_CANCODER_BadMagnet: return "The magnet distance is not correct or magnet is missing";
2172 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "Clear sticky fault: The magnet distance is not correct or magnet is missing";
2173 case SpnValue::Fault_TALONFX_BridgeBrownout: return "Bridge was disabled most likely due to supply voltage dropping too low.";
2174 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "Bridge was disabled most likely due to supply voltage dropping too low.";
2175 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "Clear sticky fault: Bridge was disabled most likely due to supply voltage dropping too low.";
2176 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "The remote sensor has reset.";
2177 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "The remote sensor has reset.";
2178 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "Clear sticky fault: The remote sensor has reset.";
2179 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "The remote Talon used for differential control is not present on CAN Bus.";
2180 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "The remote Talon used for differential control is not present on CAN Bus.";
2181 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "Clear sticky fault: The remote Talon used for differential control is not present on CAN Bus.";
2182 case SpnValue::Fault_TALONFX_RemoteSensorPosOverflow: return "The remote sensor position has overflowed. Because of the nature of remote sensors, it is possible for the remote sensor position to overflow beyond what is supported by the status signal frame. However, this is rare and cannot occur over the course of an FRC match under normal use.";
2183 case SpnValue::StickyFault_TALONFX_RemoteSensorPosOverflow: return "The remote sensor position has overflowed. Because of the nature of remote sensors, it is possible for the remote sensor position to overflow beyond what is supported by the status signal frame. However, this is rare and cannot occur over the course of an FRC match under normal use.";
2184 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow: return "Clear sticky fault: The remote sensor position has overflowed. Because of the nature of remote sensors, it is possible for the remote sensor position to overflow beyond what is supported by the status signal frame. However, this is rare and cannot occur over the course of an FRC match under normal use.";
2185 case SpnValue::Fault_TALONFX_OverSupplyV: return "Supply Voltage has exceeded the maximum voltage rating of device.";
2186 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "Supply Voltage has exceeded the maximum voltage rating of device.";
2187 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "Clear sticky fault: Supply Voltage has exceeded the maximum voltage rating of device.";
2188 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "Supply Voltage is unstable. Ensure you are using a battery and current limited power supply.";
2189 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "Supply Voltage is unstable. Ensure you are using a battery and current limited power supply.";
2190 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "Clear sticky fault: Supply Voltage is unstable. Ensure you are using a battery and current limited power supply.";
2191 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "Reverse limit switch has been asserted. Output is set to neutral.";
2192 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "Reverse limit switch has been asserted. Output is set to neutral.";
2193 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "Clear sticky fault: Reverse limit switch has been asserted. Output is set to neutral.";
2194 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "Forward limit switch has been asserted. Output is set to neutral.";
2195 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "Forward limit switch has been asserted. Output is set to neutral.";
2196 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "Clear sticky fault: Forward limit switch has been asserted. Output is set to neutral.";
2197 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "Reverse soft limit has been asserted. Output is set to neutral.";
2198 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "Reverse soft limit has been asserted. Output is set to neutral.";
2199 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "Clear sticky fault: Reverse soft limit has been asserted. Output is set to neutral.";
2200 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "Forward soft limit has been asserted. Output is set to neutral.";
2201 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "Forward soft limit has been asserted. Output is set to neutral.";
2202 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "Clear sticky fault: Forward soft limit has been asserted. Output is set to neutral.";
2203 case SpnValue::Fault_TALONFX_MissingRemSoftLim: return "The remote soft limit device is not present on CAN Bus.";
2204 case SpnValue::StickyFault_TALONFX_MissingRemSoftLim: return "The remote soft limit device is not present on CAN Bus.";
2205 case SpnValue::ClearStickyFault_TALONFX_MissingRemSoftLim: return "Clear sticky fault: The remote soft limit device is not present on CAN Bus.";
2206 case SpnValue::Fault_TALONFX_MissingRemHardLim: return "The remote limit switch device is not present on CAN Bus.";
2207 case SpnValue::StickyFault_TALONFX_MissingRemHardLim: return "The remote limit switch device is not present on CAN Bus.";
2208 case SpnValue::ClearStickyFault_TALONFX_MissingRemHardLim: return "Clear sticky fault: The remote limit switch device is not present on CAN Bus.";
2209 case SpnValue::Fault_TALONFX_MissingRemoteSensor: return "The remote sensor's data is no longer trusted. This can happen if the remote sensor disappears from the CAN bus or if the remote sensor indicates its data is no longer valid, such as when a CANcoder's magnet strength falls into the \"red\" range.";
2210 case SpnValue::StickyFault_TALONFX_MissingRemoteSensor: return "The remote sensor's data is no longer trusted. This can happen if the remote sensor disappears from the CAN bus or if the remote sensor indicates its data is no longer valid, such as when a CANcoder's magnet strength falls into the \"red\" range.";
2211 case SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor: return "Clear sticky fault: The remote sensor's data is no longer trusted. This can happen if the remote sensor disappears from the CAN bus or if the remote sensor indicates its data is no longer valid, such as when a CANcoder's magnet strength falls into the \"red\" range.";
2212 case SpnValue::Fault_TALONFX_FusedSensorOutOfSync: return "The remote sensor used for fusion has fallen out of sync to the local sensor. A re-synchronization has occurred, which may cause a discontinuity. This typically happens if there is significant slop in the mechanism, or if the RotorToSensorRatio configuration parameter is incorrect.";
2213 case SpnValue::StickyFault_TALONFX_FusedSensorOutOfSync: return "The remote sensor used for fusion has fallen out of sync to the local sensor. A re-synchronization has occurred, which may cause a discontinuity. This typically happens if there is significant slop in the mechanism, or if the RotorToSensorRatio configuration parameter is incorrect.";
2214 case SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync: return "Clear sticky fault: The remote sensor used for fusion has fallen out of sync to the local sensor. A re-synchronization has occurred, which may cause a discontinuity. This typically happens if there is significant slop in the mechanism, or if the RotorToSensorRatio configuration parameter is incorrect.";
2215 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "Stator current limit occured.";
2216 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "Stator current limit occured.";
2217 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "Clear sticky fault: Stator current limit occured.";
2218 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "Supply current limit occured.";
2219 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "Supply current limit occured.";
2220 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "Clear sticky fault: Supply current limit occured.";
2221 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "Using Fused CANcoder feature while unlicensed. Device has fallen back to remote CANcoder.";
2222 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "Using Fused CANcoder feature while unlicensed. Device has fallen back to remote CANcoder.";
2223 case SpnValue::ClearStickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "Clear sticky fault: Using Fused CANcoder feature while unlicensed. Device has fallen back to remote CANcoder.";
2224 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "Static brake was momentarily disabled due to excessive braking current while disabled.";
2225 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "Static brake was momentarily disabled due to excessive braking current while disabled.";
2226 case SpnValue::ClearStickyFault_TALONFX_StaticBrakeDisabled: return "Clear sticky fault: Static brake was momentarily disabled due to excessive braking current while disabled.";
2227 case SpnValue::Fault_TALONFX_BridgeShort: return "Bridge was disabled most likely due to a short in the motor leads.";
2228 case SpnValue::StickyFault_TALONFX_BridgeShort: return "Bridge was disabled most likely due to a short in the motor leads.";
2229 case SpnValue::ClearStickyFault_TALONFX_BridgeShort: return "Clear sticky fault: Bridge was disabled most likely due to a short in the motor leads.";
2230 case SpnValue::Fault_TALONFX_HallSensorMissing: return "Hall sensor signals are invalid. Check hall sensor and cabling. This fault can be used to detect when hall cable is unplugged.";
2231 case SpnValue::StickyFault_TALONFX_HallSensorMissing: return "Hall sensor signals are invalid. Check hall sensor and cabling. This fault can be used to detect when hall cable is unplugged.";
2232 case SpnValue::ClearStickyFault_TALONFX_HallSensorMissing: return "Clear sticky fault: Hall sensor signals are invalid. Check hall sensor and cabling. This fault can be used to detect when hall cable is unplugged.";
2233 case SpnValue::Fault_TALONFX_DriveDisabledHallSensor: return "Hall sensor signals are invalid during motor drive, so motor was disabled. Check hall sensor and cabling.";
2234 case SpnValue::StickyFault_TALONFX_DriveDisabledHallSensor: return "Hall sensor signals are invalid during motor drive, so motor was disabled. Check hall sensor and cabling.";
2235 case SpnValue::ClearStickyFault_TALONFX_DriveDisabledHallSensor: return "Clear sticky fault: Hall sensor signals are invalid during motor drive, so motor was disabled. Check hall sensor and cabling.";
2236 case SpnValue::Fault_TALONFX_MotorTempSensorMissing: return "Motor temperature signal appears to not be connected.";
2237 case SpnValue::StickyFault_TALONFX_MotorTempSensorMissing: return "Motor temperature signal appears to not be connected.";
2238 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorMissing: return "Clear sticky fault: Motor temperature signal appears to not be connected.";
2239 case SpnValue::Fault_TALONFX_MotorTempSensorTooHot: return "Motor temperature signal indicates motor is too hot.";
2240 case SpnValue::StickyFault_TALONFX_MotorTempSensorTooHot: return "Motor temperature signal indicates motor is too hot.";
2241 case SpnValue::ClearStickyFault_TALONFX_MotorTempSensorTooHot: return "Clear sticky fault: Motor temperature signal indicates motor is too hot.";
2242 case SpnValue::Fault_CANDI_5V: return "CANdi has detected a 5V fault. This may be due to overcurrent or a short-circuit.";
2243 case SpnValue::StickyFault_CANDI_5V: return "CANdi has detected a 5V fault. This may be due to overcurrent or a short-circuit.";
2244 case SpnValue::ClearStickyFault_CANDI_5V: return "Clear sticky fault: CANdi has detected a 5V fault. This may be due to overcurrent or a short-circuit.";
2245 default:
2246 return "Invalid Value";
2247 }
2248 }
2249
2250 friend std::ostream &operator<<(std::ostream &os, SpnValue data)
2251 {
2252 os << data.ToString();
2253 return os;
2254 }
2255 };
2256 }
2257 }
2258}
Definition MotionMagicExpoTorqueCurrentFOC.hpp:18