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