CTRE Phoenix 6 C++ 26.50.0-alpha-1
Loading...
Searching...
No Matches
StatusCodes.h
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#ifdef __cplusplus
10
11/* Make sure this is still compiled with C++ linkage
12 * when included from an `extern "C"` block */
13extern "C++" {
14
15#if __has_include("ctre/phoenix/export.h")
16#include "ctre/phoenix/export.h"
17#endif
18#include <compare>
19#include <iosfwd>
20
21namespace ctre {
22namespace phoenix {
23
24 /**
25 * \brief Status codes reported by APIs, including OK,
26 * warnings, and errors.
27 */
28 class StatusCode {
29 int value;
30
31 public:
32 /**
33 * \brief No Error
34 */
35 static constexpr int OK = 0;
36 /**
37 * \brief Diagnostic Server is busy with another command.
38 */
39 static constexpr int TaskIsBusy = -100;
40 /**
41 * \brief InvalidDeviceSpec
42 */
43 static constexpr int InvalidDeviceSpec = -101;
44 /**
45 * \brief Device is not present. Verify the device is connected and powered, and
46 * that the CAN bus is terminated.
47 */
48 static constexpr int EcuIsNotPresent = -102;
49 /**
50 * \brief Could not put the device into bootloader mode.
51 */
52 static constexpr int CouldNotEnterBl = -103;
53 /**
54 * \brief Could not confirm the device has entered the bootloader.
55 */
56 static constexpr int CouldNotConfirmBl = -104;
57 /**
58 * \brief Could not erase flash.
59 */
60 static constexpr int CouldNotErase = -105;
61 /**
62 * \brief Could not field upgrade the device.
63 */
64 static constexpr int CouldNotSendFlash = -106;
65 /**
66 * \brief Bootloader could not verify integrity of the flashed application.
67 */
68 static constexpr int CouldNotValidate = -107;
69 /**
70 * \brief Could not run the device firmware application.
71 */
72 static constexpr int CouldNotRunApp = -108;
73 /**
74 * \brief Unable to set ID to this device. Confirm that this action is valid for
75 * this device and the ID is valid (0-62).
76 */
77 static constexpr int CouldNotReqSetId = -109;
78 /**
79 * \brief Could not verify that the changed ID took effect.
80 */
81 static constexpr int CouldNotConfirmId = -110;
82 /**
83 * \brief Device field upgrade was successful.
84 */
85 static constexpr int FlashWasGood = -111;
86 /**
87 * \brief Device firmware application is too old.
88 */
89 static constexpr int AppTooOld = -112;
90 /**
91 * \brief Unable to set name to this device.
92 */
93 static constexpr int CouldNotReqSetDesc = -113;
94 /**
95 * \brief CompileSzIsWrong
96 */
97 static constexpr int CompileSzIsWrong = -114;
98 /**
99 * \brief Cannot set the ID of a gadgeteer device.
100 */
101 static constexpr int GadgeteerDeviceNoSetId = -115;
102 /**
103 * \brief This diagnostic action is not supported.
104 */
105 static constexpr int InvalidTask = -116;
106 /**
107 * \brief Not Implemented, check latest installer.
108 */
109 static constexpr int NotImplemented = -117;
110 /**
111 * \brief NoDevicesOnBus
112 */
113 static constexpr int NoDevicesOnBus = -118;
114 /**
115 * \brief MoreThanOneFile
116 */
117 static constexpr int MoreThanOneFile = -119;
118 /**
119 * \brief Specified device was not found. Verify the device is connected and
120 * powered, and that the CAN bus is terminated.
121 */
122 static constexpr int NodeIsInvalid = -120;
123 /**
124 * \brief InvalidDeviceDescriptor
125 */
126 static constexpr int InvalidDeviceDescriptor = -121;
127 /**
128 * \brief CouldNotSendCanFrame
129 */
130 static constexpr int CouldNotSendCanFrame = -123;
131 /**
132 * \brief NormalModeMsgNotPresent
133 */
134 static constexpr int NormalModeMsgNotPresent = -124;
135 /**
136 * \brief This feature is not supported.
137 */
138 static constexpr int FeatureNotSupported = -125;
139 /**
140 * \brief The diagnostic server is not field upgrading any devices.
141 */
142 static constexpr int NotUpdating = -126;
143 /**
144 * \brief CorruptedPOST
145 */
146 static constexpr int CorruptedPOST = -127;
147 /**
148 * \brief This device did not report any available configs. Verify firmware and
149 * diagnostics are up-to-date.
150 */
151 static constexpr int NoConfigs = -128;
152 /**
153 * \brief ConfigFailed
154 */
155 static constexpr int ConfigFailed = -129;
156 /**
157 * \brief Unable to factory default this device.
158 */
159 static constexpr int CouldNotReqFactoryDefault = -130;
160 /**
161 * \brief CustomNameNotSupported
162 */
163 static constexpr int CustomNameNotSupported = -131;
164 /**
165 * \brief The configs read from the device do not match the configs that were
166 * written.
167 */
168 static constexpr int ConfigReadWriteMismatch = -132;
169 /**
170 * \brief Could not apply the device configs.
171 */
172 static constexpr int CouldNotReqSetConfigs = -133;
173 /**
174 * \brief InsufficientSz
175 */
176 static constexpr int InsufficientSz = -134;
177 /**
178 * \brief This feature is not supported for this device model.
179 */
180 static constexpr int InvalidModel = -135;
181 /**
182 * \brief CouldNotReqDevInfo
183 */
184 static constexpr int CouldNotReqDevInfo = -140;
185 /**
186 * \brief This device does not support new controls.
187 */
188 static constexpr int NoControls = -141;
189 /**
190 * \brief DeviceIsNull
191 */
192 static constexpr int DeviceIsNull = -142;
193 /**
194 * \brief DeviceDidNotRespondToDiagReq
195 */
196 static constexpr int DeviceDidNotRespondToDiagReq = -143;
197 /**
198 * \brief This feature requires Tuner X.
199 */
200 static constexpr int OnlySupportedInTunerX = -144;
201 /**
202 * \brief Command-line issue with caniv.
203 */
204 static constexpr int CanivCliError = -145;
205 /**
206 * \brief InvalidCrfBadHeader
207 */
208 static constexpr int InvalidCrfBadHeader = -200;
209 /**
210 * \brief InvalidCrfFileSzInvald
211 */
212 static constexpr int InvalidCrfFileSzInvald = -201;
213 /**
214 * \brief Specified CRF is for the wrong product.
215 */
216 static constexpr int InvalidCrfWrongProduct = -202;
217 /**
218 * \brief InvalidCrfNoSects
219 */
220 static constexpr int InvalidCrfNoSects = -203;
221 /**
222 * \brief InvalidCrfBadSectHeader
223 */
224 static constexpr int InvalidCrfBadSectHeader = -204;
225 /**
226 * \brief InvalidCrfBadSectSize
227 */
228 static constexpr int InvalidCrfBadSectSize = -205;
229 /**
230 * \brief Specified CRF file could not be found.
231 */
232 static constexpr int NoCrfFile = -206;
233 /**
234 * \brief CouldNotFindDynamicId
235 */
236 static constexpr int CouldNotFindDynamicId = -300;
237 /**
238 * \brief DidNotGetDhcp
239 */
240 static constexpr int DidNotGetDhcp = -301;
241 /**
242 * \brief DidNotGetFullDhcp
243 */
244 static constexpr int DidNotGetFullDhcp = -302;
245 /**
246 * \brief InvalidLicenseResp
247 */
248 static constexpr int InvalidLicenseResp = -350;
249 /**
250 * \brief InvalidCanivCache
251 */
252 static constexpr int InvalidCanivCache = -351;
253 /**
254 * \brief CannotOpenSerialPort
255 */
256 static constexpr int CannotOpenSerialPort = -500;
257 /**
258 * \brief CannotWriteSerialPort
259 */
260 static constexpr int CannotWriteSerialPort = -501;
261 /**
262 * \brief CannotReadSerialPort
263 */
264 static constexpr int CannotReadSerialPort = -502;
265 /**
266 * \brief CannotSerialToDevice
267 */
268 static constexpr int CannotSerialToDevice = -503;
269 /**
270 * \brief NoSerialControlFrameResp
271 */
272 static constexpr int NoSerialControlFrameResp = -504;
273 /**
274 * \brief CannotOpenUdpPort
275 */
276 static constexpr int CannotOpenUdpPort = -600;
277 /**
278 * \brief CannotWriteUdpPort
279 */
280 static constexpr int CannotWriteUdpPort = -601;
281 /**
282 * \brief CannotReadUdpPort
283 */
284 static constexpr int CannotReadUdpPort = -602;
285 /**
286 * \brief CannotUdpToDevice
287 */
288 static constexpr int CannotUdpToDevice = -603;
289 /**
290 * \brief NoUdpControlFrameResp
291 */
292 static constexpr int NoUdpControlFrameResp = -604;
293 /**
294 * \brief TimeoutIso15Response
295 */
296 static constexpr int TimeoutIso15Response = -605;
297 /**
298 * \brief InvalidJson
299 */
300 static constexpr int InvalidJson = -700;
301 /**
302 * \brief The user application is shutting down.
303 */
304 static constexpr int AppIsTerminating = -800;
305 /**
306 * \brief CAN message is stale, data is valid but old. Check the CAN bus wiring,
307 * CAN bus utilization, and power to the device.
308 */
309 static constexpr int CanMessageStale = 1000;
310 /**
311 * \brief Buffer is full, cannot insert more data.
312 */
313 static constexpr int BufferFull = 1006;
314 /**
315 * \brief PulseWidthSensorNotPresent
316 */
317 static constexpr int PulseWidthSensorNotPresent = 1010;
318 /**
319 * \brief General Warning Occurred.
320 */
321 static constexpr int GeneralWarning = 1100;
322 /**
323 * \brief Firm Vers could not be retrieved. Use Phoenix Tuner X to check ID and
324 * firmware(CRF) version.
325 */
326 static constexpr int FirmVersionCouldNotBeRetrieved = 1103;
327 /**
328 * \brief This feature will be supported in a future update.
329 */
330 static constexpr int FeaturesNotAvailableYet = 1104;
331 /**
332 * \brief The control mode is not valid for this function.
333 */
334 static constexpr int ControlModeNotValid = 1105;
335 /**
336 * \brief This control mode is not supported yet. A future release will
337 * supported this soon.
338 */
339 static constexpr int ControlModeNotSupportedYet = 1106;
340 /**
341 * \brief Motor Controller must have >= 3.2 firmware for motion profile control
342 * mode.
343 */
344 static constexpr int MotProfFirmThreshold = 1109;
345 /**
346 * \brief Motor Controller must have >= 3.4 firmware for advanced PID0/PID1
347 * features.
348 */
349 static constexpr int MotProfFirmThreshold2 = 1110;
350 /**
351 * \brief SimDeviceNotFound
352 */
353 static constexpr int SimDeviceNotFound = 1200;
354 /**
355 * \brief SimPhysicsTypeNotSupported
356 */
357 static constexpr int SimPhysicsTypeNotSupported = 1201;
358 /**
359 * \brief SimDeviceAlreadyExists
360 */
361 static constexpr int SimDeviceAlreadyExists = 1202;
362 /**
363 * \brief Could not transmit CAN Frame.
364 */
365 static constexpr int TxFailed = -1001;
366 /**
367 * \brief An invalid argument was passed into the function/VI, such as a null
368 * pointer.
369 */
370 static constexpr int InvalidParamValue = -1002;
371 /**
372 * \brief CAN frame not received/too-stale. Check the CAN bus wiring, CAN bus
373 * utilization, and power to the device.
374 */
375 static constexpr int RxTimeout = -1003;
376 /**
377 * \brief CAN Transmit timed out.
378 */
379 static constexpr int TxTimeout = -1004;
380 /**
381 * \brief ArbID is incorrect.
382 */
383 static constexpr int UnexpectedArbId = -1005;
384 /**
385 * \brief CanOverflowed
386 */
387 static constexpr int CanOverflowed = -1006;
388 /**
389 * \brief Sensor Not Present.
390 */
391 static constexpr int SensorNotPresent = -1007;
392 /**
393 * \brief Firmware Too Old. Use Phoenix Tuner X to field upgrade your CTRE CAN
394 * device firmware(CRF). Then restart your robot application to clear
395 * this error.
396 */
397 static constexpr int FirmwareTooOld = -1008;
398 /**
399 * \brief Control Frame Period could not be changed. Most likely it is not
400 * being transmitted.
401 */
402 static constexpr int CouldNotChangePeriod = -1009;
403 /**
404 * \brief BufferFailure
405 */
406 static constexpr int BufferFailure = -1010;
407 /**
408 * \brief Firmware is legacy non-FRC version. Use Phoenix Tuner X to field
409 * upgrade your CTRE CAN device firmware(CRF). Firmware greater than
410 * 20.0 required.
411 */
412 static constexpr int FirmwareNonFRC = -1011;
413 /**
414 * \brief General Error Occurred.
415 */
416 static constexpr int GeneralError = -1100;
417 /**
418 * \brief No new response to update signal.
419 */
420 static constexpr int SigNotUpdated = -1200;
421 /**
422 * \brief NotAllPIDValuesUpdated
423 */
424 static constexpr int NotAllPIDValuesUpdated = -1201;
425 /**
426 * \brief GEN_PORT_ERROR
427 */
428 static constexpr int GEN_PORT_ERROR = -1300;
429 /**
430 * \brief PORT_MODULE_TYPE_MISMATCH
431 */
432 static constexpr int PORT_MODULE_TYPE_MISMATCH = -1301;
433 /**
434 * \brief GEN_MODULE_ERROR
435 */
436 static constexpr int GEN_MODULE_ERROR = -1400;
437 /**
438 * \brief MODULE_NOT_INIT_SET_ERROR
439 */
440 static constexpr int MODULE_NOT_INIT_SET_ERROR = -1401;
441 /**
442 * \brief MODULE_NOT_INIT_GET_ERROR
443 */
444 static constexpr int MODULE_NOT_INIT_GET_ERROR = -1402;
445 /**
446 * \brief Wheel Radius is too small, cannot get distance traveled.
447 */
448 static constexpr int WheelRadiusTooSmall = -1500;
449 /**
450 * \brief Ticks per revolution is 0, cannot get heading.
451 */
452 static constexpr int TicksPerRevZero = -1501;
453 /**
454 * \brief Distance between wheels is too small, cannot get heading.
455 */
456 static constexpr int DistanceBetweenWheelsTooSmall = -1502;
457 /**
458 * \brief GainsAreNotSet
459 */
460 static constexpr int GainsAreNotSet = -1503;
461 /**
462 * \brief Use RemoteLimitSwitchSource instead of LimitSwitchSource.
463 */
464 static constexpr int WrongRemoteLimitSwitchSource = -1504;
465 /**
466 * \brief Motor Controller Voltage Compensation should not be used with
467 * setVoltage(). This causes compensation to happen twice. Disable
468 * Voltage Compensation by calling enableVoltageCompensation(false) in
469 * order to use setVoltage().
470 */
471 static constexpr int DoubleVoltageCompensatingWPI = -1505;
472 /**
473 * \brief CANdleAnimSlotOutOfBounds
474 */
475 static constexpr int CANdleAnimSlotOutOfBounds = -1506;
476 /**
477 * \brief IncompatibleMode
478 */
479 static constexpr int IncompatibleMode = -1600;
480 /**
481 * \brief Handle passed into function is incorrect.
482 */
483 static constexpr int InvalidHandle = -1601;
484 /**
485 * \brief Features requires newer firmware version.
486 */
487 static constexpr int FeatureRequiresHigherFirm = -1700;
488 /**
489 * \brief Config factory default features require firmware >=3.10.
490 */
491 static constexpr int ConfigFactoryDefaultRequiresHigherFirm = -1702;
492 /**
493 * \brief Config Motion S Curve Strength features require firmware >=4.16.
494 */
495 static constexpr int ConfigMotionSCurveRequiresHigherFirm = -1703;
496 /**
497 * \brief Talon FX(Falcon 500) Firmware Too Old. Use Phoenix Tuner to field
498 * upgrade your CTRE CAN device firmware(CRF) to >=20.3. Then restart
499 * your robot application to clear this error.
500 */
501 static constexpr int TalonFXFirmwarePreVBatDetect = -1704;
502 /**
503 * \brief CANdleAnimationsRequireHigherFirm
504 */
505 static constexpr int CANdleAnimationsRequireHigherFirm = -1705;
506 /**
507 * \brief LibraryCouldNotBeLoaded
508 */
509 static constexpr int LibraryCouldNotBeLoaded = -1800;
510 /**
511 * \brief MissingRoutineInLibrary
512 */
513 static constexpr int MissingRoutineInLibrary = -1801;
514 /**
515 * \brief ResourceNotAvailable
516 */
517 static constexpr int ResourceNotAvailable = -1802;
518 /**
519 * \brief Could not find music file specified, try specifying an absolute path.
520 */
521 static constexpr int MusicFileNotFound = -1900;
522 /**
523 * \brief Music file size is incorrect, could not parse correctly. Ensure you're
524 * using Tuner to generate file.
525 */
526 static constexpr int MusicFileWrongSize = -1901;
527 /**
528 * \brief Music file version is too new, update Phoenix to utilize this file.
529 */
530 static constexpr int MusicFileTooNew = -1902;
531 /**
532 * \brief Music file is invalid. Ensure you're using Tuner to generate file.
533 */
534 static constexpr int MusicFileInvalid = -1903;
535 /**
536 * \brief An invalid orchestra action occurred. Ensure a music file is loaded.
537 */
538 static constexpr int InvalidOrchestraAction = -1904;
539 /**
540 * \brief This music file version is too old. Regenerate file using Tuner.
541 */
542 static constexpr int MusicFileTooOld = -1905;
543 /**
544 * \brief Music interrupted due to one of the instruments being commanded a
545 * different control mode. Press Play to resume music.
546 */
547 static constexpr int MusicInterrupted = -1906;
548 /**
549 * \brief This device doesn't support MusicTone control mode.
550 */
551 static constexpr int MusicNotSupported = -1907;
552 /**
553 * \brief kInvalidInterface
554 */
555 static constexpr int kInvalidInterface = -2000;
556 /**
557 * \brief kInvalidGuid
558 */
559 static constexpr int kInvalidGuid = -2001;
560 /**
561 * \brief kInvalidClass
562 */
563 static constexpr int kInvalidClass = -2002;
564 /**
565 * \brief kInvalidProtocol
566 */
567 static constexpr int kInvalidProtocol = -2003;
568 /**
569 * \brief kInvalidPath
570 */
571 static constexpr int kInvalidPath = -2004;
572 /**
573 * \brief kGeneralWinUsbError
574 */
575 static constexpr int kGeneralWinUsbError = -2005;
576 /**
577 * \brief kFailedSetup
578 */
579 static constexpr int kFailedSetup = -2006;
580 /**
581 * \brief kListenFailed
582 */
583 static constexpr int kListenFailed = -2007;
584 /**
585 * \brief kSendFailed
586 */
587 static constexpr int kSendFailed = -2008;
588 /**
589 * \brief kReceiveFailed
590 */
591 static constexpr int kReceiveFailed = -2009;
592 /**
593 * \brief kInvalidRespFormat
594 */
595 static constexpr int kInvalidRespFormat = -2010;
596 /**
597 * \brief kWinUsbInitFailed
598 */
599 static constexpr int kWinUsbInitFailed = -2011;
600 /**
601 * \brief kWinUsbQueryFailed
602 */
603 static constexpr int kWinUsbQueryFailed = -2012;
604 /**
605 * \brief kWinUsbGeneralError
606 */
607 static constexpr int kWinUsbGeneralError = -2013;
608 /**
609 * \brief kAccessDenied
610 */
611 static constexpr int kAccessDenied = -2014;
612 /**
613 * \brief kFirmwareInvalidResponse
614 */
615 static constexpr int kFirmwareInvalidResponse = -2015;
616 /**
617 * \brief This StatusCode has not been initialized. Make sure the StatusCode is
618 * getting assigned to the return of a method.
619 */
620 static constexpr int StatusCodeNotInitialized = -10000;
621 /**
622 * \brief WarningNotInitialized
623 */
624 static constexpr int WarningNotInitialized = 10000;
625 /**
626 * \brief The timestamp reported by CANivore is at least 10ms older than the
627 * timestamp reported by the system, indicating it's fallen out of sync.
628 * This does not impact the data of this message, only the timing.
629 */
630 static constexpr int HwTimestampOutOfSync = 10001;
631 /**
632 * \brief Do not apply or refresh configs periodically, as configs are blocking.
633 */
634 static constexpr int FrequentConfigCalls = 10002;
635 /**
636 * \brief The given network/CAN bus is invalid. Verify that any status signals
637 * provided are on the same network and that the network is present.
638 */
639 static constexpr int InvalidNetwork = -10001;
640 /**
641 * \brief The device ID is invalid. Ensure the device is constructed with a
642 * valid ID (0-62).
643 */
644 static constexpr int InvalidDeviceId = -10002;
645 /**
646 * \brief Could not cast from base value to this particular signal's type
647 */
648 static constexpr int CouldNotCast = -10003;
649 /**
650 * \brief Could not find this value when searching for it
651 */
652 static constexpr int NotFound = -10004;
653 /**
654 * \brief This operation is not supported
655 */
656 static constexpr int NotSupported = -10005;
657 /**
658 * \brief Could not determine context from this device hash
659 */
660 static constexpr int MissingContext = -10006;
661 /**
662 * \brief Model name in license file does not match model name of selected
663 * device.
664 */
665 static constexpr int ModelMismatch = -10007;
666 /**
667 * \brief Serial Number in license file does not match model name of selected
668 * device.
669 */
670 static constexpr int SerialMismatch = -10008;
671 /**
672 * \brief Could not find specified file.
673 */
674 static constexpr int NoFile = -10009;
675 /**
676 * \brief License did not successfully download to Device.
677 */
678 static constexpr int LicenseDownloadFailed = -10010;
679 /**
680 * \brief Self Test report does not have any values, is the firmware up to date?
681 */
682 static constexpr int SelfTestIsEmpty = -10011;
683 /**
684 * \brief Failed to lookup signal properties. This can happen if the fimware is
685 * too new and supports signals that older APIs do not support.
686 */
687 static constexpr int SignalLookupFailed = -10012;
688 /**
689 * \brief The current mode of the device is invalid for getting this signal.
690 */
691 static constexpr int InvalidModeToGetSignal = -10013;
692 /**
693 * \brief Device is not licensed. Cannot get any data from it.
694 */
695 static constexpr int UnlicensedDevice = -10014;
696 /**
697 * \brief Size is invalid.
698 */
699 static constexpr int InvalidSize = -10015;
700 /**
701 * \brief InvalidLicenseResponse
702 */
703 static constexpr int InvalidLicenseResponse = -10016;
704 /**
705 * \brief InvalidContext
706 */
707 static constexpr int InvalidContext = -10017;
708 /**
709 * \brief InternalError
710 */
711 static constexpr int InternalError = -10018;
712 /**
713 * \brief kDeviceResponseIncorrect
714 */
715 static constexpr int kDeviceResponseIncorrect = -10019;
716 /**
717 * \brief kErrorPollingForDevices
718 */
719 static constexpr int kErrorPollingForDevices = -10020;
720 /**
721 * \brief Device firmware could not be retrieved. Check that the device is
722 * running v6 firmware, the device ID is correct, the specified CAN bus
723 * is correct, and the device is powered.
724 */
725 static constexpr int CouldNotRetrieveV6Firmware = -10021;
726 /**
727 * \brief Device firmware could not be decoded. Check that the device is running
728 * v6 firmware, the device ID is correct, the specified CAN bus is
729 * correct, and the device is powered.
730 */
731 static constexpr int CouldNotDecodeDeviceFirmware = -10022;
732 /**
733 * \brief The values specified for master are in valid. Make sure the Device ID
734 * of master are correct.
735 */
736 static constexpr int InvalidIDToFollow = -10023;
737 /**
738 * \brief Using a Pro only feature on an unlicensed device. The device may not
739 * behave as expected if it continues to operate while unlicensed.
740 */
741 static constexpr int UsingProFeatureOnUnlicensedDevice = -10024;
742 /**
743 * \brief Firmware Too New. Use Phoenix Tuner X to field upgrade your CTRE CAN
744 * device firmware(CRF) to a compatible version. Then restart your robot
745 * application to clear this error.
746 */
747 static constexpr int FirmwareTooNew = -10025;
748 /**
749 * \brief The data frame could not be serialized for transmit.
750 */
751 static constexpr int CouldNotSerialize = -10026;
752 /**
753 * \brief The mechanism is disabled due to a fault in one of the devices.
754 */
755 static constexpr int MechanismFaulted = -10027;
756 /**
757 * \brief Firmware version is not compatible with this version of Phoenix. Make
758 * sure your firmware and API major versions match.
759 */
760 static constexpr int FirmwareVersNotCompatible = -10028;
761 /**
762 * \brief Could not find specified directory.
763 */
764 static constexpr int DirectoryMissing = -10029;
765 /**
766 * \brief This API version is too old for the firmware on the device. Either
767 * upgrade the API to a newer version or downgrade the device firmware to
768 * an older version for correct behavior.
769 */
770 static constexpr int ApiTooOld = -10030;
771 /**
772 * \brief The signal logger is not running. Start the signal logger before
773 * writing any signals.
774 */
775 static constexpr int LoggerNotRunning = -10031;
776 /**
777 * \brief Blocking operations, such as configs, cannot have a timeout of 0. Pass
778 * in a non-zero timeout (typically 0.050+ seconds) for normal operation.
779 */
780 static constexpr int TimeoutCannotBeZero = -10032;
781 /**
782 * \brief Device cannot be licensed while it is control enabled. Disable and
783 * neutral the device to apply the licenses.
784 */
785 static constexpr int CannotLicenseWhileEnabled = -10033;
786 /**
787 * \brief Could not open or read the given file.
788 */
789 static constexpr int InvalidFile = -10034;
790 /**
791 * \brief The given hoot log requires an older version of Phoenix API.
792 */
793 static constexpr int HootLogTooOld = -10035;
794 /**
795 * \brief The given hoot log requires a newer version of Phoenix API.
796 */
797 static constexpr int HootLogTooNew = -10036;
798 /**
799 * \brief Hoot log is not licensed. Cannot get any data from it.
800 */
801 static constexpr int UnlicensedHootLog = -10037;
802 /**
803 * \brief The simulation timing cannot be advanced by a time step while
804 * unpaused. Pause the simulator before advancing time.
805 */
806 static constexpr int CannotStepWhileUnpaused = -10038;
807 /**
808 * \brief Hoot replay does not support replaying multiple files. Ensure that
809 * only one file is loaded at a time.
810 */
811 static constexpr int MultipleReplayNotSupported = -10039;
812 /**
813 * \brief The maximum number of loggable user signals has been exceeded.
814 * Additional user signals will not be logged.
815 */
816 static constexpr int UserSignalLimitExceeded = -10040;
817 /**
818 * \brief The provided model was not a valid device type.
819 */
820 static constexpr int InvalidDeviceModel = -10041;
821 /**
822 * \brief The requested signal is missing or not supported. Verify that the
823 * device firmware is up-to-date.
824 */
825 static constexpr int SignalNotSupportedOrMissing = -10042;
826 /**
827 * \brief The schema for the logged user signal is invalid or missing. Ensure
828 * that the schema is written before the user signal.
829 */
830 static constexpr int MissingSchema = -10043;
831
832 constexpr StatusCode(int val) : value{val} {}
834
835 constexpr friend bool operator==(StatusCode, StatusCode) = default;
836 constexpr friend auto operator<=>(StatusCode, StatusCode) = default;
837
838 constexpr operator int() const { return value; }
839
840 constexpr bool operator==(int other) const
841 {
842 return value == other;
843 }
844 constexpr auto operator<=>(int other) const
845 {
846 return value <=> other;
847 }
848
849 /**
850 * \returns true if this code is an error
851 */
852 constexpr bool IsError() const { return value < 0; }
853 /**
854 * \returns true if this code is a warning
855 */
856 constexpr bool IsWarning() const { return value > 0; }
857 /**
858 * \returns true if this code is OK
859 */
860 constexpr bool IsOK() const { return value == OK; }
861
862 /**
863 * Gets the name of this StatusCode
864 *
865 * \returns Name of this StatusCode
866 */
867 constexpr const char *GetName() const
868 {
869 switch (value) {
870 case 0: return "OK";
871 case -100: return "TaskIsBusy";
872 case -101: return "InvalidDeviceSpec";
873 case -102: return "EcuIsNotPresent";
874 case -103: return "CouldNotEnterBl";
875 case -104: return "CouldNotConfirmBl";
876 case -105: return "CouldNotErase";
877 case -106: return "CouldNotSendFlash";
878 case -107: return "CouldNotValidate";
879 case -108: return "CouldNotRunApp";
880 case -109: return "CouldNotReqSetId";
881 case -110: return "CouldNotConfirmId";
882 case -111: return "FlashWasGood";
883 case -112: return "AppTooOld";
884 case -113: return "CouldNotReqSetDesc";
885 case -114: return "CompileSzIsWrong";
886 case -115: return "GadgeteerDeviceNoSetId";
887 case -116: return "InvalidTask";
888 case -117: return "NotImplemented";
889 case -118: return "NoDevicesOnBus";
890 case -119: return "MoreThanOneFile";
891 case -120: return "NodeIsInvalid";
892 case -121: return "InvalidDeviceDescriptor";
893 case -123: return "CouldNotSendCanFrame";
894 case -124: return "NormalModeMsgNotPresent";
895 case -125: return "FeatureNotSupported";
896 case -126: return "NotUpdating";
897 case -127: return "CorruptedPOST";
898 case -128: return "NoConfigs";
899 case -129: return "ConfigFailed";
900 case -130: return "CouldNotReqFactoryDefault";
901 case -131: return "CustomNameNotSupported";
902 case -132: return "ConfigReadWriteMismatch";
903 case -133: return "CouldNotReqSetConfigs";
904 case -134: return "InsufficientSz";
905 case -135: return "InvalidModel";
906 case -140: return "CouldNotReqDevInfo";
907 case -141: return "NoControls";
908 case -142: return "DeviceIsNull";
909 case -143: return "DeviceDidNotRespondToDiagReq";
910 case -144: return "OnlySupportedInTunerX";
911 case -145: return "CanivCliError";
912 case -200: return "InvalidCrfBadHeader";
913 case -201: return "InvalidCrfFileSzInvald";
914 case -202: return "InvalidCrfWrongProduct";
915 case -203: return "InvalidCrfNoSects";
916 case -204: return "InvalidCrfBadSectHeader";
917 case -205: return "InvalidCrfBadSectSize";
918 case -206: return "NoCrfFile";
919 case -300: return "CouldNotFindDynamicId";
920 case -301: return "DidNotGetDhcp";
921 case -302: return "DidNotGetFullDhcp";
922 case -350: return "InvalidLicenseResp";
923 case -351: return "InvalidCanivCache";
924 case -500: return "CannotOpenSerialPort";
925 case -501: return "CannotWriteSerialPort";
926 case -502: return "CannotReadSerialPort";
927 case -503: return "CannotSerialToDevice";
928 case -504: return "NoSerialControlFrameResp";
929 case -600: return "CannotOpenUdpPort";
930 case -601: return "CannotWriteUdpPort";
931 case -602: return "CannotReadUdpPort";
932 case -603: return "CannotUdpToDevice";
933 case -604: return "NoUdpControlFrameResp";
934 case -605: return "TimeoutIso15Response";
935 case -700: return "InvalidJson";
936 case -800: return "AppIsTerminating";
937 case 1000: return "CanMessageStale";
938 case 1006: return "BufferFull";
939 case 1010: return "PulseWidthSensorNotPresent";
940 case 1100: return "GeneralWarning";
941 case 1103: return "FirmVersionCouldNotBeRetrieved";
942 case 1104: return "FeaturesNotAvailableYet";
943 case 1105: return "ControlModeNotValid";
944 case 1106: return "ControlModeNotSupportedYet";
945 case 1109: return "MotProfFirmThreshold";
946 case 1110: return "MotProfFirmThreshold2";
947 case 1200: return "SimDeviceNotFound";
948 case 1201: return "SimPhysicsTypeNotSupported";
949 case 1202: return "SimDeviceAlreadyExists";
950 case -1001: return "TxFailed";
951 case -1002: return "InvalidParamValue";
952 case -1003: return "RxTimeout";
953 case -1004: return "TxTimeout";
954 case -1005: return "UnexpectedArbId";
955 case -1006: return "CanOverflowed";
956 case -1007: return "SensorNotPresent";
957 case -1008: return "FirmwareTooOld";
958 case -1009: return "CouldNotChangePeriod";
959 case -1010: return "BufferFailure";
960 case -1011: return "FirmwareNonFRC";
961 case -1100: return "GeneralError";
962 case -1200: return "SigNotUpdated";
963 case -1201: return "NotAllPIDValuesUpdated";
964 case -1300: return "GEN_PORT_ERROR";
965 case -1301: return "PORT_MODULE_TYPE_MISMATCH";
966 case -1400: return "GEN_MODULE_ERROR";
967 case -1401: return "MODULE_NOT_INIT_SET_ERROR";
968 case -1402: return "MODULE_NOT_INIT_GET_ERROR";
969 case -1500: return "WheelRadiusTooSmall";
970 case -1501: return "TicksPerRevZero";
971 case -1502: return "DistanceBetweenWheelsTooSmall";
972 case -1503: return "GainsAreNotSet";
973 case -1504: return "WrongRemoteLimitSwitchSource";
974 case -1505: return "DoubleVoltageCompensatingWPI";
975 case -1506: return "CANdleAnimSlotOutOfBounds";
976 case -1600: return "IncompatibleMode";
977 case -1601: return "InvalidHandle";
978 case -1700: return "FeatureRequiresHigherFirm";
979 case -1702: return "ConfigFactoryDefaultRequiresHigherFirm";
980 case -1703: return "ConfigMotionSCurveRequiresHigherFirm";
981 case -1704: return "TalonFXFirmwarePreVBatDetect";
982 case -1705: return "CANdleAnimationsRequireHigherFirm";
983 case -1800: return "LibraryCouldNotBeLoaded";
984 case -1801: return "MissingRoutineInLibrary";
985 case -1802: return "ResourceNotAvailable";
986 case -1900: return "MusicFileNotFound";
987 case -1901: return "MusicFileWrongSize";
988 case -1902: return "MusicFileTooNew";
989 case -1903: return "MusicFileInvalid";
990 case -1904: return "InvalidOrchestraAction";
991 case -1905: return "MusicFileTooOld";
992 case -1906: return "MusicInterrupted";
993 case -1907: return "MusicNotSupported";
994 case -2000: return "kInvalidInterface";
995 case -2001: return "kInvalidGuid";
996 case -2002: return "kInvalidClass";
997 case -2003: return "kInvalidProtocol";
998 case -2004: return "kInvalidPath";
999 case -2005: return "kGeneralWinUsbError";
1000 case -2006: return "kFailedSetup";
1001 case -2007: return "kListenFailed";
1002 case -2008: return "kSendFailed";
1003 case -2009: return "kReceiveFailed";
1004 case -2010: return "kInvalidRespFormat";
1005 case -2011: return "kWinUsbInitFailed";
1006 case -2012: return "kWinUsbQueryFailed";
1007 case -2013: return "kWinUsbGeneralError";
1008 case -2014: return "kAccessDenied";
1009 case -2015: return "kFirmwareInvalidResponse";
1010 case -10000: return "StatusCodeNotInitialized";
1011 case 10000: return "WarningNotInitialized";
1012 case 10001: return "HwTimestampOutOfSync";
1013 case 10002: return "FrequentConfigCalls";
1014 case -10001: return "InvalidNetwork";
1015 case -10002: return "InvalidDeviceId";
1016 case -10003: return "CouldNotCast";
1017 case -10004: return "NotFound";
1018 case -10005: return "NotSupported";
1019 case -10006: return "MissingContext";
1020 case -10007: return "ModelMismatch";
1021 case -10008: return "SerialMismatch";
1022 case -10009: return "NoFile";
1023 case -10010: return "LicenseDownloadFailed";
1024 case -10011: return "SelfTestIsEmpty";
1025 case -10012: return "SignalLookupFailed";
1026 case -10013: return "InvalidModeToGetSignal";
1027 case -10014: return "UnlicensedDevice";
1028 case -10015: return "InvalidSize";
1029 case -10016: return "InvalidLicenseResponse";
1030 case -10017: return "InvalidContext";
1031 case -10018: return "InternalError";
1032 case -10019: return "kDeviceResponseIncorrect";
1033 case -10020: return "kErrorPollingForDevices";
1034 case -10021: return "CouldNotRetrieveV6Firmware";
1035 case -10022: return "CouldNotDecodeDeviceFirmware";
1036 case -10023: return "InvalidIDToFollow";
1037 case -10024: return "UsingProFeatureOnUnlicensedDevice";
1038 case -10025: return "FirmwareTooNew";
1039 case -10026: return "CouldNotSerialize";
1040 case -10027: return "MechanismFaulted";
1041 case -10028: return "FirmwareVersNotCompatible";
1042 case -10029: return "DirectoryMissing";
1043 case -10030: return "ApiTooOld";
1044 case -10031: return "LoggerNotRunning";
1045 case -10032: return "TimeoutCannotBeZero";
1046 case -10033: return "CannotLicenseWhileEnabled";
1047 case -10034: return "InvalidFile";
1048 case -10035: return "HootLogTooOld";
1049 case -10036: return "HootLogTooNew";
1050 case -10037: return "UnlicensedHootLog";
1051 case -10038: return "CannotStepWhileUnpaused";
1052 case -10039: return "MultipleReplayNotSupported";
1053 case -10040: return "UserSignalLimitExceeded";
1054 case -10041: return "InvalidDeviceModel";
1055 case -10042: return "SignalNotSupportedOrMissing";
1056 case -10043: return "MissingSchema";
1057 default:
1058 /* because we return const char*, we cannot create
1059 * a string with the status error code */
1060 return "Could not find name for StatusCode";
1061 }
1062 }
1063 /**
1064 * Gets the description of this StatusCode
1065 *
1066 * \returns Description of this StatusCode
1067 */
1068 constexpr const char *GetDescription() const
1069 {
1070 switch (value) {
1071 case 0: return "No Error";
1072 case -100: return "Diagnostic Server is busy with another command.";
1073 case -101: return "InvalidDeviceSpec";
1074 case -102: return "Device is not present. Verify the device is connected and powered, and that the CAN bus is terminated.";
1075 case -103: return "Could not put the device into bootloader mode.";
1076 case -104: return "Could not confirm the device has entered the bootloader.";
1077 case -105: return "Could not erase flash.";
1078 case -106: return "Could not field upgrade the device.";
1079 case -107: return "Bootloader could not verify integrity of the flashed application.";
1080 case -108: return "Could not run the device firmware application.";
1081 case -109: return "Unable to set ID to this device. Confirm that this action is valid for this device and the ID is valid (0-62).";
1082 case -110: return "Could not verify that the changed ID took effect.";
1083 case -111: return "Device field upgrade was successful.";
1084 case -112: return "Device firmware application is too old.";
1085 case -113: return "Unable to set name to this device.";
1086 case -114: return "CompileSzIsWrong";
1087 case -115: return "Cannot set the ID of a gadgeteer device.";
1088 case -116: return "This diagnostic action is not supported.";
1089 case -117: return "Not Implemented, check latest installer.";
1090 case -118: return "NoDevicesOnBus";
1091 case -119: return "MoreThanOneFile";
1092 case -120: return "Specified device was not found. Verify the device is connected and powered, and that the CAN bus is terminated.";
1093 case -121: return "InvalidDeviceDescriptor";
1094 case -123: return "CouldNotSendCanFrame";
1095 case -124: return "NormalModeMsgNotPresent";
1096 case -125: return "This feature is not supported.";
1097 case -126: return "The diagnostic server is not field upgrading any devices.";
1098 case -127: return "CorruptedPOST";
1099 case -128: return "This device did not report any available configs. Verify firmware and diagnostics are up-to-date.";
1100 case -129: return "ConfigFailed";
1101 case -130: return "Unable to factory default this device.";
1102 case -131: return "CustomNameNotSupported";
1103 case -132: return "The configs read from the device do not match the configs that were written.";
1104 case -133: return "Could not apply the device configs.";
1105 case -134: return "InsufficientSz";
1106 case -135: return "This feature is not supported for this device model.";
1107 case -140: return "CouldNotReqDevInfo";
1108 case -141: return "This device does not support new controls.";
1109 case -142: return "DeviceIsNull";
1110 case -143: return "DeviceDidNotRespondToDiagReq";
1111 case -144: return "This feature requires Tuner X.";
1112 case -145: return "Command-line issue with caniv.";
1113 case -200: return "InvalidCrfBadHeader";
1114 case -201: return "InvalidCrfFileSzInvald";
1115 case -202: return "Specified CRF is for the wrong product.";
1116 case -203: return "InvalidCrfNoSects";
1117 case -204: return "InvalidCrfBadSectHeader";
1118 case -205: return "InvalidCrfBadSectSize";
1119 case -206: return "Specified CRF file could not be found.";
1120 case -300: return "CouldNotFindDynamicId";
1121 case -301: return "DidNotGetDhcp";
1122 case -302: return "DidNotGetFullDhcp";
1123 case -350: return "InvalidLicenseResp";
1124 case -351: return "InvalidCanivCache";
1125 case -500: return "CannotOpenSerialPort";
1126 case -501: return "CannotWriteSerialPort";
1127 case -502: return "CannotReadSerialPort";
1128 case -503: return "CannotSerialToDevice";
1129 case -504: return "NoSerialControlFrameResp";
1130 case -600: return "CannotOpenUdpPort";
1131 case -601: return "CannotWriteUdpPort";
1132 case -602: return "CannotReadUdpPort";
1133 case -603: return "CannotUdpToDevice";
1134 case -604: return "NoUdpControlFrameResp";
1135 case -605: return "TimeoutIso15Response";
1136 case -700: return "InvalidJson";
1137 case -800: return "The user application is shutting down.";
1138 case 1000: return "CAN message is stale, data is valid but old. Check the CAN bus wiring, CAN bus utilization, and power to the device.";
1139 case 1006: return "Buffer is full, cannot insert more data.";
1140 case 1010: return "PulseWidthSensorNotPresent";
1141 case 1100: return "General Warning Occurred.";
1142 case 1103: return "Firm Vers could not be retrieved. Use Phoenix Tuner X to check ID and firmware(CRF) version.";
1143 case 1104: return "This feature will be supported in a future update.";
1144 case 1105: return "The control mode is not valid for this function.";
1145 case 1106: return "This control mode is not supported yet. A future release will supported this soon.";
1146 case 1109: return "Motor Controller must have >= 3.2 firmware for motion profile control mode.";
1147 case 1110: return "Motor Controller must have >= 3.4 firmware for advanced PID0/PID1 features.";
1148 case 1200: return "SimDeviceNotFound";
1149 case 1201: return "SimPhysicsTypeNotSupported";
1150 case 1202: return "SimDeviceAlreadyExists";
1151 case -1001: return "Could not transmit CAN Frame.";
1152 case -1002: return "An invalid argument was passed into the function/VI, such as a null pointer.";
1153 case -1003: return "CAN frame not received/too-stale. Check the CAN bus wiring, CAN bus utilization, and power to the device.";
1154 case -1004: return "CAN Transmit timed out.";
1155 case -1005: return "ArbID is incorrect.";
1156 case -1006: return "CanOverflowed";
1157 case -1007: return "Sensor Not Present.";
1158 case -1008: return "Firmware Too Old. Use Phoenix Tuner X to field upgrade your CTRE CAN device firmware(CRF). Then restart your robot application to clear this error.";
1159 case -1009: return "Control Frame Period could not be changed. Most likely it is not being transmitted.";
1160 case -1010: return "BufferFailure";
1161 case -1011: return "Firmware is legacy non-FRC version. Use Phoenix Tuner X to field upgrade your CTRE CAN device firmware(CRF). Firmware greater than 20.0 required.";
1162 case -1100: return "General Error Occurred.";
1163 case -1200: return "No new response to update signal.";
1164 case -1201: return "NotAllPIDValuesUpdated";
1165 case -1300: return "GEN_PORT_ERROR";
1166 case -1301: return "PORT_MODULE_TYPE_MISMATCH";
1167 case -1400: return "GEN_MODULE_ERROR";
1168 case -1401: return "MODULE_NOT_INIT_SET_ERROR";
1169 case -1402: return "MODULE_NOT_INIT_GET_ERROR";
1170 case -1500: return "Wheel Radius is too small, cannot get distance traveled.";
1171 case -1501: return "Ticks per revolution is 0, cannot get heading.";
1172 case -1502: return "Distance between wheels is too small, cannot get heading.";
1173 case -1503: return "GainsAreNotSet";
1174 case -1504: return "Use RemoteLimitSwitchSource instead of LimitSwitchSource.";
1175 case -1505: return "Motor Controller Voltage Compensation should not be used with setVoltage(). This causes compensation to happen twice. Disable Voltage Compensation by calling enableVoltageCompensation(false) in order to use setVoltage().";
1176 case -1506: return "CANdleAnimSlotOutOfBounds";
1177 case -1600: return "IncompatibleMode";
1178 case -1601: return "Handle passed into function is incorrect.";
1179 case -1700: return "Features requires newer firmware version.";
1180 case -1702: return "Config factory default features require firmware >=3.10.";
1181 case -1703: return "Config Motion S Curve Strength features require firmware >=4.16.";
1182 case -1704: return "Talon FX(Falcon 500) Firmware Too Old. Use Phoenix Tuner to field upgrade your CTRE CAN device firmware(CRF) to >=20.3. Then restart your robot application to clear this error.";
1183 case -1705: return "CANdleAnimationsRequireHigherFirm";
1184 case -1800: return "LibraryCouldNotBeLoaded";
1185 case -1801: return "MissingRoutineInLibrary";
1186 case -1802: return "ResourceNotAvailable";
1187 case -1900: return "Could not find music file specified, try specifying an absolute path.";
1188 case -1901: return "Music file size is incorrect, could not parse correctly. Ensure you're using Tuner to generate file.";
1189 case -1902: return "Music file version is too new, update Phoenix to utilize this file.";
1190 case -1903: return "Music file is invalid. Ensure you're using Tuner to generate file.";
1191 case -1904: return "An invalid orchestra action occurred. Ensure a music file is loaded.";
1192 case -1905: return "This music file version is too old. Regenerate file using Tuner.";
1193 case -1906: return "Music interrupted due to one of the instruments being commanded a different control mode. Press Play to resume music.";
1194 case -1907: return "This device doesn't support MusicTone control mode.";
1195 case -2000: return "kInvalidInterface";
1196 case -2001: return "kInvalidGuid";
1197 case -2002: return "kInvalidClass";
1198 case -2003: return "kInvalidProtocol";
1199 case -2004: return "kInvalidPath";
1200 case -2005: return "kGeneralWinUsbError";
1201 case -2006: return "kFailedSetup";
1202 case -2007: return "kListenFailed";
1203 case -2008: return "kSendFailed";
1204 case -2009: return "kReceiveFailed";
1205 case -2010: return "kInvalidRespFormat";
1206 case -2011: return "kWinUsbInitFailed";
1207 case -2012: return "kWinUsbQueryFailed";
1208 case -2013: return "kWinUsbGeneralError";
1209 case -2014: return "kAccessDenied";
1210 case -2015: return "kFirmwareInvalidResponse";
1211 case -10000: return "This StatusCode has not been initialized. Make sure the StatusCode is getting assigned to the return of a method.";
1212 case 10000: return "WarningNotInitialized";
1213 case 10001: return "The timestamp reported by CANivore is at least 10ms older than the timestamp reported by the system, indicating it's fallen out of sync. This does not impact the data of this message, only the timing.";
1214 case 10002: return "Do not apply or refresh configs periodically, as configs are blocking.";
1215 case -10001: return "The given network/CAN bus is invalid. Verify that any status signals provided are on the same network and that the network is present.";
1216 case -10002: return "The device ID is invalid. Ensure the device is constructed with a valid ID (0-62).";
1217 case -10003: return "Could not cast from base value to this particular signal's type";
1218 case -10004: return "Could not find this value when searching for it";
1219 case -10005: return "This operation is not supported";
1220 case -10006: return "Could not determine context from this device hash";
1221 case -10007: return "Model name in license file does not match model name of selected device.";
1222 case -10008: return "Serial Number in license file does not match model name of selected device.";
1223 case -10009: return "Could not find specified file.";
1224 case -10010: return "License did not successfully download to Device.";
1225 case -10011: return "Self Test report does not have any values, is the firmware up to date?";
1226 case -10012: return "Failed to lookup signal properties. This can happen if the fimware is too new and supports signals that older APIs do not support.";
1227 case -10013: return "The current mode of the device is invalid for getting this signal.";
1228 case -10014: return "Device is not licensed. Cannot get any data from it.";
1229 case -10015: return "Size is invalid.";
1230 case -10016: return "InvalidLicenseResponse";
1231 case -10017: return "InvalidContext";
1232 case -10018: return "InternalError";
1233 case -10019: return "kDeviceResponseIncorrect";
1234 case -10020: return "kErrorPollingForDevices";
1235 case -10021: return "Device firmware could not be retrieved. Check that the device is running v6 firmware, the device ID is correct, the specified CAN bus is correct, and the device is powered.";
1236 case -10022: return "Device firmware could not be decoded. Check that the device is running v6 firmware, the device ID is correct, the specified CAN bus is correct, and the device is powered.";
1237 case -10023: return "The values specified for master are in valid. Make sure the Device ID of master are correct.";
1238 case -10024: return "Using a Pro only feature on an unlicensed device. The device may not behave as expected if it continues to operate while unlicensed.";
1239 case -10025: return "Firmware Too New. Use Phoenix Tuner X to field upgrade your CTRE CAN device firmware(CRF) to a compatible version. Then restart your robot application to clear this error.";
1240 case -10026: return "The data frame could not be serialized for transmit.";
1241 case -10027: return "The mechanism is disabled due to a fault in one of the devices.";
1242 case -10028: return "Firmware version is not compatible with this version of Phoenix. Make sure your firmware and API major versions match.";
1243 case -10029: return "Could not find specified directory.";
1244 case -10030: return "This API version is too old for the firmware on the device. Either upgrade the API to a newer version or downgrade the device firmware to an older version for correct behavior.";
1245 case -10031: return "The signal logger is not running. Start the signal logger before writing any signals.";
1246 case -10032: return "Blocking operations, such as configs, cannot have a timeout of 0. Pass in a non-zero timeout (typically 0.050+ seconds) for normal operation.";
1247 case -10033: return "Device cannot be licensed while it is control enabled. Disable and neutral the device to apply the licenses.";
1248 case -10034: return "Could not open or read the given file.";
1249 case -10035: return "The given hoot log requires an older version of Phoenix API.";
1250 case -10036: return "The given hoot log requires a newer version of Phoenix API.";
1251 case -10037: return "Hoot log is not licensed. Cannot get any data from it.";
1252 case -10038: return "The simulation timing cannot be advanced by a time step while unpaused. Pause the simulator before advancing time.";
1253 case -10039: return "Hoot replay does not support replaying multiple files. Ensure that only one file is loaded at a time.";
1254 case -10040: return "The maximum number of loggable user signals has been exceeded. Additional user signals will not be logged.";
1255 case -10041: return "The provided model was not a valid device type.";
1256 case -10042: return "The requested signal is missing or not supported. Verify that the device firmware is up-to-date.";
1257 case -10043: return "The schema for the logged user signal is invalid or missing. Ensure that the schema is written before the user signal.";
1258 default:
1259 /* because we return const char*, we cannot create
1260 * a string with the status error code */
1261 return "Could not find description for StatusCode";
1262 }
1263 }
1264
1265#ifdef CTREXPORT
1266 CTREXPORT
1267#endif
1268 friend std::ostream &operator<<(std::ostream &os, StatusCode status);
1269 };
1270
1271}
1272}
1273
1274} // extern "C++"
1275
1276#else // This is straight-C, so just create a typedef enum to use
1277
1278/**
1279 * \brief Typedef enum of the StatusCode for use in C projects
1280 */
1281typedef enum _StatusCode_t
1282{
1283 /**
1284 * \brief No Error
1285 */
1286 OK = 0,
1287 /**
1288 * \brief Diagnostic Server is busy with another command.
1289 */
1290 TaskIsBusy = -100,
1291 /**
1292 * \brief InvalidDeviceSpec
1293 */
1294 InvalidDeviceSpec = -101,
1295 /**
1296 * \brief Device is not present. Verify the device is connected and powered, and
1297 * that the CAN bus is terminated.
1298 */
1299 EcuIsNotPresent = -102,
1300 /**
1301 * \brief Could not put the device into bootloader mode.
1302 */
1303 CouldNotEnterBl = -103,
1304 /**
1305 * \brief Could not confirm the device has entered the bootloader.
1306 */
1307 CouldNotConfirmBl = -104,
1308 /**
1309 * \brief Could not erase flash.
1310 */
1311 CouldNotErase = -105,
1312 /**
1313 * \brief Could not field upgrade the device.
1314 */
1315 CouldNotSendFlash = -106,
1316 /**
1317 * \brief Bootloader could not verify integrity of the flashed application.
1318 */
1319 CouldNotValidate = -107,
1320 /**
1321 * \brief Could not run the device firmware application.
1322 */
1323 CouldNotRunApp = -108,
1324 /**
1325 * \brief Unable to set ID to this device. Confirm that this action is valid for
1326 * this device and the ID is valid (0-62).
1327 */
1328 CouldNotReqSetId = -109,
1329 /**
1330 * \brief Could not verify that the changed ID took effect.
1331 */
1332 CouldNotConfirmId = -110,
1333 /**
1334 * \brief Device field upgrade was successful.
1335 */
1336 FlashWasGood = -111,
1337 /**
1338 * \brief Device firmware application is too old.
1339 */
1340 AppTooOld = -112,
1341 /**
1342 * \brief Unable to set name to this device.
1343 */
1344 CouldNotReqSetDesc = -113,
1345 /**
1346 * \brief CompileSzIsWrong
1347 */
1348 CompileSzIsWrong = -114,
1349 /**
1350 * \brief Cannot set the ID of a gadgeteer device.
1351 */
1352 GadgeteerDeviceNoSetId = -115,
1353 /**
1354 * \brief This diagnostic action is not supported.
1355 */
1356 InvalidTask = -116,
1357 /**
1358 * \brief Not Implemented, check latest installer.
1359 */
1360 NotImplemented = -117,
1361 /**
1362 * \brief NoDevicesOnBus
1363 */
1364 NoDevicesOnBus = -118,
1365 /**
1366 * \brief MoreThanOneFile
1367 */
1368 MoreThanOneFile = -119,
1369 /**
1370 * \brief Specified device was not found. Verify the device is connected and
1371 * powered, and that the CAN bus is terminated.
1372 */
1373 NodeIsInvalid = -120,
1374 /**
1375 * \brief InvalidDeviceDescriptor
1376 */
1377 InvalidDeviceDescriptor = -121,
1378 /**
1379 * \brief CouldNotSendCanFrame
1380 */
1381 CouldNotSendCanFrame = -123,
1382 /**
1383 * \brief NormalModeMsgNotPresent
1384 */
1385 NormalModeMsgNotPresent = -124,
1386 /**
1387 * \brief This feature is not supported.
1388 */
1389 FeatureNotSupported = -125,
1390 /**
1391 * \brief The diagnostic server is not field upgrading any devices.
1392 */
1393 NotUpdating = -126,
1394 /**
1395 * \brief CorruptedPOST
1396 */
1397 CorruptedPOST = -127,
1398 /**
1399 * \brief This device did not report any available configs. Verify firmware and
1400 * diagnostics are up-to-date.
1401 */
1402 NoConfigs = -128,
1403 /**
1404 * \brief ConfigFailed
1405 */
1406 ConfigFailed = -129,
1407 /**
1408 * \brief Unable to factory default this device.
1409 */
1410 CouldNotReqFactoryDefault = -130,
1411 /**
1412 * \brief CustomNameNotSupported
1413 */
1414 CustomNameNotSupported = -131,
1415 /**
1416 * \brief The configs read from the device do not match the configs that were
1417 * written.
1418 */
1419 ConfigReadWriteMismatch = -132,
1420 /**
1421 * \brief Could not apply the device configs.
1422 */
1423 CouldNotReqSetConfigs = -133,
1424 /**
1425 * \brief InsufficientSz
1426 */
1427 InsufficientSz = -134,
1428 /**
1429 * \brief This feature is not supported for this device model.
1430 */
1431 InvalidModel = -135,
1432 /**
1433 * \brief CouldNotReqDevInfo
1434 */
1435 CouldNotReqDevInfo = -140,
1436 /**
1437 * \brief This device does not support new controls.
1438 */
1439 NoControls = -141,
1440 /**
1441 * \brief DeviceIsNull
1442 */
1443 DeviceIsNull = -142,
1444 /**
1445 * \brief DeviceDidNotRespondToDiagReq
1446 */
1447 DeviceDidNotRespondToDiagReq = -143,
1448 /**
1449 * \brief This feature requires Tuner X.
1450 */
1451 OnlySupportedInTunerX = -144,
1452 /**
1453 * \brief Command-line issue with caniv.
1454 */
1455 CanivCliError = -145,
1456 /**
1457 * \brief InvalidCrfBadHeader
1458 */
1459 InvalidCrfBadHeader = -200,
1460 /**
1461 * \brief InvalidCrfFileSzInvald
1462 */
1463 InvalidCrfFileSzInvald = -201,
1464 /**
1465 * \brief Specified CRF is for the wrong product.
1466 */
1467 InvalidCrfWrongProduct = -202,
1468 /**
1469 * \brief InvalidCrfNoSects
1470 */
1471 InvalidCrfNoSects = -203,
1472 /**
1473 * \brief InvalidCrfBadSectHeader
1474 */
1475 InvalidCrfBadSectHeader = -204,
1476 /**
1477 * \brief InvalidCrfBadSectSize
1478 */
1479 InvalidCrfBadSectSize = -205,
1480 /**
1481 * \brief Specified CRF file could not be found.
1482 */
1483 NoCrfFile = -206,
1484 /**
1485 * \brief CouldNotFindDynamicId
1486 */
1487 CouldNotFindDynamicId = -300,
1488 /**
1489 * \brief DidNotGetDhcp
1490 */
1491 DidNotGetDhcp = -301,
1492 /**
1493 * \brief DidNotGetFullDhcp
1494 */
1495 DidNotGetFullDhcp = -302,
1496 /**
1497 * \brief InvalidLicenseResp
1498 */
1499 InvalidLicenseResp = -350,
1500 /**
1501 * \brief InvalidCanivCache
1502 */
1503 InvalidCanivCache = -351,
1504 /**
1505 * \brief CannotOpenSerialPort
1506 */
1507 CannotOpenSerialPort = -500,
1508 /**
1509 * \brief CannotWriteSerialPort
1510 */
1511 CannotWriteSerialPort = -501,
1512 /**
1513 * \brief CannotReadSerialPort
1514 */
1515 CannotReadSerialPort = -502,
1516 /**
1517 * \brief CannotSerialToDevice
1518 */
1519 CannotSerialToDevice = -503,
1520 /**
1521 * \brief NoSerialControlFrameResp
1522 */
1523 NoSerialControlFrameResp = -504,
1524 /**
1525 * \brief CannotOpenUdpPort
1526 */
1527 CannotOpenUdpPort = -600,
1528 /**
1529 * \brief CannotWriteUdpPort
1530 */
1531 CannotWriteUdpPort = -601,
1532 /**
1533 * \brief CannotReadUdpPort
1534 */
1535 CannotReadUdpPort = -602,
1536 /**
1537 * \brief CannotUdpToDevice
1538 */
1539 CannotUdpToDevice = -603,
1540 /**
1541 * \brief NoUdpControlFrameResp
1542 */
1543 NoUdpControlFrameResp = -604,
1544 /**
1545 * \brief TimeoutIso15Response
1546 */
1547 TimeoutIso15Response = -605,
1548 /**
1549 * \brief InvalidJson
1550 */
1551 InvalidJson = -700,
1552 /**
1553 * \brief The user application is shutting down.
1554 */
1555 AppIsTerminating = -800,
1556 /**
1557 * \brief CAN message is stale, data is valid but old. Check the CAN bus wiring,
1558 * CAN bus utilization, and power to the device.
1559 */
1560 CanMessageStale = 1000,
1561 /**
1562 * \brief Buffer is full, cannot insert more data.
1563 */
1564 BufferFull = 1006,
1565 /**
1566 * \brief PulseWidthSensorNotPresent
1567 */
1568 PulseWidthSensorNotPresent = 1010,
1569 /**
1570 * \brief General Warning Occurred.
1571 */
1572 GeneralWarning = 1100,
1573 /**
1574 * \brief Firm Vers could not be retrieved. Use Phoenix Tuner X to check ID and
1575 * firmware(CRF) version.
1576 */
1577 FirmVersionCouldNotBeRetrieved = 1103,
1578 /**
1579 * \brief This feature will be supported in a future update.
1580 */
1581 FeaturesNotAvailableYet = 1104,
1582 /**
1583 * \brief The control mode is not valid for this function.
1584 */
1585 ControlModeNotValid = 1105,
1586 /**
1587 * \brief This control mode is not supported yet. A future release will
1588 * supported this soon.
1589 */
1590 ControlModeNotSupportedYet = 1106,
1591 /**
1592 * \brief Motor Controller must have &gt;= 3.2 firmware for motion profile
1593 * control mode.
1594 */
1595 MotProfFirmThreshold = 1109,
1596 /**
1597 * \brief Motor Controller must have &gt;= 3.4 firmware for advanced PID0/PID1
1598 * features.
1599 */
1600 MotProfFirmThreshold2 = 1110,
1601 /**
1602 * \brief SimDeviceNotFound
1603 */
1604 SimDeviceNotFound = 1200,
1605 /**
1606 * \brief SimPhysicsTypeNotSupported
1607 */
1608 SimPhysicsTypeNotSupported = 1201,
1609 /**
1610 * \brief SimDeviceAlreadyExists
1611 */
1612 SimDeviceAlreadyExists = 1202,
1613 /**
1614 * \brief Could not transmit CAN Frame.
1615 */
1616 TxFailed = -1001,
1617 /**
1618 * \brief An invalid argument was passed into the function/VI, such as a null
1619 * pointer.
1620 */
1621 InvalidParamValue = -1002,
1622 /**
1623 * \brief CAN frame not received/too-stale. Check the CAN bus wiring, CAN bus
1624 * utilization, and power to the device.
1625 */
1626 RxTimeout = -1003,
1627 /**
1628 * \brief CAN Transmit timed out.
1629 */
1630 TxTimeout = -1004,
1631 /**
1632 * \brief ArbID is incorrect.
1633 */
1634 UnexpectedArbId = -1005,
1635 /**
1636 * \brief CanOverflowed
1637 */
1638 CanOverflowed = -1006,
1639 /**
1640 * \brief Sensor Not Present.
1641 */
1642 SensorNotPresent = -1007,
1643 /**
1644 * \brief Firmware Too Old. Use Phoenix Tuner X to field upgrade your CTRE CAN
1645 * device firmware(CRF). Then restart your robot application to clear
1646 * this error.
1647 */
1648 FirmwareTooOld = -1008,
1649 /**
1650 * \brief Control Frame Period could not be changed. Most likely it is not
1651 * being transmitted.
1652 */
1653 CouldNotChangePeriod = -1009,
1654 /**
1655 * \brief BufferFailure
1656 */
1657 BufferFailure = -1010,
1658 /**
1659 * \brief Firmware is legacy non-FRC version. Use Phoenix Tuner X to field
1660 * upgrade your CTRE CAN device firmware(CRF). Firmware greater than
1661 * 20.0 required.
1662 */
1663 FirmwareNonFRC = -1011,
1664 /**
1665 * \brief General Error Occurred.
1666 */
1667 GeneralError = -1100,
1668 /**
1669 * \brief No new response to update signal.
1670 */
1671 SigNotUpdated = -1200,
1672 /**
1673 * \brief NotAllPIDValuesUpdated
1674 */
1675 NotAllPIDValuesUpdated = -1201,
1676 /**
1677 * \brief GEN_PORT_ERROR
1678 */
1679 GEN_PORT_ERROR = -1300,
1680 /**
1681 * \brief PORT_MODULE_TYPE_MISMATCH
1682 */
1683 PORT_MODULE_TYPE_MISMATCH = -1301,
1684 /**
1685 * \brief GEN_MODULE_ERROR
1686 */
1687 GEN_MODULE_ERROR = -1400,
1688 /**
1689 * \brief MODULE_NOT_INIT_SET_ERROR
1690 */
1691 MODULE_NOT_INIT_SET_ERROR = -1401,
1692 /**
1693 * \brief MODULE_NOT_INIT_GET_ERROR
1694 */
1695 MODULE_NOT_INIT_GET_ERROR = -1402,
1696 /**
1697 * \brief Wheel Radius is too small, cannot get distance traveled.
1698 */
1699 WheelRadiusTooSmall = -1500,
1700 /**
1701 * \brief Ticks per revolution is 0, cannot get heading.
1702 */
1703 TicksPerRevZero = -1501,
1704 /**
1705 * \brief Distance between wheels is too small, cannot get heading.
1706 */
1707 DistanceBetweenWheelsTooSmall = -1502,
1708 /**
1709 * \brief GainsAreNotSet
1710 */
1711 GainsAreNotSet = -1503,
1712 /**
1713 * \brief Use RemoteLimitSwitchSource instead of LimitSwitchSource.
1714 */
1715 WrongRemoteLimitSwitchSource = -1504,
1716 /**
1717 * \brief Motor Controller Voltage Compensation should not be used with
1718 * setVoltage(). This causes compensation to happen twice. Disable
1719 * Voltage Compensation by calling enableVoltageCompensation(false) in
1720 * order to use setVoltage().
1721 */
1722 DoubleVoltageCompensatingWPI = -1505,
1723 /**
1724 * \brief CANdleAnimSlotOutOfBounds
1725 */
1726 CANdleAnimSlotOutOfBounds = -1506,
1727 /**
1728 * \brief IncompatibleMode
1729 */
1730 IncompatibleMode = -1600,
1731 /**
1732 * \brief Handle passed into function is incorrect.
1733 */
1734 InvalidHandle = -1601,
1735 /**
1736 * \brief Features requires newer firmware version.
1737 */
1738 FeatureRequiresHigherFirm = -1700,
1739 /**
1740 * \brief Config factory default features require firmware &gt;=3.10.
1741 */
1742 ConfigFactoryDefaultRequiresHigherFirm = -1702,
1743 /**
1744 * \brief Config Motion S Curve Strength features require firmware &gt;=4.16.
1745 */
1746 ConfigMotionSCurveRequiresHigherFirm = -1703,
1747 /**
1748 * \brief Talon FX(Falcon 500) Firmware Too Old. Use Phoenix Tuner to field
1749 * upgrade your CTRE CAN device firmware(CRF) to &gt;=20.3. Then restart
1750 * your robot application to clear this error.
1751 */
1752 TalonFXFirmwarePreVBatDetect = -1704,
1753 /**
1754 * \brief CANdleAnimationsRequireHigherFirm
1755 */
1756 CANdleAnimationsRequireHigherFirm = -1705,
1757 /**
1758 * \brief LibraryCouldNotBeLoaded
1759 */
1760 LibraryCouldNotBeLoaded = -1800,
1761 /**
1762 * \brief MissingRoutineInLibrary
1763 */
1764 MissingRoutineInLibrary = -1801,
1765 /**
1766 * \brief ResourceNotAvailable
1767 */
1768 ResourceNotAvailable = -1802,
1769 /**
1770 * \brief Could not find music file specified, try specifying an absolute path.
1771 */
1772 MusicFileNotFound = -1900,
1773 /**
1774 * \brief Music file size is incorrect, could not parse correctly. Ensure you're
1775 * using Tuner to generate file.
1776 */
1777 MusicFileWrongSize = -1901,
1778 /**
1779 * \brief Music file version is too new, update Phoenix to utilize this file.
1780 */
1781 MusicFileTooNew = -1902,
1782 /**
1783 * \brief Music file is invalid. Ensure you're using Tuner to generate file.
1784 */
1785 MusicFileInvalid = -1903,
1786 /**
1787 * \brief An invalid orchestra action occurred. Ensure a music file is loaded.
1788 */
1789 InvalidOrchestraAction = -1904,
1790 /**
1791 * \brief This music file version is too old. Regenerate file using Tuner.
1792 */
1793 MusicFileTooOld = -1905,
1794 /**
1795 * \brief Music interrupted due to one of the instruments being commanded a
1796 * different control mode. Press Play to resume music.
1797 */
1798 MusicInterrupted = -1906,
1799 /**
1800 * \brief This device doesn't support MusicTone control mode.
1801 */
1802 MusicNotSupported = -1907,
1803 /**
1804 * \brief kInvalidInterface
1805 */
1806 kInvalidInterface = -2000,
1807 /**
1808 * \brief kInvalidGuid
1809 */
1810 kInvalidGuid = -2001,
1811 /**
1812 * \brief kInvalidClass
1813 */
1814 kInvalidClass = -2002,
1815 /**
1816 * \brief kInvalidProtocol
1817 */
1818 kInvalidProtocol = -2003,
1819 /**
1820 * \brief kInvalidPath
1821 */
1822 kInvalidPath = -2004,
1823 /**
1824 * \brief kGeneralWinUsbError
1825 */
1826 kGeneralWinUsbError = -2005,
1827 /**
1828 * \brief kFailedSetup
1829 */
1830 kFailedSetup = -2006,
1831 /**
1832 * \brief kListenFailed
1833 */
1834 kListenFailed = -2007,
1835 /**
1836 * \brief kSendFailed
1837 */
1838 kSendFailed = -2008,
1839 /**
1840 * \brief kReceiveFailed
1841 */
1842 kReceiveFailed = -2009,
1843 /**
1844 * \brief kInvalidRespFormat
1845 */
1846 kInvalidRespFormat = -2010,
1847 /**
1848 * \brief kWinUsbInitFailed
1849 */
1850 kWinUsbInitFailed = -2011,
1851 /**
1852 * \brief kWinUsbQueryFailed
1853 */
1854 kWinUsbQueryFailed = -2012,
1855 /**
1856 * \brief kWinUsbGeneralError
1857 */
1858 kWinUsbGeneralError = -2013,
1859 /**
1860 * \brief kAccessDenied
1861 */
1862 kAccessDenied = -2014,
1863 /**
1864 * \brief kFirmwareInvalidResponse
1865 */
1866 kFirmwareInvalidResponse = -2015,
1867 /**
1868 * \brief This StatusCode has not been initialized. Make sure the StatusCode is
1869 * getting assigned to the return of a method.
1870 */
1871 StatusCodeNotInitialized = -10000,
1872 /**
1873 * \brief WarningNotInitialized
1874 */
1875 WarningNotInitialized = 10000,
1876 /**
1877 * \brief The timestamp reported by CANivore is at least 10ms older than the
1878 * timestamp reported by the system, indicating it's fallen out of sync.
1879 * This does not impact the data of this message, only the timing.
1880 */
1881 HwTimestampOutOfSync = 10001,
1882 /**
1883 * \brief Do not apply or refresh configs periodically, as configs are blocking.
1884 */
1885 FrequentConfigCalls = 10002,
1886 /**
1887 * \brief The given network/CAN bus is invalid. Verify that any status signals
1888 * provided are on the same network and that the network is present.
1889 */
1890 InvalidNetwork = -10001,
1891 /**
1892 * \brief The device ID is invalid. Ensure the device is constructed with a
1893 * valid ID (0-62).
1894 */
1895 InvalidDeviceId = -10002,
1896 /**
1897 * \brief Could not cast from base value to this particular signal's type
1898 */
1899 CouldNotCast = -10003,
1900 /**
1901 * \brief Could not find this value when searching for it
1902 */
1903 NotFound = -10004,
1904 /**
1905 * \brief This operation is not supported
1906 */
1907 NotSupported = -10005,
1908 /**
1909 * \brief Could not determine context from this device hash
1910 */
1911 MissingContext = -10006,
1912 /**
1913 * \brief Model name in license file does not match model name of selected
1914 * device.
1915 */
1916 ModelMismatch = -10007,
1917 /**
1918 * \brief Serial Number in license file does not match model name of selected
1919 * device.
1920 */
1921 SerialMismatch = -10008,
1922 /**
1923 * \brief Could not find specified file.
1924 */
1925 NoFile = -10009,
1926 /**
1927 * \brief License did not successfully download to Device.
1928 */
1929 LicenseDownloadFailed = -10010,
1930 /**
1931 * \brief Self Test report does not have any values, is the firmware up to date?
1932 */
1933 SelfTestIsEmpty = -10011,
1934 /**
1935 * \brief Failed to lookup signal properties. This can happen if the fimware is
1936 * too new and supports signals that older APIs do not support.
1937 */
1938 SignalLookupFailed = -10012,
1939 /**
1940 * \brief The current mode of the device is invalid for getting this signal.
1941 */
1942 InvalidModeToGetSignal = -10013,
1943 /**
1944 * \brief Device is not licensed. Cannot get any data from it.
1945 */
1946 UnlicensedDevice = -10014,
1947 /**
1948 * \brief Size is invalid.
1949 */
1950 InvalidSize = -10015,
1951 /**
1952 * \brief InvalidLicenseResponse
1953 */
1954 InvalidLicenseResponse = -10016,
1955 /**
1956 * \brief InvalidContext
1957 */
1958 InvalidContext = -10017,
1959 /**
1960 * \brief InternalError
1961 */
1962 InternalError = -10018,
1963 /**
1964 * \brief kDeviceResponseIncorrect
1965 */
1966 kDeviceResponseIncorrect = -10019,
1967 /**
1968 * \brief kErrorPollingForDevices
1969 */
1970 kErrorPollingForDevices = -10020,
1971 /**
1972 * \brief Device firmware could not be retrieved. Check that the device is
1973 * running v6 firmware, the device ID is correct, the specified CAN bus
1974 * is correct, and the device is powered.
1975 */
1976 CouldNotRetrieveV6Firmware = -10021,
1977 /**
1978 * \brief Device firmware could not be decoded. Check that the device is running
1979 * v6 firmware, the device ID is correct, the specified CAN bus is
1980 * correct, and the device is powered.
1981 */
1982 CouldNotDecodeDeviceFirmware = -10022,
1983 /**
1984 * \brief The values specified for master are in valid. Make sure the Device ID
1985 * of master are correct.
1986 */
1987 InvalidIDToFollow = -10023,
1988 /**
1989 * \brief Using a Pro only feature on an unlicensed device. The device may not
1990 * behave as expected if it continues to operate while unlicensed.
1991 */
1992 UsingProFeatureOnUnlicensedDevice = -10024,
1993 /**
1994 * \brief Firmware Too New. Use Phoenix Tuner X to field upgrade your CTRE CAN
1995 * device firmware(CRF) to a compatible version. Then restart your robot
1996 * application to clear this error.
1997 */
1998 FirmwareTooNew = -10025,
1999 /**
2000 * \brief The data frame could not be serialized for transmit.
2001 */
2002 CouldNotSerialize = -10026,
2003 /**
2004 * \brief The mechanism is disabled due to a fault in one of the devices.
2005 */
2006 MechanismFaulted = -10027,
2007 /**
2008 * \brief Firmware version is not compatible with this version of Phoenix. Make
2009 * sure your firmware and API major versions match.
2010 */
2011 FirmwareVersNotCompatible = -10028,
2012 /**
2013 * \brief Could not find specified directory.
2014 */
2015 DirectoryMissing = -10029,
2016 /**
2017 * \brief This API version is too old for the firmware on the device. Either
2018 * upgrade the API to a newer version or downgrade the device firmware to
2019 * an older version for correct behavior.
2020 */
2021 ApiTooOld = -10030,
2022 /**
2023 * \brief The signal logger is not running. Start the signal logger before
2024 * writing any signals.
2025 */
2026 LoggerNotRunning = -10031,
2027 /**
2028 * \brief Blocking operations, such as configs, cannot have a timeout of 0. Pass
2029 * in a non-zero timeout (typically 0.050+ seconds) for normal operation.
2030 */
2031 TimeoutCannotBeZero = -10032,
2032 /**
2033 * \brief Device cannot be licensed while it is control enabled. Disable and
2034 * neutral the device to apply the licenses.
2035 */
2036 CannotLicenseWhileEnabled = -10033,
2037 /**
2038 * \brief Could not open or read the given file.
2039 */
2040 InvalidFile = -10034,
2041 /**
2042 * \brief The given hoot log requires an older version of Phoenix API.
2043 */
2044 HootLogTooOld = -10035,
2045 /**
2046 * \brief The given hoot log requires a newer version of Phoenix API.
2047 */
2048 HootLogTooNew = -10036,
2049 /**
2050 * \brief Hoot log is not licensed. Cannot get any data from it.
2051 */
2052 UnlicensedHootLog = -10037,
2053 /**
2054 * \brief The simulation timing cannot be advanced by a time step while
2055 * unpaused. Pause the simulator before advancing time.
2056 */
2057 CannotStepWhileUnpaused = -10038,
2058 /**
2059 * \brief Hoot replay does not support replaying multiple files. Ensure that
2060 * only one file is loaded at a time.
2061 */
2062 MultipleReplayNotSupported = -10039,
2063 /**
2064 * \brief The maximum number of loggable user signals has been exceeded.
2065 * Additional user signals will not be logged.
2066 */
2067 UserSignalLimitExceeded = -10040,
2068 /**
2069 * \brief The provided model was not a valid device type.
2070 */
2071 InvalidDeviceModel = -10041,
2072 /**
2073 * \brief The requested signal is missing or not supported. Verify that the
2074 * device firmware is up-to-date.
2075 */
2076 SignalNotSupportedOrMissing = -10042,
2077 /**
2078 * \brief The schema for the logged user signal is invalid or missing. Ensure
2079 * that the schema is written before the user signal.
2080 */
2081 MissingSchema = -10043,
2082} StatusCode_t;
2083
2084/**
2085 * \brief Get the name of the StatusCode passed
2086 *
2087 * \param value StatusCode to get name of
2088 * \returns const char* Name of StatusCode
2089 */
2090const char *GetStatusCodeName(StatusCode_t value);
2091/**
2092 * \brief Get the description of the StatusCode passed
2093 *
2094 * \param value StatusCode to get description of
2095 * \returns const char* Description of StatusCode
2096 */
2097const char *GetStatusCodeDescription(StatusCode_t value);
2098
2099#endif
static constexpr int CANdleAnimationsRequireHigherFirm
CANdleAnimationsRequireHigherFirm.
Definition StatusCodes.h:505
static constexpr int InvalidContext
InvalidContext.
Definition StatusCodes.h:707
static constexpr int PulseWidthSensorNotPresent
PulseWidthSensorNotPresent.
Definition StatusCodes.h:317
static constexpr int kAccessDenied
kAccessDenied
Definition StatusCodes.h:611
static constexpr int FirmVersionCouldNotBeRetrieved
Firm Vers could not be retrieved.
Definition StatusCodes.h:326
static constexpr int NoFile
Could not find specified file.
Definition StatusCodes.h:674
static constexpr int FeatureRequiresHigherFirm
Features requires newer firmware version.
Definition StatusCodes.h:487
static constexpr int FirmwareNonFRC
Firmware is legacy non-FRC version.
Definition StatusCodes.h:412
friend std::ostream & operator<<(std::ostream &os, StatusCode status)
static constexpr int MusicFileWrongSize
Music file size is incorrect, could not parse correctly.
Definition StatusCodes.h:526
static constexpr int kGeneralWinUsbError
kGeneralWinUsbError
Definition StatusCodes.h:575
static constexpr int kWinUsbGeneralError
kWinUsbGeneralError
Definition StatusCodes.h:607
static constexpr int PORT_MODULE_TYPE_MISMATCH
PORT_MODULE_TYPE_MISMATCH.
Definition StatusCodes.h:432
static constexpr int SensorNotPresent
Sensor Not Present.
Definition StatusCodes.h:391
static constexpr int kFirmwareInvalidResponse
kFirmwareInvalidResponse
Definition StatusCodes.h:615
static constexpr int NotUpdating
The diagnostic server is not field upgrading any devices.
Definition StatusCodes.h:142
static constexpr int InvalidIDToFollow
The values specified for master are in valid.
Definition StatusCodes.h:736
static constexpr int CannotStepWhileUnpaused
The simulation timing cannot be advanced by a time step while unpaused.
Definition StatusCodes.h:806
static constexpr int InternalError
InternalError.
Definition StatusCodes.h:711
static constexpr int CouldNotChangePeriod
Control Frame Period could not be changed.
Definition StatusCodes.h:402
static constexpr int IncompatibleMode
IncompatibleMode.
Definition StatusCodes.h:479
static constexpr int ControlModeNotSupportedYet
This control mode is not supported yet.
Definition StatusCodes.h:339
static constexpr int NormalModeMsgNotPresent
NormalModeMsgNotPresent.
Definition StatusCodes.h:134
static constexpr int CouldNotReqDevInfo
CouldNotReqDevInfo.
Definition StatusCodes.h:184
static constexpr int SimPhysicsTypeNotSupported
SimPhysicsTypeNotSupported.
Definition StatusCodes.h:357
static constexpr int HootLogTooNew
The given hoot log requires a newer version of Phoenix API.
Definition StatusCodes.h:797
constexpr const char * GetDescription() const
Gets the description of this StatusCode.
Definition StatusCodes.h:1068
static constexpr int OK
No Error.
Definition StatusCodes.h:35
static constexpr int StatusCodeNotInitialized
This StatusCode has not been initialized.
Definition StatusCodes.h:620
static constexpr int AppIsTerminating
The user application is shutting down.
Definition StatusCodes.h:304
static constexpr int DoubleVoltageCompensatingWPI
Motor Controller Voltage Compensation should not be used with setVoltage().
Definition StatusCodes.h:471
static constexpr int GEN_MODULE_ERROR
GEN_MODULE_ERROR.
Definition StatusCodes.h:436
static constexpr int NotImplemented
Not Implemented, check latest installer.
Definition StatusCodes.h:109
static constexpr int SignalLookupFailed
Failed to lookup signal properties.
Definition StatusCodes.h:687
static constexpr int UnlicensedDevice
Device is not licensed.
Definition StatusCodes.h:695
static constexpr int kInvalidGuid
kInvalidGuid
Definition StatusCodes.h:559
static constexpr int CouldNotCast
Could not cast from base value to this particular signal's type.
Definition StatusCodes.h:648
constexpr friend auto operator<=>(StatusCode, StatusCode)=default
static constexpr int SimDeviceNotFound
SimDeviceNotFound.
Definition StatusCodes.h:353
static constexpr int CouldNotValidate
Bootloader could not verify integrity of the flashed application.
Definition StatusCodes.h:68
static constexpr int InvalidCrfNoSects
InvalidCrfNoSects.
Definition StatusCodes.h:220
static constexpr int CouldNotReqSetDesc
Unable to set name to this device.
Definition StatusCodes.h:93
static constexpr int CannotUdpToDevice
CannotUdpToDevice.
Definition StatusCodes.h:288
static constexpr int MusicFileTooOld
This music file version is too old.
Definition StatusCodes.h:542
static constexpr int InvalidHandle
Handle passed into function is incorrect.
Definition StatusCodes.h:483
static constexpr int CannotOpenSerialPort
CannotOpenSerialPort.
Definition StatusCodes.h:256
static constexpr int kInvalidInterface
kInvalidInterface
Definition StatusCodes.h:555
static constexpr int ConfigReadWriteMismatch
The configs read from the device do not match the configs that were written.
Definition StatusCodes.h:168
static constexpr int NotAllPIDValuesUpdated
NotAllPIDValuesUpdated.
Definition StatusCodes.h:424
static constexpr int TaskIsBusy
Diagnostic Server is busy with another command.
Definition StatusCodes.h:39
constexpr const char * GetName() const
Gets the name of this StatusCode.
Definition StatusCodes.h:867
static constexpr int kInvalidProtocol
kInvalidProtocol
Definition StatusCodes.h:567
static constexpr int CouldNotSendFlash
Could not field upgrade the device.
Definition StatusCodes.h:64
static constexpr int CannotOpenUdpPort
CannotOpenUdpPort.
Definition StatusCodes.h:276
static constexpr int CanivCliError
Command-line issue with caniv.
Definition StatusCodes.h:204
static constexpr int InsufficientSz
InsufficientSz.
Definition StatusCodes.h:176
static constexpr int AppTooOld
Device firmware application is too old.
Definition StatusCodes.h:89
static constexpr int MultipleReplayNotSupported
Hoot replay does not support replaying multiple files.
Definition StatusCodes.h:811
static constexpr int WarningNotInitialized
WarningNotInitialized.
Definition StatusCodes.h:624
static constexpr int MODULE_NOT_INIT_SET_ERROR
MODULE_NOT_INIT_SET_ERROR.
Definition StatusCodes.h:440
static constexpr int InvalidJson
InvalidJson.
Definition StatusCodes.h:300
static constexpr int BufferFull
Buffer is full, cannot insert more data.
Definition StatusCodes.h:313
static constexpr int MusicFileInvalid
Music file is invalid.
Definition StatusCodes.h:534
static constexpr int DidNotGetFullDhcp
DidNotGetFullDhcp.
Definition StatusCodes.h:244
static constexpr int CanOverflowed
CanOverflowed.
Definition StatusCodes.h:387
static constexpr int MotProfFirmThreshold2
Motor Controller must have >= 3.4 firmware for advanced PID0/PID1 features.
Definition StatusCodes.h:349
static constexpr int FlashWasGood
Device field upgrade was successful.
Definition StatusCodes.h:85
static constexpr int CouldNotRunApp
Could not run the device firmware application.
Definition StatusCodes.h:72
static constexpr int CouldNotConfirmBl
Could not confirm the device has entered the bootloader.
Definition StatusCodes.h:56
static constexpr int GeneralError
General Error Occurred.
Definition StatusCodes.h:416
static constexpr int GeneralWarning
General Warning Occurred.
Definition StatusCodes.h:321
static constexpr int HootLogTooOld
The given hoot log requires an older version of Phoenix API.
Definition StatusCodes.h:793
static constexpr int CouldNotErase
Could not erase flash.
Definition StatusCodes.h:60
static constexpr int HwTimestampOutOfSync
The timestamp reported by CANivore is at least 10ms older than the timestamp reported by the system,...
Definition StatusCodes.h:630
static constexpr int CouldNotEnterBl
Could not put the device into bootloader mode.
Definition StatusCodes.h:52
static constexpr int ModelMismatch
Model name in license file does not match model name of selected device.
Definition StatusCodes.h:665
static constexpr int NoConfigs
This device did not report any available configs.
Definition StatusCodes.h:151
constexpr bool IsWarning() const
Definition StatusCodes.h:856
static constexpr int SerialMismatch
Serial Number in license file does not match model name of selected device.
Definition StatusCodes.h:670
static constexpr int InvalidLicenseResp
InvalidLicenseResp.
Definition StatusCodes.h:248
static constexpr int ConfigFailed
ConfigFailed.
Definition StatusCodes.h:155
static constexpr int InvalidCrfBadHeader
InvalidCrfBadHeader.
Definition StatusCodes.h:208
static constexpr int CouldNotFindDynamicId
CouldNotFindDynamicId.
Definition StatusCodes.h:236
static constexpr int GainsAreNotSet
GainsAreNotSet.
Definition StatusCodes.h:460
static constexpr int BufferFailure
BufferFailure.
Definition StatusCodes.h:406
static constexpr int OnlySupportedInTunerX
This feature requires Tuner X.
Definition StatusCodes.h:200
static constexpr int InvalidModel
This feature is not supported for this device model.
Definition StatusCodes.h:180
static constexpr int CannotWriteSerialPort
CannotWriteSerialPort.
Definition StatusCodes.h:260
static constexpr int InvalidParamValue
An invalid argument was passed into the function/VI, such as a null pointer.
Definition StatusCodes.h:370
constexpr StatusCode()
Definition StatusCodes.h:833
static constexpr int DirectoryMissing
Could not find specified directory.
Definition StatusCodes.h:764
static constexpr int CanMessageStale
CAN message is stale, data is valid but old.
Definition StatusCodes.h:309
static constexpr int InvalidCrfBadSectHeader
InvalidCrfBadSectHeader.
Definition StatusCodes.h:224
static constexpr int kSendFailed
kSendFailed
Definition StatusCodes.h:587
static constexpr int NoSerialControlFrameResp
NoSerialControlFrameResp.
Definition StatusCodes.h:272
static constexpr int kInvalidRespFormat
kInvalidRespFormat
Definition StatusCodes.h:595
static constexpr int TalonFXFirmwarePreVBatDetect
Talon FX(Falcon 500) Firmware Too Old.
Definition StatusCodes.h:501
static constexpr int ControlModeNotValid
The control mode is not valid for this function.
Definition StatusCodes.h:334
static constexpr int InvalidOrchestraAction
An invalid orchestra action occurred.
Definition StatusCodes.h:538
static constexpr int InvalidCrfFileSzInvald
InvalidCrfFileSzInvald.
Definition StatusCodes.h:212
static constexpr int InvalidModeToGetSignal
The current mode of the device is invalid for getting this signal.
Definition StatusCodes.h:691
static constexpr int InvalidCrfWrongProduct
Specified CRF is for the wrong product.
Definition StatusCodes.h:216
static constexpr int kWinUsbQueryFailed
kWinUsbQueryFailed
Definition StatusCodes.h:603
static constexpr int SelfTestIsEmpty
Self Test report does not have any values, is the firmware up to date?
Definition StatusCodes.h:682
static constexpr int NoUdpControlFrameResp
NoUdpControlFrameResp.
Definition StatusCodes.h:292
static constexpr int DeviceDidNotRespondToDiagReq
DeviceDidNotRespondToDiagReq.
Definition StatusCodes.h:196
static constexpr int EcuIsNotPresent
Device is not present.
Definition StatusCodes.h:48
static constexpr int InvalidCrfBadSectSize
InvalidCrfBadSectSize.
Definition StatusCodes.h:228
static constexpr int CannotReadUdpPort
CannotReadUdpPort.
Definition StatusCodes.h:284
static constexpr int LoggerNotRunning
The signal logger is not running.
Definition StatusCodes.h:775
static constexpr int kListenFailed
kListenFailed
Definition StatusCodes.h:583
static constexpr int InvalidDeviceId
The device ID is invalid.
Definition StatusCodes.h:644
constexpr StatusCode(int val)
Definition StatusCodes.h:832
static constexpr int MotProfFirmThreshold
Motor Controller must have >= 3.2 firmware for motion profile control mode.
Definition StatusCodes.h:344
static constexpr int FeaturesNotAvailableYet
This feature will be supported in a future update.
Definition StatusCodes.h:330
static constexpr int TxFailed
Could not transmit CAN Frame.
Definition StatusCodes.h:365
static constexpr int InvalidTask
This diagnostic action is not supported.
Definition StatusCodes.h:105
static constexpr int FirmwareVersNotCompatible
Firmware version is not compatible with this version of Phoenix.
Definition StatusCodes.h:760
static constexpr int UserSignalLimitExceeded
The maximum number of loggable user signals has been exceeded.
Definition StatusCodes.h:816
static constexpr int InvalidLicenseResponse
InvalidLicenseResponse.
Definition StatusCodes.h:703
static constexpr int CompileSzIsWrong
CompileSzIsWrong.
Definition StatusCodes.h:97
static constexpr int CustomNameNotSupported
CustomNameNotSupported.
Definition StatusCodes.h:163
static constexpr int CouldNotDecodeDeviceFirmware
Device firmware could not be decoded.
Definition StatusCodes.h:731
constexpr bool operator==(int other) const
Definition StatusCodes.h:840
static constexpr int InvalidCanivCache
InvalidCanivCache.
Definition StatusCodes.h:252
static constexpr int FirmwareTooNew
Firmware Too New.
Definition StatusCodes.h:747
static constexpr int kReceiveFailed
kReceiveFailed
Definition StatusCodes.h:591
static constexpr int MusicInterrupted
Music interrupted due to one of the instruments being commanded a different control mode.
Definition StatusCodes.h:547
static constexpr int CouldNotRetrieveV6Firmware
Device firmware could not be retrieved.
Definition StatusCodes.h:725
static constexpr int FrequentConfigCalls
Do not apply or refresh configs periodically, as configs are blocking.
Definition StatusCodes.h:634
static constexpr int CannotReadSerialPort
CannotReadSerialPort.
Definition StatusCodes.h:264
static constexpr int MissingRoutineInLibrary
MissingRoutineInLibrary.
Definition StatusCodes.h:513
static constexpr int MusicFileNotFound
Could not find music file specified, try specifying an absolute path.
Definition StatusCodes.h:521
static constexpr int WrongRemoteLimitSwitchSource
Use RemoteLimitSwitchSource instead of LimitSwitchSource.
Definition StatusCodes.h:464
static constexpr int MoreThanOneFile
MoreThanOneFile.
Definition StatusCodes.h:117
static constexpr int kWinUsbInitFailed
kWinUsbInitFailed
Definition StatusCodes.h:599
static constexpr int CouldNotConfirmId
Could not verify that the changed ID took effect.
Definition StatusCodes.h:81
constexpr bool IsOK() const
Definition StatusCodes.h:860
static constexpr int CannotSerialToDevice
CannotSerialToDevice.
Definition StatusCodes.h:268
static constexpr int LibraryCouldNotBeLoaded
LibraryCouldNotBeLoaded.
Definition StatusCodes.h:509
static constexpr int NoControls
This device does not support new controls.
Definition StatusCodes.h:188
constexpr auto operator<=>(int other) const
Definition StatusCodes.h:844
static constexpr int ConfigMotionSCurveRequiresHigherFirm
Config Motion S Curve Strength features require firmware >=4.16.
Definition StatusCodes.h:495
static constexpr int MusicNotSupported
This device doesn't support MusicTone control mode.
Definition StatusCodes.h:551
static constexpr int GadgeteerDeviceNoSetId
Cannot set the ID of a gadgeteer device.
Definition StatusCodes.h:101
static constexpr int NodeIsInvalid
Specified device was not found.
Definition StatusCodes.h:122
static constexpr int InvalidSize
Size is invalid.
Definition StatusCodes.h:699
static constexpr int TimeoutCannotBeZero
Blocking operations, such as configs, cannot have a timeout of 0.
Definition StatusCodes.h:780
static constexpr int MODULE_NOT_INIT_GET_ERROR
MODULE_NOT_INIT_GET_ERROR.
Definition StatusCodes.h:444
static constexpr int CouldNotReqFactoryDefault
Unable to factory default this device.
Definition StatusCodes.h:159
static constexpr int ConfigFactoryDefaultRequiresHigherFirm
Config factory default features require firmware >=3.10.
Definition StatusCodes.h:491
static constexpr int FirmwareTooOld
Firmware Too Old.
Definition StatusCodes.h:397
static constexpr int CorruptedPOST
CorruptedPOST.
Definition StatusCodes.h:146
static constexpr int LicenseDownloadFailed
License did not successfully download to Device.
Definition StatusCodes.h:678
static constexpr int FeatureNotSupported
This feature is not supported.
Definition StatusCodes.h:138
static constexpr int kErrorPollingForDevices
kErrorPollingForDevices
Definition StatusCodes.h:719
static constexpr int NoCrfFile
Specified CRF file could not be found.
Definition StatusCodes.h:232
static constexpr int UnexpectedArbId
ArbID is incorrect.
Definition StatusCodes.h:383
static constexpr int GEN_PORT_ERROR
GEN_PORT_ERROR.
Definition StatusCodes.h:428
static constexpr int CANdleAnimSlotOutOfBounds
CANdleAnimSlotOutOfBounds.
Definition StatusCodes.h:475
static constexpr int CouldNotSendCanFrame
CouldNotSendCanFrame.
Definition StatusCodes.h:130
static constexpr int kInvalidClass
kInvalidClass
Definition StatusCodes.h:563
static constexpr int WheelRadiusTooSmall
Wheel Radius is too small, cannot get distance traveled.
Definition StatusCodes.h:448
static constexpr int CouldNotSerialize
The data frame could not be serialized for transmit.
Definition StatusCodes.h:751
static constexpr int InvalidDeviceSpec
InvalidDeviceSpec.
Definition StatusCodes.h:43
static constexpr int UnlicensedHootLog
Hoot log is not licensed.
Definition StatusCodes.h:801
static constexpr int NoDevicesOnBus
NoDevicesOnBus.
Definition StatusCodes.h:113
static constexpr int MechanismFaulted
The mechanism is disabled due to a fault in one of the devices.
Definition StatusCodes.h:755
static constexpr int ApiTooOld
This API version is too old for the firmware on the device.
Definition StatusCodes.h:770
static constexpr int DidNotGetDhcp
DidNotGetDhcp.
Definition StatusCodes.h:240
static constexpr int InvalidDeviceDescriptor
InvalidDeviceDescriptor.
Definition StatusCodes.h:126
static constexpr int MusicFileTooNew
Music file version is too new, update Phoenix to utilize this file.
Definition StatusCodes.h:530
static constexpr int UsingProFeatureOnUnlicensedDevice
Using a Pro only feature on an unlicensed device.
Definition StatusCodes.h:741
constexpr bool IsError() const
Definition StatusCodes.h:852
static constexpr int SignalNotSupportedOrMissing
The requested signal is missing or not supported.
Definition StatusCodes.h:825
static constexpr int kDeviceResponseIncorrect
kDeviceResponseIncorrect
Definition StatusCodes.h:715
static constexpr int SimDeviceAlreadyExists
SimDeviceAlreadyExists.
Definition StatusCodes.h:361
static constexpr int TicksPerRevZero
Ticks per revolution is 0, cannot get heading.
Definition StatusCodes.h:452
static constexpr int MissingSchema
The schema for the logged user signal is invalid or missing.
Definition StatusCodes.h:830
static constexpr int kFailedSetup
kFailedSetup
Definition StatusCodes.h:579
static constexpr int CannotLicenseWhileEnabled
Device cannot be licensed while it is control enabled.
Definition StatusCodes.h:785
constexpr friend bool operator==(StatusCode, StatusCode)=default
static constexpr int CouldNotReqSetConfigs
Could not apply the device configs.
Definition StatusCodes.h:172
static constexpr int InvalidDeviceModel
The provided model was not a valid device type.
Definition StatusCodes.h:820
static constexpr int CouldNotReqSetId
Unable to set ID to this device.
Definition StatusCodes.h:77
static constexpr int kInvalidPath
kInvalidPath
Definition StatusCodes.h:571
static constexpr int TxTimeout
CAN Transmit timed out.
Definition StatusCodes.h:379
static constexpr int InvalidNetwork
The given network/CAN bus is invalid.
Definition StatusCodes.h:639
static constexpr int MissingContext
Could not determine context from this device hash.
Definition StatusCodes.h:660
static constexpr int DeviceIsNull
DeviceIsNull.
Definition StatusCodes.h:192
static constexpr int SigNotUpdated
No new response to update signal.
Definition StatusCodes.h:420
static constexpr int TimeoutIso15Response
TimeoutIso15Response.
Definition StatusCodes.h:296
static constexpr int CannotWriteUdpPort
CannotWriteUdpPort.
Definition StatusCodes.h:280
static constexpr int ResourceNotAvailable
ResourceNotAvailable.
Definition StatusCodes.h:517
static constexpr int DistanceBetweenWheelsTooSmall
Distance between wheels is too small, cannot get heading.
Definition StatusCodes.h:456
static constexpr int RxTimeout
CAN frame not received/too-stale.
Definition StatusCodes.h:375
static constexpr int NotSupported
This operation is not supported.
Definition StatusCodes.h:656
static constexpr int InvalidFile
Could not open or read the given file.
Definition StatusCodes.h:789
static constexpr int NotFound
Could not find this value when searching for it.
Definition StatusCodes.h:652
#define CTREXPORT
Definition export.h:14
@ OK
The mechanism is running normally.
Definition MechanismState.hpp:19
Definition FrcUsageReport.hpp:12
Definition motor_constants.h:14