CTRE Phoenix 6 C++ 24.3.0
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 = 612;
29 static constexpr int Startup_ResetFlags = 633;
30 static constexpr int Version_Major = 731;
31 static constexpr int Version_Minor = 732;
32 static constexpr int Version_Bugfix = 733;
33 static constexpr int Version_Build = 734;
34 static constexpr int Version_Full = 735;
35 static constexpr int Licensing_IsProLicensed = 748;
36 static constexpr int Licensing_IsSeasonPassed = 751;
37 static constexpr int CustomParam0 = 816;
38 static constexpr int CustomParam1 = 817;
39 static constexpr int CANcoder_SensorDirection = 821;
40 static constexpr int FrcLock = 823;
41 static constexpr int RobotEnabled = 824;
42 static constexpr int LED1_OnColor = 826;
43 static constexpr int LED1_OffColor = 827;
44 static constexpr int LED2_OnColor = 828;
45 static constexpr int LED2_OffColor = 829;
46 static constexpr int AllFaults = 835;
47 static constexpr int AllStickyFaults = 836;
48 static constexpr int Pigeon2UseCompass = 910;
49 static constexpr int Pigeon2DisableTemperatureCompensation = 945;
50 static constexpr int Pigeon2DisableNoMotionCalibration = 947;
51 static constexpr int Pigeon2MountPoseYaw = 952;
52 static constexpr int Pigeon2MountPosePitch = 953;
53 static constexpr int Pigeon2MountPoseRoll = 954;
54 static constexpr int Pigeon2GyroScalarX = 958;
55 static constexpr int Pigeon2GyroScalarY = 959;
56 static constexpr int Pigeon2GyroScalarZ = 960;
57 static constexpr int Pigeon2Yaw = 967;
58 static constexpr int Pigeon2Pitch = 968;
59 static constexpr int Pigeon2Roll = 969;
60 static constexpr int Pigeon2QuatW = 970;
61 static constexpr int Pigeon2QuatX = 971;
62 static constexpr int Pigeon2QuatY = 972;
63 static constexpr int Pigeon2QuatZ = 973;
64 static constexpr int Pigeon2GravityVectorX = 974;
65 static constexpr int Pigeon2GravityVectorY = 975;
66 static constexpr int Pigeon2GravityVectorZ = 976;
67 static constexpr int Pigeon2Temperature = 977;
68 static constexpr int Pigeon2NoMotionCalEnabled = 978;
69 static constexpr int Pigeon2NoMotionCount = 979;
70 static constexpr int Pigeon2TempCompDisabled = 980;
71 static constexpr int Pigeon2UpTime = 981;
72 static constexpr int Pigeon2AccumGyroX = 982;
73 static constexpr int Pigeon2AccumGyroY = 983;
74 static constexpr int Pigeon2AccumGyroZ = 984;
75 static constexpr int Pigeon2AngularVelocityXWorld = 985;
76 static constexpr int Pigeon2AngularVelocityYWorld = 986;
77 static constexpr int Pigeon2AngularVelocityZWorld = 987;
78 static constexpr int Pigeon2AccelerationX = 988;
79 static constexpr int Pigeon2AccelerationY = 989;
80 static constexpr int Pigeon2AccelerationZ = 990;
81 static constexpr int Pigeon2_SupplyVoltage = 991;
82 static constexpr int Pigeon2AngularVelocityX = 994;
83 static constexpr int Pigeon2AngularVelocityY = 995;
84 static constexpr int Pigeon2AngularVelocityZ = 996;
85 static constexpr int Pigeon2MagneticFieldX = 999;
86 static constexpr int Pigeon2MagneticFieldY = 1000;
87 static constexpr int Pigeon2MagneticFieldZ = 1001;
88 static constexpr int Pigeon2RawMagneticFieldX = 1002;
89 static constexpr int Pigeon2RawMagneticFieldY = 1003;
90 static constexpr int Pigeon2RawMagneticFieldZ = 1004;
91 static constexpr int CANCoder_MagnetOffset = 1005;
92 static constexpr int CANcoder_AbsoluteSensorRange = 1006;
93 static constexpr int TalonFX_SetSensorPosition = 1010;
94 static constexpr int CANCoder_SetSensorPosition = 1012;
95 static constexpr int Pigeon2_SetYaw = 1014;
96 static constexpr int DeviceEnabled = 1043;
97 static constexpr int PRO_MotorOutput_MotorVoltage = 2022;
98 static constexpr int ForwardLimit = 2023;
99 static constexpr int ReverseLimit = 2024;
100 static constexpr int PRO_MotorOutput_RotorPolarity = 2025;
101 static constexpr int PRO_MotorOutput_DutyCycle = 2026;
102 static constexpr int PRO_MotorOutput_TorqueCurrent = 2028;
103 static constexpr int PRO_SupplyAndTemp_StatorCurrent = 2029;
104 static constexpr int PRO_SupplyAndTemp_SupplyCurrent = 2030;
105 static constexpr int PRO_SupplyAndTemp_SupplyVoltage = 2031;
106 static constexpr int PRO_SupplyAndTemp_DeviceTemp = 2032;
107 static constexpr int PRO_SupplyAndTemp_ProcessorTemp = 2033;
108 static constexpr int PRO_RotorPosAndVel_Velocity = 2035;
109 static constexpr int PRO_RotorPosAndVel_Position = 2036;
110 static constexpr int PRO_PosAndVel_Velocity = 2039;
111 static constexpr int PRO_PosAndVel_Position = 2040;
112 static constexpr int PRO_PosAndVel_Acceleration = 2041;
113 static constexpr int PRO_PIDStateEnables_IntegratedAccum_DC = 2043;
114 static constexpr int PRO_PIDStateEnables_IntegratedAccum_V = 2044;
115 static constexpr int PRO_PIDStateEnables_IntegratedAccum_A = 2045;
116 static constexpr int PRO_PIDStateEnables_FeedForward_DC = 2046;
117 static constexpr int PRO_PIDStateEnables_FeedForward_V = 2047;
118 static constexpr int PRO_PIDStateEnables_FeedForward_A = 2048;
119 static constexpr int TalonFX_ControlMode = 2049;
120 static constexpr int PRO_PIDStateEnables_IsMotionMagicRunning = 2053;
121 static constexpr int PRO_PIDStateEnables_DeviceEnable = 2055;
122 static constexpr int PRO_PIDRefPIDErr_PIDRef_Position = 2057;
123 static constexpr int PRO_PIDRefPIDErr_PIDRef_Velocity = 2058;
124 static constexpr int PRO_PIDRefPIDErr_PIDErr_Position = 2059;
125 static constexpr int PRO_PIDRefPIDErr_PIDErr_Velocity = 2060;
126 static constexpr int PRO_PIDOutput_ProportionalOutput_DC = 2062;
127 static constexpr int PRO_PIDOutput_ProportionalOutput_V = 2063;
128 static constexpr int PRO_PIDOutput_ProportionalOutput_A = 2064;
129 static constexpr int PRO_PIDOutput_DerivativeOutput_DC = 2065;
130 static constexpr int PRO_PIDOutput_DerivativeOutput_V = 2066;
131 static constexpr int PRO_PIDOutput_DerivativeOutput_A = 2067;
132 static constexpr int PRO_PIDOutput_Output_DC = 2068;
133 static constexpr int PRO_PIDOutput_Output_V = 2069;
134 static constexpr int PRO_PIDOutput_Output_A = 2070;
135 static constexpr int PRO_PIDOutput_Slot = 2071;
136 static constexpr int PRO_PIDRefSlopeECUTime_ReferenceSlope_Position = 2072;
137 static constexpr int PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity = 2073;
138 static constexpr int PRO_MotorOutput_PIDState_Diff_DutyCycle = 2076;
139 static constexpr int PRO_MotorOutput_PIDState_Diff_TorqueCurrent = 2077;
140 static constexpr int TalonFX_DifferentialControlMode = 2080;
141 static constexpr int PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC = 2081;
142 static constexpr int PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V = 2082;
143 static constexpr int PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A = 2083;
144 static constexpr int PRO_MotorOutput_PIDState_Diff_FeedForward_DC = 2084;
145 static constexpr int PRO_MotorOutput_PIDState_Diff_FeedForward_V = 2085;
146 static constexpr int PRO_MotorOutput_PIDState_Diff_FeedForward_A = 2086;
147 static constexpr int PRO_AvgPosAndVel_Velocity = 2088;
148 static constexpr int PRO_AvgPosAndVel_Position = 2089;
149 static constexpr int PRO_DiffPosAndVel_Velocity = 2092;
150 static constexpr int PRO_DiffPosAndVel_Position = 2093;
151 static constexpr int PRO_DiffPIDRefPIDErr_PIDRef_Position = 2095;
152 static constexpr int PRO_DiffPIDRefPIDErr_PIDRef_Velocity = 2096;
153 static constexpr int PRO_DiffPIDRefPIDErr_PIDErr_Position = 2097;
154 static constexpr int PRO_DiffPIDRefPIDErr_PIDErr_Velocity = 2098;
155 static constexpr int PRO_DiffPIDOutput_ProportionalOutput_DC = 2100;
156 static constexpr int PRO_DiffPIDOutput_ProportionalOutput_V = 2101;
157 static constexpr int PRO_DiffPIDOutput_ProportionalOutput_A = 2102;
158 static constexpr int PRO_DiffPIDOutput_DerivativeOutput_DC = 2103;
159 static constexpr int PRO_DiffPIDOutput_DerivativeOutput_V = 2104;
160 static constexpr int PRO_DiffPIDOutput_DerivativeOutput_A = 2105;
161 static constexpr int PRO_DiffPIDOutput_Output_DC = 2106;
162 static constexpr int PRO_DiffPIDOutput_Output_V = 2107;
163 static constexpr int PRO_DiffPIDOutput_Output_A = 2108;
164 static constexpr int PRO_DiffPIDOutput_Slot = 2109;
165 static constexpr int PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position = 2110;
166 static constexpr int PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity = 2111;
167 static constexpr int Slot0_kP = 2113;
168 static constexpr int Slot0_kI = 2114;
169 static constexpr int Slot0_kD = 2115;
170 static constexpr int Slot0_kS = 2116;
171 static constexpr int Slot0_kV = 2117;
172 static constexpr int Slot0_kA = 2118;
173 static constexpr int Slot0_kG = 2119;
174 static constexpr int Slot0_kG_Type = 2120;
175 static constexpr int Slot1_kP = 2121;
176 static constexpr int Slot1_kI = 2122;
177 static constexpr int Slot1_kD = 2123;
178 static constexpr int Slot1_kS = 2124;
179 static constexpr int Slot1_kV = 2125;
180 static constexpr int Slot1_kA = 2126;
181 static constexpr int Slot1_kG = 2127;
182 static constexpr int Slot1_kG_Type = 2128;
183 static constexpr int Slot2_kP = 2129;
184 static constexpr int Slot2_kI = 2130;
185 static constexpr int Slot2_kD = 2131;
186 static constexpr int Slot2_kS = 2132;
187 static constexpr int Slot2_kV = 2133;
188 static constexpr int Slot2_kA = 2134;
189 static constexpr int Slot2_kG = 2135;
190 static constexpr int Slot2_kG_Type = 2136;
191 static constexpr int Config_Inverted = 2137;
192 static constexpr int Config_SupplyVLowpassTau = 2138;
193 static constexpr int Config_BeepOnBoot = 2139;
194 static constexpr int Config_NeutralMode = 2140;
195 static constexpr int Config_DutyCycleNeutralDB = 2141;
196 static constexpr int Config_StatorCurrentLimit = 2142;
197 static constexpr int Config_StatorCurrLimitEn = 2143;
198 static constexpr int Config_SupplyCurrentLimit = 2144;
199 static constexpr int Config_SupplyCurrLimitEn = 2145;
200 static constexpr int Config_PeakForwardDC = 2146;
201 static constexpr int Config_PeakReverseDC = 2147;
202 static constexpr int Config_PeakForwardV = 2148;
203 static constexpr int Config_PeakReverseV = 2149;
204 static constexpr int Config_PeakForTorqCurr = 2150;
205 static constexpr int Config_PeakRevTorqCurr = 2151;
206 static constexpr int Config_TorqueNeutralDB = 2152;
207 static constexpr int Config_FeedbackRotorOffset = 2153;
208 static constexpr int Config_SensorToMechanismRatio = 2154;
209 static constexpr int Config_RotorToSensorRatio = 2155;
210 static constexpr int Config_FeedbackSensorSource = 2156;
211 static constexpr int Config_FeedbackRemoteSensorID = 2157;
212 static constexpr int Config_DutyCycleOpenLoopRampPeriod = 2158;
213 static constexpr int Config_VoltageOpenLoopRampPeriod = 2159;
214 static constexpr int Config_TorqueOpenLoopRampPeriod = 2160;
215 static constexpr int Config_DutyCycleClosedLoopRampPeriod = 2161;
216 static constexpr int Config_VoltageClosedLoopRampPeriod = 2162;
217 static constexpr int Config_TorqueClosedLoopRampPeriod = 2163;
218 static constexpr int Config_ForwardLimitType = 2164;
219 static constexpr int Config_ForwardLimitAutosetPosEnable = 2165;
220 static constexpr int Config_ForwardLimitAutosetPosValue = 2166;
221 static constexpr int Config_ForwardLimitEnable = 2167;
222 static constexpr int Config_ForwardLimitSource = 2168;
223 static constexpr int Config_ForwardLimitRemoteSensorID = 2169;
224 static constexpr int Config_ReverseLimitType = 2170;
225 static constexpr int Config_ReverseLimitAutosetPosEnable = 2171;
226 static constexpr int Config_ReverseLimitAutosetPosValue = 2172;
227 static constexpr int Config_ReverseLimitEnable = 2173;
228 static constexpr int Config_ReverseLimitSource = 2174;
229 static constexpr int Config_ReverseLimitRemoteSensorID = 2175;
230 static constexpr int Config_ForwardSoftLimitEnable = 2176;
231 static constexpr int Config_ReverseSoftLimitEnable = 2177;
232 static constexpr int Config_ForwardSoftLimitThreshold = 2178;
233 static constexpr int Config_ReverseSoftLimitThreshold = 2179;
234 static constexpr int Config_MotionMagicCruiseVelocity = 2180;
235 static constexpr int Config_MotionMagicAcceleration = 2181;
236 static constexpr int Config_MotionMagicJerk = 2182;
237 static constexpr int Config_MotionMagicExpo_kV = 2183;
238 static constexpr int Config_MotionMagicExpo_kA = 2184;
239 static constexpr int Config_PeakDiffDC = 2185;
240 static constexpr int Config_PeakDiffV = 2186;
241 static constexpr int Config_PeakDiffTorqCurr = 2187;
242 static constexpr int CANcoder_Velocity = 2188;
243 static constexpr int CANcoder_Position = 2189;
244 static constexpr int CANcoder_AbsPosition = 2190;
245 static constexpr int CANCoder_RawVel = 2192;
246 static constexpr int CANCoder_RawPos = 2193;
247 static constexpr int CANCoder_SupplyVoltage = 2194;
248 static constexpr int CANcoder_MagHealth = 2195;
249 static constexpr int SPN_ClearStickyFaults = 2198;
250 static constexpr int PRO_MotorOutput_BridgeType_Public = 2199;
251 static constexpr int Config_ContinuousWrap = 2221;
252 static constexpr int Config_SupplyCurrThres = 2227;
253 static constexpr int Config_SupplyTimeThres = 2228;
254 static constexpr int Config_DifferentialSensorSource = 2242;
255 static constexpr int Config_DifferentialTalonFXSensorID = 2243;
256 static constexpr int Config_DifferentialRemoteSensorID = 2244;
257 static constexpr int Config_BeepOnConfig = 2283;
258 static constexpr int Config_AllowMusicDurDisable = 2284;
259 static constexpr int Compliancy_Version = 2285;
260 static constexpr int Version_IsProLicensed = 2286;
261 static constexpr int PRO_SupplyAndTemp_DeviceTemp2 = 2325;
262 static constexpr int Slot0_kS_Sign = 2348;
263 static constexpr int Slot1_kS_Sign = 2349;
264 static constexpr int Slot2_kS_Sign = 2350;
265 static constexpr int TalonFX_MotorType = 2351;
266 static constexpr int TalonFX_MotorOutputStatus = 2352;
267 static constexpr int Fault_Hardware = 10001;
268 static constexpr int StickyFault_Hardware = 10002;
269 static constexpr int ClearStickyFault_Hardware = 10003;
270 static constexpr int Fault_ProcTemp = 10004;
271 static constexpr int StickyFault_ProcTemp = 10005;
272 static constexpr int ClearStickyFault_ProcTemp = 10006;
273 static constexpr int Fault_DeviceTemp = 10007;
274 static constexpr int StickyFault_DeviceTemp = 10008;
275 static constexpr int ClearStickyFault_DeviceTemp = 10009;
276 static constexpr int Fault_Undervoltage = 10010;
277 static constexpr int StickyFault_Undervoltage = 10011;
278 static constexpr int ClearStickyFault_Undervoltage = 10012;
279 static constexpr int Fault_BootDuringEnable = 10013;
280 static constexpr int StickyFault_BootDuringEnable = 10014;
281 static constexpr int ClearStickyFault_BootDuringEnable = 10015;
282 static constexpr int Fault_UnlicensedFeatureInUse = 10016;
283 static constexpr int StickyFault_UnlicensedFeatureInUse = 10017;
284 static constexpr int Fault_PIGEON2_BootupAccel = 10019;
285 static constexpr int StickyFault_PIGEON2_BootupAccel = 10020;
286 static constexpr int ClearStickyFault_PIGEON2_BootupAccel = 10021;
287 static constexpr int Fault_PIGEON2_BootupGyros = 10022;
288 static constexpr int StickyFault_PIGEON2_BootupGyros = 10023;
289 static constexpr int ClearStickyFault_PIGEON2_BootupGyros = 10024;
290 static constexpr int Fault_PIGEON2_BootupMagne = 10025;
291 static constexpr int StickyFault_PIGEON2_BootupMagne = 10026;
292 static constexpr int ClearStickyFault_PIGEON2_BootupMagne = 10027;
293 static constexpr int Fault_PIGEON2_BootIntoMotion = 10028;
294 static constexpr int StickyFault_PIGEON2_BootIntoMotion = 10029;
295 static constexpr int ClearStickyFault_PIGEON2_BootIntoMotion = 10030;
296 static constexpr int Fault_PIGEON2_DataAcquiredLate = 10031;
297 static constexpr int StickyFault_PIGEON2_DataAcquiredLate = 10032;
298 static constexpr int ClearStickyFault_PIGEON2_DataAcquiredLate = 10033;
299 static constexpr int Fault_PIGEON2_LoopTimeSlow = 10034;
300 static constexpr int StickyFault_PIGEON2_LoopTimeSlow = 10035;
301 static constexpr int ClearStickyFault_PIGEON2_LoopTimeSlow = 10036;
302 static constexpr int Fault_PIGEON2_SaturatedMagne = 10037;
303 static constexpr int StickyFault_PIGEON2_SaturatedMagne = 10038;
304 static constexpr int ClearStickyFault_PIGEON2_SaturatedMagne = 10039;
305 static constexpr int Fault_PIGEON2_SaturatedAccel = 10040;
306 static constexpr int StickyFault_PIGEON2_SaturatedAccel = 10041;
307 static constexpr int ClearStickyFault_PIGEON2_SaturatedAccel = 10042;
308 static constexpr int Fault_PIGEON2_SaturatedGyros = 10043;
309 static constexpr int StickyFault_PIGEON2_SaturatedGyros = 10044;
310 static constexpr int ClearStickyFault_PIGEON2_SaturatedGyros = 10045;
311 static constexpr int Fault_CANCODER_BadMagnet = 10046;
312 static constexpr int StickyFault_CANCODER_BadMagnet = 10047;
313 static constexpr int ClearStickyFault_CANCODER_BadMagnet = 10048;
314 static constexpr int Fault_TALONFX_BridgeBrownout = 10049;
315 static constexpr int StickyFault_TALONFX_BridgeBrownout = 10050;
316 static constexpr int ClearStickyFault_TALONFX_BridgeBrownout = 10051;
317 static constexpr int Fault_TALONFX_RemoteSensorReset = 10052;
318 static constexpr int StickyFault_TALONFX_RemoteSensorReset = 10053;
319 static constexpr int ClearStickyFault_TALONFX_RemoteSensorReset = 10054;
320 static constexpr int Fault_TALONFX_MissingDifferentialFX = 10055;
321 static constexpr int StickyFault_TALONFX_MissingDifferentialFX = 10056;
322 static constexpr int ClearStickyFault_TALONFX_MissingDifferentialFX = 10057;
323 static constexpr int Fault_TALONFX_RemoteSensorPosOverflow = 10058;
324 static constexpr int StickyFault_TALONFX_RemoteSensorPosOverflow = 10059;
325 static constexpr int ClearStickyFault_TALONFX_RemoteSensorPosOverflow = 10060;
326 static constexpr int Fault_TALONFX_OverSupplyV = 10061;
327 static constexpr int StickyFault_TALONFX_OverSupplyV = 10062;
328 static constexpr int ClearStickyFault_TALONFX_OverSupplyV = 10063;
329 static constexpr int Fault_TALONFX_UnstableSupplyV = 10064;
330 static constexpr int StickyFault_TALONFX_UnstableSupplyV = 10065;
331 static constexpr int ClearStickyFault_TALONFX_UnstableSupplyV = 10066;
332 static constexpr int Fault_TALONFX_ReverseHardLimit = 10067;
333 static constexpr int StickyFault_TALONFX_ReverseHardLimit = 10068;
334 static constexpr int ClearStickyFault_TALONFX_ReverseHardLimit = 10069;
335 static constexpr int Fault_TALONFX_ForwardHardLimit = 10070;
336 static constexpr int StickyFault_TALONFX_ForwardHardLimit = 10071;
337 static constexpr int ClearStickyFault_TALONFX_ForwardHardLimit = 10072;
338 static constexpr int Fault_TALONFX_ReverseSoftLimit = 10073;
339 static constexpr int StickyFault_TALONFX_ReverseSoftLimit = 10074;
340 static constexpr int ClearStickyFault_TALONFX_ReverseSoftLimit = 10075;
341 static constexpr int Fault_TALONFX_ForwardSoftLimit = 10076;
342 static constexpr int StickyFault_TALONFX_ForwardSoftLimit = 10077;
343 static constexpr int ClearStickyFault_TALONFX_ForwardSoftLimit = 10078;
344 static constexpr int Fault_TALONFX_MissingRemoteSensor = 10085;
345 static constexpr int StickyFault_TALONFX_MissingRemoteSensor = 10086;
346 static constexpr int ClearStickyFault_TALONFX_MissingRemoteSensor = 10087;
347 static constexpr int Fault_TALONFX_FusedSensorOutOfSync = 10088;
348 static constexpr int StickyFault_TALONFX_FusedSensorOutOfSync = 10089;
349 static constexpr int ClearStickyFault_TALONFX_FusedSensorOutOfSync = 10090;
350 static constexpr int Fault_TALONFX_StatorCurrLimit = 10091;
351 static constexpr int StickyFault_TALONFX_StatorCurrLimit = 10092;
352 static constexpr int ClearStickyFault_TALONFX_StatorCurrLimit = 10093;
353 static constexpr int Fault_TALONFX_SupplyCurrLimit = 10094;
354 static constexpr int StickyFault_TALONFX_SupplyCurrLimit = 10095;
355 static constexpr int ClearStickyFault_TALONFX_SupplyCurrLimit = 10096;
356 static constexpr int Fault_TALONFX_UsingFusedCCWhileUnlicensed = 10097;
357 static constexpr int StickyFault_TALONFX_UsingFusedCCWhileUnlicensed = 10098;
358 static constexpr int Fault_TALONFX_StaticBrakeDisabled = 10100;
359 static constexpr int StickyFault_TALONFX_StaticBrakeDisabled = 10101;
360
361 /**
362 * \brief Gets the string representation of this enum
363 *
364 * \returns String representation of this enum
365 */
366 std::string ToString() const
367 {
368 switch (value)
369 {
370 case SpnValue::TalonFX_System_State: return "TalonFX_System_State";
371 case SpnValue::Startup_ResetFlags: return "Startup_ResetFlags";
372 case SpnValue::Version_Major: return "Version_Major";
373 case SpnValue::Version_Minor: return "Version_Minor";
374 case SpnValue::Version_Bugfix: return "Version_Bugfix";
375 case SpnValue::Version_Build: return "Version_Build";
376 case SpnValue::Version_Full: return "Version_Full";
377 case SpnValue::Licensing_IsProLicensed: return "Licensing_IsProLicensed";
378 case SpnValue::Licensing_IsSeasonPassed: return "Licensing_IsSeasonPassed";
379 case SpnValue::CustomParam0: return "CustomParam0";
380 case SpnValue::CustomParam1: return "CustomParam1";
381 case SpnValue::CANcoder_SensorDirection: return "CANcoder_SensorDirection";
382 case SpnValue::FrcLock: return "FrcLock";
383 case SpnValue::RobotEnabled: return "RobotEnabled";
384 case SpnValue::LED1_OnColor: return "LED1_OnColor";
385 case SpnValue::LED1_OffColor: return "LED1_OffColor";
386 case SpnValue::LED2_OnColor: return "LED2_OnColor";
387 case SpnValue::LED2_OffColor: return "LED2_OffColor";
388 case SpnValue::AllFaults: return "AllFaults";
389 case SpnValue::AllStickyFaults: return "AllStickyFaults";
390 case SpnValue::Pigeon2UseCompass: return "Pigeon2UseCompass";
391 case SpnValue::Pigeon2DisableTemperatureCompensation: return "Pigeon2DisableTemperatureCompensation";
392 case SpnValue::Pigeon2DisableNoMotionCalibration: return "Pigeon2DisableNoMotionCalibration";
393 case SpnValue::Pigeon2MountPoseYaw: return "Pigeon2MountPoseYaw";
394 case SpnValue::Pigeon2MountPosePitch: return "Pigeon2MountPosePitch";
395 case SpnValue::Pigeon2MountPoseRoll: return "Pigeon2MountPoseRoll";
396 case SpnValue::Pigeon2GyroScalarX: return "Pigeon2GyroScalarX";
397 case SpnValue::Pigeon2GyroScalarY: return "Pigeon2GyroScalarY";
398 case SpnValue::Pigeon2GyroScalarZ: return "Pigeon2GyroScalarZ";
399 case SpnValue::Pigeon2Yaw: return "Pigeon2Yaw";
400 case SpnValue::Pigeon2Pitch: return "Pigeon2Pitch";
401 case SpnValue::Pigeon2Roll: return "Pigeon2Roll";
402 case SpnValue::Pigeon2QuatW: return "Pigeon2QuatW";
403 case SpnValue::Pigeon2QuatX: return "Pigeon2QuatX";
404 case SpnValue::Pigeon2QuatY: return "Pigeon2QuatY";
405 case SpnValue::Pigeon2QuatZ: return "Pigeon2QuatZ";
406 case SpnValue::Pigeon2GravityVectorX: return "Pigeon2GravityVectorX";
407 case SpnValue::Pigeon2GravityVectorY: return "Pigeon2GravityVectorY";
408 case SpnValue::Pigeon2GravityVectorZ: return "Pigeon2GravityVectorZ";
409 case SpnValue::Pigeon2Temperature: return "Pigeon2Temperature";
410 case SpnValue::Pigeon2NoMotionCalEnabled: return "Pigeon2NoMotionCalEnabled";
411 case SpnValue::Pigeon2NoMotionCount: return "Pigeon2NoMotionCount";
412 case SpnValue::Pigeon2TempCompDisabled: return "Pigeon2TempCompDisabled";
413 case SpnValue::Pigeon2UpTime: return "Pigeon2UpTime";
414 case SpnValue::Pigeon2AccumGyroX: return "Pigeon2AccumGyroX";
415 case SpnValue::Pigeon2AccumGyroY: return "Pigeon2AccumGyroY";
416 case SpnValue::Pigeon2AccumGyroZ: return "Pigeon2AccumGyroZ";
417 case SpnValue::Pigeon2AngularVelocityXWorld: return "Pigeon2AngularVelocityXWorld";
418 case SpnValue::Pigeon2AngularVelocityYWorld: return "Pigeon2AngularVelocityYWorld";
419 case SpnValue::Pigeon2AngularVelocityZWorld: return "Pigeon2AngularVelocityZWorld";
420 case SpnValue::Pigeon2AccelerationX: return "Pigeon2AccelerationX";
421 case SpnValue::Pigeon2AccelerationY: return "Pigeon2AccelerationY";
422 case SpnValue::Pigeon2AccelerationZ: return "Pigeon2AccelerationZ";
423 case SpnValue::Pigeon2_SupplyVoltage: return "Pigeon2_SupplyVoltage";
424 case SpnValue::Pigeon2AngularVelocityX: return "Pigeon2AngularVelocityX";
425 case SpnValue::Pigeon2AngularVelocityY: return "Pigeon2AngularVelocityY";
426 case SpnValue::Pigeon2AngularVelocityZ: return "Pigeon2AngularVelocityZ";
427 case SpnValue::Pigeon2MagneticFieldX: return "Pigeon2MagneticFieldX";
428 case SpnValue::Pigeon2MagneticFieldY: return "Pigeon2MagneticFieldY";
429 case SpnValue::Pigeon2MagneticFieldZ: return "Pigeon2MagneticFieldZ";
430 case SpnValue::Pigeon2RawMagneticFieldX: return "Pigeon2RawMagneticFieldX";
431 case SpnValue::Pigeon2RawMagneticFieldY: return "Pigeon2RawMagneticFieldY";
432 case SpnValue::Pigeon2RawMagneticFieldZ: return "Pigeon2RawMagneticFieldZ";
433 case SpnValue::CANCoder_MagnetOffset: return "CANCoder_MagnetOffset";
434 case SpnValue::CANcoder_AbsoluteSensorRange: return "CANcoder_AbsoluteSensorRange";
435 case SpnValue::TalonFX_SetSensorPosition: return "TalonFX_SetSensorPosition";
436 case SpnValue::CANCoder_SetSensorPosition: return "CANCoder_SetSensorPosition";
437 case SpnValue::Pigeon2_SetYaw: return "Pigeon2_SetYaw";
438 case SpnValue::DeviceEnabled: return "DeviceEnabled";
439 case SpnValue::PRO_MotorOutput_MotorVoltage: return "PRO_MotorOutput_MotorVoltage";
440 case SpnValue::ForwardLimit: return "ForwardLimit";
441 case SpnValue::ReverseLimit: return "ReverseLimit";
442 case SpnValue::PRO_MotorOutput_RotorPolarity: return "PRO_MotorOutput_RotorPolarity";
443 case SpnValue::PRO_MotorOutput_DutyCycle: return "PRO_MotorOutput_DutyCycle";
444 case SpnValue::PRO_MotorOutput_TorqueCurrent: return "PRO_MotorOutput_TorqueCurrent";
445 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "PRO_SupplyAndTemp_StatorCurrent";
446 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "PRO_SupplyAndTemp_SupplyCurrent";
447 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "PRO_SupplyAndTemp_SupplyVoltage";
448 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "PRO_SupplyAndTemp_DeviceTemp";
449 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "PRO_SupplyAndTemp_ProcessorTemp";
450 case SpnValue::PRO_RotorPosAndVel_Velocity: return "PRO_RotorPosAndVel_Velocity";
451 case SpnValue::PRO_RotorPosAndVel_Position: return "PRO_RotorPosAndVel_Position";
452 case SpnValue::PRO_PosAndVel_Velocity: return "PRO_PosAndVel_Velocity";
453 case SpnValue::PRO_PosAndVel_Position: return "PRO_PosAndVel_Position";
454 case SpnValue::PRO_PosAndVel_Acceleration: return "PRO_PosAndVel_Acceleration";
455 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "PRO_PIDStateEnables_IntegratedAccum_DC";
456 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "PRO_PIDStateEnables_IntegratedAccum_V";
457 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "PRO_PIDStateEnables_IntegratedAccum_A";
458 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "PRO_PIDStateEnables_FeedForward_DC";
459 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "PRO_PIDStateEnables_FeedForward_V";
460 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "PRO_PIDStateEnables_FeedForward_A";
461 case SpnValue::TalonFX_ControlMode: return "TalonFX_ControlMode";
462 case SpnValue::PRO_PIDStateEnables_IsMotionMagicRunning: return "PRO_PIDStateEnables_IsMotionMagicRunning";
463 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "PRO_PIDStateEnables_DeviceEnable";
464 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "PRO_PIDRefPIDErr_PIDRef_Position";
465 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "PRO_PIDRefPIDErr_PIDRef_Velocity";
466 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "PRO_PIDRefPIDErr_PIDErr_Position";
467 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "PRO_PIDRefPIDErr_PIDErr_Velocity";
468 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "PRO_PIDOutput_ProportionalOutput_DC";
469 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "PRO_PIDOutput_ProportionalOutput_V";
470 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "PRO_PIDOutput_ProportionalOutput_A";
471 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "PRO_PIDOutput_DerivativeOutput_DC";
472 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "PRO_PIDOutput_DerivativeOutput_V";
473 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "PRO_PIDOutput_DerivativeOutput_A";
474 case SpnValue::PRO_PIDOutput_Output_DC: return "PRO_PIDOutput_Output_DC";
475 case SpnValue::PRO_PIDOutput_Output_V: return "PRO_PIDOutput_Output_V";
476 case SpnValue::PRO_PIDOutput_Output_A: return "PRO_PIDOutput_Output_A";
477 case SpnValue::PRO_PIDOutput_Slot: return "PRO_PIDOutput_Slot";
478 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "PRO_PIDRefSlopeECUTime_ReferenceSlope_Position";
479 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity";
480 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "PRO_MotorOutput_PIDState_Diff_DutyCycle";
481 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "PRO_MotorOutput_PIDState_Diff_TorqueCurrent";
482 case SpnValue::TalonFX_DifferentialControlMode: return "TalonFX_DifferentialControlMode";
483 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC";
484 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V";
485 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A";
486 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "PRO_MotorOutput_PIDState_Diff_FeedForward_DC";
487 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "PRO_MotorOutput_PIDState_Diff_FeedForward_V";
488 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "PRO_MotorOutput_PIDState_Diff_FeedForward_A";
489 case SpnValue::PRO_AvgPosAndVel_Velocity: return "PRO_AvgPosAndVel_Velocity";
490 case SpnValue::PRO_AvgPosAndVel_Position: return "PRO_AvgPosAndVel_Position";
491 case SpnValue::PRO_DiffPosAndVel_Velocity: return "PRO_DiffPosAndVel_Velocity";
492 case SpnValue::PRO_DiffPosAndVel_Position: return "PRO_DiffPosAndVel_Position";
493 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "PRO_DiffPIDRefPIDErr_PIDRef_Position";
494 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "PRO_DiffPIDRefPIDErr_PIDRef_Velocity";
495 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "PRO_DiffPIDRefPIDErr_PIDErr_Position";
496 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "PRO_DiffPIDRefPIDErr_PIDErr_Velocity";
497 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "PRO_DiffPIDOutput_ProportionalOutput_DC";
498 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "PRO_DiffPIDOutput_ProportionalOutput_V";
499 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "PRO_DiffPIDOutput_ProportionalOutput_A";
500 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "PRO_DiffPIDOutput_DerivativeOutput_DC";
501 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "PRO_DiffPIDOutput_DerivativeOutput_V";
502 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "PRO_DiffPIDOutput_DerivativeOutput_A";
503 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "PRO_DiffPIDOutput_Output_DC";
504 case SpnValue::PRO_DiffPIDOutput_Output_V: return "PRO_DiffPIDOutput_Output_V";
505 case SpnValue::PRO_DiffPIDOutput_Output_A: return "PRO_DiffPIDOutput_Output_A";
506 case SpnValue::PRO_DiffPIDOutput_Slot: return "PRO_DiffPIDOutput_Slot";
507 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position";
508 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity";
509 case SpnValue::Slot0_kP: return "Slot0_kP";
510 case SpnValue::Slot0_kI: return "Slot0_kI";
511 case SpnValue::Slot0_kD: return "Slot0_kD";
512 case SpnValue::Slot0_kS: return "Slot0_kS";
513 case SpnValue::Slot0_kV: return "Slot0_kV";
514 case SpnValue::Slot0_kA: return "Slot0_kA";
515 case SpnValue::Slot0_kG: return "Slot0_kG";
516 case SpnValue::Slot0_kG_Type: return "Slot0_kG_Type";
517 case SpnValue::Slot1_kP: return "Slot1_kP";
518 case SpnValue::Slot1_kI: return "Slot1_kI";
519 case SpnValue::Slot1_kD: return "Slot1_kD";
520 case SpnValue::Slot1_kS: return "Slot1_kS";
521 case SpnValue::Slot1_kV: return "Slot1_kV";
522 case SpnValue::Slot1_kA: return "Slot1_kA";
523 case SpnValue::Slot1_kG: return "Slot1_kG";
524 case SpnValue::Slot1_kG_Type: return "Slot1_kG_Type";
525 case SpnValue::Slot2_kP: return "Slot2_kP";
526 case SpnValue::Slot2_kI: return "Slot2_kI";
527 case SpnValue::Slot2_kD: return "Slot2_kD";
528 case SpnValue::Slot2_kS: return "Slot2_kS";
529 case SpnValue::Slot2_kV: return "Slot2_kV";
530 case SpnValue::Slot2_kA: return "Slot2_kA";
531 case SpnValue::Slot2_kG: return "Slot2_kG";
532 case SpnValue::Slot2_kG_Type: return "Slot2_kG_Type";
533 case SpnValue::Config_Inverted: return "Config_Inverted";
534 case SpnValue::Config_SupplyVLowpassTau: return "Config_SupplyVLowpassTau";
535 case SpnValue::Config_BeepOnBoot: return "Config_BeepOnBoot";
536 case SpnValue::Config_NeutralMode: return "Config_NeutralMode";
537 case SpnValue::Config_DutyCycleNeutralDB: return "Config_DutyCycleNeutralDB";
538 case SpnValue::Config_StatorCurrentLimit: return "Config_StatorCurrentLimit";
539 case SpnValue::Config_StatorCurrLimitEn: return "Config_StatorCurrLimitEn";
540 case SpnValue::Config_SupplyCurrentLimit: return "Config_SupplyCurrentLimit";
541 case SpnValue::Config_SupplyCurrLimitEn: return "Config_SupplyCurrLimitEn";
542 case SpnValue::Config_PeakForwardDC: return "Config_PeakForwardDC";
543 case SpnValue::Config_PeakReverseDC: return "Config_PeakReverseDC";
544 case SpnValue::Config_PeakForwardV: return "Config_PeakForwardV";
545 case SpnValue::Config_PeakReverseV: return "Config_PeakReverseV";
546 case SpnValue::Config_PeakForTorqCurr: return "Config_PeakForTorqCurr";
547 case SpnValue::Config_PeakRevTorqCurr: return "Config_PeakRevTorqCurr";
548 case SpnValue::Config_TorqueNeutralDB: return "Config_TorqueNeutralDB";
549 case SpnValue::Config_FeedbackRotorOffset: return "Config_FeedbackRotorOffset";
550 case SpnValue::Config_SensorToMechanismRatio: return "Config_SensorToMechanismRatio";
551 case SpnValue::Config_RotorToSensorRatio: return "Config_RotorToSensorRatio";
552 case SpnValue::Config_FeedbackSensorSource: return "Config_FeedbackSensorSource";
553 case SpnValue::Config_FeedbackRemoteSensorID: return "Config_FeedbackRemoteSensorID";
554 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "Config_DutyCycleOpenLoopRampPeriod";
555 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "Config_VoltageOpenLoopRampPeriod";
556 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "Config_TorqueOpenLoopRampPeriod";
557 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "Config_DutyCycleClosedLoopRampPeriod";
558 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "Config_VoltageClosedLoopRampPeriod";
559 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "Config_TorqueClosedLoopRampPeriod";
560 case SpnValue::Config_ForwardLimitType: return "Config_ForwardLimitType";
561 case SpnValue::Config_ForwardLimitAutosetPosEnable: return "Config_ForwardLimitAutosetPosEnable";
562 case SpnValue::Config_ForwardLimitAutosetPosValue: return "Config_ForwardLimitAutosetPosValue";
563 case SpnValue::Config_ForwardLimitEnable: return "Config_ForwardLimitEnable";
564 case SpnValue::Config_ForwardLimitSource: return "Config_ForwardLimitSource";
565 case SpnValue::Config_ForwardLimitRemoteSensorID: return "Config_ForwardLimitRemoteSensorID";
566 case SpnValue::Config_ReverseLimitType: return "Config_ReverseLimitType";
567 case SpnValue::Config_ReverseLimitAutosetPosEnable: return "Config_ReverseLimitAutosetPosEnable";
568 case SpnValue::Config_ReverseLimitAutosetPosValue: return "Config_ReverseLimitAutosetPosValue";
569 case SpnValue::Config_ReverseLimitEnable: return "Config_ReverseLimitEnable";
570 case SpnValue::Config_ReverseLimitSource: return "Config_ReverseLimitSource";
571 case SpnValue::Config_ReverseLimitRemoteSensorID: return "Config_ReverseLimitRemoteSensorID";
572 case SpnValue::Config_ForwardSoftLimitEnable: return "Config_ForwardSoftLimitEnable";
573 case SpnValue::Config_ReverseSoftLimitEnable: return "Config_ReverseSoftLimitEnable";
574 case SpnValue::Config_ForwardSoftLimitThreshold: return "Config_ForwardSoftLimitThreshold";
575 case SpnValue::Config_ReverseSoftLimitThreshold: return "Config_ReverseSoftLimitThreshold";
576 case SpnValue::Config_MotionMagicCruiseVelocity: return "Config_MotionMagicCruiseVelocity";
577 case SpnValue::Config_MotionMagicAcceleration: return "Config_MotionMagicAcceleration";
578 case SpnValue::Config_MotionMagicJerk: return "Config_MotionMagicJerk";
579 case SpnValue::Config_MotionMagicExpo_kV: return "Config_MotionMagicExpo_kV";
580 case SpnValue::Config_MotionMagicExpo_kA: return "Config_MotionMagicExpo_kA";
581 case SpnValue::Config_PeakDiffDC: return "Config_PeakDiffDC";
582 case SpnValue::Config_PeakDiffV: return "Config_PeakDiffV";
583 case SpnValue::Config_PeakDiffTorqCurr: return "Config_PeakDiffTorqCurr";
584 case SpnValue::CANcoder_Velocity: return "CANcoder_Velocity";
585 case SpnValue::CANcoder_Position: return "CANcoder_Position";
586 case SpnValue::CANcoder_AbsPosition: return "CANcoder_AbsPosition";
587 case SpnValue::CANCoder_RawVel: return "CANCoder_RawVel";
588 case SpnValue::CANCoder_RawPos: return "CANCoder_RawPos";
589 case SpnValue::CANCoder_SupplyVoltage: return "CANCoder_SupplyVoltage";
590 case SpnValue::CANcoder_MagHealth: return "CANcoder_MagHealth";
591 case SpnValue::SPN_ClearStickyFaults: return "SPN_ClearStickyFaults";
592 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "PRO_MotorOutput_BridgeType_Public";
593 case SpnValue::Config_ContinuousWrap: return "Config_ContinuousWrap";
594 case SpnValue::Config_SupplyCurrThres: return "Config_SupplyCurrThres";
595 case SpnValue::Config_SupplyTimeThres: return "Config_SupplyTimeThres";
596 case SpnValue::Config_DifferentialSensorSource: return "Config_DifferentialSensorSource";
597 case SpnValue::Config_DifferentialTalonFXSensorID: return "Config_DifferentialTalonFXSensorID";
598 case SpnValue::Config_DifferentialRemoteSensorID: return "Config_DifferentialRemoteSensorID";
599 case SpnValue::Config_BeepOnConfig: return "Config_BeepOnConfig";
600 case SpnValue::Config_AllowMusicDurDisable: return "Config_AllowMusicDurDisable";
601 case SpnValue::Compliancy_Version: return "Compliancy_Version";
602 case SpnValue::Version_IsProLicensed: return "Version_IsProLicensed";
603 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "PRO_SupplyAndTemp_DeviceTemp2";
604 case SpnValue::Slot0_kS_Sign: return "Slot0_kS_Sign";
605 case SpnValue::Slot1_kS_Sign: return "Slot1_kS_Sign";
606 case SpnValue::Slot2_kS_Sign: return "Slot2_kS_Sign";
607 case SpnValue::TalonFX_MotorType: return "TalonFX_MotorType";
608 case SpnValue::TalonFX_MotorOutputStatus: return "TalonFX_MotorOutputStatus";
609 case SpnValue::Fault_Hardware: return "Fault_Hardware";
610 case SpnValue::StickyFault_Hardware: return "StickyFault_Hardware";
611 case SpnValue::ClearStickyFault_Hardware: return "ClearStickyFault_Hardware";
612 case SpnValue::Fault_ProcTemp: return "Fault_ProcTemp";
613 case SpnValue::StickyFault_ProcTemp: return "StickyFault_ProcTemp";
614 case SpnValue::ClearStickyFault_ProcTemp: return "ClearStickyFault_ProcTemp";
615 case SpnValue::Fault_DeviceTemp: return "Fault_DeviceTemp";
616 case SpnValue::StickyFault_DeviceTemp: return "StickyFault_DeviceTemp";
617 case SpnValue::ClearStickyFault_DeviceTemp: return "ClearStickyFault_DeviceTemp";
618 case SpnValue::Fault_Undervoltage: return "Fault_Undervoltage";
619 case SpnValue::StickyFault_Undervoltage: return "StickyFault_Undervoltage";
620 case SpnValue::ClearStickyFault_Undervoltage: return "ClearStickyFault_Undervoltage";
621 case SpnValue::Fault_BootDuringEnable: return "Fault_BootDuringEnable";
622 case SpnValue::StickyFault_BootDuringEnable: return "StickyFault_BootDuringEnable";
623 case SpnValue::ClearStickyFault_BootDuringEnable: return "ClearStickyFault_BootDuringEnable";
624 case SpnValue::Fault_UnlicensedFeatureInUse: return "Fault_UnlicensedFeatureInUse";
625 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "StickyFault_UnlicensedFeatureInUse";
626 case SpnValue::Fault_PIGEON2_BootupAccel: return "Fault_PIGEON2_BootupAccel";
627 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "StickyFault_PIGEON2_BootupAccel";
628 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "ClearStickyFault_PIGEON2_BootupAccel";
629 case SpnValue::Fault_PIGEON2_BootupGyros: return "Fault_PIGEON2_BootupGyros";
630 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "StickyFault_PIGEON2_BootupGyros";
631 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "ClearStickyFault_PIGEON2_BootupGyros";
632 case SpnValue::Fault_PIGEON2_BootupMagne: return "Fault_PIGEON2_BootupMagne";
633 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "StickyFault_PIGEON2_BootupMagne";
634 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "ClearStickyFault_PIGEON2_BootupMagne";
635 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "Fault_PIGEON2_BootIntoMotion";
636 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "StickyFault_PIGEON2_BootIntoMotion";
637 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "ClearStickyFault_PIGEON2_BootIntoMotion";
638 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "Fault_PIGEON2_DataAcquiredLate";
639 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "StickyFault_PIGEON2_DataAcquiredLate";
640 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "ClearStickyFault_PIGEON2_DataAcquiredLate";
641 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "Fault_PIGEON2_LoopTimeSlow";
642 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "StickyFault_PIGEON2_LoopTimeSlow";
643 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "ClearStickyFault_PIGEON2_LoopTimeSlow";
644 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "Fault_PIGEON2_SaturatedMagne";
645 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "StickyFault_PIGEON2_SaturatedMagne";
646 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "ClearStickyFault_PIGEON2_SaturatedMagne";
647 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "Fault_PIGEON2_SaturatedAccel";
648 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "StickyFault_PIGEON2_SaturatedAccel";
649 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "ClearStickyFault_PIGEON2_SaturatedAccel";
650 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "Fault_PIGEON2_SaturatedGyros";
651 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "StickyFault_PIGEON2_SaturatedGyros";
652 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "ClearStickyFault_PIGEON2_SaturatedGyros";
653 case SpnValue::Fault_CANCODER_BadMagnet: return "Fault_CANCODER_BadMagnet";
654 case SpnValue::StickyFault_CANCODER_BadMagnet: return "StickyFault_CANCODER_BadMagnet";
655 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "ClearStickyFault_CANCODER_BadMagnet";
656 case SpnValue::Fault_TALONFX_BridgeBrownout: return "Fault_TALONFX_BridgeBrownout";
657 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "StickyFault_TALONFX_BridgeBrownout";
658 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "ClearStickyFault_TALONFX_BridgeBrownout";
659 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "Fault_TALONFX_RemoteSensorReset";
660 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "StickyFault_TALONFX_RemoteSensorReset";
661 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "ClearStickyFault_TALONFX_RemoteSensorReset";
662 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "Fault_TALONFX_MissingDifferentialFX";
663 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "StickyFault_TALONFX_MissingDifferentialFX";
664 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "ClearStickyFault_TALONFX_MissingDifferentialFX";
665 case SpnValue::Fault_TALONFX_RemoteSensorPosOverflow: return "Fault_TALONFX_RemoteSensorPosOverflow";
666 case SpnValue::StickyFault_TALONFX_RemoteSensorPosOverflow: return "StickyFault_TALONFX_RemoteSensorPosOverflow";
667 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow: return "ClearStickyFault_TALONFX_RemoteSensorPosOverflow";
668 case SpnValue::Fault_TALONFX_OverSupplyV: return "Fault_TALONFX_OverSupplyV";
669 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "StickyFault_TALONFX_OverSupplyV";
670 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "ClearStickyFault_TALONFX_OverSupplyV";
671 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "Fault_TALONFX_UnstableSupplyV";
672 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "StickyFault_TALONFX_UnstableSupplyV";
673 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "ClearStickyFault_TALONFX_UnstableSupplyV";
674 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "Fault_TALONFX_ReverseHardLimit";
675 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "StickyFault_TALONFX_ReverseHardLimit";
676 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "ClearStickyFault_TALONFX_ReverseHardLimit";
677 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "Fault_TALONFX_ForwardHardLimit";
678 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "StickyFault_TALONFX_ForwardHardLimit";
679 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "ClearStickyFault_TALONFX_ForwardHardLimit";
680 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "Fault_TALONFX_ReverseSoftLimit";
681 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "StickyFault_TALONFX_ReverseSoftLimit";
682 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "ClearStickyFault_TALONFX_ReverseSoftLimit";
683 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "Fault_TALONFX_ForwardSoftLimit";
684 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "StickyFault_TALONFX_ForwardSoftLimit";
685 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "ClearStickyFault_TALONFX_ForwardSoftLimit";
686 case SpnValue::Fault_TALONFX_MissingRemoteSensor: return "Fault_TALONFX_MissingRemoteSensor";
687 case SpnValue::StickyFault_TALONFX_MissingRemoteSensor: return "StickyFault_TALONFX_MissingRemoteSensor";
688 case SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor: return "ClearStickyFault_TALONFX_MissingRemoteSensor";
689 case SpnValue::Fault_TALONFX_FusedSensorOutOfSync: return "Fault_TALONFX_FusedSensorOutOfSync";
690 case SpnValue::StickyFault_TALONFX_FusedSensorOutOfSync: return "StickyFault_TALONFX_FusedSensorOutOfSync";
691 case SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync: return "ClearStickyFault_TALONFX_FusedSensorOutOfSync";
692 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "Fault_TALONFX_StatorCurrLimit";
693 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "StickyFault_TALONFX_StatorCurrLimit";
694 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "ClearStickyFault_TALONFX_StatorCurrLimit";
695 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "Fault_TALONFX_SupplyCurrLimit";
696 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "StickyFault_TALONFX_SupplyCurrLimit";
697 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "ClearStickyFault_TALONFX_SupplyCurrLimit";
698 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "Fault_TALONFX_UsingFusedCCWhileUnlicensed";
699 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "StickyFault_TALONFX_UsingFusedCCWhileUnlicensed";
700 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "Fault_TALONFX_StaticBrakeDisabled";
701 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "StickyFault_TALONFX_StaticBrakeDisabled";
702 default:
703 return "Invalid Value";
704 }
705 }
706
707 /**
708 * \brief Gets the API name for this enum
709 *
710 * \returns API name of this enum
711 */
712 std::string GetName() const
713 {
714 switch (value)
715 {
716 case SpnValue::TalonFX_System_State: return "System_State";
717 case SpnValue::Startup_ResetFlags: return "ResetFlags";
718 case SpnValue::Version_Major: return "VersionMajor";
719 case SpnValue::Version_Minor: return "VersionMinor";
720 case SpnValue::Version_Bugfix: return "VersionBugfix";
721 case SpnValue::Version_Build: return "VersionBuild";
722 case SpnValue::Version_Full: return "Version";
723 case SpnValue::Licensing_IsProLicensed: return "IsPROLicensed";
724 case SpnValue::Licensing_IsSeasonPassed: return "Licensing_IsSeasonPassed";
725 case SpnValue::CustomParam0: return "CustomParam0";
726 case SpnValue::CustomParam1: return "CustomParam1";
727 case SpnValue::CANcoder_SensorDirection: return "SensorDirection";
728 case SpnValue::FrcLock: return "FrcLock";
729 case SpnValue::RobotEnabled: return "RobotEnable";
730 case SpnValue::LED1_OnColor: return "Led1OnColor";
731 case SpnValue::LED1_OffColor: return "Led1OffColor";
732 case SpnValue::LED2_OnColor: return "Led2OnColor";
733 case SpnValue::LED2_OffColor: return "Led2OffColor";
734 case SpnValue::AllFaults: return "FaultField";
735 case SpnValue::AllStickyFaults: return "StickyFaultField";
736 case SpnValue::Pigeon2UseCompass: return "EnableCompass";
737 case SpnValue::Pigeon2DisableTemperatureCompensation: return "DisableTemperatureCompensation";
738 case SpnValue::Pigeon2DisableNoMotionCalibration: return "DisableNoMotionCalibration";
739 case SpnValue::Pigeon2MountPoseYaw: return "MountPoseYaw";
740 case SpnValue::Pigeon2MountPosePitch: return "MountPosePitch";
741 case SpnValue::Pigeon2MountPoseRoll: return "MountPoseRoll";
742 case SpnValue::Pigeon2GyroScalarX: return "GyroScalarX";
743 case SpnValue::Pigeon2GyroScalarY: return "GyroScalarY";
744 case SpnValue::Pigeon2GyroScalarZ: return "GyroScalarZ";
745 case SpnValue::Pigeon2Yaw: return "Yaw";
746 case SpnValue::Pigeon2Pitch: return "Pitch";
747 case SpnValue::Pigeon2Roll: return "Roll";
748 case SpnValue::Pigeon2QuatW: return "QuatW";
749 case SpnValue::Pigeon2QuatX: return "QuatX";
750 case SpnValue::Pigeon2QuatY: return "QuatY";
751 case SpnValue::Pigeon2QuatZ: return "QuatZ";
752 case SpnValue::Pigeon2GravityVectorX: return "GravityVectorX";
753 case SpnValue::Pigeon2GravityVectorY: return "GravityVectorY";
754 case SpnValue::Pigeon2GravityVectorZ: return "GravityVectorZ";
755 case SpnValue::Pigeon2Temperature: return "Temperature";
756 case SpnValue::Pigeon2NoMotionCalEnabled: return "NoMotionEnabled";
757 case SpnValue::Pigeon2NoMotionCount: return "NoMotionCount";
758 case SpnValue::Pigeon2TempCompDisabled: return "TemperatureCompensationDisabled";
759 case SpnValue::Pigeon2UpTime: return "UpTime";
760 case SpnValue::Pigeon2AccumGyroX: return "AccumGyroX";
761 case SpnValue::Pigeon2AccumGyroY: return "AccumGyroY";
762 case SpnValue::Pigeon2AccumGyroZ: return "AccumGyroZ";
763 case SpnValue::Pigeon2AngularVelocityXWorld: return "AngularVelocityXWorld";
764 case SpnValue::Pigeon2AngularVelocityYWorld: return "AngularVelocityYWorld";
765 case SpnValue::Pigeon2AngularVelocityZWorld: return "AngularVelocityZWorld";
766 case SpnValue::Pigeon2AccelerationX: return "AccelerationX";
767 case SpnValue::Pigeon2AccelerationY: return "AccelerationY";
768 case SpnValue::Pigeon2AccelerationZ: return "AccelerationZ";
769 case SpnValue::Pigeon2_SupplyVoltage: return "SupplyVoltage";
770 case SpnValue::Pigeon2AngularVelocityX: return "AngularVelocityXDevice";
771 case SpnValue::Pigeon2AngularVelocityY: return "AngularVelocityYDevice";
772 case SpnValue::Pigeon2AngularVelocityZ: return "AngularVelocityZDevice";
773 case SpnValue::Pigeon2MagneticFieldX: return "MagneticFieldX";
774 case SpnValue::Pigeon2MagneticFieldY: return "MagneticFieldY";
775 case SpnValue::Pigeon2MagneticFieldZ: return "MagneticFieldZ";
776 case SpnValue::Pigeon2RawMagneticFieldX: return "RawMagneticFieldX";
777 case SpnValue::Pigeon2RawMagneticFieldY: return "RawMagneticFieldY";
778 case SpnValue::Pigeon2RawMagneticFieldZ: return "RawMagneticFieldZ";
779 case SpnValue::CANCoder_MagnetOffset: return "MagnetOffset";
780 case SpnValue::CANcoder_AbsoluteSensorRange: return "AbsoluteSensorRange";
781 case SpnValue::TalonFX_SetSensorPosition: return "SetPosition";
782 case SpnValue::CANCoder_SetSensorPosition: return "SetPosition";
783 case SpnValue::Pigeon2_SetYaw: return "SetYaw";
784 case SpnValue::DeviceEnabled: return "DeviceEnable";
785 case SpnValue::PRO_MotorOutput_MotorVoltage: return "MotorVoltage";
786 case SpnValue::ForwardLimit: return "ForwardLimit";
787 case SpnValue::ReverseLimit: return "ReverseLimit";
788 case SpnValue::PRO_MotorOutput_RotorPolarity: return "AppliedRotorPolarity";
789 case SpnValue::PRO_MotorOutput_DutyCycle: return "DutyCycle";
790 case SpnValue::PRO_MotorOutput_TorqueCurrent: return "TorqueCurrent";
791 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "StatorCurrent";
792 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "SupplyCurrent";
793 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "SupplyVoltage";
794 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "DeviceTemp";
795 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "ProcessorTemp";
796 case SpnValue::PRO_RotorPosAndVel_Velocity: return "RotorVelocity";
797 case SpnValue::PRO_RotorPosAndVel_Position: return "RotorPosition";
798 case SpnValue::PRO_PosAndVel_Velocity: return "Velocity";
799 case SpnValue::PRO_PosAndVel_Position: return "Position";
800 case SpnValue::PRO_PosAndVel_Acceleration: return "Acceleration";
801 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "PIDDutyCycle_IntegratedAccum";
802 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "PIDMotorVoltage_IntegratedAccum";
803 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "PIDTorqueCurrent_IntegratedAccum";
804 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "PIDDutyCycle_FeedForward";
805 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "PIDMotorVoltage_FeedForward";
806 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "PIDTorqueCurrent_FeedForward";
807 case SpnValue::TalonFX_ControlMode: return "ControlMode";
808 case SpnValue::PRO_PIDStateEnables_IsMotionMagicRunning: return "MotionMagicIsRunning";
809 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "DeviceEnable";
810 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "PIDPosition_Reference";
811 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "PIDVelocity_Reference";
812 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "PIDPosition_ClosedLoopError";
813 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "PIDVelocity_ClosedLoopError";
814 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "PIDDutyCycle_ProportionalOutput";
815 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "PIDMotorVoltage_ProportionalOutput";
816 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "PIDTorqueCurrent_ProportionalOutput";
817 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "PIDDutyCycle_DerivativeOutput";
818 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "PIDMotorVoltage_DerivativeOutput";
819 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "PIDTorqueCurrent_DerivativeOutput";
820 case SpnValue::PRO_PIDOutput_Output_DC: return "PIDDutyCycle_Output";
821 case SpnValue::PRO_PIDOutput_Output_V: return "PIDMotorVoltage_Output";
822 case SpnValue::PRO_PIDOutput_Output_A: return "PIDTorqueCurrent_Output";
823 case SpnValue::PRO_PIDOutput_Slot: return "ClosedLoopSlot";
824 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "PIDPosition_ReferenceSlope";
825 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "PIDVelocity_ReferenceSlope";
826 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "DifferentialDutyCycle";
827 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "DifferentialTorqueCurrent";
828 case SpnValue::TalonFX_DifferentialControlMode: return "DifferentialControlMode";
829 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "DifferentialPIDDutyCycle_IntegratedAccum";
830 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "DifferentialPIDMotorVoltage_IntegratedAccum";
831 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "DifferentialPIDTorqueCurrent_IntegratedAccum";
832 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "DifferentialPIDDutyCycle_FeedForward";
833 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "DifferentialPIDMotorVoltage_FeedForward";
834 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "DifferentialPIDTorqueCurrent_FeedForward";
835 case SpnValue::PRO_AvgPosAndVel_Velocity: return "DifferentialAverageVelocity";
836 case SpnValue::PRO_AvgPosAndVel_Position: return "DifferentialAveragePosition";
837 case SpnValue::PRO_DiffPosAndVel_Velocity: return "DifferentialDifferenceVelocity";
838 case SpnValue::PRO_DiffPosAndVel_Position: return "DifferentialDifferencePosition";
839 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "DifferentialPIDPosition_Reference";
840 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "DifferentialPIDVelocity_Reference";
841 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "DifferentialPIDPosition_ClosedLoopError";
842 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "DifferentialPIDVelocity_ClosedLoopError";
843 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "DifferentialPIDDutyCycle_ProportionalOutput";
844 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "DifferentialPIDMotorVoltage_ProportionalOutput";
845 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "DifferentialPIDTorqueCurrent_ProportionalOutput";
846 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "DifferentialPIDDutyCycle_DerivativeOutput";
847 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "DiffPIDMotorVoltage_DerivativeOutput";
848 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "DifferentialPIDTorqueCurrent_DerivativeOutput";
849 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "DifferentialPIDDutyCycle_Output";
850 case SpnValue::PRO_DiffPIDOutput_Output_V: return "DifferentialPIDMotorVoltage_Output";
851 case SpnValue::PRO_DiffPIDOutput_Output_A: return "DifferentialPIDTorqueCurrent_Output";
852 case SpnValue::PRO_DiffPIDOutput_Slot: return "DifferentialClosedLoopSlot";
853 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "DifferentialPIDPosition_ReferenceSlope";
854 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "DifferentialPIDVelocity_ReferenceSlope";
855 case SpnValue::Slot0_kP: return "kP";
856 case SpnValue::Slot0_kI: return "kI";
857 case SpnValue::Slot0_kD: return "kD";
858 case SpnValue::Slot0_kS: return "kS";
859 case SpnValue::Slot0_kV: return "kV";
860 case SpnValue::Slot0_kA: return "kA";
861 case SpnValue::Slot0_kG: return "kG";
862 case SpnValue::Slot0_kG_Type: return "GravityType";
863 case SpnValue::Slot1_kP: return "kP";
864 case SpnValue::Slot1_kI: return "kI";
865 case SpnValue::Slot1_kD: return "kD";
866 case SpnValue::Slot1_kS: return "kS";
867 case SpnValue::Slot1_kV: return "kV";
868 case SpnValue::Slot1_kA: return "kA";
869 case SpnValue::Slot1_kG: return "kG";
870 case SpnValue::Slot1_kG_Type: return "GravityType";
871 case SpnValue::Slot2_kP: return "kP";
872 case SpnValue::Slot2_kI: return "kI";
873 case SpnValue::Slot2_kD: return "kD";
874 case SpnValue::Slot2_kS: return "kS";
875 case SpnValue::Slot2_kV: return "kV";
876 case SpnValue::Slot2_kA: return "kA";
877 case SpnValue::Slot2_kG: return "kG";
878 case SpnValue::Slot2_kG_Type: return "GravityType";
879 case SpnValue::Config_Inverted: return "Inverted";
880 case SpnValue::Config_SupplyVLowpassTau: return "SupplyVoltageTimeConstant";
881 case SpnValue::Config_BeepOnBoot: return "BeepOnBoot";
882 case SpnValue::Config_NeutralMode: return "NeutralMode";
883 case SpnValue::Config_DutyCycleNeutralDB: return "DutyCycleNeutralDeadband";
884 case SpnValue::Config_StatorCurrentLimit: return "StatorCurrentLimit";
885 case SpnValue::Config_StatorCurrLimitEn: return "StatorCurrentLimitEnable";
886 case SpnValue::Config_SupplyCurrentLimit: return "SupplyCurrentLimit";
887 case SpnValue::Config_SupplyCurrLimitEn: return "SupplyCurrentLimitEnable";
888 case SpnValue::Config_PeakForwardDC: return "PeakForwardDutyCycle";
889 case SpnValue::Config_PeakReverseDC: return "PeakReverseDutyCycle";
890 case SpnValue::Config_PeakForwardV: return "PeakForwardVoltage";
891 case SpnValue::Config_PeakReverseV: return "PeakReverseVoltage";
892 case SpnValue::Config_PeakForTorqCurr: return "PeakForwardTorqueCurrent";
893 case SpnValue::Config_PeakRevTorqCurr: return "PeakReverseTorqueCurrent";
894 case SpnValue::Config_TorqueNeutralDB: return "TorqueNeutralDeadband";
895 case SpnValue::Config_FeedbackRotorOffset: return "FeedbackRotorOffset";
896 case SpnValue::Config_SensorToMechanismRatio: return "SensorToMechanismRatio";
897 case SpnValue::Config_RotorToSensorRatio: return "RotorToSensorRatio";
898 case SpnValue::Config_FeedbackSensorSource: return "FeedbackSensorSource";
899 case SpnValue::Config_FeedbackRemoteSensorID: return "FeedbackRemoteSensorID";
900 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "DutyCycleOpenLoopRampPeriod";
901 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "VoltageOpenLoopRampPeriod";
902 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "TorqueOpenLoopRampPeriod";
903 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "DutyCycleClosedLoopRampPeriod";
904 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "VoltageClosedLoopRampPeriod";
905 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "TorqueClosedLoopRampPeriod";
906 case SpnValue::Config_ForwardLimitType: return "ForwardLimitType";
907 case SpnValue::Config_ForwardLimitAutosetPosEnable: return "ForwardLimitAutosetPositionEnable";
908 case SpnValue::Config_ForwardLimitAutosetPosValue: return "ForwardLimitAutosetPositionValue";
909 case SpnValue::Config_ForwardLimitEnable: return "ForwardLimitEnable";
910 case SpnValue::Config_ForwardLimitSource: return "ForwardLimitSource";
911 case SpnValue::Config_ForwardLimitRemoteSensorID: return "ForwardLimitRemoteSensorID";
912 case SpnValue::Config_ReverseLimitType: return "ReverseLimitType";
913 case SpnValue::Config_ReverseLimitAutosetPosEnable: return "ReverseLimitAutosetPositionEnable";
914 case SpnValue::Config_ReverseLimitAutosetPosValue: return "ReverseLimitAutosetPositionValue";
915 case SpnValue::Config_ReverseLimitEnable: return "ReverseLimitEnable";
916 case SpnValue::Config_ReverseLimitSource: return "ReverseLimitSource";
917 case SpnValue::Config_ReverseLimitRemoteSensorID: return "ReverseLimitRemoteSensorID";
918 case SpnValue::Config_ForwardSoftLimitEnable: return "ForwardSoftLimitEnable";
919 case SpnValue::Config_ReverseSoftLimitEnable: return "ReverseSoftLimitEnable";
920 case SpnValue::Config_ForwardSoftLimitThreshold: return "ForwardSoftLimitThreshold";
921 case SpnValue::Config_ReverseSoftLimitThreshold: return "ReverseSoftLimitThreshold";
922 case SpnValue::Config_MotionMagicCruiseVelocity: return "MotionMagicCruiseVelocity";
923 case SpnValue::Config_MotionMagicAcceleration: return "MotionMagicAcceleration";
924 case SpnValue::Config_MotionMagicJerk: return "MotionMagicJerk";
925 case SpnValue::Config_MotionMagicExpo_kV: return "MotionMagicExpo_kV";
926 case SpnValue::Config_MotionMagicExpo_kA: return "MotionMagicExpo_kA";
927 case SpnValue::Config_PeakDiffDC: return "PeakDifferentialDutyCycle";
928 case SpnValue::Config_PeakDiffV: return "PeakDifferentialVoltage";
929 case SpnValue::Config_PeakDiffTorqCurr: return "PeakDifferentialTorqueCurrent";
930 case SpnValue::CANcoder_Velocity: return "Velocity";
931 case SpnValue::CANcoder_Position: return "Position";
932 case SpnValue::CANcoder_AbsPosition: return "AbsolutePosition";
933 case SpnValue::CANCoder_RawVel: return "UnfilteredVelocity";
934 case SpnValue::CANCoder_RawPos: return "PositionSinceBoot";
935 case SpnValue::CANCoder_SupplyVoltage: return "SupplyVoltage";
936 case SpnValue::CANcoder_MagHealth: return "MagnetHealth";
937 case SpnValue::SPN_ClearStickyFaults: return "ClearStickyFaults";
938 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "BridgeOutput";
939 case SpnValue::Config_ContinuousWrap: return "ContinuousWrap";
940 case SpnValue::Config_SupplyCurrThres: return "SupplyCurrentThreshold";
941 case SpnValue::Config_SupplyTimeThres: return "SupplyTimeThreshold";
942 case SpnValue::Config_DifferentialSensorSource: return "DifferentialSensorSource";
943 case SpnValue::Config_DifferentialTalonFXSensorID: return "DifferentialTalonFXSensorID";
944 case SpnValue::Config_DifferentialRemoteSensorID: return "DifferentialRemoteSensorID";
945 case SpnValue::Config_BeepOnConfig: return "BeepOnConfig";
946 case SpnValue::Config_AllowMusicDurDisable: return "AllowMusicDurDisable";
947 case SpnValue::Compliancy_Version: return "Compliancy";
948 case SpnValue::Version_IsProLicensed: return "IsProLicensed";
949 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "AncillaryDeviceTemp";
950 case SpnValue::Slot0_kS_Sign: return "StaticFeedforwardSign";
951 case SpnValue::Slot1_kS_Sign: return "StaticFeedforwardSign";
952 case SpnValue::Slot2_kS_Sign: return "StaticFeedforwardSign";
953 case SpnValue::TalonFX_MotorType: return "MotorType";
954 case SpnValue::TalonFX_MotorOutputStatus: return "MotorOutputStatus";
955 case SpnValue::Fault_Hardware: return "Fault_Hardware";
956 case SpnValue::StickyFault_Hardware: return "StickyFault_Hardware";
957 case SpnValue::ClearStickyFault_Hardware: return "ClearStickyFault_Hardware";
958 case SpnValue::Fault_ProcTemp: return "Fault_ProcTemp";
959 case SpnValue::StickyFault_ProcTemp: return "StickyFault_ProcTemp";
960 case SpnValue::ClearStickyFault_ProcTemp: return "ClearStickyFault_ProcTemp";
961 case SpnValue::Fault_DeviceTemp: return "Fault_DeviceTemp";
962 case SpnValue::StickyFault_DeviceTemp: return "StickyFault_DeviceTemp";
963 case SpnValue::ClearStickyFault_DeviceTemp: return "ClearStickyFault_DeviceTemp";
964 case SpnValue::Fault_Undervoltage: return "Fault_Undervoltage";
965 case SpnValue::StickyFault_Undervoltage: return "StickyFault_Undervoltage";
966 case SpnValue::ClearStickyFault_Undervoltage: return "ClearStickyFault_Undervoltage";
967 case SpnValue::Fault_BootDuringEnable: return "Fault_BootDuringEnable";
968 case SpnValue::StickyFault_BootDuringEnable: return "StickyFault_BootDuringEnable";
969 case SpnValue::ClearStickyFault_BootDuringEnable: return "ClearStickyFault_BootDuringEnable";
970 case SpnValue::Fault_UnlicensedFeatureInUse: return "Fault_UnlicensedFeatureInUse";
971 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "StickyFault_UnlicensedFeatureInUse";
972 case SpnValue::Fault_PIGEON2_BootupAccel: return "Fault_BootupAccelerometer";
973 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "StickyFault_BootupAccelerometer";
974 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "ClearStickyFault_BootupAccelerometer";
975 case SpnValue::Fault_PIGEON2_BootupGyros: return "Fault_BootupGyroscope";
976 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "StickyFault_BootupGyroscope";
977 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "ClearStickyFault_BootupGyroscope";
978 case SpnValue::Fault_PIGEON2_BootupMagne: return "Fault_BootupMagnetometer";
979 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "StickyFault_BootupMagnetometer";
980 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "ClearStickyFault_BootupMagnetometer";
981 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "Fault_BootIntoMotion";
982 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "StickyFault_BootIntoMotion";
983 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "ClearStickyFault_BootIntoMotion";
984 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "Fault_DataAcquiredLate";
985 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "StickyFault_DataAcquiredLate";
986 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "ClearStickyFault_DataAcquiredLate";
987 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "Fault_LoopTimeSlow";
988 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "StickyFault_LoopTimeSlow";
989 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "ClearStickyFault_LoopTimeSlow";
990 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "Fault_SaturatedMagnetometer";
991 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "StickyFault_SaturatedMagnetometer";
992 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "ClearStickyFault_SaturatedMagnetometer";
993 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "Fault_SaturatedAccelerometer";
994 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "StickyFault_SaturatedAccelerometer";
995 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "ClearStickyFault_SaturatedAccelerometer";
996 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "Fault_SaturatedGyroscope";
997 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "StickyFault_SaturatedGyroscope";
998 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "ClearStickyFault_SaturatedGyroscope";
999 case SpnValue::Fault_CANCODER_BadMagnet: return "Fault_BadMagnet";
1000 case SpnValue::StickyFault_CANCODER_BadMagnet: return "StickyFault_BadMagnet";
1001 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "ClearStickyFault_BadMagnet";
1002 case SpnValue::Fault_TALONFX_BridgeBrownout: return "Fault_BridgeBrownout";
1003 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "StickyFault_BridgeBrownout";
1004 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "ClearStickyFault_BridgeBrownout";
1005 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "Fault_RemoteSensorReset";
1006 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "StickyFault_RemoteSensorReset";
1007 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "ClearStickyFault_RemoteSensorReset";
1008 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "Fault_MissingDifferentialFX";
1009 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "StickyFault_MissingDifferentialFX";
1010 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "ClearStickyFault_MissingDifferentialFX";
1011 case SpnValue::Fault_TALONFX_RemoteSensorPosOverflow: return "Fault_RemoteSensorPosOverflow";
1012 case SpnValue::StickyFault_TALONFX_RemoteSensorPosOverflow: return "StickyFault_RemoteSensorPosOverflow";
1013 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow: return "ClearStickyFault_RemoteSensorPosOverflow";
1014 case SpnValue::Fault_TALONFX_OverSupplyV: return "Fault_OverSupplyV";
1015 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "StickyFault_OverSupplyV";
1016 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "ClearStickyFault_OverSupplyV";
1017 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "Fault_UnstableSupplyV";
1018 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "StickyFault_UnstableSupplyV";
1019 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "ClearStickyFault_UnstableSupplyV";
1020 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "Fault_ReverseHardLimit";
1021 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "StickyFault_ReverseHardLimit";
1022 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "ClearStickyFault_ReverseHardLimit";
1023 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "Fault_ForwardHardLimit";
1024 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "StickyFault_ForwardHardLimit";
1025 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "ClearStickyFault_ForwardHardLimit";
1026 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "Fault_ReverseSoftLimit";
1027 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "StickyFault_ReverseSoftLimit";
1028 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "ClearStickyFault_ReverseSoftLimit";
1029 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "Fault_ForwardSoftLimit";
1030 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "StickyFault_ForwardSoftLimit";
1031 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "ClearStickyFault_ForwardSoftLimit";
1032 case SpnValue::Fault_TALONFX_MissingRemoteSensor: return "Fault_RemoteSensorDataInvalid";
1033 case SpnValue::StickyFault_TALONFX_MissingRemoteSensor: return "StickyFault_RemoteSensorDataInvalid";
1034 case SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor: return "ClearStickyFault_RemoteSensorDataInvalid";
1035 case SpnValue::Fault_TALONFX_FusedSensorOutOfSync: return "Fault_FusedSensorOutOfSync";
1036 case SpnValue::StickyFault_TALONFX_FusedSensorOutOfSync: return "StickyFault_FusedSensorOutOfSync";
1037 case SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync: return "ClearStickyFault_FusedSensorOutOfSync";
1038 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "Fault_StatorCurrLimit";
1039 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "StickyFault_StatorCurrLimit";
1040 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "ClearStickyFault_StatorCurrLimit";
1041 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "Fault_SupplyCurrLimit";
1042 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "StickyFault_SupplyCurrLimit";
1043 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "ClearStickyFault_SupplyCurrLimit";
1044 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "Fault_UsingFusedCANcoderWhileUnlicensed";
1045 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "StickyFault_UsingFusedCANcoderWhileUnlicensed";
1046 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "Fault_StaticBrakeDisabled";
1047 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "StickyFault_StaticBrakeDisabled";
1048 default:
1049 return "Invalid Value";
1050 }
1051 }
1052
1053 /**
1054 * \brief Gets the units for this enum if applicable
1055 *
1056 * \returns Units of this enum
1057 */
1058 std::string GetUnits() const
1059 {
1060 switch (value)
1061 {
1062 case SpnValue::TalonFX_System_State: return "";
1063 case SpnValue::Startup_ResetFlags: return "";
1064 case SpnValue::Version_Major: return "";
1065 case SpnValue::Version_Minor: return "";
1066 case SpnValue::Version_Bugfix: return "";
1067 case SpnValue::Version_Build: return "";
1068 case SpnValue::Version_Full: return "";
1069 case SpnValue::Licensing_IsProLicensed: return "";
1070 case SpnValue::Licensing_IsSeasonPassed: return "";
1071 case SpnValue::CustomParam0: return "";
1072 case SpnValue::CustomParam1: return "";
1073 case SpnValue::CANcoder_SensorDirection: return "";
1074 case SpnValue::FrcLock: return "";
1075 case SpnValue::RobotEnabled: return "";
1076 case SpnValue::LED1_OnColor: return "";
1077 case SpnValue::LED1_OffColor: return "";
1078 case SpnValue::LED2_OnColor: return "";
1079 case SpnValue::LED2_OffColor: return "";
1080 case SpnValue::AllFaults: return "";
1081 case SpnValue::AllStickyFaults: return "";
1082 case SpnValue::Pigeon2UseCompass: return "";
1083 case SpnValue::Pigeon2DisableTemperatureCompensation: return "";
1084 case SpnValue::Pigeon2DisableNoMotionCalibration: return "";
1085 case SpnValue::Pigeon2MountPoseYaw: return "deg";
1086 case SpnValue::Pigeon2MountPosePitch: return "deg";
1087 case SpnValue::Pigeon2MountPoseRoll: return "deg";
1088 case SpnValue::Pigeon2GyroScalarX: return "deg per rotation";
1089 case SpnValue::Pigeon2GyroScalarY: return "deg per rotation";
1090 case SpnValue::Pigeon2GyroScalarZ: return "deg per rotation";
1091 case SpnValue::Pigeon2Yaw: return "deg";
1092 case SpnValue::Pigeon2Pitch: return "deg";
1093 case SpnValue::Pigeon2Roll: return "deg";
1094 case SpnValue::Pigeon2QuatW: return "";
1095 case SpnValue::Pigeon2QuatX: return "";
1096 case SpnValue::Pigeon2QuatY: return "";
1097 case SpnValue::Pigeon2QuatZ: return "";
1098 case SpnValue::Pigeon2GravityVectorX: return "";
1099 case SpnValue::Pigeon2GravityVectorY: return "";
1100 case SpnValue::Pigeon2GravityVectorZ: return "";
1101 case SpnValue::Pigeon2Temperature: return "℃";
1102 case SpnValue::Pigeon2NoMotionCalEnabled: return "";
1103 case SpnValue::Pigeon2NoMotionCount: return "";
1104 case SpnValue::Pigeon2TempCompDisabled: return "";
1105 case SpnValue::Pigeon2UpTime: return "s";
1106 case SpnValue::Pigeon2AccumGyroX: return "deg";
1107 case SpnValue::Pigeon2AccumGyroY: return "deg";
1108 case SpnValue::Pigeon2AccumGyroZ: return "deg";
1109 case SpnValue::Pigeon2AngularVelocityXWorld: return "dps";
1110 case SpnValue::Pigeon2AngularVelocityYWorld: return "dps";
1111 case SpnValue::Pigeon2AngularVelocityZWorld: return "dps";
1112 case SpnValue::Pigeon2AccelerationX: return "g";
1113 case SpnValue::Pigeon2AccelerationY: return "g";
1114 case SpnValue::Pigeon2AccelerationZ: return "g";
1115 case SpnValue::Pigeon2_SupplyVoltage: return "V";
1116 case SpnValue::Pigeon2AngularVelocityX: return "dps";
1117 case SpnValue::Pigeon2AngularVelocityY: return "dps";
1118 case SpnValue::Pigeon2AngularVelocityZ: return "dps";
1119 case SpnValue::Pigeon2MagneticFieldX: return "uT";
1120 case SpnValue::Pigeon2MagneticFieldY: return "uT";
1121 case SpnValue::Pigeon2MagneticFieldZ: return "uT";
1122 case SpnValue::Pigeon2RawMagneticFieldX: return "uT";
1123 case SpnValue::Pigeon2RawMagneticFieldY: return "uT";
1124 case SpnValue::Pigeon2RawMagneticFieldZ: return "uT";
1125 case SpnValue::CANCoder_MagnetOffset: return "rotations";
1126 case SpnValue::CANcoder_AbsoluteSensorRange: return "";
1127 case SpnValue::TalonFX_SetSensorPosition: return "rotations";
1128 case SpnValue::CANCoder_SetSensorPosition: return "rotations";
1129 case SpnValue::Pigeon2_SetYaw: return "deg";
1130 case SpnValue::DeviceEnabled: return "";
1131 case SpnValue::PRO_MotorOutput_MotorVoltage: return "V";
1132 case SpnValue::ForwardLimit: return "";
1133 case SpnValue::ReverseLimit: return "";
1134 case SpnValue::PRO_MotorOutput_RotorPolarity: return "";
1135 case SpnValue::PRO_MotorOutput_DutyCycle: return "fractional";
1136 case SpnValue::PRO_MotorOutput_TorqueCurrent: return "A";
1137 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "A";
1138 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "A";
1139 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "V";
1140 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "℃";
1141 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "℃";
1142 case SpnValue::PRO_RotorPosAndVel_Velocity: return "rotations per second";
1143 case SpnValue::PRO_RotorPosAndVel_Position: return "rotations";
1144 case SpnValue::PRO_PosAndVel_Velocity: return "rotations per second";
1145 case SpnValue::PRO_PosAndVel_Position: return "rotations";
1146 case SpnValue::PRO_PosAndVel_Acceleration: return "rotations per second²";
1147 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "fractional";
1148 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "V";
1149 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "A";
1150 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "fractional";
1151 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "V";
1152 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "A";
1153 case SpnValue::TalonFX_ControlMode: return "";
1154 case SpnValue::PRO_PIDStateEnables_IsMotionMagicRunning: return "";
1155 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "";
1156 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "rotations";
1157 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "rotations per second";
1158 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "rotations";
1159 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "rotations per second";
1160 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "fractional";
1161 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "V";
1162 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "A";
1163 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "fractional";
1164 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "V";
1165 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "A";
1166 case SpnValue::PRO_PIDOutput_Output_DC: return "fractional";
1167 case SpnValue::PRO_PIDOutput_Output_V: return "V";
1168 case SpnValue::PRO_PIDOutput_Output_A: return "A";
1169 case SpnValue::PRO_PIDOutput_Slot: return "";
1170 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "rotations per second";
1171 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "rotations per second²";
1172 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "fractional";
1173 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "A";
1174 case SpnValue::TalonFX_DifferentialControlMode: return "";
1175 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "fractional";
1176 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "V";
1177 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "A";
1178 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "fractional";
1179 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "V";
1180 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "A";
1181 case SpnValue::PRO_AvgPosAndVel_Velocity: return "rotations per second";
1182 case SpnValue::PRO_AvgPosAndVel_Position: return "rotations";
1183 case SpnValue::PRO_DiffPosAndVel_Velocity: return "rotations per second";
1184 case SpnValue::PRO_DiffPosAndVel_Position: return "rotations";
1185 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "rotations";
1186 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "rotations per second";
1187 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "rotations";
1188 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "rotations per second";
1189 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "fractional";
1190 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "V";
1191 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "A";
1192 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "fractional";
1193 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "V";
1194 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "A";
1195 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "fractional";
1196 case SpnValue::PRO_DiffPIDOutput_Output_V: return "V";
1197 case SpnValue::PRO_DiffPIDOutput_Output_A: return "A";
1198 case SpnValue::PRO_DiffPIDOutput_Slot: return "";
1199 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "rotations per second";
1200 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "rotations per second²";
1201 case SpnValue::Slot0_kP: return "";
1202 case SpnValue::Slot0_kI: return "";
1203 case SpnValue::Slot0_kD: return "";
1204 case SpnValue::Slot0_kS: return "";
1205 case SpnValue::Slot0_kV: return "";
1206 case SpnValue::Slot0_kA: return "";
1207 case SpnValue::Slot0_kG: return "";
1208 case SpnValue::Slot0_kG_Type: return "";
1209 case SpnValue::Slot1_kP: return "";
1210 case SpnValue::Slot1_kI: return "";
1211 case SpnValue::Slot1_kD: return "";
1212 case SpnValue::Slot1_kS: return "";
1213 case SpnValue::Slot1_kV: return "";
1214 case SpnValue::Slot1_kA: return "";
1215 case SpnValue::Slot1_kG: return "";
1216 case SpnValue::Slot1_kG_Type: return "";
1217 case SpnValue::Slot2_kP: return "";
1218 case SpnValue::Slot2_kI: return "";
1219 case SpnValue::Slot2_kD: return "";
1220 case SpnValue::Slot2_kS: return "";
1221 case SpnValue::Slot2_kV: return "";
1222 case SpnValue::Slot2_kA: return "";
1223 case SpnValue::Slot2_kG: return "";
1224 case SpnValue::Slot2_kG_Type: return "";
1225 case SpnValue::Config_Inverted: return "";
1226 case SpnValue::Config_SupplyVLowpassTau: return "sec";
1227 case SpnValue::Config_BeepOnBoot: return "";
1228 case SpnValue::Config_NeutralMode: return "";
1229 case SpnValue::Config_DutyCycleNeutralDB: return "fractional";
1230 case SpnValue::Config_StatorCurrentLimit: return "A";
1231 case SpnValue::Config_StatorCurrLimitEn: return "";
1232 case SpnValue::Config_SupplyCurrentLimit: return "A";
1233 case SpnValue::Config_SupplyCurrLimitEn: return "";
1234 case SpnValue::Config_PeakForwardDC: return "fractional";
1235 case SpnValue::Config_PeakReverseDC: return "fractional";
1236 case SpnValue::Config_PeakForwardV: return "V";
1237 case SpnValue::Config_PeakReverseV: return "V";
1238 case SpnValue::Config_PeakForTorqCurr: return "A";
1239 case SpnValue::Config_PeakRevTorqCurr: return "A";
1240 case SpnValue::Config_TorqueNeutralDB: return "A";
1241 case SpnValue::Config_FeedbackRotorOffset: return "rotations";
1242 case SpnValue::Config_SensorToMechanismRatio: return "scalar";
1243 case SpnValue::Config_RotorToSensorRatio: return "scalar";
1244 case SpnValue::Config_FeedbackSensorSource: return "";
1245 case SpnValue::Config_FeedbackRemoteSensorID: return "";
1246 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "sec";
1247 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "sec";
1248 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "sec";
1249 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "sec";
1250 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "sec";
1251 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "sec";
1252 case SpnValue::Config_ForwardLimitType: return "";
1253 case SpnValue::Config_ForwardLimitAutosetPosEnable: return "";
1254 case SpnValue::Config_ForwardLimitAutosetPosValue: return "rotations";
1255 case SpnValue::Config_ForwardLimitEnable: return "";
1256 case SpnValue::Config_ForwardLimitSource: return "";
1257 case SpnValue::Config_ForwardLimitRemoteSensorID: return "";
1258 case SpnValue::Config_ReverseLimitType: return "";
1259 case SpnValue::Config_ReverseLimitAutosetPosEnable: return "";
1260 case SpnValue::Config_ReverseLimitAutosetPosValue: return "rotations";
1261 case SpnValue::Config_ReverseLimitEnable: return "";
1262 case SpnValue::Config_ReverseLimitSource: return "";
1263 case SpnValue::Config_ReverseLimitRemoteSensorID: return "";
1264 case SpnValue::Config_ForwardSoftLimitEnable: return "";
1265 case SpnValue::Config_ReverseSoftLimitEnable: return "";
1266 case SpnValue::Config_ForwardSoftLimitThreshold: return "rotations";
1267 case SpnValue::Config_ReverseSoftLimitThreshold: return "rotations";
1268 case SpnValue::Config_MotionMagicCruiseVelocity: return "rps";
1269 case SpnValue::Config_MotionMagicAcceleration: return "rot per sec²";
1270 case SpnValue::Config_MotionMagicJerk: return "rot per sec³";
1271 case SpnValue::Config_MotionMagicExpo_kV: return "V/rps";
1272 case SpnValue::Config_MotionMagicExpo_kA: return "V/rps²";
1273 case SpnValue::Config_PeakDiffDC: return "fractional";
1274 case SpnValue::Config_PeakDiffV: return "V";
1275 case SpnValue::Config_PeakDiffTorqCurr: return "A";
1276 case SpnValue::CANcoder_Velocity: return "rotations per second";
1277 case SpnValue::CANcoder_Position: return "rotations";
1278 case SpnValue::CANcoder_AbsPosition: return "rotations";
1279 case SpnValue::CANCoder_RawVel: return "rotations per second";
1280 case SpnValue::CANCoder_RawPos: return "rotations";
1281 case SpnValue::CANCoder_SupplyVoltage: return "V";
1282 case SpnValue::CANcoder_MagHealth: return "";
1283 case SpnValue::SPN_ClearStickyFaults: return "";
1284 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "";
1285 case SpnValue::Config_ContinuousWrap: return "";
1286 case SpnValue::Config_SupplyCurrThres: return "A";
1287 case SpnValue::Config_SupplyTimeThres: return "sec";
1288 case SpnValue::Config_DifferentialSensorSource: return "";
1289 case SpnValue::Config_DifferentialTalonFXSensorID: return "";
1290 case SpnValue::Config_DifferentialRemoteSensorID: return "";
1291 case SpnValue::Config_BeepOnConfig: return "";
1292 case SpnValue::Config_AllowMusicDurDisable: return "";
1293 case SpnValue::Compliancy_Version: return "";
1294 case SpnValue::Version_IsProLicensed: return "";
1295 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "℃";
1296 case SpnValue::Slot0_kS_Sign: return "";
1297 case SpnValue::Slot1_kS_Sign: return "";
1298 case SpnValue::Slot2_kS_Sign: return "";
1299 case SpnValue::TalonFX_MotorType: return "";
1300 case SpnValue::TalonFX_MotorOutputStatus: return "";
1301 case SpnValue::Fault_Hardware: return "";
1302 case SpnValue::StickyFault_Hardware: return "";
1303 case SpnValue::ClearStickyFault_Hardware: return "";
1304 case SpnValue::Fault_ProcTemp: return "";
1305 case SpnValue::StickyFault_ProcTemp: return "";
1306 case SpnValue::ClearStickyFault_ProcTemp: return "";
1307 case SpnValue::Fault_DeviceTemp: return "";
1308 case SpnValue::StickyFault_DeviceTemp: return "";
1309 case SpnValue::ClearStickyFault_DeviceTemp: return "";
1310 case SpnValue::Fault_Undervoltage: return "";
1311 case SpnValue::StickyFault_Undervoltage: return "";
1312 case SpnValue::ClearStickyFault_Undervoltage: return "";
1313 case SpnValue::Fault_BootDuringEnable: return "";
1314 case SpnValue::StickyFault_BootDuringEnable: return "";
1315 case SpnValue::ClearStickyFault_BootDuringEnable: return "";
1316 case SpnValue::Fault_UnlicensedFeatureInUse: return "";
1317 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "";
1318 case SpnValue::Fault_PIGEON2_BootupAccel: return "";
1319 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "";
1320 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "";
1321 case SpnValue::Fault_PIGEON2_BootupGyros: return "";
1322 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "";
1323 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "";
1324 case SpnValue::Fault_PIGEON2_BootupMagne: return "";
1325 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "";
1326 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "";
1327 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "";
1328 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "";
1329 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "";
1330 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "";
1331 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "";
1332 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "";
1333 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "";
1334 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "";
1335 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "";
1336 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "";
1337 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "";
1338 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "";
1339 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "";
1340 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "";
1341 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "";
1342 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "";
1343 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "";
1344 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "";
1345 case SpnValue::Fault_CANCODER_BadMagnet: return "";
1346 case SpnValue::StickyFault_CANCODER_BadMagnet: return "";
1347 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "";
1348 case SpnValue::Fault_TALONFX_BridgeBrownout: return "";
1349 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "";
1350 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "";
1351 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "";
1352 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "";
1353 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "";
1354 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "";
1355 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "";
1356 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "";
1357 case SpnValue::Fault_TALONFX_RemoteSensorPosOverflow: return "";
1358 case SpnValue::StickyFault_TALONFX_RemoteSensorPosOverflow: return "";
1359 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow: return "";
1360 case SpnValue::Fault_TALONFX_OverSupplyV: return "";
1361 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "";
1362 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "";
1363 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "";
1364 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "";
1365 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "";
1366 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "";
1367 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "";
1368 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "";
1369 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "";
1370 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "";
1371 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "";
1372 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "";
1373 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "";
1374 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "";
1375 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "";
1376 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "";
1377 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "";
1378 case SpnValue::Fault_TALONFX_MissingRemoteSensor: return "";
1379 case SpnValue::StickyFault_TALONFX_MissingRemoteSensor: return "";
1380 case SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor: return "";
1381 case SpnValue::Fault_TALONFX_FusedSensorOutOfSync: return "";
1382 case SpnValue::StickyFault_TALONFX_FusedSensorOutOfSync: return "";
1383 case SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync: return "";
1384 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "";
1385 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "";
1386 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "";
1387 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "";
1388 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "";
1389 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "";
1390 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "";
1391 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "";
1392 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "";
1393 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "";
1394 default:
1395 return "Invalid Value";
1396 }
1397 }
1398
1399 /**
1400 * \brief Gets the summary for this enum if applicable
1401 *
1402 * \returns Summary of this enum
1403 */
1404 std::string GetSummary() const
1405 {
1406 switch (value)
1407 {
1408 case SpnValue::TalonFX_System_State: return "System state of the device";
1409 case SpnValue::Startup_ResetFlags: return "This signal needs a summary";
1410 case SpnValue::Version_Major: return "App Major Version number.";
1411 case SpnValue::Version_Minor: return "App Minor Version number.";
1412 case SpnValue::Version_Bugfix: return "App Bugfix Version number.";
1413 case SpnValue::Version_Build: return "App Build Version number.";
1414 case SpnValue::Version_Full: return "Full Version. The format is a four byte value.";
1415 case SpnValue::Licensing_IsProLicensed: return "Whether the device is Pro licensed";
1416 case SpnValue::Licensing_IsSeasonPassed: return "Whether the device is Season Pass licensed";
1417 case SpnValue::CustomParam0: return "Custom parameter 0. This is provided to allow end-applications to store persistent information in the device.";
1418 case SpnValue::CustomParam1: return "Custom parameter 1. This is provided to allow end-applications to store persistent information in the device.";
1419 case SpnValue::CANcoder_SensorDirection: return "Direction of the sensor to determine positive rotation, as seen facing the LED side of the CANcoder.";
1420 case SpnValue::FrcLock: return "Whether device is locked by FRC.";
1421 case SpnValue::RobotEnabled: return "Whether the robot is enabled.";
1422 case SpnValue::LED1_OnColor: return "The Color of LED1 when it's \"On\".";
1423 case SpnValue::LED1_OffColor: return "The Color of LED1 when it's \"Off\".";
1424 case SpnValue::LED2_OnColor: return "The Color of LED2 when it's \"On\".";
1425 case SpnValue::LED2_OffColor: return "The Color of LED2 when it's \"Off\".";
1426 case SpnValue::AllFaults: return "Integer representing all faults";
1427 case SpnValue::AllStickyFaults: return "Integer representing all sticky faults";
1428 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.";
1429 case SpnValue::Pigeon2DisableTemperatureCompensation: return "Disables using the temperature compensation feature";
1430 case SpnValue::Pigeon2DisableNoMotionCalibration: return "Disables using the no-motion calibration feature";
1431 case SpnValue::Pigeon2MountPoseYaw: return "The mounting calibration yaw-component";
1432 case SpnValue::Pigeon2MountPosePitch: return "The mounting calibration pitch-component";
1433 case SpnValue::Pigeon2MountPoseRoll: return "The mounting calibration roll-component";
1434 case SpnValue::Pigeon2GyroScalarX: return "The gyro scalar component for the X axis";
1435 case SpnValue::Pigeon2GyroScalarY: return "The gyro scalar component for the Y axis";
1436 case SpnValue::Pigeon2GyroScalarZ: return "The gyro scalar component for the Z axis";
1437 case SpnValue::Pigeon2Yaw: return "Current reported yaw of the Pigeon2.";
1438 case SpnValue::Pigeon2Pitch: return "Current reported pitch of the Pigeon2.";
1439 case SpnValue::Pigeon2Roll: return "Current reported roll of the Pigeon2.";
1440 case SpnValue::Pigeon2QuatW: return "The W component of the reported Quaternion.";
1441 case SpnValue::Pigeon2QuatX: return "The X component of the reported Quaternion.";
1442 case SpnValue::Pigeon2QuatY: return "The Y component of the reported Quaternion.";
1443 case SpnValue::Pigeon2QuatZ: return "The Z component of the reported Quaternion.";
1444 case SpnValue::Pigeon2GravityVectorX: return "The X component of the gravity vector.";
1445 case SpnValue::Pigeon2GravityVectorY: return "The Y component of the gravity vector.";
1446 case SpnValue::Pigeon2GravityVectorZ: return "The Z component of the gravity vector.";
1447 case SpnValue::Pigeon2Temperature: return "Temperature of the Pigeon 2.";
1448 case SpnValue::Pigeon2NoMotionCalEnabled: return "Whether the no-motion calibration feature is enabled.";
1449 case SpnValue::Pigeon2NoMotionCount: return "The number of times a no-motion event occurred, wraps at 15.";
1450 case SpnValue::Pigeon2TempCompDisabled: return "Whether the temperature-compensation feature is disabled.";
1451 case SpnValue::Pigeon2UpTime: return "How long the Pigeon 2's been up in seconds, caps at 255 seconds.";
1452 case SpnValue::Pigeon2AccumGyroX: return "The accumulated gyro about the X axis without any sensor fusing.";
1453 case SpnValue::Pigeon2AccumGyroY: return "The accumulated gyro about the Y axis without any sensor fusing.";
1454 case SpnValue::Pigeon2AccumGyroZ: return "The accumulated gyro about the Z axis without any sensor fusing.";
1455 case SpnValue::Pigeon2AngularVelocityXWorld: return "Angular Velocity world X";
1456 case SpnValue::Pigeon2AngularVelocityYWorld: return "Angular Velocity Quaternion Y Component";
1457 case SpnValue::Pigeon2AngularVelocityZWorld: return "Angular Velocity Quaternion Z Component";
1458 case SpnValue::Pigeon2AccelerationX: return "The acceleration measured by Pigeon2 in the X direction.";
1459 case SpnValue::Pigeon2AccelerationY: return "The acceleration measured by Pigeon2 in the Y direction.";
1460 case SpnValue::Pigeon2AccelerationZ: return "The acceleration measured by Pigeon2 in the Z direction.";
1461 case SpnValue::Pigeon2_SupplyVoltage: return "Measured supply voltage to the Pigeon2.";
1462 case SpnValue::Pigeon2AngularVelocityX: return "The angular velocity (ω) of the Pigeon 2 about the device's X axis.";
1463 case SpnValue::Pigeon2AngularVelocityY: return "The angular velocity (ω) of the Pigeon 2 about the device's Y axis.";
1464 case SpnValue::Pigeon2AngularVelocityZ: return "The angular velocity (ω) of the Pigeon 2 about the device's Z axis.";
1465 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.";
1466 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.";
1467 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.";
1468 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.";
1469 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.";
1470 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.";
1471 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.";
1472 case SpnValue::CANcoder_AbsoluteSensorRange: return "The range of the absolute sensor in rotations, either [-0.5, 0.5) or [0, 1).";
1473 case SpnValue::TalonFX_SetSensorPosition: return "Sets the mechanism position of the device in mechanism rotations.";
1474 case SpnValue::CANCoder_SetSensorPosition: return "Sets the current position of the device.";
1475 case SpnValue::Pigeon2_SetYaw: return "The yaw to set the Pigeon2 to right now.";
1476 case SpnValue::DeviceEnabled: return "Whether the device is enabled.";
1477 case SpnValue::PRO_MotorOutput_MotorVoltage: return "The applied (output) motor voltage.";
1478 case SpnValue::ForwardLimit: return "Forward Limit Pin.";
1479 case SpnValue::ReverseLimit: return "Reverse Limit Pin.";
1480 case SpnValue::PRO_MotorOutput_RotorPolarity: return "The applied rotor polarity. This typically is determined by the Inverted config, but can be overridden if using Follower features.";
1481 case SpnValue::PRO_MotorOutput_DutyCycle: return "The applied motor duty cycle.";
1482 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.";
1483 case SpnValue::PRO_SupplyAndTemp_StatorCurrent: return "Current corresponding to the stator windings. Similar to TorqueCurrent. Users will likely prefer TorqueCurrent over StatorCurrent.";
1484 case SpnValue::PRO_SupplyAndTemp_SupplyCurrent: return "Measured supply side current";
1485 case SpnValue::PRO_SupplyAndTemp_SupplyVoltage: return "Measured supply voltage to the TalonFX.";
1486 case SpnValue::PRO_SupplyAndTemp_DeviceTemp: return "Temperature of device";
1487 case SpnValue::PRO_SupplyAndTemp_ProcessorTemp: return "Temperature of the processor";
1488 case SpnValue::PRO_RotorPosAndVel_Velocity: return "Velocity of the motor rotor. This velocity is not affected by any feedback configs.";
1489 case SpnValue::PRO_RotorPosAndVel_Position: return "Position of the motor rotor. This position is only affected by the RotorOffset config and calls to setPosition.";
1490 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.";
1491 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.";
1492 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.";
1493 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_DC: return "Integrated Accumulator of PID controller when PID'ing under a DutyCycle Request";
1494 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_V: return "Integrated Accumulator of PID controller when PID'ing under a Voltage Request";
1495 case SpnValue::PRO_PIDStateEnables_IntegratedAccum_A: return "Integrated Accumulator of PID controller when PID'ing under a TorqueCurrent Request";
1496 case SpnValue::PRO_PIDStateEnables_FeedForward_DC: return "Feedforward passed to PID controller";
1497 case SpnValue::PRO_PIDStateEnables_FeedForward_V: return "Feedforward passed to PID controller";
1498 case SpnValue::PRO_PIDStateEnables_FeedForward_A: return "Feedforward passed to PID controller";
1499 case SpnValue::TalonFX_ControlMode: return "The active control mode of the motor controller";
1500 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.";
1501 case SpnValue::PRO_PIDStateEnables_DeviceEnable: return "Indicates if device is actuator enabled.";
1502 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Position: return "Input position of PID controller when PID'ing to a position";
1503 case SpnValue::PRO_PIDRefPIDErr_PIDRef_Velocity: return "Input velocity of PID controller when PID'ing to a velocity";
1504 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Position: return "The difference between target position and current position";
1505 case SpnValue::PRO_PIDRefPIDErr_PIDErr_Velocity: return "The difference between target velocity and current velocity";
1506 case SpnValue::PRO_PIDOutput_ProportionalOutput_DC: return "Proportional output of PID controller when PID'ing under a DutyCycle Request";
1507 case SpnValue::PRO_PIDOutput_ProportionalOutput_V: return "Proportional output of PID controller when PID'ing under a Voltage Request";
1508 case SpnValue::PRO_PIDOutput_ProportionalOutput_A: return "Proportional output of PID controller when PID'ing under a TorqueCurrent Request";
1509 case SpnValue::PRO_PIDOutput_DerivativeOutput_DC: return "Derivative Output of PID controller when PID'ing under a DutyCycle Request";
1510 case SpnValue::PRO_PIDOutput_DerivativeOutput_V: return "Derivative Output of PID controller when PID'ing under a Voltage Request";
1511 case SpnValue::PRO_PIDOutput_DerivativeOutput_A: return "Derivative Output of PID controller when PID'ing under a TorqueCurrent Request";
1512 case SpnValue::PRO_PIDOutput_Output_DC: return "Output of PID controller when PID'ing under a DutyCycle Request";
1513 case SpnValue::PRO_PIDOutput_Output_V: return "Output of PID controller when PID'ing under a Voltage Request";
1514 case SpnValue::PRO_PIDOutput_Output_A: return "Output of PID controller when PID'ing under a TorqueCurrent Request";
1515 case SpnValue::PRO_PIDOutput_Slot: return "Closed loop slot in use";
1516 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Position: return "Change in input (velocity) of PID controller when PID'ing to a position";
1517 case SpnValue::PRO_PIDRefSlopeECUTime_ReferenceSlope_Velocity: return "Change in input (acceleration) of PID controller when PID'ing to a velocity";
1518 case SpnValue::PRO_MotorOutput_PIDState_Diff_DutyCycle: return "The calculated motor duty cycle for differential followers.";
1519 case SpnValue::PRO_MotorOutput_PIDState_Diff_TorqueCurrent: return "The calculated motor torque current for differential followers.";
1520 case SpnValue::TalonFX_DifferentialControlMode: return "The active control mode of the differential controller";
1521 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_DC: return "Integrated Accumulator of differential PID controller when PID'ing under a DutyCycle Request";
1522 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_V: return "Integrated Accumulator of differential PID controller when PID'ing under a Voltage Request";
1523 case SpnValue::PRO_MotorOutput_PIDState_Diff_IntegratedAccum_A: return "Integrated Accumulator of differential PID controller when PID'ing under a TorqueCurrent Request";
1524 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_DC: return "Feedforward passed to differential PID controller";
1525 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_V: return "Feedforward passed to differential PID controller";
1526 case SpnValue::PRO_MotorOutput_PIDState_Diff_FeedForward_A: return "Feedforward passed to differential PID controller";
1527 case SpnValue::PRO_AvgPosAndVel_Velocity: return "Average component of the differential velocity of device.";
1528 case SpnValue::PRO_AvgPosAndVel_Position: return "Average component of the differential position of device.";
1529 case SpnValue::PRO_DiffPosAndVel_Velocity: return "Difference component of the differential velocity of device.";
1530 case SpnValue::PRO_DiffPosAndVel_Position: return "Difference component of the differential position of device.";
1531 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Position: return "Input position of differential PID controller when PID'ing to a differential position";
1532 case SpnValue::PRO_DiffPIDRefPIDErr_PIDRef_Velocity: return "Input velocity of differential PID controller when PID'ing to a differential velocity";
1533 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Position: return "The difference between target differential position and current differential position";
1534 case SpnValue::PRO_DiffPIDRefPIDErr_PIDErr_Velocity: return "The difference between target differential velocity and current differential velocity";
1535 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_DC: return "Proportional output of differential PID controller when PID'ing under a DutyCycle Request";
1536 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_V: return "Proportional output of differential PID controller when PID'ing under a Voltage Request";
1537 case SpnValue::PRO_DiffPIDOutput_ProportionalOutput_A: return "Proportional output of differential PID controller when PID'ing under a TorqueCurrent Request";
1538 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_DC: return "Derivative Output of differential PID controller when PID'ing under a DutyCycle Request";
1539 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_V: return "Derivative Output of differential PID controller when PID'ing under a Voltage Request";
1540 case SpnValue::PRO_DiffPIDOutput_DerivativeOutput_A: return "Derivative Output of differential PID controller when PID'ing under a TorqueCurrent Request";
1541 case SpnValue::PRO_DiffPIDOutput_Output_DC: return "Output of differential PID controller when PID'ing under a DutyCycle Request";
1542 case SpnValue::PRO_DiffPIDOutput_Output_V: return "Output of differential PID controller when PID'ing under a Voltage Request";
1543 case SpnValue::PRO_DiffPIDOutput_Output_A: return "Output of differential PID controller when PID'ing under a TorqueCurrent Request";
1544 case SpnValue::PRO_DiffPIDOutput_Slot: return "Differential Closed loop slot in use";
1545 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Position: return "Change in input (velocity) of differential PID controller when PID'ing to a differential position";
1546 case SpnValue::PRO_DiffPIDRefSlopeECUTime_ReferenceSlope_Velocity: return "Change in input (acceleration) of differential PID controller when PID'ing to a differential velocity";
1547 case SpnValue::Slot0_kP: return "Proportional Gain";
1548 case SpnValue::Slot0_kI: return "Integral Gain";
1549 case SpnValue::Slot0_kD: return "Derivative Gain";
1550 case SpnValue::Slot0_kS: return "Static Feedforward Gain";
1551 case SpnValue::Slot0_kV: return "Velocity Feedforward Gain";
1552 case SpnValue::Slot0_kA: return "Acceleration Feedforward Gain";
1553 case SpnValue::Slot0_kG: return "Gravity Feedforward/Feedback Gain";
1554 case SpnValue::Slot0_kG_Type: return "Gravity Feedforward/Feedback Type";
1555 case SpnValue::Slot1_kP: return "Proportional Gain";
1556 case SpnValue::Slot1_kI: return "Integral Gain";
1557 case SpnValue::Slot1_kD: return "Derivative Gain";
1558 case SpnValue::Slot1_kS: return "Static Feedforward Gain";
1559 case SpnValue::Slot1_kV: return "Velocity Feedforward Gain";
1560 case SpnValue::Slot1_kA: return "Acceleration Feedforward Gain";
1561 case SpnValue::Slot1_kG: return "Gravity Feedforward/Feedback Gain";
1562 case SpnValue::Slot1_kG_Type: return "Gravity Feedforward/Feedback Type";
1563 case SpnValue::Slot2_kP: return "Proportional Gain";
1564 case SpnValue::Slot2_kI: return "Integral Gain";
1565 case SpnValue::Slot2_kD: return "Derivative Gain";
1566 case SpnValue::Slot2_kS: return "Static Feedforward Gain";
1567 case SpnValue::Slot2_kV: return "Velocity Feedforward Gain";
1568 case SpnValue::Slot2_kA: return "Acceleration Feedforward Gain";
1569 case SpnValue::Slot2_kG: return "Gravity Feedforward/Feedback Gain";
1570 case SpnValue::Slot2_kG_Type: return "Gravity Feedforward/Feedback Type";
1571 case SpnValue::Config_Inverted: return "Invert state of the device.";
1572 case SpnValue::Config_SupplyVLowpassTau: return "The time constant (in seconds) of the low-pass filter for the supply voltage.";
1573 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.";
1574 case SpnValue::Config_NeutralMode: return "The state of the motor controller bridge when output is neutral or disabled.";
1575 case SpnValue::Config_DutyCycleNeutralDB: return "Configures the output deadband duty cycle during duty cycle and voltage based control modes.";
1576 case SpnValue::Config_StatorCurrentLimit: return "The amount of current allowed in the motor (motoring and regen current). Note this requires StatorCurrentLimitEnable to be true.\nThis is only applicable for non-torque current control modes. For torque current control, set the PeakForwardTorqueCurrent and PeakReverseTorqueCurrent in TorqueCurrentConfigs instead.\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.";
1577 case SpnValue::Config_StatorCurrLimitEn: return "Enable motor stator current limiting.";
1578 case SpnValue::Config_SupplyCurrentLimit: return "The amount of supply current allowed. Note this requires SupplyCurrentLimitEnable to be true. Use SupplyCurrentThreshold and SupplyTimeThreshold to allow brief periods of high-current before limiting occurs.\nThis is only applicable for non-torque current control modes. For torque current control, set the PeakForwardTorqueCurrent and PeakReverseTorqueCurrent in TorqueCurrentConfigs instead.\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 the rare case where the robot experiences brownouts despite configuring stator current limits, a supply current limit can further help avoid brownouts. However, such brownouts are most commonly caused by a bad battery or poor power wiring.\nA reasonable starting point for a supply current limit is 60 A with a threshold of 80 A for 0.1 seconds. Supply current limits commonly range from 20-80 A depending on the breaker used.";
1579 case SpnValue::Config_SupplyCurrLimitEn: return "Enable motor supply current limiting.";
1580 case SpnValue::Config_PeakForwardDC: return "Maximum (forward) output during duty cycle based control modes.";
1581 case SpnValue::Config_PeakReverseDC: return "Minimum (reverse) output during duty cycle based control modes.";
1582 case SpnValue::Config_PeakForwardV: return "Maximum (forward) output during voltage based control modes.";
1583 case SpnValue::Config_PeakReverseV: return "Minimum (reverse) output during voltage based control modes.";
1584 case SpnValue::Config_PeakForTorqCurr: return "Maximum (forward) output during torque current based control modes.";
1585 case SpnValue::Config_PeakRevTorqCurr: return "Minimum (reverse) output during torque current based control modes.";
1586 case SpnValue::Config_TorqueNeutralDB: return "Configures the output deadband during torque current based control modes.";
1587 case SpnValue::Config_FeedbackRotorOffset: return "This offset is applied to the absolute integrated rotor sensor. This can be used to zero the rotor in applications that are within one rotor rotation.";
1588 case SpnValue::Config_SensorToMechanismRatio: return "This is the ratio of sensor rotations to the mechanism's output. This 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. Note if this is set to zero, device will reset back to one.";
1589 case SpnValue::Config_RotorToSensorRatio: return "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 remote sensor and the motor rotor. Note if this is set to zero, device will reset back to one.";
1590 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 FX.\nChoose RemoteCANcoder to use another CANcoder on the same CAN bus (this also requires setting FeedbackRemoteSensorID). Talon FX will update its position and velocity whenever CANcoder publishes its information on CAN bus.\nChoose FusedCANcoder (requires Phoenix Pro) and Talon FX will fuse another CANcoder's information with the internal rotor, which provides the best possible position and velocity for accuracy and bandwidth (this also requires setting FeedbackRemoteSensorID). FusedCANcoder was developed for applications such as swerve-azimuth.\nChoose SyncCANcoder (requires Phoenix Pro) and Talon FX will synchronize its internal rotor position against another CANcoder, then continue to use the rotor sensor for closed loop control (this also requires setting FeedbackRemoteSensorID). The TalonFX will report if its internal position differs significantly from the reported CANcoder position. SyncCANcoder was developed for mechanisms where there is a risk of the CANcoder 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 FX will update its position to match the selected value whenever Pigeon2 publishes its information on CAN bus. Note that the Talon FX position will be in rotations and not degrees.";
1591 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.";
1592 case SpnValue::Config_DutyCycleOpenLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0% output to 100% during open-loop modes.";
1593 case SpnValue::Config_VoltageOpenLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0V output to 12V during open-loop modes.";
1594 case SpnValue::Config_TorqueOpenLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0A output to 300A during open-loop modes.";
1595 case SpnValue::Config_DutyCycleClosedLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0% output to 100% during closed-loop modes.";
1596 case SpnValue::Config_VoltageClosedLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0V output to 12V during closed-loop modes.";
1597 case SpnValue::Config_TorqueClosedLoopRampPeriod: return "If non-zero, this determines how much time to ramp from 0A output to 300A during closed-loop modes.";
1598 case SpnValue::Config_ForwardLimitType: return "Determines if the forward limit switch is normally-open (default) or normally-closed.";
1599 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.";
1600 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.";
1601 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.";
1602 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).";
1603 case SpnValue::Config_ForwardLimitRemoteSensorID: return "Device ID of the remote device if using remote limit switch features for the forward limit switch.";
1604 case SpnValue::Config_ReverseLimitType: return "Determines if the reverse limit switch is normally-open (default) or normally-closed.";
1605 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.";
1606 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.";
1607 case SpnValue::Config_ReverseLimitEnable: return "If enabled, motor output is set to neutral when reverse limit switch is asseted and negative output is requested.";
1608 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).";
1609 case SpnValue::Config_ReverseLimitRemoteSensorID: return "Device ID of the remote device if using remote limit switch features for the reverse limit switch.";
1610 case SpnValue::Config_ForwardSoftLimitEnable: return "If enabled, the motor output is set to neutral if position exceeds ForwardSoftLimitThreshold and forward output is requested.";
1611 case SpnValue::Config_ReverseSoftLimitEnable: return "If enabled, the motor output is set to neutral if position exceeds ReverseSoftLimitThreshold and reverse output is requested.";
1612 case SpnValue::Config_ForwardSoftLimitThreshold: return "Position threshold for forward soft limit features. ForwardSoftLimitEnable must be enabled for this to take effect.";
1613 case SpnValue::Config_ReverseSoftLimitThreshold: return "Position threshold for reverse soft limit features. ReverseSoftLimitEnable must be enabled for this to take effect.";
1614 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. When 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.";
1615 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.";
1616 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® support of S-Curves. If this is set to zero, then Motion Magic® will not apply a Jerk limit.";
1617 case SpnValue::Config_MotionMagicExpo_kV: return "This is the target kV used only by Motion Magic® Expo control modes, in units of V/rps. This 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. A kV of 0 will be promoted to a reasonable default of 0.12.";
1618 case SpnValue::Config_MotionMagicExpo_kA: return "This is the target kA used only by Motion Magic® Expo control modes, in units of V/rps². This 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. A kA of 0 will be promoted to a reasonable default of 0.1.";
1619 case SpnValue::Config_PeakDiffDC: return "Maximum differential output during duty cycle based differential control modes.";
1620 case SpnValue::Config_PeakDiffV: return "Maximum differential output during voltage based differential control modes.";
1621 case SpnValue::Config_PeakDiffTorqCurr: return "Maximum differential output during torque current based differential control modes.";
1622 case SpnValue::CANcoder_Velocity: return "Velocity of the device.";
1623 case SpnValue::CANcoder_Position: return "Position of the device. This is initialized to the absolute position on boot.";
1624 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 AbsoluteSensorRange. This position is only affected by the MagnetSensor configs.";
1625 case SpnValue::CANCoder_RawVel: return "The unfiltered velocity reported by CANcoder.";
1626 case SpnValue::CANCoder_RawPos: return "The relative position reported by the CANcoder since boot.";
1627 case SpnValue::CANCoder_SupplyVoltage: return "Measured supply voltage to the CANcoder.";
1628 case SpnValue::CANcoder_MagHealth: return "Magnet health as measured by CANcoder.";
1629 case SpnValue::SPN_ClearStickyFaults: return "Clear the sticky faults in the device.";
1630 case SpnValue::PRO_MotorOutput_BridgeType_Public: return "The applied output of the bridge.";
1631 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.";
1632 case SpnValue::Config_SupplyCurrThres: return "Delay supply current limiting until current exceeds this threshold for longer than SupplyTimeThreshold. This allows current draws above SupplyCurrentLimit for a fixed period of time. This has no effect if SupplyCurrentLimit is greater than this value.";
1633 case SpnValue::Config_SupplyTimeThres: return "Allows unlimited current for a period of time before current limiting occurs. Current threshold is the maximum of SupplyCurrentThreshold and SupplyCurrentLimit.";
1634 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.";
1635 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.";
1636 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.";
1637 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.";
1638 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.";
1639 case SpnValue::Compliancy_Version: return "Compliancy number.";
1640 case SpnValue::Version_IsProLicensed: return "Whether the device is Phoenix Pro licensed.";
1641 case SpnValue::PRO_SupplyAndTemp_DeviceTemp2: return "Temperature of device from second sensor";
1642 case SpnValue::Slot0_kS_Sign: return "Static Feedforward Sign during position closed loop";
1643 case SpnValue::Slot1_kS_Sign: return "Static Feedforward Sign during position closed loop";
1644 case SpnValue::Slot2_kS_Sign: return "Static Feedforward Sign during position closed loop";
1645 case SpnValue::TalonFX_MotorType: return "The type of motor attached to the Talon FX";
1646 case SpnValue::TalonFX_MotorOutputStatus: return "Assess the status of the motor output with respect to load and supply.";
1647 case SpnValue::Fault_Hardware: return "Hardware fault occurred";
1648 case SpnValue::StickyFault_Hardware: return "Hardware fault occurred";
1649 case SpnValue::ClearStickyFault_Hardware: return "Clear sticky fault: Hardware fault occurred";
1650 case SpnValue::Fault_ProcTemp: return "Processor temperature exceeded limit";
1651 case SpnValue::StickyFault_ProcTemp: return "Processor temperature exceeded limit";
1652 case SpnValue::ClearStickyFault_ProcTemp: return "Clear sticky fault: Processor temperature exceeded limit";
1653 case SpnValue::Fault_DeviceTemp: return "Device temperature exceeded limit";
1654 case SpnValue::StickyFault_DeviceTemp: return "Device temperature exceeded limit";
1655 case SpnValue::ClearStickyFault_DeviceTemp: return "Clear sticky fault: Device temperature exceeded limit";
1656 case SpnValue::Fault_Undervoltage: return "Device supply voltage dropped to near brownout levels";
1657 case SpnValue::StickyFault_Undervoltage: return "Device supply voltage dropped to near brownout levels";
1658 case SpnValue::ClearStickyFault_Undervoltage: return "Clear sticky fault: Device supply voltage dropped to near brownout levels";
1659 case SpnValue::Fault_BootDuringEnable: return "Device boot while detecting the enable signal";
1660 case SpnValue::StickyFault_BootDuringEnable: return "Device boot while detecting the enable signal";
1661 case SpnValue::ClearStickyFault_BootDuringEnable: return "Clear sticky fault: Device boot while detecting the enable signal";
1662 case SpnValue::Fault_UnlicensedFeatureInUse: return "An unlicensed feature is in use, device may not behave as expected.";
1663 case SpnValue::StickyFault_UnlicensedFeatureInUse: return "An unlicensed feature is in use, device may not behave as expected.";
1664 case SpnValue::Fault_PIGEON2_BootupAccel: return "Bootup checks failed: Accelerometer";
1665 case SpnValue::StickyFault_PIGEON2_BootupAccel: return "Bootup checks failed: Accelerometer";
1666 case SpnValue::ClearStickyFault_PIGEON2_BootupAccel: return "Clear sticky fault: Bootup checks failed: Accelerometer";
1667 case SpnValue::Fault_PIGEON2_BootupGyros: return "Bootup checks failed: Gyroscope";
1668 case SpnValue::StickyFault_PIGEON2_BootupGyros: return "Bootup checks failed: Gyroscope";
1669 case SpnValue::ClearStickyFault_PIGEON2_BootupGyros: return "Clear sticky fault: Bootup checks failed: Gyroscope";
1670 case SpnValue::Fault_PIGEON2_BootupMagne: return "Bootup checks failed: Magnetometer";
1671 case SpnValue::StickyFault_PIGEON2_BootupMagne: return "Bootup checks failed: Magnetometer";
1672 case SpnValue::ClearStickyFault_PIGEON2_BootupMagne: return "Clear sticky fault: Bootup checks failed: Magnetometer";
1673 case SpnValue::Fault_PIGEON2_BootIntoMotion: return "Motion Detected during bootup.";
1674 case SpnValue::StickyFault_PIGEON2_BootIntoMotion: return "Motion Detected during bootup.";
1675 case SpnValue::ClearStickyFault_PIGEON2_BootIntoMotion: return "Clear sticky fault: Motion Detected during bootup.";
1676 case SpnValue::Fault_PIGEON2_DataAcquiredLate: return "Motion stack data acquisition was slower than expected";
1677 case SpnValue::StickyFault_PIGEON2_DataAcquiredLate: return "Motion stack data acquisition was slower than expected";
1678 case SpnValue::ClearStickyFault_PIGEON2_DataAcquiredLate: return "Clear sticky fault: Motion stack data acquisition was slower than expected";
1679 case SpnValue::Fault_PIGEON2_LoopTimeSlow: return "Motion stack loop time was slower than expected.";
1680 case SpnValue::StickyFault_PIGEON2_LoopTimeSlow: return "Motion stack loop time was slower than expected.";
1681 case SpnValue::ClearStickyFault_PIGEON2_LoopTimeSlow: return "Clear sticky fault: Motion stack loop time was slower than expected.";
1682 case SpnValue::Fault_PIGEON2_SaturatedMagne: return "Magnetometer values are saturated";
1683 case SpnValue::StickyFault_PIGEON2_SaturatedMagne: return "Magnetometer values are saturated";
1684 case SpnValue::ClearStickyFault_PIGEON2_SaturatedMagne: return "Clear sticky fault: Magnetometer values are saturated";
1685 case SpnValue::Fault_PIGEON2_SaturatedAccel: return "Accelerometer values are saturated";
1686 case SpnValue::StickyFault_PIGEON2_SaturatedAccel: return "Accelerometer values are saturated";
1687 case SpnValue::ClearStickyFault_PIGEON2_SaturatedAccel: return "Clear sticky fault: Accelerometer values are saturated";
1688 case SpnValue::Fault_PIGEON2_SaturatedGyros: return "Gyroscope values are saturated";
1689 case SpnValue::StickyFault_PIGEON2_SaturatedGyros: return "Gyroscope values are saturated";
1690 case SpnValue::ClearStickyFault_PIGEON2_SaturatedGyros: return "Clear sticky fault: Gyroscope values are saturated";
1691 case SpnValue::Fault_CANCODER_BadMagnet: return "The magnet distance is not correct or magnet is missing";
1692 case SpnValue::StickyFault_CANCODER_BadMagnet: return "The magnet distance is not correct or magnet is missing";
1693 case SpnValue::ClearStickyFault_CANCODER_BadMagnet: return "Clear sticky fault: The magnet distance is not correct or magnet is missing";
1694 case SpnValue::Fault_TALONFX_BridgeBrownout: return "Bridge was disabled most likely due to supply voltage dropping too low.";
1695 case SpnValue::StickyFault_TALONFX_BridgeBrownout: return "Bridge was disabled most likely due to supply voltage dropping too low.";
1696 case SpnValue::ClearStickyFault_TALONFX_BridgeBrownout: return "Clear sticky fault: Bridge was disabled most likely due to supply voltage dropping too low.";
1697 case SpnValue::Fault_TALONFX_RemoteSensorReset: return "The remote sensor has reset.";
1698 case SpnValue::StickyFault_TALONFX_RemoteSensorReset: return "The remote sensor has reset.";
1699 case SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset: return "Clear sticky fault: The remote sensor has reset.";
1700 case SpnValue::Fault_TALONFX_MissingDifferentialFX: return "The remote Talon FX used for differential control is not present on CAN Bus.";
1701 case SpnValue::StickyFault_TALONFX_MissingDifferentialFX: return "The remote Talon FX used for differential control is not present on CAN Bus.";
1702 case SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX: return "Clear sticky fault: The remote Talon FX used for differential control is not present on CAN Bus.";
1703 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.";
1704 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.";
1705 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.";
1706 case SpnValue::Fault_TALONFX_OverSupplyV: return "Supply Voltage has exceeded the maximum voltage rating of device.";
1707 case SpnValue::StickyFault_TALONFX_OverSupplyV: return "Supply Voltage has exceeded the maximum voltage rating of device.";
1708 case SpnValue::ClearStickyFault_TALONFX_OverSupplyV: return "Clear sticky fault: Supply Voltage has exceeded the maximum voltage rating of device.";
1709 case SpnValue::Fault_TALONFX_UnstableSupplyV: return "Supply Voltage is unstable. Ensure you are using a battery and current limited power supply.";
1710 case SpnValue::StickyFault_TALONFX_UnstableSupplyV: return "Supply Voltage is unstable. Ensure you are using a battery and current limited power supply.";
1711 case SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV: return "Clear sticky fault: Supply Voltage is unstable. Ensure you are using a battery and current limited power supply.";
1712 case SpnValue::Fault_TALONFX_ReverseHardLimit: return "Reverse limit switch has been asserted. Output is set to neutral.";
1713 case SpnValue::StickyFault_TALONFX_ReverseHardLimit: return "Reverse limit switch has been asserted. Output is set to neutral.";
1714 case SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit: return "Clear sticky fault: Reverse limit switch has been asserted. Output is set to neutral.";
1715 case SpnValue::Fault_TALONFX_ForwardHardLimit: return "Forward limit switch has been asserted. Output is set to neutral.";
1716 case SpnValue::StickyFault_TALONFX_ForwardHardLimit: return "Forward limit switch has been asserted. Output is set to neutral.";
1717 case SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit: return "Clear sticky fault: Forward limit switch has been asserted. Output is set to neutral.";
1718 case SpnValue::Fault_TALONFX_ReverseSoftLimit: return "Reverse soft limit has been asserted. Output is set to neutral.";
1719 case SpnValue::StickyFault_TALONFX_ReverseSoftLimit: return "Reverse soft limit has been asserted. Output is set to neutral.";
1720 case SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit: return "Clear sticky fault: Reverse soft limit has been asserted. Output is set to neutral.";
1721 case SpnValue::Fault_TALONFX_ForwardSoftLimit: return "Forward soft limit has been asserted. Output is set to neutral.";
1722 case SpnValue::StickyFault_TALONFX_ForwardSoftLimit: return "Forward soft limit has been asserted. Output is set to neutral.";
1723 case SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit: return "Clear sticky fault: Forward soft limit has been asserted. Output is set to neutral.";
1724 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.";
1725 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.";
1726 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.";
1727 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.";
1728 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.";
1729 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.";
1730 case SpnValue::Fault_TALONFX_StatorCurrLimit: return "Stator current limit occured.";
1731 case SpnValue::StickyFault_TALONFX_StatorCurrLimit: return "Stator current limit occured.";
1732 case SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit: return "Clear sticky fault: Stator current limit occured.";
1733 case SpnValue::Fault_TALONFX_SupplyCurrLimit: return "Supply current limit occured.";
1734 case SpnValue::StickyFault_TALONFX_SupplyCurrLimit: return "Supply current limit occured.";
1735 case SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit: return "Clear sticky fault: Supply current limit occured.";
1736 case SpnValue::Fault_TALONFX_UsingFusedCCWhileUnlicensed: return "Using Fused CANcoder feature while unlicensed. Device has fallen back to remote CANcoder.";
1737 case SpnValue::StickyFault_TALONFX_UsingFusedCCWhileUnlicensed: return "Using Fused CANcoder feature while unlicensed. Device has fallen back to remote CANcoder.";
1738 case SpnValue::Fault_TALONFX_StaticBrakeDisabled: return "Static brake was momentarily disabled due to excessive braking current while disabled.";
1739 case SpnValue::StickyFault_TALONFX_StaticBrakeDisabled: return "Static brake was momentarily disabled due to excessive braking current while disabled.";
1740 default:
1741 return "Invalid Value";
1742 }
1743 }
1744
1745 friend std::ostream &operator<<(std::ostream &os, const SpnValue &data)
1746 {
1747 os << data.ToString();
1748 return os;
1749 }
1750 bool operator==(const SpnValue &data) const
1751 {
1752 return this->value == data.value;
1753 }
1754 bool operator==(int data) const
1755 {
1756 return this->value == data;
1757 }
1758 bool operator<(const SpnValue &data) const
1759 {
1760 return this->value < data.value;
1761 }
1762 bool operator<(int data) const
1763 {
1764 return this->value < data;
1765 }
1766 };
1767 }
1768 }
1769}
Definition: string_util.hpp:15