CTRE Phoenix 6 C++ 25.0.0-beta-4
Loading...
Searching...
No Matches
CoreTalonFX.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) Cross The Road Electronics.  All rights reserved.
3 * License information can be found in CTRE_LICENSE.txt
4 * For support and suggestions contact support@ctr-electronics.com or file
5 * an issue tracker at https://github.com/CrossTheRoadElec/Phoenix-Releases
6 */
7#pragma once
8
77#include <units/angle.h>
78#include <units/angular_acceleration.h>
79#include <units/angular_velocity.h>
80#include <units/current.h>
81#include <units/dimensionless.h>
82#include <units/temperature.h>
83#include <units/voltage.h>
84
85namespace ctre {
86namespace phoenix6 {
87
88namespace hardware {
89namespace core {
90 class CoreTalonFX;
91}
92}
93
94namespace configs {
95
96/**
97 * Class description for the Talon FX integrated motor controller.
98 *
99 * This handles the configurations for the hardware#TalonFX
100 */
102{
103public:
104 constexpr TalonFXConfiguration() = default;
105
106 /**
107 * \brief True if we should factory default newer unsupported configs,
108 * false to leave newer unsupported configs alone.
109 *
110 * \details This flag addresses a corner case where the device may have
111 * firmware with newer configs that didn't exist when this
112 * version of the API was built. If this occurs and this
113 * flag is true, unsupported new configs will be factory
114 * defaulted to avoid unexpected behavior.
115 *
116 * This is also the behavior in Phoenix 5, so this flag
117 * is defaulted to true to match.
118 */
120
121
122 /**
123 * \brief Configs that directly affect motor output.
124 *
125 * \details Includes motor invert, neutral mode, and other features
126 * related to motor output.
127 */
129
130 /**
131 * \brief Configs that directly affect current limiting features.
132 *
133 * \details Contains the supply/stator current limit thresholds and
134 * whether to enable them.
135 */
137
138 /**
139 * \brief Configs that affect Voltage control types.
140 *
141 * \details Includes peak output voltages and other configs affecting
142 * voltage measurements.
143 */
145
146 /**
147 * \brief Configs that affect Torque Current control types.
148 *
149 * \details Includes the maximum and minimum applied torque output and
150 * the neutral deadband used during TorqueCurrentFOC
151 * requests.
152 */
154
155 /**
156 * \brief Configs that affect the feedback of this motor controller.
157 *
158 * \details Includes feedback sensor source, any offsets for the
159 * feedback sensor, and various ratios to describe the
160 * relationship between the sensor and the mechanism for
161 * closed looping.
162 */
164
165 /**
166 * \brief Configs related to sensors used for differential control of
167 * a mechanism.
168 *
169 * \details Includes the differential sensor sources and IDs.
170 */
172
173 /**
174 * \brief Configs related to constants used for differential control
175 * of a mechanism.
176 *
177 * \details Includes the differential peak outputs.
178 */
180
181 /**
182 * \brief Configs that affect the open-loop control of this motor
183 * controller.
184 *
185 * \details Open-loop ramp rates for the various control types.
186 */
188
189 /**
190 * \brief Configs that affect the closed-loop control of this motor
191 * controller.
192 *
193 * \details Closed-loop ramp rates for the various control types.
194 */
196
197 /**
198 * \brief Configs that change how the motor controller behaves under
199 * different limit switch states.
200 *
201 * \details Includes configs such as enabling limit switches,
202 * configuring the remote sensor ID, the source, and the
203 * position to set on limit.
204 */
206
207 /**
208 * \brief Configs that affect audible components of the device.
209 *
210 * \details Includes configuration for the beep on boot.
211 */
213
214 /**
215 * \brief Configs that affect how software-limit switches behave.
216 *
217 * \details Includes enabling software-limit switches and the
218 * threshold at which they are tripped.
219 */
221
222 /**
223 * \brief Configs for Motion Magic®.
224 *
225 * \details Includes Velocity, Acceleration, Jerk, and Expo
226 * parameters.
227 */
229
230 /**
231 * \brief Custom Params.
232 *
233 * \details Custom paramaters that have no real impact on controller.
234 */
236
237 /**
238 * \brief Configs that affect general behavior during closed-looping.
239 *
240 * \details Includes Continuous Wrap features.
241 */
243
244 /**
245 * \brief Gains for the specified slot.
246 *
247 * \details If this slot is selected, these gains are used in closed
248 * loop control requests.
249 */
251
252 /**
253 * \brief Gains for the specified slot.
254 *
255 * \details If this slot is selected, these gains are used in closed
256 * loop control requests.
257 */
259
260 /**
261 * \brief Gains for the specified slot.
262 *
263 * \details If this slot is selected, these gains are used in closed
264 * loop control requests.
265 */
267
268 /**
269 * \brief Modifies this configuration's MotorOutput parameter and returns itself for
270 * method-chaining and easier to use config API.
271 *
272 * Configs that directly affect motor output.
273 *
274 * \details Includes motor invert, neutral mode, and other features
275 * related to motor output.
276 *
277 * \param newMotorOutput Parameter to modify
278 * \returns Itself
279 */
281 {
282 MotorOutput = std::move(newMotorOutput);
283 return *this;
284 }
285
286 /**
287 * \brief Modifies this configuration's CurrentLimits parameter and returns itself for
288 * method-chaining and easier to use config API.
289 *
290 * Configs that directly affect current limiting features.
291 *
292 * \details Contains the supply/stator current limit thresholds and
293 * whether to enable them.
294 *
295 * \param newCurrentLimits Parameter to modify
296 * \returns Itself
297 */
299 {
300 CurrentLimits = std::move(newCurrentLimits);
301 return *this;
302 }
303
304 /**
305 * \brief Modifies this configuration's Voltage parameter and returns itself for
306 * method-chaining and easier to use config API.
307 *
308 * Configs that affect Voltage control types.
309 *
310 * \details Includes peak output voltages and other configs affecting
311 * voltage measurements.
312 *
313 * \param newVoltage Parameter to modify
314 * \returns Itself
315 */
317 {
318 Voltage = std::move(newVoltage);
319 return *this;
320 }
321
322 /**
323 * \brief Modifies this configuration's TorqueCurrent parameter and returns itself for
324 * method-chaining and easier to use config API.
325 *
326 * Configs that affect Torque Current control types.
327 *
328 * \details Includes the maximum and minimum applied torque output and
329 * the neutral deadband used during TorqueCurrentFOC
330 * requests.
331 *
332 * \param newTorqueCurrent Parameter to modify
333 * \returns Itself
334 */
336 {
337 TorqueCurrent = std::move(newTorqueCurrent);
338 return *this;
339 }
340
341 /**
342 * \brief Modifies this configuration's Feedback parameter and returns itself for
343 * method-chaining and easier to use config API.
344 *
345 * Configs that affect the feedback of this motor controller.
346 *
347 * \details Includes feedback sensor source, any offsets for the
348 * feedback sensor, and various ratios to describe the
349 * relationship between the sensor and the mechanism for
350 * closed looping.
351 *
352 * \param newFeedback Parameter to modify
353 * \returns Itself
354 */
356 {
357 Feedback = std::move(newFeedback);
358 return *this;
359 }
360
361 /**
362 * \brief Modifies this configuration's DifferentialSensors parameter and returns itself for
363 * method-chaining and easier to use config API.
364 *
365 * Configs related to sensors used for differential control of a
366 * mechanism.
367 *
368 * \details Includes the differential sensor sources and IDs.
369 *
370 * \param newDifferentialSensors Parameter to modify
371 * \returns Itself
372 */
374 {
375 DifferentialSensors = std::move(newDifferentialSensors);
376 return *this;
377 }
378
379 /**
380 * \brief Modifies this configuration's DifferentialConstants parameter and returns itself for
381 * method-chaining and easier to use config API.
382 *
383 * Configs related to constants used for differential control of a
384 * mechanism.
385 *
386 * \details Includes the differential peak outputs.
387 *
388 * \param newDifferentialConstants Parameter to modify
389 * \returns Itself
390 */
392 {
393 DifferentialConstants = std::move(newDifferentialConstants);
394 return *this;
395 }
396
397 /**
398 * \brief Modifies this configuration's OpenLoopRamps parameter and returns itself for
399 * method-chaining and easier to use config API.
400 *
401 * Configs that affect the open-loop control of this motor controller.
402 *
403 * \details Open-loop ramp rates for the various control types.
404 *
405 * \param newOpenLoopRamps Parameter to modify
406 * \returns Itself
407 */
409 {
410 OpenLoopRamps = std::move(newOpenLoopRamps);
411 return *this;
412 }
413
414 /**
415 * \brief Modifies this configuration's ClosedLoopRamps parameter and returns itself for
416 * method-chaining and easier to use config API.
417 *
418 * Configs that affect the closed-loop control of this motor
419 * controller.
420 *
421 * \details Closed-loop ramp rates for the various control types.
422 *
423 * \param newClosedLoopRamps Parameter to modify
424 * \returns Itself
425 */
427 {
428 ClosedLoopRamps = std::move(newClosedLoopRamps);
429 return *this;
430 }
431
432 /**
433 * \brief Modifies this configuration's HardwareLimitSwitch parameter and returns itself for
434 * method-chaining and easier to use config API.
435 *
436 * Configs that change how the motor controller behaves under
437 * different limit switch states.
438 *
439 * \details Includes configs such as enabling limit switches,
440 * configuring the remote sensor ID, the source, and the
441 * position to set on limit.
442 *
443 * \param newHardwareLimitSwitch Parameter to modify
444 * \returns Itself
445 */
447 {
448 HardwareLimitSwitch = std::move(newHardwareLimitSwitch);
449 return *this;
450 }
451
452 /**
453 * \brief Modifies this configuration's Audio parameter and returns itself for
454 * method-chaining and easier to use config API.
455 *
456 * Configs that affect audible components of the device.
457 *
458 * \details Includes configuration for the beep on boot.
459 *
460 * \param newAudio Parameter to modify
461 * \returns Itself
462 */
464 {
465 Audio = std::move(newAudio);
466 return *this;
467 }
468
469 /**
470 * \brief Modifies this configuration's SoftwareLimitSwitch parameter and returns itself for
471 * method-chaining and easier to use config API.
472 *
473 * Configs that affect how software-limit switches behave.
474 *
475 * \details Includes enabling software-limit switches and the
476 * threshold at which they are tripped.
477 *
478 * \param newSoftwareLimitSwitch Parameter to modify
479 * \returns Itself
480 */
482 {
483 SoftwareLimitSwitch = std::move(newSoftwareLimitSwitch);
484 return *this;
485 }
486
487 /**
488 * \brief Modifies this configuration's MotionMagic parameter and returns itself for
489 * method-chaining and easier to use config API.
490 *
491 * Configs for Motion Magic®.
492 *
493 * \details Includes Velocity, Acceleration, Jerk, and Expo
494 * parameters.
495 *
496 * \param newMotionMagic Parameter to modify
497 * \returns Itself
498 */
500 {
501 MotionMagic = std::move(newMotionMagic);
502 return *this;
503 }
504
505 /**
506 * \brief Modifies this configuration's CustomParams parameter and returns itself for
507 * method-chaining and easier to use config API.
508 *
509 * Custom Params.
510 *
511 * \details Custom paramaters that have no real impact on controller.
512 *
513 * \param newCustomParams Parameter to modify
514 * \returns Itself
515 */
517 {
518 CustomParams = std::move(newCustomParams);
519 return *this;
520 }
521
522 /**
523 * \brief Modifies this configuration's ClosedLoopGeneral parameter and returns itself for
524 * method-chaining and easier to use config API.
525 *
526 * Configs that affect general behavior during closed-looping.
527 *
528 * \details Includes Continuous Wrap features.
529 *
530 * \param newClosedLoopGeneral Parameter to modify
531 * \returns Itself
532 */
534 {
535 ClosedLoopGeneral = std::move(newClosedLoopGeneral);
536 return *this;
537 }
538
539 /**
540 * \brief Modifies this configuration's Slot0 parameter and returns itself for
541 * method-chaining and easier to use config API.
542 *
543 * Gains for the specified slot.
544 *
545 * \details If this slot is selected, these gains are used in closed
546 * loop control requests.
547 *
548 * \param newSlot0 Parameter to modify
549 * \returns Itself
550 */
552 {
553 Slot0 = std::move(newSlot0);
554 return *this;
555 }
556
557 /**
558 * \brief Modifies this configuration's Slot1 parameter and returns itself for
559 * method-chaining and easier to use config API.
560 *
561 * Gains for the specified slot.
562 *
563 * \details If this slot is selected, these gains are used in closed
564 * loop control requests.
565 *
566 * \param newSlot1 Parameter to modify
567 * \returns Itself
568 */
570 {
571 Slot1 = std::move(newSlot1);
572 return *this;
573 }
574
575 /**
576 * \brief Modifies this configuration's Slot2 parameter and returns itself for
577 * method-chaining and easier to use config API.
578 *
579 * Gains for the specified slot.
580 *
581 * \details If this slot is selected, these gains are used in closed
582 * loop control requests.
583 *
584 * \param newSlot2 Parameter to modify
585 * \returns Itself
586 */
588 {
589 Slot2 = std::move(newSlot2);
590 return *this;
591 }
592
593 /**
594 * \brief Get the string representation of this configuration
595 */
596 std::string ToString() const
597 {
598 std::stringstream ss;
599 ss << "TalonFXConfiguration" << std::endl;
600 ss << MotorOutput.ToString();
601 ss << CurrentLimits.ToString();
602 ss << Voltage.ToString();
603 ss << TorqueCurrent.ToString();
604 ss << Feedback.ToString();
607 ss << OpenLoopRamps.ToString();
610 ss << Audio.ToString();
612 ss << MotionMagic.ToString();
613 ss << CustomParams.ToString();
615 ss << Slot0.ToString();
616 ss << Slot1.ToString();
617 ss << Slot2.ToString();
618 return ss.str();
619 }
620
621 /**
622 * \brief Get the serialized form of this configuration
623 */
624 std::string Serialize() const
625 {
626 std::stringstream ss;
627 ss << MotorOutput.Serialize();
628 ss << CurrentLimits.Serialize();
629 ss << Voltage.Serialize();
630 ss << TorqueCurrent.Serialize();
631 ss << Feedback.Serialize();
634 ss << OpenLoopRamps.Serialize();
637 ss << Audio.Serialize();
639 ss << MotionMagic.Serialize();
640 ss << CustomParams.Serialize();
642 ss << Slot0.Serialize();
643 ss << Slot1.Serialize();
644 ss << Slot2.Serialize();
645 return ss.str();
646 }
647
648 /**
649 * \brief Take a string and deserialize it to this configuration
650 */
651 ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize)
652 {
654 err = MotorOutput.Deserialize(to_deserialize);
655 err = CurrentLimits.Deserialize(to_deserialize);
656 err = Voltage.Deserialize(to_deserialize);
657 err = TorqueCurrent.Deserialize(to_deserialize);
658 err = Feedback.Deserialize(to_deserialize);
659 err = DifferentialSensors.Deserialize(to_deserialize);
660 err = DifferentialConstants.Deserialize(to_deserialize);
661 err = OpenLoopRamps.Deserialize(to_deserialize);
662 err = ClosedLoopRamps.Deserialize(to_deserialize);
663 err = HardwareLimitSwitch.Deserialize(to_deserialize);
664 err = Audio.Deserialize(to_deserialize);
665 err = SoftwareLimitSwitch.Deserialize(to_deserialize);
666 err = MotionMagic.Deserialize(to_deserialize);
667 err = CustomParams.Deserialize(to_deserialize);
668 err = ClosedLoopGeneral.Deserialize(to_deserialize);
669 err = Slot0.Deserialize(to_deserialize);
670 err = Slot1.Deserialize(to_deserialize);
671 err = Slot2.Deserialize(to_deserialize);
672 return err;
673 }
674};
675
676/**
677 * Class description for the Talon FX integrated motor controller.
678 *
679 * This handles the configurations for the hardware#TalonFX
680 */
682{
683private:
685 ParentConfigurator{std::move(id)}
686 {}
687
689
690public:
691 /**
692 * \brief Refreshes the values of the specified config group.
693 *
694 * This will wait up to #DefaultTimeoutSeconds.
695 *
696 * \details Call to refresh the selected configs from the device.
697 *
698 * \param configs The configs to refresh
699 * \returns StatusCode of refreshing the configs
700 */
702 {
703 return Refresh(configs, DefaultTimeoutSeconds);
704 }
705
706 /**
707 * \brief Refreshes the values of the specified config group.
708 *
709 * \details Call to refresh the selected configs from the device.
710 *
711 * \param configs The configs to refresh
712 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
713 * \returns StatusCode of refreshing the configs
714 */
715 ctre::phoenix::StatusCode Refresh(TalonFXConfiguration &configs, units::time::second_t timeoutSeconds) const
716 {
717 std::string ref;
718 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
719 configs.Deserialize(ref);
720 return ret;
721 }
722
723 /**
724 * \brief Applies the contents of the specified config to the device.
725 *
726 * This will wait up to #DefaultTimeoutSeconds.
727 *
728 * \details Call to apply the selected configs.
729 *
730 * \param configs Configs to apply against.
731 * \returns StatusCode of the set command
732 */
734 {
735 return Apply(configs, DefaultTimeoutSeconds);
736 }
737
738 /**
739 * \brief Applies the contents of the specified config to the device.
740 *
741 * \details Call to apply the selected configs.
742 *
743 * \param configs Configs to apply against.
744 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
745 * \returns StatusCode of the set command
746 */
747 ctre::phoenix::StatusCode Apply(const TalonFXConfiguration &configs, units::time::second_t timeoutSeconds)
748 {
749 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, configs.FutureProofConfigs, false);
750 }
751
752
753 /**
754 * \brief Refreshes the values of the specified config group.
755 *
756 * This will wait up to #DefaultTimeoutSeconds.
757 *
758 * \details Call to refresh the selected configs from the device.
759 *
760 * \param configs The configs to refresh
761 * \returns StatusCode of refreshing the configs
762 */
764 {
765 return Refresh(configs, DefaultTimeoutSeconds);
766 }
767 /**
768 * \brief Refreshes the values of the specified config group.
769 *
770 * \details Call to refresh the selected configs from the device.
771 *
772 * \param configs The configs to refresh
773 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
774 * \returns StatusCode of refreshing the configs
775 */
776 ctre::phoenix::StatusCode Refresh(MotorOutputConfigs &configs, units::time::second_t timeoutSeconds) const
777 {
778 std::string ref;
779 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
780 configs.Deserialize(ref);
781 return ret;
782 }
783
784 /**
785 * \brief Applies the contents of the specified config to the device.
786 *
787 * This will wait up to #DefaultTimeoutSeconds.
788 *
789 * \details Call to apply the selected configs.
790 *
791 * \param configs Configs to apply against.
792 * \returns StatusCode of the set command
793 */
795 {
796 return Apply(configs, DefaultTimeoutSeconds);
797 }
798
799 /**
800 * \brief Applies the contents of the specified config to the device.
801 *
802 * \details Call to apply the selected configs.
803 *
804 * \param configs Configs to apply against.
805 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
806 * \returns StatusCode of the set command
807 */
808 ctre::phoenix::StatusCode Apply(const MotorOutputConfigs &configs, units::time::second_t timeoutSeconds)
809 {
810 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
811 }
812
813 /**
814 * \brief Refreshes the values of the specified config group.
815 *
816 * This will wait up to #DefaultTimeoutSeconds.
817 *
818 * \details Call to refresh the selected configs from the device.
819 *
820 * \param configs The configs to refresh
821 * \returns StatusCode of refreshing the configs
822 */
824 {
825 return Refresh(configs, DefaultTimeoutSeconds);
826 }
827 /**
828 * \brief Refreshes the values of the specified config group.
829 *
830 * \details Call to refresh the selected configs from the device.
831 *
832 * \param configs The configs to refresh
833 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
834 * \returns StatusCode of refreshing the configs
835 */
836 ctre::phoenix::StatusCode Refresh(CurrentLimitsConfigs &configs, units::time::second_t timeoutSeconds) const
837 {
838 std::string ref;
839 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
840 configs.Deserialize(ref);
841 return ret;
842 }
843
844 /**
845 * \brief Applies the contents of the specified config to the device.
846 *
847 * This will wait up to #DefaultTimeoutSeconds.
848 *
849 * \details Call to apply the selected configs.
850 *
851 * \param configs Configs to apply against.
852 * \returns StatusCode of the set command
853 */
855 {
856 return Apply(configs, DefaultTimeoutSeconds);
857 }
858
859 /**
860 * \brief Applies the contents of the specified config to the device.
861 *
862 * \details Call to apply the selected configs.
863 *
864 * \param configs Configs to apply against.
865 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
866 * \returns StatusCode of the set command
867 */
868 ctre::phoenix::StatusCode Apply(const CurrentLimitsConfigs &configs, units::time::second_t timeoutSeconds)
869 {
870 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
871 }
872
873 /**
874 * \brief Refreshes the values of the specified config group.
875 *
876 * This will wait up to #DefaultTimeoutSeconds.
877 *
878 * \details Call to refresh the selected configs from the device.
879 *
880 * \param configs The configs to refresh
881 * \returns StatusCode of refreshing the configs
882 */
884 {
885 return Refresh(configs, DefaultTimeoutSeconds);
886 }
887 /**
888 * \brief Refreshes the values of the specified config group.
889 *
890 * \details Call to refresh the selected configs from the device.
891 *
892 * \param configs The configs to refresh
893 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
894 * \returns StatusCode of refreshing the configs
895 */
896 ctre::phoenix::StatusCode Refresh(VoltageConfigs &configs, units::time::second_t timeoutSeconds) const
897 {
898 std::string ref;
899 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
900 configs.Deserialize(ref);
901 return ret;
902 }
903
904 /**
905 * \brief Applies the contents of the specified config to the device.
906 *
907 * This will wait up to #DefaultTimeoutSeconds.
908 *
909 * \details Call to apply the selected configs.
910 *
911 * \param configs Configs to apply against.
912 * \returns StatusCode of the set command
913 */
915 {
916 return Apply(configs, DefaultTimeoutSeconds);
917 }
918
919 /**
920 * \brief Applies the contents of the specified config to the device.
921 *
922 * \details Call to apply the selected configs.
923 *
924 * \param configs Configs to apply against.
925 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
926 * \returns StatusCode of the set command
927 */
928 ctre::phoenix::StatusCode Apply(const VoltageConfigs &configs, units::time::second_t timeoutSeconds)
929 {
930 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
931 }
932
933 /**
934 * \brief Refreshes the values of the specified config group.
935 *
936 * This will wait up to #DefaultTimeoutSeconds.
937 *
938 * \details Call to refresh the selected configs from the device.
939 *
940 * \param configs The configs to refresh
941 * \returns StatusCode of refreshing the configs
942 */
944 {
945 return Refresh(configs, DefaultTimeoutSeconds);
946 }
947 /**
948 * \brief Refreshes the values of the specified config group.
949 *
950 * \details Call to refresh the selected configs from the device.
951 *
952 * \param configs The configs to refresh
953 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
954 * \returns StatusCode of refreshing the configs
955 */
956 ctre::phoenix::StatusCode Refresh(TorqueCurrentConfigs &configs, units::time::second_t timeoutSeconds) const
957 {
958 std::string ref;
959 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
960 configs.Deserialize(ref);
961 return ret;
962 }
963
964 /**
965 * \brief Applies the contents of the specified config to the device.
966 *
967 * This will wait up to #DefaultTimeoutSeconds.
968 *
969 * \details Call to apply the selected configs.
970 *
971 * \param configs Configs to apply against.
972 * \returns StatusCode of the set command
973 */
975 {
976 return Apply(configs, DefaultTimeoutSeconds);
977 }
978
979 /**
980 * \brief Applies the contents of the specified config to the device.
981 *
982 * \details Call to apply the selected configs.
983 *
984 * \param configs Configs to apply against.
985 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
986 * \returns StatusCode of the set command
987 */
988 ctre::phoenix::StatusCode Apply(const TorqueCurrentConfigs &configs, units::time::second_t timeoutSeconds)
989 {
990 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
991 }
992
993 /**
994 * \brief Refreshes the values of the specified config group.
995 *
996 * This will wait up to #DefaultTimeoutSeconds.
997 *
998 * \details Call to refresh the selected configs from the device.
999 *
1000 * \param configs The configs to refresh
1001 * \returns StatusCode of refreshing the configs
1002 */
1004 {
1005 return Refresh(configs, DefaultTimeoutSeconds);
1006 }
1007 /**
1008 * \brief Refreshes the values of the specified config group.
1009 *
1010 * \details Call to refresh the selected configs from the device.
1011 *
1012 * \param configs The configs to refresh
1013 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1014 * \returns StatusCode of refreshing the configs
1015 */
1016 ctre::phoenix::StatusCode Refresh(FeedbackConfigs &configs, units::time::second_t timeoutSeconds) const
1017 {
1018 std::string ref;
1019 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1020 configs.Deserialize(ref);
1021 return ret;
1022 }
1023
1024 /**
1025 * \brief Applies the contents of the specified config to the device.
1026 *
1027 * This will wait up to #DefaultTimeoutSeconds.
1028 *
1029 * \details Call to apply the selected configs.
1030 *
1031 * \param configs Configs to apply against.
1032 * \returns StatusCode of the set command
1033 */
1035 {
1036 return Apply(configs, DefaultTimeoutSeconds);
1037 }
1038
1039 /**
1040 * \brief Applies the contents of the specified config to the device.
1041 *
1042 * \details Call to apply the selected configs.
1043 *
1044 * \param configs Configs to apply against.
1045 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1046 * \returns StatusCode of the set command
1047 */
1048 ctre::phoenix::StatusCode Apply(const FeedbackConfigs &configs, units::time::second_t timeoutSeconds)
1049 {
1050 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1051 }
1052
1053 /**
1054 * \brief Refreshes the values of the specified config group.
1055 *
1056 * This will wait up to #DefaultTimeoutSeconds.
1057 *
1058 * \details Call to refresh the selected configs from the device.
1059 *
1060 * \param configs The configs to refresh
1061 * \returns StatusCode of refreshing the configs
1062 */
1067 /**
1068 * \brief Refreshes the values of the specified config group.
1069 *
1070 * \details Call to refresh the selected configs from the device.
1071 *
1072 * \param configs The configs to refresh
1073 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1074 * \returns StatusCode of refreshing the configs
1075 */
1076 ctre::phoenix::StatusCode Refresh(DifferentialSensorsConfigs &configs, units::time::second_t timeoutSeconds) const
1077 {
1078 std::string ref;
1079 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1080 configs.Deserialize(ref);
1081 return ret;
1082 }
1083
1084 /**
1085 * \brief Applies the contents of the specified config to the device.
1086 *
1087 * This will wait up to #DefaultTimeoutSeconds.
1088 *
1089 * \details Call to apply the selected configs.
1090 *
1091 * \param configs Configs to apply against.
1092 * \returns StatusCode of the set command
1093 */
1095 {
1096 return Apply(configs, DefaultTimeoutSeconds);
1097 }
1098
1099 /**
1100 * \brief Applies the contents of the specified config to the device.
1101 *
1102 * \details Call to apply the selected configs.
1103 *
1104 * \param configs Configs to apply against.
1105 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1106 * \returns StatusCode of the set command
1107 */
1108 ctre::phoenix::StatusCode Apply(const DifferentialSensorsConfigs &configs, units::time::second_t timeoutSeconds)
1109 {
1110 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1111 }
1112
1113 /**
1114 * \brief Refreshes the values of the specified config group.
1115 *
1116 * This will wait up to #DefaultTimeoutSeconds.
1117 *
1118 * \details Call to refresh the selected configs from the device.
1119 *
1120 * \param configs The configs to refresh
1121 * \returns StatusCode of refreshing the configs
1122 */
1127 /**
1128 * \brief Refreshes the values of the specified config group.
1129 *
1130 * \details Call to refresh the selected configs from the device.
1131 *
1132 * \param configs The configs to refresh
1133 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1134 * \returns StatusCode of refreshing the configs
1135 */
1136 ctre::phoenix::StatusCode Refresh(DifferentialConstantsConfigs &configs, units::time::second_t timeoutSeconds) const
1137 {
1138 std::string ref;
1139 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1140 configs.Deserialize(ref);
1141 return ret;
1142 }
1143
1144 /**
1145 * \brief Applies the contents of the specified config to the device.
1146 *
1147 * This will wait up to #DefaultTimeoutSeconds.
1148 *
1149 * \details Call to apply the selected configs.
1150 *
1151 * \param configs Configs to apply against.
1152 * \returns StatusCode of the set command
1153 */
1158
1159 /**
1160 * \brief Applies the contents of the specified config to the device.
1161 *
1162 * \details Call to apply the selected configs.
1163 *
1164 * \param configs Configs to apply against.
1165 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1166 * \returns StatusCode of the set command
1167 */
1168 ctre::phoenix::StatusCode Apply(const DifferentialConstantsConfigs &configs, units::time::second_t timeoutSeconds)
1169 {
1170 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1171 }
1172
1173 /**
1174 * \brief Refreshes the values of the specified config group.
1175 *
1176 * This will wait up to #DefaultTimeoutSeconds.
1177 *
1178 * \details Call to refresh the selected configs from the device.
1179 *
1180 * \param configs The configs to refresh
1181 * \returns StatusCode of refreshing the configs
1182 */
1184 {
1185 return Refresh(configs, DefaultTimeoutSeconds);
1186 }
1187 /**
1188 * \brief Refreshes the values of the specified config group.
1189 *
1190 * \details Call to refresh the selected configs from the device.
1191 *
1192 * \param configs The configs to refresh
1193 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1194 * \returns StatusCode of refreshing the configs
1195 */
1196 ctre::phoenix::StatusCode Refresh(OpenLoopRampsConfigs &configs, units::time::second_t timeoutSeconds) const
1197 {
1198 std::string ref;
1199 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1200 configs.Deserialize(ref);
1201 return ret;
1202 }
1203
1204 /**
1205 * \brief Applies the contents of the specified config to the device.
1206 *
1207 * This will wait up to #DefaultTimeoutSeconds.
1208 *
1209 * \details Call to apply the selected configs.
1210 *
1211 * \param configs Configs to apply against.
1212 * \returns StatusCode of the set command
1213 */
1215 {
1216 return Apply(configs, DefaultTimeoutSeconds);
1217 }
1218
1219 /**
1220 * \brief Applies the contents of the specified config to the device.
1221 *
1222 * \details Call to apply the selected configs.
1223 *
1224 * \param configs Configs to apply against.
1225 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1226 * \returns StatusCode of the set command
1227 */
1228 ctre::phoenix::StatusCode Apply(const OpenLoopRampsConfigs &configs, units::time::second_t timeoutSeconds)
1229 {
1230 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1231 }
1232
1233 /**
1234 * \brief Refreshes the values of the specified config group.
1235 *
1236 * This will wait up to #DefaultTimeoutSeconds.
1237 *
1238 * \details Call to refresh the selected configs from the device.
1239 *
1240 * \param configs The configs to refresh
1241 * \returns StatusCode of refreshing the configs
1242 */
1244 {
1245 return Refresh(configs, DefaultTimeoutSeconds);
1246 }
1247 /**
1248 * \brief Refreshes the values of the specified config group.
1249 *
1250 * \details Call to refresh the selected configs from the device.
1251 *
1252 * \param configs The configs to refresh
1253 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1254 * \returns StatusCode of refreshing the configs
1255 */
1256 ctre::phoenix::StatusCode Refresh(ClosedLoopRampsConfigs &configs, units::time::second_t timeoutSeconds) const
1257 {
1258 std::string ref;
1259 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1260 configs.Deserialize(ref);
1261 return ret;
1262 }
1263
1264 /**
1265 * \brief Applies the contents of the specified config to the device.
1266 *
1267 * This will wait up to #DefaultTimeoutSeconds.
1268 *
1269 * \details Call to apply the selected configs.
1270 *
1271 * \param configs Configs to apply against.
1272 * \returns StatusCode of the set command
1273 */
1275 {
1276 return Apply(configs, DefaultTimeoutSeconds);
1277 }
1278
1279 /**
1280 * \brief Applies the contents of the specified config to the device.
1281 *
1282 * \details Call to apply the selected configs.
1283 *
1284 * \param configs Configs to apply against.
1285 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1286 * \returns StatusCode of the set command
1287 */
1288 ctre::phoenix::StatusCode Apply(const ClosedLoopRampsConfigs &configs, units::time::second_t timeoutSeconds)
1289 {
1290 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1291 }
1292
1293 /**
1294 * \brief Refreshes the values of the specified config group.
1295 *
1296 * This will wait up to #DefaultTimeoutSeconds.
1297 *
1298 * \details Call to refresh the selected configs from the device.
1299 *
1300 * \param configs The configs to refresh
1301 * \returns StatusCode of refreshing the configs
1302 */
1307 /**
1308 * \brief Refreshes the values of the specified config group.
1309 *
1310 * \details Call to refresh the selected configs from the device.
1311 *
1312 * \param configs The configs to refresh
1313 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1314 * \returns StatusCode of refreshing the configs
1315 */
1316 ctre::phoenix::StatusCode Refresh(HardwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds) const
1317 {
1318 std::string ref;
1319 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1320 configs.Deserialize(ref);
1321 return ret;
1322 }
1323
1324 /**
1325 * \brief Applies the contents of the specified config to the device.
1326 *
1327 * This will wait up to #DefaultTimeoutSeconds.
1328 *
1329 * \details Call to apply the selected configs.
1330 *
1331 * \param configs Configs to apply against.
1332 * \returns StatusCode of the set command
1333 */
1335 {
1336 return Apply(configs, DefaultTimeoutSeconds);
1337 }
1338
1339 /**
1340 * \brief Applies the contents of the specified config to the device.
1341 *
1342 * \details Call to apply the selected configs.
1343 *
1344 * \param configs Configs to apply against.
1345 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1346 * \returns StatusCode of the set command
1347 */
1348 ctre::phoenix::StatusCode Apply(const HardwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds)
1349 {
1350 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1351 }
1352
1353 /**
1354 * \brief Refreshes the values of the specified config group.
1355 *
1356 * This will wait up to #DefaultTimeoutSeconds.
1357 *
1358 * \details Call to refresh the selected configs from the device.
1359 *
1360 * \param configs The configs to refresh
1361 * \returns StatusCode of refreshing the configs
1362 */
1364 {
1365 return Refresh(configs, DefaultTimeoutSeconds);
1366 }
1367 /**
1368 * \brief Refreshes the values of the specified config group.
1369 *
1370 * \details Call to refresh the selected configs from the device.
1371 *
1372 * \param configs The configs to refresh
1373 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1374 * \returns StatusCode of refreshing the configs
1375 */
1376 ctre::phoenix::StatusCode Refresh(AudioConfigs &configs, units::time::second_t timeoutSeconds) const
1377 {
1378 std::string ref;
1379 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1380 configs.Deserialize(ref);
1381 return ret;
1382 }
1383
1384 /**
1385 * \brief Applies the contents of the specified config to the device.
1386 *
1387 * This will wait up to #DefaultTimeoutSeconds.
1388 *
1389 * \details Call to apply the selected configs.
1390 *
1391 * \param configs Configs to apply against.
1392 * \returns StatusCode of the set command
1393 */
1395 {
1396 return Apply(configs, DefaultTimeoutSeconds);
1397 }
1398
1399 /**
1400 * \brief Applies the contents of the specified config to the device.
1401 *
1402 * \details Call to apply the selected configs.
1403 *
1404 * \param configs Configs to apply against.
1405 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1406 * \returns StatusCode of the set command
1407 */
1408 ctre::phoenix::StatusCode Apply(const AudioConfigs &configs, units::time::second_t timeoutSeconds)
1409 {
1410 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1411 }
1412
1413 /**
1414 * \brief Refreshes the values of the specified config group.
1415 *
1416 * This will wait up to #DefaultTimeoutSeconds.
1417 *
1418 * \details Call to refresh the selected configs from the device.
1419 *
1420 * \param configs The configs to refresh
1421 * \returns StatusCode of refreshing the configs
1422 */
1427 /**
1428 * \brief Refreshes the values of the specified config group.
1429 *
1430 * \details Call to refresh the selected configs from the device.
1431 *
1432 * \param configs The configs to refresh
1433 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1434 * \returns StatusCode of refreshing the configs
1435 */
1436 ctre::phoenix::StatusCode Refresh(SoftwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds) const
1437 {
1438 std::string ref;
1439 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1440 configs.Deserialize(ref);
1441 return ret;
1442 }
1443
1444 /**
1445 * \brief Applies the contents of the specified config to the device.
1446 *
1447 * This will wait up to #DefaultTimeoutSeconds.
1448 *
1449 * \details Call to apply the selected configs.
1450 *
1451 * \param configs Configs to apply against.
1452 * \returns StatusCode of the set command
1453 */
1455 {
1456 return Apply(configs, DefaultTimeoutSeconds);
1457 }
1458
1459 /**
1460 * \brief Applies the contents of the specified config to the device.
1461 *
1462 * \details Call to apply the selected configs.
1463 *
1464 * \param configs Configs to apply against.
1465 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1466 * \returns StatusCode of the set command
1467 */
1468 ctre::phoenix::StatusCode Apply(const SoftwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds)
1469 {
1470 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1471 }
1472
1473 /**
1474 * \brief Refreshes the values of the specified config group.
1475 *
1476 * This will wait up to #DefaultTimeoutSeconds.
1477 *
1478 * \details Call to refresh the selected configs from the device.
1479 *
1480 * \param configs The configs to refresh
1481 * \returns StatusCode of refreshing the configs
1482 */
1484 {
1485 return Refresh(configs, DefaultTimeoutSeconds);
1486 }
1487 /**
1488 * \brief Refreshes the values of the specified config group.
1489 *
1490 * \details Call to refresh the selected configs from the device.
1491 *
1492 * \param configs The configs to refresh
1493 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1494 * \returns StatusCode of refreshing the configs
1495 */
1496 ctre::phoenix::StatusCode Refresh(MotionMagicConfigs &configs, units::time::second_t timeoutSeconds) const
1497 {
1498 std::string ref;
1499 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1500 configs.Deserialize(ref);
1501 return ret;
1502 }
1503
1504 /**
1505 * \brief Applies the contents of the specified config to the device.
1506 *
1507 * This will wait up to #DefaultTimeoutSeconds.
1508 *
1509 * \details Call to apply the selected configs.
1510 *
1511 * \param configs Configs to apply against.
1512 * \returns StatusCode of the set command
1513 */
1515 {
1516 return Apply(configs, DefaultTimeoutSeconds);
1517 }
1518
1519 /**
1520 * \brief Applies the contents of the specified config to the device.
1521 *
1522 * \details Call to apply the selected configs.
1523 *
1524 * \param configs Configs to apply against.
1525 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1526 * \returns StatusCode of the set command
1527 */
1528 ctre::phoenix::StatusCode Apply(const MotionMagicConfigs &configs, units::time::second_t timeoutSeconds)
1529 {
1530 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1531 }
1532
1533 /**
1534 * \brief Refreshes the values of the specified config group.
1535 *
1536 * This will wait up to #DefaultTimeoutSeconds.
1537 *
1538 * \details Call to refresh the selected configs from the device.
1539 *
1540 * \param configs The configs to refresh
1541 * \returns StatusCode of refreshing the configs
1542 */
1544 {
1545 return Refresh(configs, DefaultTimeoutSeconds);
1546 }
1547 /**
1548 * \brief Refreshes the values of the specified config group.
1549 *
1550 * \details Call to refresh the selected configs from the device.
1551 *
1552 * \param configs The configs to refresh
1553 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1554 * \returns StatusCode of refreshing the configs
1555 */
1556 ctre::phoenix::StatusCode Refresh(CustomParamsConfigs &configs, units::time::second_t timeoutSeconds) const
1557 {
1558 std::string ref;
1559 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1560 configs.Deserialize(ref);
1561 return ret;
1562 }
1563
1564 /**
1565 * \brief Applies the contents of the specified config to the device.
1566 *
1567 * This will wait up to #DefaultTimeoutSeconds.
1568 *
1569 * \details Call to apply the selected configs.
1570 *
1571 * \param configs Configs to apply against.
1572 * \returns StatusCode of the set command
1573 */
1575 {
1576 return Apply(configs, DefaultTimeoutSeconds);
1577 }
1578
1579 /**
1580 * \brief Applies the contents of the specified config to the device.
1581 *
1582 * \details Call to apply the selected configs.
1583 *
1584 * \param configs Configs to apply against.
1585 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1586 * \returns StatusCode of the set command
1587 */
1588 ctre::phoenix::StatusCode Apply(const CustomParamsConfigs &configs, units::time::second_t timeoutSeconds)
1589 {
1590 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1591 }
1592
1593 /**
1594 * \brief Refreshes the values of the specified config group.
1595 *
1596 * This will wait up to #DefaultTimeoutSeconds.
1597 *
1598 * \details Call to refresh the selected configs from the device.
1599 *
1600 * \param configs The configs to refresh
1601 * \returns StatusCode of refreshing the configs
1602 */
1607 /**
1608 * \brief Refreshes the values of the specified config group.
1609 *
1610 * \details Call to refresh the selected configs from the device.
1611 *
1612 * \param configs The configs to refresh
1613 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1614 * \returns StatusCode of refreshing the configs
1615 */
1616 ctre::phoenix::StatusCode Refresh(ClosedLoopGeneralConfigs &configs, units::time::second_t timeoutSeconds) const
1617 {
1618 std::string ref;
1619 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1620 configs.Deserialize(ref);
1621 return ret;
1622 }
1623
1624 /**
1625 * \brief Applies the contents of the specified config to the device.
1626 *
1627 * This will wait up to #DefaultTimeoutSeconds.
1628 *
1629 * \details Call to apply the selected configs.
1630 *
1631 * \param configs Configs to apply against.
1632 * \returns StatusCode of the set command
1633 */
1635 {
1636 return Apply(configs, DefaultTimeoutSeconds);
1637 }
1638
1639 /**
1640 * \brief Applies the contents of the specified config to the device.
1641 *
1642 * \details Call to apply the selected configs.
1643 *
1644 * \param configs Configs to apply against.
1645 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1646 * \returns StatusCode of the set command
1647 */
1648 ctre::phoenix::StatusCode Apply(const ClosedLoopGeneralConfigs &configs, units::time::second_t timeoutSeconds)
1649 {
1650 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1651 }
1652
1653 /**
1654 * \brief Refreshes the values of the specified config group.
1655 *
1656 * This will wait up to #DefaultTimeoutSeconds.
1657 *
1658 * \details Call to refresh the selected configs from the device.
1659 *
1660 * \param configs The configs to refresh
1661 * \returns StatusCode of refreshing the configs
1662 */
1664 {
1665 return Refresh(configs, DefaultTimeoutSeconds);
1666 }
1667 /**
1668 * \brief Refreshes the values of the specified config group.
1669 *
1670 * \details Call to refresh the selected configs from the device.
1671 *
1672 * \param configs The configs to refresh
1673 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1674 * \returns StatusCode of refreshing the configs
1675 */
1676 ctre::phoenix::StatusCode Refresh(Slot0Configs &configs, units::time::second_t timeoutSeconds) const
1677 {
1678 std::string ref;
1679 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1680 configs.Deserialize(ref);
1681 return ret;
1682 }
1683
1684 /**
1685 * \brief Applies the contents of the specified config to the device.
1686 *
1687 * This will wait up to #DefaultTimeoutSeconds.
1688 *
1689 * \details Call to apply the selected configs.
1690 *
1691 * \param configs Configs to apply against.
1692 * \returns StatusCode of the set command
1693 */
1695 {
1696 return Apply(configs, DefaultTimeoutSeconds);
1697 }
1698
1699 /**
1700 * \brief Applies the contents of the specified config to the device.
1701 *
1702 * \details Call to apply the selected configs.
1703 *
1704 * \param configs Configs to apply against.
1705 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1706 * \returns StatusCode of the set command
1707 */
1708 ctre::phoenix::StatusCode Apply(const Slot0Configs &configs, units::time::second_t timeoutSeconds)
1709 {
1710 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1711 }
1712
1713 /**
1714 * \brief Refreshes the values of the specified config group.
1715 *
1716 * This will wait up to #DefaultTimeoutSeconds.
1717 *
1718 * \details Call to refresh the selected configs from the device.
1719 *
1720 * \param configs The configs to refresh
1721 * \returns StatusCode of refreshing the configs
1722 */
1724 {
1725 return Refresh(configs, DefaultTimeoutSeconds);
1726 }
1727 /**
1728 * \brief Refreshes the values of the specified config group.
1729 *
1730 * \details Call to refresh the selected configs from the device.
1731 *
1732 * \param configs The configs to refresh
1733 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1734 * \returns StatusCode of refreshing the configs
1735 */
1736 ctre::phoenix::StatusCode Refresh(Slot1Configs &configs, units::time::second_t timeoutSeconds) const
1737 {
1738 std::string ref;
1739 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1740 configs.Deserialize(ref);
1741 return ret;
1742 }
1743
1744 /**
1745 * \brief Applies the contents of the specified config to the device.
1746 *
1747 * This will wait up to #DefaultTimeoutSeconds.
1748 *
1749 * \details Call to apply the selected configs.
1750 *
1751 * \param configs Configs to apply against.
1752 * \returns StatusCode of the set command
1753 */
1755 {
1756 return Apply(configs, DefaultTimeoutSeconds);
1757 }
1758
1759 /**
1760 * \brief Applies the contents of the specified config to the device.
1761 *
1762 * \details Call to apply the selected configs.
1763 *
1764 * \param configs Configs to apply against.
1765 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1766 * \returns StatusCode of the set command
1767 */
1768 ctre::phoenix::StatusCode Apply(const Slot1Configs &configs, units::time::second_t timeoutSeconds)
1769 {
1770 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1771 }
1772
1773 /**
1774 * \brief Refreshes the values of the specified config group.
1775 *
1776 * This will wait up to #DefaultTimeoutSeconds.
1777 *
1778 * \details Call to refresh the selected configs from the device.
1779 *
1780 * \param configs The configs to refresh
1781 * \returns StatusCode of refreshing the configs
1782 */
1784 {
1785 return Refresh(configs, DefaultTimeoutSeconds);
1786 }
1787 /**
1788 * \brief Refreshes the values of the specified config group.
1789 *
1790 * \details Call to refresh the selected configs from the device.
1791 *
1792 * \param configs The configs to refresh
1793 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1794 * \returns StatusCode of refreshing the configs
1795 */
1796 ctre::phoenix::StatusCode Refresh(Slot2Configs &configs, units::time::second_t timeoutSeconds) const
1797 {
1798 std::string ref;
1799 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1800 configs.Deserialize(ref);
1801 return ret;
1802 }
1803
1804 /**
1805 * \brief Applies the contents of the specified config to the device.
1806 *
1807 * This will wait up to #DefaultTimeoutSeconds.
1808 *
1809 * \details Call to apply the selected configs.
1810 *
1811 * \param configs Configs to apply against.
1812 * \returns StatusCode of the set command
1813 */
1815 {
1816 return Apply(configs, DefaultTimeoutSeconds);
1817 }
1818
1819 /**
1820 * \brief Applies the contents of the specified config to the device.
1821 *
1822 * \details Call to apply the selected configs.
1823 *
1824 * \param configs Configs to apply against.
1825 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1826 * \returns StatusCode of the set command
1827 */
1828 ctre::phoenix::StatusCode Apply(const Slot2Configs &configs, units::time::second_t timeoutSeconds)
1829 {
1830 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1831 }
1832
1833 /**
1834 * \brief Refreshes the values of the specified config group.
1835 *
1836 * This will wait up to #DefaultTimeoutSeconds.
1837 *
1838 * \details Call to refresh the selected configs from the device.
1839 *
1840 * \param configs The configs to refresh
1841 * \returns StatusCode of refreshing the configs
1842 */
1844 {
1845 return Refresh(configs, DefaultTimeoutSeconds);
1846 }
1847 /**
1848 * \brief Refreshes the values of the specified config group.
1849 *
1850 * \details Call to refresh the selected configs from the device.
1851 *
1852 * \param configs The configs to refresh
1853 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1854 * \returns StatusCode of refreshing the configs
1855 */
1856 ctre::phoenix::StatusCode Refresh(SlotConfigs &configs, units::time::second_t timeoutSeconds) const
1857 {
1858 std::string ref;
1859 ctre::phoenix::StatusCode ret = GetConfigsPrivate(ref, timeoutSeconds);
1860 configs.Deserialize(ref);
1861 return ret;
1862 }
1863
1864 /**
1865 * \brief Applies the contents of the specified config to the device.
1866 *
1867 * This will wait up to #DefaultTimeoutSeconds.
1868 *
1869 * \details Call to apply the selected configs.
1870 *
1871 * \param configs Configs to apply against.
1872 * \returns StatusCode of the set command
1873 */
1875 {
1876 return Apply(configs, DefaultTimeoutSeconds);
1877 }
1878
1879 /**
1880 * \brief Applies the contents of the specified config to the device.
1881 *
1882 * \details Call to apply the selected configs.
1883 *
1884 * \param configs Configs to apply against.
1885 * \param timeoutSeconds Maximum amount of time to wait when performing configuration
1886 * \returns StatusCode of the set command
1887 */
1888 ctre::phoenix::StatusCode Apply(const SlotConfigs &configs, units::time::second_t timeoutSeconds)
1889 {
1890 return SetConfigsPrivate(configs.Serialize(), timeoutSeconds, false, false);
1891 }
1892
1893
1894 /**
1895 * \brief Sets the mechanism position of the device in mechanism
1896 * rotations.
1897 *
1898 * This will wait up to #DefaultTimeoutSeconds.
1899 *
1900 * This is available in the configurator in case the user wants
1901 * to initialize their device entirely without passing a device
1902 * reference down to the code that performs the initialization.
1903 * In this case, the user passes down the configurator object
1904 * and performs all the initialization code on the object.
1905 *
1906 * \param newValue Value to set to. Units are in rotations.
1907 * \returns StatusCode of the set command
1908 */
1909 ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue)
1910 {
1911 return SetPosition(newValue, DefaultTimeoutSeconds);
1912 }
1913 /**
1914 * \brief Sets the mechanism position of the device in mechanism
1915 * rotations.
1916 *
1917 * This is available in the configurator in case the user wants
1918 * to initialize their device entirely without passing a device
1919 * reference down to the code that performs the initialization.
1920 * In this case, the user passes down the configurator object
1921 * and performs all the initialization code on the object.
1922 *
1923 * \param newValue Value to set to. Units are in rotations.
1924 * \param timeoutSeconds Maximum time to wait up to in seconds.
1925 * \returns StatusCode of the set command
1926 */
1927 ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue, units::time::second_t timeoutSeconds)
1928 {
1929 std::stringstream ss;
1930 char *ref;
1931 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::TalonFX_SetSensorPosition, newValue.to<double>(), &ref); if (ref != nullptr) { ss << ref; free(ref); }
1932 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
1933 }
1934
1935 /**
1936 * \brief Clear the sticky faults in the device.
1937 *
1938 * \details This typically has no impact on the device functionality.
1939 * Instead, it just clears telemetry faults that are accessible via
1940 * API and Tuner Self-Test.
1941 *
1942 * This will wait up to #DefaultTimeoutSeconds.
1943 *
1944 * This is available in the configurator in case the user wants
1945 * to initialize their device entirely without passing a device
1946 * reference down to the code that performs the initialization.
1947 * In this case, the user passes down the configurator object
1948 * and performs all the initialization code on the object.
1949 *
1950 * \returns StatusCode of the set command
1951 */
1956 /**
1957 * \brief Clear the sticky faults in the device.
1958 *
1959 * \details This typically has no impact on the device functionality.
1960 * Instead, it just clears telemetry faults that are accessible via
1961 * API and Tuner Self-Test.
1962 *
1963 * This is available in the configurator in case the user wants
1964 * to initialize their device entirely without passing a device
1965 * reference down to the code that performs the initialization.
1966 * In this case, the user passes down the configurator object
1967 * and performs all the initialization code on the object.
1968 *
1969 * \param timeoutSeconds Maximum time to wait up to in seconds.
1970 * \returns StatusCode of the set command
1971 */
1972 ctre::phoenix::StatusCode ClearStickyFaults(units::time::second_t timeoutSeconds)
1973 {
1974 std::stringstream ss;
1975 char *ref;
1976 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::SPN_ClearStickyFaults, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
1977 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
1978 }
1979
1980 /**
1981 * \brief Clear sticky fault: Hardware fault occurred
1982 *
1983 * This will wait up to #DefaultTimeoutSeconds.
1984 *
1985 * This is available in the configurator in case the user wants
1986 * to initialize their device entirely without passing a device
1987 * reference down to the code that performs the initialization.
1988 * In this case, the user passes down the configurator object
1989 * and performs all the initialization code on the object.
1990 *
1991 * \returns StatusCode of the set command
1992 */
1997 /**
1998 * \brief Clear sticky fault: Hardware fault occurred
1999 *
2000 * This is available in the configurator in case the user wants
2001 * to initialize their device entirely without passing a device
2002 * reference down to the code that performs the initialization.
2003 * In this case, the user passes down the configurator object
2004 * and performs all the initialization code on the object.
2005 *
2006 * \param timeoutSeconds Maximum time to wait up to in seconds.
2007 * \returns StatusCode of the set command
2008 */
2009 ctre::phoenix::StatusCode ClearStickyFault_Hardware(units::time::second_t timeoutSeconds)
2010 {
2011 std::stringstream ss;
2012 char *ref;
2013 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_Hardware, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2014 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2015 }
2016
2017 /**
2018 * \brief Clear sticky fault: Processor temperature exceeded limit
2019 *
2020 * This will wait up to #DefaultTimeoutSeconds.
2021 *
2022 * This is available in the configurator in case the user wants
2023 * to initialize their device entirely without passing a device
2024 * reference down to the code that performs the initialization.
2025 * In this case, the user passes down the configurator object
2026 * and performs all the initialization code on the object.
2027 *
2028 * \returns StatusCode of the set command
2029 */
2034 /**
2035 * \brief Clear sticky fault: Processor temperature exceeded limit
2036 *
2037 * This is available in the configurator in case the user wants
2038 * to initialize their device entirely without passing a device
2039 * reference down to the code that performs the initialization.
2040 * In this case, the user passes down the configurator object
2041 * and performs all the initialization code on the object.
2042 *
2043 * \param timeoutSeconds Maximum time to wait up to in seconds.
2044 * \returns StatusCode of the set command
2045 */
2046 ctre::phoenix::StatusCode ClearStickyFault_ProcTemp(units::time::second_t timeoutSeconds)
2047 {
2048 std::stringstream ss;
2049 char *ref;
2050 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_ProcTemp, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2051 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2052 }
2053
2054 /**
2055 * \brief Clear sticky fault: Device temperature exceeded limit
2056 *
2057 * This will wait up to #DefaultTimeoutSeconds.
2058 *
2059 * This is available in the configurator in case the user wants
2060 * to initialize their device entirely without passing a device
2061 * reference down to the code that performs the initialization.
2062 * In this case, the user passes down the configurator object
2063 * and performs all the initialization code on the object.
2064 *
2065 * \returns StatusCode of the set command
2066 */
2071 /**
2072 * \brief Clear sticky fault: Device temperature exceeded limit
2073 *
2074 * This is available in the configurator in case the user wants
2075 * to initialize their device entirely without passing a device
2076 * reference down to the code that performs the initialization.
2077 * In this case, the user passes down the configurator object
2078 * and performs all the initialization code on the object.
2079 *
2080 * \param timeoutSeconds Maximum time to wait up to in seconds.
2081 * \returns StatusCode of the set command
2082 */
2083 ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp(units::time::second_t timeoutSeconds)
2084 {
2085 std::stringstream ss;
2086 char *ref;
2087 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_DeviceTemp, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2088 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2089 }
2090
2091 /**
2092 * \brief Clear sticky fault: Device supply voltage dropped to near
2093 * brownout levels
2094 *
2095 * This will wait up to #DefaultTimeoutSeconds.
2096 *
2097 * This is available in the configurator in case the user wants
2098 * to initialize their device entirely without passing a device
2099 * reference down to the code that performs the initialization.
2100 * In this case, the user passes down the configurator object
2101 * and performs all the initialization code on the object.
2102 *
2103 * \returns StatusCode of the set command
2104 */
2109 /**
2110 * \brief Clear sticky fault: Device supply voltage dropped to near
2111 * brownout levels
2112 *
2113 * This is available in the configurator in case the user wants
2114 * to initialize their device entirely without passing a device
2115 * reference down to the code that performs the initialization.
2116 * In this case, the user passes down the configurator object
2117 * and performs all the initialization code on the object.
2118 *
2119 * \param timeoutSeconds Maximum time to wait up to in seconds.
2120 * \returns StatusCode of the set command
2121 */
2122 ctre::phoenix::StatusCode ClearStickyFault_Undervoltage(units::time::second_t timeoutSeconds)
2123 {
2124 std::stringstream ss;
2125 char *ref;
2126 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_Undervoltage, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2127 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2128 }
2129
2130 /**
2131 * \brief Clear sticky fault: Device boot while detecting the enable
2132 * signal
2133 *
2134 * This will wait up to #DefaultTimeoutSeconds.
2135 *
2136 * This is available in the configurator in case the user wants
2137 * to initialize their device entirely without passing a device
2138 * reference down to the code that performs the initialization.
2139 * In this case, the user passes down the configurator object
2140 * and performs all the initialization code on the object.
2141 *
2142 * \returns StatusCode of the set command
2143 */
2148 /**
2149 * \brief Clear sticky fault: Device boot while detecting the enable
2150 * signal
2151 *
2152 * This is available in the configurator in case the user wants
2153 * to initialize their device entirely without passing a device
2154 * reference down to the code that performs the initialization.
2155 * In this case, the user passes down the configurator object
2156 * and performs all the initialization code on the object.
2157 *
2158 * \param timeoutSeconds Maximum time to wait up to in seconds.
2159 * \returns StatusCode of the set command
2160 */
2162 {
2163 std::stringstream ss;
2164 char *ref;
2165 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_BootDuringEnable, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2166 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2167 }
2168
2169 /**
2170 * \brief Clear sticky fault: An unlicensed feature is in use, device
2171 * may not behave as expected.
2172 *
2173 * This will wait up to #DefaultTimeoutSeconds.
2174 *
2175 * This is available in the configurator in case the user wants
2176 * to initialize their device entirely without passing a device
2177 * reference down to the code that performs the initialization.
2178 * In this case, the user passes down the configurator object
2179 * and performs all the initialization code on the object.
2180 *
2181 * \returns StatusCode of the set command
2182 */
2187 /**
2188 * \brief Clear sticky fault: An unlicensed feature is in use, device
2189 * may not behave as expected.
2190 *
2191 * This is available in the configurator in case the user wants
2192 * to initialize their device entirely without passing a device
2193 * reference down to the code that performs the initialization.
2194 * In this case, the user passes down the configurator object
2195 * and performs all the initialization code on the object.
2196 *
2197 * \param timeoutSeconds Maximum time to wait up to in seconds.
2198 * \returns StatusCode of the set command
2199 */
2201 {
2202 std::stringstream ss;
2203 char *ref;
2204 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_UnlicensedFeatureInUse, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2205 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2206 }
2207
2208 /**
2209 * \brief Clear sticky fault: Bridge was disabled most likely due to
2210 * supply voltage dropping too low.
2211 *
2212 * This will wait up to #DefaultTimeoutSeconds.
2213 *
2214 * This is available in the configurator in case the user wants
2215 * to initialize their device entirely without passing a device
2216 * reference down to the code that performs the initialization.
2217 * In this case, the user passes down the configurator object
2218 * and performs all the initialization code on the object.
2219 *
2220 * \returns StatusCode of the set command
2221 */
2226 /**
2227 * \brief Clear sticky fault: Bridge was disabled most likely due to
2228 * supply voltage dropping too low.
2229 *
2230 * This is available in the configurator in case the user wants
2231 * to initialize their device entirely without passing a device
2232 * reference down to the code that performs the initialization.
2233 * In this case, the user passes down the configurator object
2234 * and performs all the initialization code on the object.
2235 *
2236 * \param timeoutSeconds Maximum time to wait up to in seconds.
2237 * \returns StatusCode of the set command
2238 */
2240 {
2241 std::stringstream ss;
2242 char *ref;
2243 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_BridgeBrownout, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2244 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2245 }
2246
2247 /**
2248 * \brief Clear sticky fault: The remote sensor has reset.
2249 *
2250 * This will wait up to #DefaultTimeoutSeconds.
2251 *
2252 * This is available in the configurator in case the user wants
2253 * to initialize their device entirely without passing a device
2254 * reference down to the code that performs the initialization.
2255 * In this case, the user passes down the configurator object
2256 * and performs all the initialization code on the object.
2257 *
2258 * \returns StatusCode of the set command
2259 */
2264 /**
2265 * \brief Clear sticky fault: The remote sensor has reset.
2266 *
2267 * This is available in the configurator in case the user wants
2268 * to initialize their device entirely without passing a device
2269 * reference down to the code that performs the initialization.
2270 * In this case, the user passes down the configurator object
2271 * and performs all the initialization code on the object.
2272 *
2273 * \param timeoutSeconds Maximum time to wait up to in seconds.
2274 * \returns StatusCode of the set command
2275 */
2277 {
2278 std::stringstream ss;
2279 char *ref;
2280 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_RemoteSensorReset, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2281 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2282 }
2283
2284 /**
2285 * \brief Clear sticky fault: The remote Talon used for differential
2286 * control is not present on CAN Bus.
2287 *
2288 * This will wait up to #DefaultTimeoutSeconds.
2289 *
2290 * This is available in the configurator in case the user wants
2291 * to initialize their device entirely without passing a device
2292 * reference down to the code that performs the initialization.
2293 * In this case, the user passes down the configurator object
2294 * and performs all the initialization code on the object.
2295 *
2296 * \returns StatusCode of the set command
2297 */
2302 /**
2303 * \brief Clear sticky fault: The remote Talon used for differential
2304 * control is not present on CAN Bus.
2305 *
2306 * This is available in the configurator in case the user wants
2307 * to initialize their device entirely without passing a device
2308 * reference down to the code that performs the initialization.
2309 * In this case, the user passes down the configurator object
2310 * and performs all the initialization code on the object.
2311 *
2312 * \param timeoutSeconds Maximum time to wait up to in seconds.
2313 * \returns StatusCode of the set command
2314 */
2316 {
2317 std::stringstream ss;
2318 char *ref;
2319 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_MissingDifferentialFX, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2320 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2321 }
2322
2323 /**
2324 * \brief Clear sticky fault: The remote sensor position has
2325 * overflowed. Because of the nature of remote sensors, it is possible
2326 * for the remote sensor position to overflow beyond what is supported
2327 * by the status signal frame. However, this is rare and cannot occur
2328 * over the course of an FRC match under normal use.
2329 *
2330 * This will wait up to #DefaultTimeoutSeconds.
2331 *
2332 * This is available in the configurator in case the user wants
2333 * to initialize their device entirely without passing a device
2334 * reference down to the code that performs the initialization.
2335 * In this case, the user passes down the configurator object
2336 * and performs all the initialization code on the object.
2337 *
2338 * \returns StatusCode of the set command
2339 */
2344 /**
2345 * \brief Clear sticky fault: The remote sensor position has
2346 * overflowed. Because of the nature of remote sensors, it is possible
2347 * for the remote sensor position to overflow beyond what is supported
2348 * by the status signal frame. However, this is rare and cannot occur
2349 * over the course of an FRC match under normal use.
2350 *
2351 * This is available in the configurator in case the user wants
2352 * to initialize their device entirely without passing a device
2353 * reference down to the code that performs the initialization.
2354 * In this case, the user passes down the configurator object
2355 * and performs all the initialization code on the object.
2356 *
2357 * \param timeoutSeconds Maximum time to wait up to in seconds.
2358 * \returns StatusCode of the set command
2359 */
2361 {
2362 std::stringstream ss;
2363 char *ref;
2364 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_RemoteSensorPosOverflow, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2365 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2366 }
2367
2368 /**
2369 * \brief Clear sticky fault: Supply Voltage has exceeded the maximum
2370 * voltage rating of device.
2371 *
2372 * This will wait up to #DefaultTimeoutSeconds.
2373 *
2374 * This is available in the configurator in case the user wants
2375 * to initialize their device entirely without passing a device
2376 * reference down to the code that performs the initialization.
2377 * In this case, the user passes down the configurator object
2378 * and performs all the initialization code on the object.
2379 *
2380 * \returns StatusCode of the set command
2381 */
2386 /**
2387 * \brief Clear sticky fault: Supply Voltage has exceeded the maximum
2388 * voltage rating of device.
2389 *
2390 * This is available in the configurator in case the user wants
2391 * to initialize their device entirely without passing a device
2392 * reference down to the code that performs the initialization.
2393 * In this case, the user passes down the configurator object
2394 * and performs all the initialization code on the object.
2395 *
2396 * \param timeoutSeconds Maximum time to wait up to in seconds.
2397 * \returns StatusCode of the set command
2398 */
2399 ctre::phoenix::StatusCode ClearStickyFault_OverSupplyV(units::time::second_t timeoutSeconds)
2400 {
2401 std::stringstream ss;
2402 char *ref;
2403 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_OverSupplyV, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2404 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2405 }
2406
2407 /**
2408 * \brief Clear sticky fault: Supply Voltage is unstable. Ensure you
2409 * are using a battery and current limited power supply.
2410 *
2411 * This will wait up to #DefaultTimeoutSeconds.
2412 *
2413 * This is available in the configurator in case the user wants
2414 * to initialize their device entirely without passing a device
2415 * reference down to the code that performs the initialization.
2416 * In this case, the user passes down the configurator object
2417 * and performs all the initialization code on the object.
2418 *
2419 * \returns StatusCode of the set command
2420 */
2425 /**
2426 * \brief Clear sticky fault: Supply Voltage is unstable. Ensure you
2427 * are using a battery and current limited power supply.
2428 *
2429 * This is available in the configurator in case the user wants
2430 * to initialize their device entirely without passing a device
2431 * reference down to the code that performs the initialization.
2432 * In this case, the user passes down the configurator object
2433 * and performs all the initialization code on the object.
2434 *
2435 * \param timeoutSeconds Maximum time to wait up to in seconds.
2436 * \returns StatusCode of the set command
2437 */
2439 {
2440 std::stringstream ss;
2441 char *ref;
2442 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_UnstableSupplyV, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2443 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2444 }
2445
2446 /**
2447 * \brief Clear sticky fault: Reverse limit switch has been asserted.
2448 * Output is set to neutral.
2449 *
2450 * This will wait up to #DefaultTimeoutSeconds.
2451 *
2452 * This is available in the configurator in case the user wants
2453 * to initialize their device entirely without passing a device
2454 * reference down to the code that performs the initialization.
2455 * In this case, the user passes down the configurator object
2456 * and performs all the initialization code on the object.
2457 *
2458 * \returns StatusCode of the set command
2459 */
2464 /**
2465 * \brief Clear sticky fault: Reverse limit switch has been asserted.
2466 * Output is set to neutral.
2467 *
2468 * This is available in the configurator in case the user wants
2469 * to initialize their device entirely without passing a device
2470 * reference down to the code that performs the initialization.
2471 * In this case, the user passes down the configurator object
2472 * and performs all the initialization code on the object.
2473 *
2474 * \param timeoutSeconds Maximum time to wait up to in seconds.
2475 * \returns StatusCode of the set command
2476 */
2478 {
2479 std::stringstream ss;
2480 char *ref;
2481 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_ReverseHardLimit, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2482 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2483 }
2484
2485 /**
2486 * \brief Clear sticky fault: Forward limit switch has been asserted.
2487 * Output is set to neutral.
2488 *
2489 * This will wait up to #DefaultTimeoutSeconds.
2490 *
2491 * This is available in the configurator in case the user wants
2492 * to initialize their device entirely without passing a device
2493 * reference down to the code that performs the initialization.
2494 * In this case, the user passes down the configurator object
2495 * and performs all the initialization code on the object.
2496 *
2497 * \returns StatusCode of the set command
2498 */
2503 /**
2504 * \brief Clear sticky fault: Forward limit switch has been asserted.
2505 * Output is set to neutral.
2506 *
2507 * This is available in the configurator in case the user wants
2508 * to initialize their device entirely without passing a device
2509 * reference down to the code that performs the initialization.
2510 * In this case, the user passes down the configurator object
2511 * and performs all the initialization code on the object.
2512 *
2513 * \param timeoutSeconds Maximum time to wait up to in seconds.
2514 * \returns StatusCode of the set command
2515 */
2517 {
2518 std::stringstream ss;
2519 char *ref;
2520 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_ForwardHardLimit, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2521 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2522 }
2523
2524 /**
2525 * \brief Clear sticky fault: Reverse soft limit has been asserted.
2526 * Output is set to neutral.
2527 *
2528 * This will wait up to #DefaultTimeoutSeconds.
2529 *
2530 * This is available in the configurator in case the user wants
2531 * to initialize their device entirely without passing a device
2532 * reference down to the code that performs the initialization.
2533 * In this case, the user passes down the configurator object
2534 * and performs all the initialization code on the object.
2535 *
2536 * \returns StatusCode of the set command
2537 */
2542 /**
2543 * \brief Clear sticky fault: Reverse soft limit has been asserted.
2544 * Output is set to neutral.
2545 *
2546 * This is available in the configurator in case the user wants
2547 * to initialize their device entirely without passing a device
2548 * reference down to the code that performs the initialization.
2549 * In this case, the user passes down the configurator object
2550 * and performs all the initialization code on the object.
2551 *
2552 * \param timeoutSeconds Maximum time to wait up to in seconds.
2553 * \returns StatusCode of the set command
2554 */
2556 {
2557 std::stringstream ss;
2558 char *ref;
2559 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_ReverseSoftLimit, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2560 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2561 }
2562
2563 /**
2564 * \brief Clear sticky fault: Forward soft limit has been asserted.
2565 * Output is set to neutral.
2566 *
2567 * This will wait up to #DefaultTimeoutSeconds.
2568 *
2569 * This is available in the configurator in case the user wants
2570 * to initialize their device entirely without passing a device
2571 * reference down to the code that performs the initialization.
2572 * In this case, the user passes down the configurator object
2573 * and performs all the initialization code on the object.
2574 *
2575 * \returns StatusCode of the set command
2576 */
2581 /**
2582 * \brief Clear sticky fault: Forward soft limit has been asserted.
2583 * Output is set to neutral.
2584 *
2585 * This is available in the configurator in case the user wants
2586 * to initialize their device entirely without passing a device
2587 * reference down to the code that performs the initialization.
2588 * In this case, the user passes down the configurator object
2589 * and performs all the initialization code on the object.
2590 *
2591 * \param timeoutSeconds Maximum time to wait up to in seconds.
2592 * \returns StatusCode of the set command
2593 */
2595 {
2596 std::stringstream ss;
2597 char *ref;
2598 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_ForwardSoftLimit, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2599 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2600 }
2601
2602 /**
2603 * \brief Clear sticky fault: The remote soft limit device is not
2604 * present on CAN Bus.
2605 *
2606 * This will wait up to #DefaultTimeoutSeconds.
2607 *
2608 * This is available in the configurator in case the user wants
2609 * to initialize their device entirely without passing a device
2610 * reference down to the code that performs the initialization.
2611 * In this case, the user passes down the configurator object
2612 * and performs all the initialization code on the object.
2613 *
2614 * \returns StatusCode of the set command
2615 */
2620 /**
2621 * \brief Clear sticky fault: The remote soft limit device is not
2622 * present on CAN Bus.
2623 *
2624 * This is available in the configurator in case the user wants
2625 * to initialize their device entirely without passing a device
2626 * reference down to the code that performs the initialization.
2627 * In this case, the user passes down the configurator object
2628 * and performs all the initialization code on the object.
2629 *
2630 * \param timeoutSeconds Maximum time to wait up to in seconds.
2631 * \returns StatusCode of the set command
2632 */
2634 {
2635 std::stringstream ss;
2636 char *ref;
2637 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_MissingRemSoftLim, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2638 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2639 }
2640
2641 /**
2642 * \brief Clear sticky fault: The remote limit switch device is not
2643 * present on CAN Bus.
2644 *
2645 * This will wait up to #DefaultTimeoutSeconds.
2646 *
2647 * This is available in the configurator in case the user wants
2648 * to initialize their device entirely without passing a device
2649 * reference down to the code that performs the initialization.
2650 * In this case, the user passes down the configurator object
2651 * and performs all the initialization code on the object.
2652 *
2653 * \returns StatusCode of the set command
2654 */
2659 /**
2660 * \brief Clear sticky fault: The remote limit switch device is not
2661 * present on CAN Bus.
2662 *
2663 * This is available in the configurator in case the user wants
2664 * to initialize their device entirely without passing a device
2665 * reference down to the code that performs the initialization.
2666 * In this case, the user passes down the configurator object
2667 * and performs all the initialization code on the object.
2668 *
2669 * \param timeoutSeconds Maximum time to wait up to in seconds.
2670 * \returns StatusCode of the set command
2671 */
2673 {
2674 std::stringstream ss;
2675 char *ref;
2676 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_MissingRemHardLim, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2677 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2678 }
2679
2680 /**
2681 * \brief Clear sticky fault: The remote sensor's data is no longer
2682 * trusted. This can happen if the remote sensor disappears from the
2683 * CAN bus or if the remote sensor indicates its data is no longer
2684 * valid, such as when a CANcoder's magnet strength falls into the
2685 * "red" range.
2686 *
2687 * This will wait up to #DefaultTimeoutSeconds.
2688 *
2689 * This is available in the configurator in case the user wants
2690 * to initialize their device entirely without passing a device
2691 * reference down to the code that performs the initialization.
2692 * In this case, the user passes down the configurator object
2693 * and performs all the initialization code on the object.
2694 *
2695 * \returns StatusCode of the set command
2696 */
2701 /**
2702 * \brief Clear sticky fault: The remote sensor's data is no longer
2703 * trusted. This can happen if the remote sensor disappears from the
2704 * CAN bus or if the remote sensor indicates its data is no longer
2705 * valid, such as when a CANcoder's magnet strength falls into the
2706 * "red" range.
2707 *
2708 * This is available in the configurator in case the user wants
2709 * to initialize their device entirely without passing a device
2710 * reference down to the code that performs the initialization.
2711 * In this case, the user passes down the configurator object
2712 * and performs all the initialization code on the object.
2713 *
2714 * \param timeoutSeconds Maximum time to wait up to in seconds.
2715 * \returns StatusCode of the set command
2716 */
2718 {
2719 std::stringstream ss;
2720 char *ref;
2721 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_MissingRemoteSensor, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2722 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2723 }
2724
2725 /**
2726 * \brief Clear sticky fault: The remote sensor used for fusion has
2727 * fallen out of sync to the local sensor. A re-synchronization has
2728 * occurred, which may cause a discontinuity. This typically happens
2729 * if there is significant slop in the mechanism, or if the
2730 * RotorToSensorRatio configuration parameter is incorrect.
2731 *
2732 * This will wait up to #DefaultTimeoutSeconds.
2733 *
2734 * This is available in the configurator in case the user wants
2735 * to initialize their device entirely without passing a device
2736 * reference down to the code that performs the initialization.
2737 * In this case, the user passes down the configurator object
2738 * and performs all the initialization code on the object.
2739 *
2740 * \returns StatusCode of the set command
2741 */
2746 /**
2747 * \brief Clear sticky fault: The remote sensor used for fusion has
2748 * fallen out of sync to the local sensor. A re-synchronization has
2749 * occurred, which may cause a discontinuity. This typically happens
2750 * if there is significant slop in the mechanism, or if the
2751 * RotorToSensorRatio configuration parameter is incorrect.
2752 *
2753 * This is available in the configurator in case the user wants
2754 * to initialize their device entirely without passing a device
2755 * reference down to the code that performs the initialization.
2756 * In this case, the user passes down the configurator object
2757 * and performs all the initialization code on the object.
2758 *
2759 * \param timeoutSeconds Maximum time to wait up to in seconds.
2760 * \returns StatusCode of the set command
2761 */
2763 {
2764 std::stringstream ss;
2765 char *ref;
2766 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_FusedSensorOutOfSync, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2767 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2768 }
2769
2770 /**
2771 * \brief Clear sticky fault: Stator current limit occured.
2772 *
2773 * This will wait up to #DefaultTimeoutSeconds.
2774 *
2775 * This is available in the configurator in case the user wants
2776 * to initialize their device entirely without passing a device
2777 * reference down to the code that performs the initialization.
2778 * In this case, the user passes down the configurator object
2779 * and performs all the initialization code on the object.
2780 *
2781 * \returns StatusCode of the set command
2782 */
2787 /**
2788 * \brief Clear sticky fault: Stator current limit occured.
2789 *
2790 * This is available in the configurator in case the user wants
2791 * to initialize their device entirely without passing a device
2792 * reference down to the code that performs the initialization.
2793 * In this case, the user passes down the configurator object
2794 * and performs all the initialization code on the object.
2795 *
2796 * \param timeoutSeconds Maximum time to wait up to in seconds.
2797 * \returns StatusCode of the set command
2798 */
2800 {
2801 std::stringstream ss;
2802 char *ref;
2803 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_StatorCurrLimit, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2804 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2805 }
2806
2807 /**
2808 * \brief Clear sticky fault: Supply current limit occured.
2809 *
2810 * This will wait up to #DefaultTimeoutSeconds.
2811 *
2812 * This is available in the configurator in case the user wants
2813 * to initialize their device entirely without passing a device
2814 * reference down to the code that performs the initialization.
2815 * In this case, the user passes down the configurator object
2816 * and performs all the initialization code on the object.
2817 *
2818 * \returns StatusCode of the set command
2819 */
2824 /**
2825 * \brief Clear sticky fault: Supply current limit occured.
2826 *
2827 * This is available in the configurator in case the user wants
2828 * to initialize their device entirely without passing a device
2829 * reference down to the code that performs the initialization.
2830 * In this case, the user passes down the configurator object
2831 * and performs all the initialization code on the object.
2832 *
2833 * \param timeoutSeconds Maximum time to wait up to in seconds.
2834 * \returns StatusCode of the set command
2835 */
2837 {
2838 std::stringstream ss;
2839 char *ref;
2840 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_SupplyCurrLimit, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2841 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2842 }
2843
2844 /**
2845 * \brief Clear sticky fault: Using Fused CANcoder feature while
2846 * unlicensed. Device has fallen back to remote CANcoder.
2847 *
2848 * This will wait up to #DefaultTimeoutSeconds.
2849 *
2850 * This is available in the configurator in case the user wants
2851 * to initialize their device entirely without passing a device
2852 * reference down to the code that performs the initialization.
2853 * In this case, the user passes down the configurator object
2854 * and performs all the initialization code on the object.
2855 *
2856 * \returns StatusCode of the set command
2857 */
2862 /**
2863 * \brief Clear sticky fault: Using Fused CANcoder feature while
2864 * unlicensed. Device has fallen back to remote CANcoder.
2865 *
2866 * This is available in the configurator in case the user wants
2867 * to initialize their device entirely without passing a device
2868 * reference down to the code that performs the initialization.
2869 * In this case, the user passes down the configurator object
2870 * and performs all the initialization code on the object.
2871 *
2872 * \param timeoutSeconds Maximum time to wait up to in seconds.
2873 * \returns StatusCode of the set command
2874 */
2876 {
2877 std::stringstream ss;
2878 char *ref;
2879 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_UsingFusedCCWhileUnlicensed, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2880 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2881 }
2882
2883 /**
2884 * \brief Clear sticky fault: Static brake was momentarily disabled
2885 * due to excessive braking current while disabled.
2886 *
2887 * This will wait up to #DefaultTimeoutSeconds.
2888 *
2889 * This is available in the configurator in case the user wants
2890 * to initialize their device entirely without passing a device
2891 * reference down to the code that performs the initialization.
2892 * In this case, the user passes down the configurator object
2893 * and performs all the initialization code on the object.
2894 *
2895 * \returns StatusCode of the set command
2896 */
2901 /**
2902 * \brief Clear sticky fault: Static brake was momentarily disabled
2903 * due to excessive braking current while disabled.
2904 *
2905 * This is available in the configurator in case the user wants
2906 * to initialize their device entirely without passing a device
2907 * reference down to the code that performs the initialization.
2908 * In this case, the user passes down the configurator object
2909 * and performs all the initialization code on the object.
2910 *
2911 * \param timeoutSeconds Maximum time to wait up to in seconds.
2912 * \returns StatusCode of the set command
2913 */
2915 {
2916 std::stringstream ss;
2917 char *ref;
2918 c_ctre_phoenix6_serialize_double(ctre::phoenix6::spns::SpnValue::ClearStickyFault_TALONFX_StaticBrakeDisabled, 0, &ref); if (ref != nullptr) { ss << ref; free(ref); }
2919 return SetConfigsPrivate(ss.str(), timeoutSeconds, false, true);
2920 }
2921};
2922
2923}
2924
2925namespace hardware {
2926namespace core {
2927
2928/**
2929 * Class description for the Talon FX integrated motor controller.
2930 */
2932{
2933private:
2935
2936public:
2937 /**
2938 * Constructs a new Talon FX motor controller object.
2939 *
2940 * \param deviceId ID of the device, as configured in Phoenix Tuner.
2941 * \param canbus Name of the CAN bus this device is on. Possible CAN bus strings are:
2942 * - "rio" for the native roboRIO CAN bus
2943 * - CANivore name or serial number
2944 * - SocketCAN interface (non-FRC Linux only)
2945 * - "*" for any CANivore seen by the program
2946 * - empty string (default) to select the default for the system:
2947 * - "rio" on roboRIO
2948 * - "can0" on Linux
2949 * - "*" on Windows
2950 */
2951 CoreTalonFX(int deviceId, std::string canbus = "");
2952
2953 /**
2954 * Constructs a new Talon FX motor controller object.
2955 *
2956 * \param deviceId ID of the device, as configured in Phoenix Tuner.
2957 * \param canbus The CAN bus this device is on.
2958 */
2959 CoreTalonFX(int deviceId, CANBus canbus) :
2960 CoreTalonFX{deviceId, std::string{canbus.GetName()}}
2961 {}
2962
2963 /**
2964 * \brief Gets the configurator for this TalonFX
2965 *
2966 * \details Gets the configurator for this TalonFX
2967 *
2968 * \returns Configurator for this TalonFX
2969 */
2971 {
2972 return _configs;
2973 }
2974
2975 /**
2976 * \brief Gets the configurator for this TalonFX
2977 *
2978 * \details Gets the configurator for this TalonFX
2979 *
2980 * \returns Configurator for this TalonFX
2981 */
2983 {
2984 return _configs;
2985 }
2986
2987
2988private:
2989 std::unique_ptr<sim::TalonFXSimState> _simState{};
2990public:
2991 /**
2992 * \brief Get the simulation state for this device.
2993 *
2994 * \details This function reuses an allocated simulation
2995 * state object, so it is safe to call this function multiple
2996 * times in a robot loop.
2997 *
2998 * \returns Simulation state
2999 */
3001 {
3002 if (_simState == nullptr)
3003 _simState = std::make_unique<sim::TalonFXSimState>(*this);
3004 return *_simState;
3005 }
3006
3007
3008
3009 /**
3010 * \brief App Major Version number.
3011 *
3012 * - Minimum Value: 0
3013 * - Maximum Value: 255
3014 * - Default Value: 0
3015 * - Units:
3016 *
3017 * Default Rates:
3018 * - CAN: 4.0 Hz
3019 *
3020 * This refreshes and returns a cached StatusSignal object.
3021 *
3022 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3023 * \returns VersionMajor Status Signal Object
3024 */
3025 StatusSignal<int> &GetVersionMajor(bool refresh = true) override;
3026
3027 /**
3028 * \brief App Minor Version number.
3029 *
3030 * - Minimum Value: 0
3031 * - Maximum Value: 255
3032 * - Default Value: 0
3033 * - Units:
3034 *
3035 * Default Rates:
3036 * - CAN: 4.0 Hz
3037 *
3038 * This refreshes and returns a cached StatusSignal object.
3039 *
3040 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3041 * \returns VersionMinor Status Signal Object
3042 */
3043 StatusSignal<int> &GetVersionMinor(bool refresh = true) override;
3044
3045 /**
3046 * \brief App Bugfix Version number.
3047 *
3048 * - Minimum Value: 0
3049 * - Maximum Value: 255
3050 * - Default Value: 0
3051 * - Units:
3052 *
3053 * Default Rates:
3054 * - CAN: 4.0 Hz
3055 *
3056 * This refreshes and returns a cached StatusSignal object.
3057 *
3058 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3059 * \returns VersionBugfix Status Signal Object
3060 */
3061 StatusSignal<int> &GetVersionBugfix(bool refresh = true) override;
3062
3063 /**
3064 * \brief App Build Version number.
3065 *
3066 * - Minimum Value: 0
3067 * - Maximum Value: 255
3068 * - Default Value: 0
3069 * - Units:
3070 *
3071 * Default Rates:
3072 * - CAN: 4.0 Hz
3073 *
3074 * This refreshes and returns a cached StatusSignal object.
3075 *
3076 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3077 * \returns VersionBuild Status Signal Object
3078 */
3079 StatusSignal<int> &GetVersionBuild(bool refresh = true) override;
3080
3081 /**
3082 * \brief Full Version of firmware in device. The format is a four
3083 * byte value.
3084 *
3085 * - Minimum Value: 0
3086 * - Maximum Value: 4294967295
3087 * - Default Value: 0
3088 * - Units:
3089 *
3090 * Default Rates:
3091 * - CAN: 4.0 Hz
3092 *
3093 * This refreshes and returns a cached StatusSignal object.
3094 *
3095 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3096 * \returns Version Status Signal Object
3097 */
3098 StatusSignal<int> &GetVersion(bool refresh = true) override;
3099
3100 /**
3101 * \brief Integer representing all fault flags reported by the device.
3102 *
3103 * \details These are device specific and are not used directly in
3104 * typical applications. Use the signal specific GetFault_*() methods
3105 * instead.
3106 *
3107 * - Minimum Value: 0
3108 * - Maximum Value: 4294967295
3109 * - Default Value: 0
3110 * - Units:
3111 *
3112 * Default Rates:
3113 * - CAN: 4.0 Hz
3114 *
3115 * This refreshes and returns a cached StatusSignal object.
3116 *
3117 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3118 * \returns FaultField Status Signal Object
3119 */
3120 StatusSignal<int> &GetFaultField(bool refresh = true) override;
3121
3122 /**
3123 * \brief Integer representing all (persistent) sticky fault flags
3124 * reported by the device.
3125 *
3126 * \details These are device specific and are not used directly in
3127 * typical applications. Use the signal specific GetStickyFault_*()
3128 * methods instead.
3129 *
3130 * - Minimum Value: 0
3131 * - Maximum Value: 4294967295
3132 * - Default Value: 0
3133 * - Units:
3134 *
3135 * Default Rates:
3136 * - CAN: 4.0 Hz
3137 *
3138 * This refreshes and returns a cached StatusSignal object.
3139 *
3140 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3141 * \returns StickyFaultField Status Signal Object
3142 */
3143 StatusSignal<int> &GetStickyFaultField(bool refresh = true) override;
3144
3145 /**
3146 * \brief The applied (output) motor voltage.
3147 *
3148 * - Minimum Value: -40.96
3149 * - Maximum Value: 40.95
3150 * - Default Value: 0
3151 * - Units: V
3152 *
3153 * Default Rates:
3154 * - CAN 2.0: 100.0 Hz
3155 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3156 *
3157 * This refreshes and returns a cached StatusSignal object.
3158 *
3159 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3160 * \returns MotorVoltage Status Signal Object
3161 */
3163
3164 /**
3165 * \brief Forward Limit Pin.
3166 *
3167 *
3168 * Default Rates:
3169 * - CAN 2.0: 100.0 Hz
3170 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3171 *
3172 * This refreshes and returns a cached StatusSignal object.
3173 *
3174 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3175 * \returns ForwardLimit Status Signal Object
3176 */
3178
3179 /**
3180 * \brief Reverse Limit Pin.
3181 *
3182 *
3183 * Default Rates:
3184 * - CAN 2.0: 100.0 Hz
3185 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3186 *
3187 * This refreshes and returns a cached StatusSignal object.
3188 *
3189 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3190 * \returns ReverseLimit Status Signal Object
3191 */
3193
3194 /**
3195 * \brief The applied rotor polarity as seen from the front of the
3196 * motor. This typically is determined by the Inverted config, but
3197 * can be overridden if using Follower features.
3198 *
3199 *
3200 * Default Rates:
3201 * - CAN 2.0: 100.0 Hz
3202 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3203 *
3204 * This refreshes and returns a cached StatusSignal object.
3205 *
3206 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3207 * \returns AppliedRotorPolarity Status Signal Object
3208 */
3210
3211 /**
3212 * \brief The applied motor duty cycle.
3213 *
3214 * - Minimum Value: -2.0
3215 * - Maximum Value: 1.9990234375
3216 * - Default Value: 0
3217 * - Units: fractional
3218 *
3219 * Default Rates:
3220 * - CAN 2.0: 100.0 Hz
3221 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3222 *
3223 * This refreshes and returns a cached StatusSignal object.
3224 *
3225 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3226 * \returns DutyCycle Status Signal Object
3227 */
3229
3230 /**
3231 * \brief Current corresponding to the torque output by the motor.
3232 * Similar to StatorCurrent. Users will likely prefer this current to
3233 * calculate the applied torque to the rotor.
3234 *
3235 * \details Stator current where positive current means torque is
3236 * applied in the forward direction as determined by the Inverted
3237 * setting.
3238 *
3239 * - Minimum Value: -327.68
3240 * - Maximum Value: 327.67
3241 * - Default Value: 0
3242 * - Units: A
3243 *
3244 * Default Rates:
3245 * - CAN 2.0: 100.0 Hz
3246 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3247 *
3248 * This refreshes and returns a cached StatusSignal object.
3249 *
3250 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3251 * \returns TorqueCurrent Status Signal Object
3252 */
3254
3255 /**
3256 * \brief Current corresponding to the stator windings. Similar to
3257 * TorqueCurrent. Users will likely prefer TorqueCurrent over
3258 * StatorCurrent.
3259 *
3260 * \details Stator current where Positive current indicates motoring
3261 * regardless of direction. Negative current indicates regenerative
3262 * braking regardless of direction.
3263 *
3264 * - Minimum Value: -327.68
3265 * - Maximum Value: 327.66
3266 * - Default Value: 0
3267 * - Units: A
3268 *
3269 * Default Rates:
3270 * - CAN 2.0: 4.0 Hz
3271 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3272 *
3273 * This refreshes and returns a cached StatusSignal object.
3274 *
3275 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3276 * \returns StatorCurrent Status Signal Object
3277 */
3279
3280 /**
3281 * \brief Measured supply side current.
3282 *
3283 * - Minimum Value: -327.68
3284 * - Maximum Value: 327.66
3285 * - Default Value: 0
3286 * - Units: A
3287 *
3288 * Default Rates:
3289 * - CAN 2.0: 4.0 Hz
3290 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3291 *
3292 * This refreshes and returns a cached StatusSignal object.
3293 *
3294 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3295 * \returns SupplyCurrent Status Signal Object
3296 */
3298
3299 /**
3300 * \brief Measured supply voltage to the device.
3301 *
3302 * - Minimum Value: 4
3303 * - Maximum Value: 29.575
3304 * - Default Value: 4
3305 * - Units: V
3306 *
3307 * Default Rates:
3308 * - CAN 2.0: 4.0 Hz
3309 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3310 *
3311 * This refreshes and returns a cached StatusSignal object.
3312 *
3313 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3314 * \returns SupplyVoltage Status Signal Object
3315 */
3317
3318 /**
3319 * \brief Temperature of device.
3320 *
3321 * \details This is the temperature that the device measures itself to
3322 * be at. Similar to Processor Temperature.
3323 *
3324 * - Minimum Value: 0.0
3325 * - Maximum Value: 255.0
3326 * - Default Value: 0
3327 * - Units: ℃
3328 *
3329 * Default Rates:
3330 * - CAN 2.0: 4.0 Hz
3331 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3332 *
3333 * This refreshes and returns a cached StatusSignal object.
3334 *
3335 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3336 * \returns DeviceTemp Status Signal Object
3337 */
3339
3340 /**
3341 * \brief Temperature of the processor.
3342 *
3343 * \details This is the temperature that the processor measures itself
3344 * to be at. Similar to Device Temperature.
3345 *
3346 * - Minimum Value: 0.0
3347 * - Maximum Value: 255.0
3348 * - Default Value: 0
3349 * - Units: ℃
3350 *
3351 * Default Rates:
3352 * - CAN 2.0: 4.0 Hz
3353 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3354 *
3355 * This refreshes and returns a cached StatusSignal object.
3356 *
3357 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3358 * \returns ProcessorTemp Status Signal Object
3359 */
3361
3362 /**
3363 * \brief Velocity of the motor rotor. This velocity is not affected
3364 * by any feedback configs.
3365 *
3366 * - Minimum Value: -512.0
3367 * - Maximum Value: 511.998046875
3368 * - Default Value: 0
3369 * - Units: rotations per second
3370 *
3371 * Default Rates:
3372 * - CAN 2.0: 4.0 Hz
3373 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3374 *
3375 * This refreshes and returns a cached StatusSignal object.
3376 *
3377 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3378 * \returns RotorVelocity Status Signal Object
3379 */
3381
3382 /**
3383 * \brief Position of the motor rotor. This position is only affected
3384 * by the RotorOffset config and calls to setPosition.
3385 *
3386 * - Minimum Value: -16384.0
3387 * - Maximum Value: 16383.999755859375
3388 * - Default Value: 0
3389 * - Units: rotations
3390 *
3391 * Default Rates:
3392 * - CAN 2.0: 4.0 Hz
3393 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3394 *
3395 * This refreshes and returns a cached StatusSignal object.
3396 *
3397 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3398 * \returns RotorPosition Status Signal Object
3399 */
3401
3402 /**
3403 * \brief Velocity of the device in mechanism rotations per second.
3404 * This can be the velocity of a remote sensor and is affected by the
3405 * RotorToSensorRatio and SensorToMechanismRatio configs.
3406 *
3407 * - Minimum Value: -512.0
3408 * - Maximum Value: 511.998046875
3409 * - Default Value: 0
3410 * - Units: rotations per second
3411 *
3412 * Default Rates:
3413 * - CAN 2.0: 50.0 Hz
3414 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3415 *
3416 * This refreshes and returns a cached StatusSignal object.
3417 *
3418 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3419 * \returns Velocity Status Signal Object
3420 */
3422
3423 /**
3424 * \brief Position of the device in mechanism rotations. This can be
3425 * the position of a remote sensor and is affected by the
3426 * RotorToSensorRatio and SensorToMechanismRatio configs, as well as
3427 * calls to setPosition.
3428 *
3429 * - Minimum Value: -16384.0
3430 * - Maximum Value: 16383.999755859375
3431 * - Default Value: 0
3432 * - Units: rotations
3433 *
3434 * Default Rates:
3435 * - CAN 2.0: 50.0 Hz
3436 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3437 *
3438 * This refreshes and returns a cached StatusSignal object.
3439 *
3440 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3441 * \returns Position Status Signal Object
3442 */
3443 StatusSignal<units::angle::turn_t> &GetPosition(bool refresh = true) override;
3444
3445 /**
3446 * \brief Acceleration of the device in mechanism rotations per
3447 * second². This can be the acceleration of a remote sensor and is
3448 * affected by the RotorToSensorRatio and SensorToMechanismRatio
3449 * configs.
3450 *
3451 * - Minimum Value: -2048.0
3452 * - Maximum Value: 2047.75
3453 * - Default Value: 0
3454 * - Units: rotations per second²
3455 *
3456 * Default Rates:
3457 * - CAN 2.0: 50.0 Hz
3458 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3459 *
3460 * This refreshes and returns a cached StatusSignal object.
3461 *
3462 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3463 * \returns Acceleration Status Signal Object
3464 */
3466
3467 /**
3468 * \brief The active control mode of the motor controller.
3469 *
3470 *
3471 * Default Rates:
3472 * - CAN 2.0: 4.0 Hz
3473 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3474 *
3475 * This refreshes and returns a cached StatusSignal object.
3476 *
3477 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3478 * \returns ControlMode Status Signal Object
3479 */
3481
3482 /**
3483 * \brief Check if Motion Magic® is running. This is equivalent to
3484 * checking that the reported control mode is a Motion Magic® based
3485 * mode.
3486 *
3487 *
3488 * Default Rates:
3489 * - CAN 2.0: 4.0 Hz
3490 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3491 *
3492 * This refreshes and returns a cached StatusSignal object.
3493 *
3494 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3495 * \returns MotionMagicIsRunning Status Signal Object
3496 */
3498
3499 /**
3500 * \brief Indicates if device is actuator enabled.
3501 *
3502 *
3503 * Default Rates:
3504 * - CAN 2.0: 4.0 Hz
3505 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3506 *
3507 * This refreshes and returns a cached StatusSignal object.
3508 *
3509 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3510 * \returns DeviceEnable Status Signal Object
3511 */
3513
3514 /**
3515 * \brief The slot that the closed-loop PID is using.
3516 *
3517 * - Minimum Value: 0
3518 * - Maximum Value: 2
3519 * - Default Value: 0
3520 * - Units:
3521 *
3522 * Default Rates:
3523 * - CAN 2.0: 4.0 Hz
3524 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3525 *
3526 * This refreshes and returns a cached StatusSignal object.
3527 *
3528 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3529 * \returns ClosedLoopSlot Status Signal Object
3530 */
3531 StatusSignal<int> &GetClosedLoopSlot(bool refresh = true) override;
3532
3533 /**
3534 * \brief Assess the status of the motor output with respect to load
3535 * and supply.
3536 *
3537 * \details This routine can be used to determine the general status
3538 * of motor commutation.
3539 *
3540 *
3541 * Default Rates:
3542 * - CAN 2.0: 4.0 Hz
3543 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3544 *
3545 * This refreshes and returns a cached StatusSignal object.
3546 *
3547 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3548 * \returns MotorOutputStatus Status Signal Object
3549 */
3551
3552 /**
3553 * \brief The active control mode of the differential controller.
3554 *
3555 *
3556 * Default Rates:
3557 * - CAN 2.0: 100.0 Hz
3558 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3559 *
3560 * This refreshes and returns a cached StatusSignal object.
3561 *
3562 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3563 * \returns DifferentialControlMode Status Signal Object
3564 */
3566
3567 /**
3568 * \brief Average component of the differential velocity of device.
3569 *
3570 * - Minimum Value: -512.0
3571 * - Maximum Value: 511.998046875
3572 * - Default Value: 0
3573 * - Units: rotations per second
3574 *
3575 * Default Rates:
3576 * - CAN 2.0: 4.0 Hz
3577 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3578 *
3579 * This refreshes and returns a cached StatusSignal object.
3580 *
3581 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3582 * \returns DifferentialAverageVelocity Status Signal Object
3583 */
3585
3586 /**
3587 * \brief Average component of the differential position of device.
3588 *
3589 * - Minimum Value: -16384.0
3590 * - Maximum Value: 16383.999755859375
3591 * - Default Value: 0
3592 * - Units: rotations
3593 *
3594 * Default Rates:
3595 * - CAN 2.0: 4.0 Hz
3596 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3597 *
3598 * This refreshes and returns a cached StatusSignal object.
3599 *
3600 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3601 * \returns DifferentialAveragePosition Status Signal Object
3602 */
3604
3605 /**
3606 * \brief Difference component of the differential velocity of device.
3607 *
3608 * - Minimum Value: -512.0
3609 * - Maximum Value: 511.998046875
3610 * - Default Value: 0
3611 * - Units: rotations per second
3612 *
3613 * Default Rates:
3614 * - CAN 2.0: 4.0 Hz
3615 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3616 *
3617 * This refreshes and returns a cached StatusSignal object.
3618 *
3619 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3620 * \returns DifferentialDifferenceVelocity Status Signal Object
3621 */
3623
3624 /**
3625 * \brief Difference component of the differential position of device.
3626 *
3627 * - Minimum Value: -16384.0
3628 * - Maximum Value: 16383.999755859375
3629 * - Default Value: 0
3630 * - Units: rotations
3631 *
3632 * Default Rates:
3633 * - CAN 2.0: 4.0 Hz
3634 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3635 *
3636 * This refreshes and returns a cached StatusSignal object.
3637 *
3638 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3639 * \returns DifferentialDifferencePosition Status Signal Object
3640 */
3642
3643 /**
3644 * \brief The slot that the closed-loop differential PID is using.
3645 *
3646 * - Minimum Value: 0
3647 * - Maximum Value: 2
3648 * - Default Value: 0
3649 * - Units:
3650 *
3651 * Default Rates:
3652 * - CAN 2.0: 4.0 Hz
3653 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3654 *
3655 * This refreshes and returns a cached StatusSignal object.
3656 *
3657 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3658 * \returns DifferentialClosedLoopSlot Status Signal Object
3659 */
3660 StatusSignal<int> &GetDifferentialClosedLoopSlot(bool refresh = true) override;
3661
3662 /**
3663 * \brief The torque constant (K_T) of the motor.
3664 *
3665 * - Minimum Value: 0.0
3666 * - Maximum Value: 0.025500000000000002
3667 * - Default Value: 0
3668 * - Units: Nm/A
3669 *
3670 * Default Rates:
3671 * - CAN: 4.0 Hz
3672 *
3673 * This refreshes and returns a cached StatusSignal object.
3674 *
3675 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3676 * \returns MotorKT Status Signal Object
3677 */
3679
3680 /**
3681 * \brief The velocity constant (K_V) of the motor.
3682 *
3683 * - Minimum Value: 0.0
3684 * - Maximum Value: 2047.0
3685 * - Default Value: 0
3686 * - Units: RPM/V
3687 *
3688 * Default Rates:
3689 * - CAN: 4.0 Hz
3690 *
3691 * This refreshes and returns a cached StatusSignal object.
3692 *
3693 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3694 * \returns MotorKV Status Signal Object
3695 */
3697
3698 /**
3699 * \brief The stall current of the motor at 12 V output.
3700 *
3701 * - Minimum Value: 0.0
3702 * - Maximum Value: 1023.0
3703 * - Default Value: 0
3704 * - Units: A
3705 *
3706 * Default Rates:
3707 * - CAN: 4.0 Hz
3708 *
3709 * This refreshes and returns a cached StatusSignal object.
3710 *
3711 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3712 * \returns MotorStallCurrent Status Signal Object
3713 */
3715
3716 /**
3717 * \brief The applied output of the bridge.
3718 *
3719 *
3720 * Default Rates:
3721 * - CAN 2.0: 100.0 Hz
3722 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3723 *
3724 * This refreshes and returns a cached StatusSignal object.
3725 *
3726 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3727 * \returns BridgeOutput Status Signal Object
3728 */
3730
3731 /**
3732 * \brief Whether the device is Phoenix Pro licensed.
3733 *
3734 * - Default Value: False
3735 *
3736 * Default Rates:
3737 * - CAN: 4.0 Hz
3738 *
3739 * This refreshes and returns a cached StatusSignal object.
3740 *
3741 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3742 * \returns IsProLicensed Status Signal Object
3743 */
3744 StatusSignal<bool> &GetIsProLicensed(bool refresh = true) override;
3745
3746 /**
3747 * \brief Temperature of device from second sensor.
3748 *
3749 * \details Newer versions of Talon have multiple temperature
3750 * measurement methods.
3751 *
3752 * - Minimum Value: 0.0
3753 * - Maximum Value: 255.0
3754 * - Default Value: 0
3755 * - Units: ℃
3756 *
3757 * Default Rates:
3758 * - CAN 2.0: 4.0 Hz
3759 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3760 *
3761 * This refreshes and returns a cached StatusSignal object.
3762 *
3763 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3764 * \returns AncillaryDeviceTemp Status Signal Object
3765 */
3767
3768 /**
3769 * \brief The type of motor attached to the Talon.
3770 *
3771 * \details This can be used to determine what motor is attached to
3772 * the Talon FX. Return will be "Unknown" if firmware is too old or
3773 * device is not present.
3774 *
3775 *
3776 * Default Rates:
3777 * - CAN 2.0: 4.0 Hz
3778 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3779 *
3780 * This refreshes and returns a cached StatusSignal object.
3781 *
3782 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3783 * \returns ConnectedMotor Status Signal Object
3784 */
3786
3787 /**
3788 * \brief Hardware fault occurred
3789 *
3790 * - Default Value: False
3791 *
3792 * Default Rates:
3793 * - CAN: 4.0 Hz
3794 *
3795 * This refreshes and returns a cached StatusSignal object.
3796 *
3797 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3798 * \returns Fault_Hardware Status Signal Object
3799 */
3800 StatusSignal<bool> &GetFault_Hardware(bool refresh = true) override;
3801
3802 /**
3803 * \brief Hardware fault occurred
3804 *
3805 * - Default Value: False
3806 *
3807 * Default Rates:
3808 * - CAN: 4.0 Hz
3809 *
3810 * This refreshes and returns a cached StatusSignal object.
3811 *
3812 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3813 * \returns StickyFault_Hardware Status Signal Object
3814 */
3815 StatusSignal<bool> &GetStickyFault_Hardware(bool refresh = true) override;
3816
3817 /**
3818 * \brief Processor temperature exceeded limit
3819 *
3820 * - Default Value: False
3821 *
3822 * Default Rates:
3823 * - CAN: 4.0 Hz
3824 *
3825 * This refreshes and returns a cached StatusSignal object.
3826 *
3827 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3828 * \returns Fault_ProcTemp Status Signal Object
3829 */
3830 StatusSignal<bool> &GetFault_ProcTemp(bool refresh = true) override;
3831
3832 /**
3833 * \brief Processor temperature exceeded limit
3834 *
3835 * - Default Value: False
3836 *
3837 * Default Rates:
3838 * - CAN: 4.0 Hz
3839 *
3840 * This refreshes and returns a cached StatusSignal object.
3841 *
3842 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3843 * \returns StickyFault_ProcTemp Status Signal Object
3844 */
3845 StatusSignal<bool> &GetStickyFault_ProcTemp(bool refresh = true) override;
3846
3847 /**
3848 * \brief Device temperature exceeded limit
3849 *
3850 * - Default Value: False
3851 *
3852 * Default Rates:
3853 * - CAN: 4.0 Hz
3854 *
3855 * This refreshes and returns a cached StatusSignal object.
3856 *
3857 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3858 * \returns Fault_DeviceTemp Status Signal Object
3859 */
3860 StatusSignal<bool> &GetFault_DeviceTemp(bool refresh = true) override;
3861
3862 /**
3863 * \brief Device temperature exceeded limit
3864 *
3865 * - Default Value: False
3866 *
3867 * Default Rates:
3868 * - CAN: 4.0 Hz
3869 *
3870 * This refreshes and returns a cached StatusSignal object.
3871 *
3872 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3873 * \returns StickyFault_DeviceTemp Status Signal Object
3874 */
3875 StatusSignal<bool> &GetStickyFault_DeviceTemp(bool refresh = true) override;
3876
3877 /**
3878 * \brief Device supply voltage dropped to near brownout levels
3879 *
3880 * - Default Value: False
3881 *
3882 * Default Rates:
3883 * - CAN: 4.0 Hz
3884 *
3885 * This refreshes and returns a cached StatusSignal object.
3886 *
3887 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3888 * \returns Fault_Undervoltage Status Signal Object
3889 */
3890 StatusSignal<bool> &GetFault_Undervoltage(bool refresh = true) override;
3891
3892 /**
3893 * \brief Device supply voltage dropped to near brownout levels
3894 *
3895 * - Default Value: False
3896 *
3897 * Default Rates:
3898 * - CAN: 4.0 Hz
3899 *
3900 * This refreshes and returns a cached StatusSignal object.
3901 *
3902 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3903 * \returns StickyFault_Undervoltage Status Signal Object
3904 */
3905 StatusSignal<bool> &GetStickyFault_Undervoltage(bool refresh = true) override;
3906
3907 /**
3908 * \brief Device boot while detecting the enable signal
3909 *
3910 * - Default Value: False
3911 *
3912 * Default Rates:
3913 * - CAN: 4.0 Hz
3914 *
3915 * This refreshes and returns a cached StatusSignal object.
3916 *
3917 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3918 * \returns Fault_BootDuringEnable Status Signal Object
3919 */
3920 StatusSignal<bool> &GetFault_BootDuringEnable(bool refresh = true) override;
3921
3922 /**
3923 * \brief Device boot while detecting the enable signal
3924 *
3925 * - Default Value: False
3926 *
3927 * Default Rates:
3928 * - CAN: 4.0 Hz
3929 *
3930 * This refreshes and returns a cached StatusSignal object.
3931 *
3932 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3933 * \returns StickyFault_BootDuringEnable Status Signal Object
3934 */
3936
3937 /**
3938 * \brief An unlicensed feature is in use, device may not behave as
3939 * expected.
3940 *
3941 * - Default Value: False
3942 *
3943 * Default Rates:
3944 * - CAN: 4.0 Hz
3945 *
3946 * This refreshes and returns a cached StatusSignal object.
3947 *
3948 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3949 * \returns Fault_UnlicensedFeatureInUse Status Signal Object
3950 */
3952
3953 /**
3954 * \brief An unlicensed feature is in use, device may not behave as
3955 * expected.
3956 *
3957 * - Default Value: False
3958 *
3959 * Default Rates:
3960 * - CAN: 4.0 Hz
3961 *
3962 * This refreshes and returns a cached StatusSignal object.
3963 *
3964 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3965 * \returns StickyFault_UnlicensedFeatureInUse Status Signal Object
3966 */
3968
3969 /**
3970 * \brief Bridge was disabled most likely due to supply voltage
3971 * dropping too low.
3972 *
3973 * - Default Value: False
3974 *
3975 * Default Rates:
3976 * - CAN: 4.0 Hz
3977 *
3978 * This refreshes and returns a cached StatusSignal object.
3979 *
3980 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3981 * \returns Fault_BridgeBrownout Status Signal Object
3982 */
3983 StatusSignal<bool> &GetFault_BridgeBrownout(bool refresh = true) override;
3984
3985 /**
3986 * \brief Bridge was disabled most likely due to supply voltage
3987 * dropping too low.
3988 *
3989 * - Default Value: False
3990 *
3991 * Default Rates:
3992 * - CAN: 4.0 Hz
3993 *
3994 * This refreshes and returns a cached StatusSignal object.
3995 *
3996 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3997 * \returns StickyFault_BridgeBrownout Status Signal Object
3998 */
4000
4001 /**
4002 * \brief The remote sensor has reset.
4003 *
4004 * - Default Value: False
4005 *
4006 * Default Rates:
4007 * - CAN: 4.0 Hz
4008 *
4009 * This refreshes and returns a cached StatusSignal object.
4010 *
4011 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4012 * \returns Fault_RemoteSensorReset Status Signal Object
4013 */
4014 StatusSignal<bool> &GetFault_RemoteSensorReset(bool refresh = true) override;
4015
4016 /**
4017 * \brief The remote sensor has reset.
4018 *
4019 * - Default Value: False
4020 *
4021 * Default Rates:
4022 * - CAN: 4.0 Hz
4023 *
4024 * This refreshes and returns a cached StatusSignal object.
4025 *
4026 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4027 * \returns StickyFault_RemoteSensorReset Status Signal Object
4028 */
4030
4031 /**
4032 * \brief The remote Talon used for differential control is not
4033 * present on CAN Bus.
4034 *
4035 * - Default Value: False
4036 *
4037 * Default Rates:
4038 * - CAN: 4.0 Hz
4039 *
4040 * This refreshes and returns a cached StatusSignal object.
4041 *
4042 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4043 * \returns Fault_MissingDifferentialFX Status Signal Object
4044 */
4046
4047 /**
4048 * \brief The remote Talon used for differential control is not
4049 * present on CAN Bus.
4050 *
4051 * - Default Value: False
4052 *
4053 * Default Rates:
4054 * - CAN: 4.0 Hz
4055 *
4056 * This refreshes and returns a cached StatusSignal object.
4057 *
4058 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4059 * \returns StickyFault_MissingDifferentialFX Status Signal Object
4060 */
4062
4063 /**
4064 * \brief The remote sensor position has overflowed. Because of the
4065 * nature of remote sensors, it is possible for the remote sensor
4066 * position to overflow beyond what is supported by the status signal
4067 * frame. However, this is rare and cannot occur over the course of an
4068 * FRC match under normal use.
4069 *
4070 * - Default Value: False
4071 *
4072 * Default Rates:
4073 * - CAN: 4.0 Hz
4074 *
4075 * This refreshes and returns a cached StatusSignal object.
4076 *
4077 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4078 * \returns Fault_RemoteSensorPosOverflow Status Signal Object
4079 */
4081
4082 /**
4083 * \brief The remote sensor position has overflowed. Because of the
4084 * nature of remote sensors, it is possible for the remote sensor
4085 * position to overflow beyond what is supported by the status signal
4086 * frame. However, this is rare and cannot occur over the course of an
4087 * FRC match under normal use.
4088 *
4089 * - Default Value: False
4090 *
4091 * Default Rates:
4092 * - CAN: 4.0 Hz
4093 *
4094 * This refreshes and returns a cached StatusSignal object.
4095 *
4096 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4097 * \returns StickyFault_RemoteSensorPosOverflow Status Signal Object
4098 */
4100
4101 /**
4102 * \brief Supply Voltage has exceeded the maximum voltage rating of
4103 * device.
4104 *
4105 * - Default Value: False
4106 *
4107 * Default Rates:
4108 * - CAN: 4.0 Hz
4109 *
4110 * This refreshes and returns a cached StatusSignal object.
4111 *
4112 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4113 * \returns Fault_OverSupplyV Status Signal Object
4114 */
4115 StatusSignal<bool> &GetFault_OverSupplyV(bool refresh = true) override;
4116
4117 /**
4118 * \brief Supply Voltage has exceeded the maximum voltage rating of
4119 * device.
4120 *
4121 * - Default Value: False
4122 *
4123 * Default Rates:
4124 * - CAN: 4.0 Hz
4125 *
4126 * This refreshes and returns a cached StatusSignal object.
4127 *
4128 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4129 * \returns StickyFault_OverSupplyV Status Signal Object
4130 */
4131 StatusSignal<bool> &GetStickyFault_OverSupplyV(bool refresh = true) override;
4132
4133 /**
4134 * \brief Supply Voltage is unstable. Ensure you are using a battery
4135 * and current limited power supply.
4136 *
4137 * - Default Value: False
4138 *
4139 * Default Rates:
4140 * - CAN: 4.0 Hz
4141 *
4142 * This refreshes and returns a cached StatusSignal object.
4143 *
4144 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4145 * \returns Fault_UnstableSupplyV Status Signal Object
4146 */
4147 StatusSignal<bool> &GetFault_UnstableSupplyV(bool refresh = true) override;
4148
4149 /**
4150 * \brief Supply Voltage is unstable. Ensure you are using a battery
4151 * and current limited power supply.
4152 *
4153 * - Default Value: False
4154 *
4155 * Default Rates:
4156 * - CAN: 4.0 Hz
4157 *
4158 * This refreshes and returns a cached StatusSignal object.
4159 *
4160 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4161 * \returns StickyFault_UnstableSupplyV Status Signal Object
4162 */
4164
4165 /**
4166 * \brief Reverse limit switch has been asserted. Output is set to
4167 * neutral.
4168 *
4169 * - Default Value: False
4170 *
4171 * Default Rates:
4172 * - CAN: 4.0 Hz
4173 *
4174 * This refreshes and returns a cached StatusSignal object.
4175 *
4176 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4177 * \returns Fault_ReverseHardLimit Status Signal Object
4178 */
4179 StatusSignal<bool> &GetFault_ReverseHardLimit(bool refresh = true) override;
4180
4181 /**
4182 * \brief Reverse limit switch has been asserted. Output is set to
4183 * neutral.
4184 *
4185 * - Default Value: False
4186 *
4187 * Default Rates:
4188 * - CAN: 4.0 Hz
4189 *
4190 * This refreshes and returns a cached StatusSignal object.
4191 *
4192 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4193 * \returns StickyFault_ReverseHardLimit Status Signal Object
4194 */
4196
4197 /**
4198 * \brief Forward limit switch has been asserted. Output is set to
4199 * neutral.
4200 *
4201 * - Default Value: False
4202 *
4203 * Default Rates:
4204 * - CAN: 4.0 Hz
4205 *
4206 * This refreshes and returns a cached StatusSignal object.
4207 *
4208 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4209 * \returns Fault_ForwardHardLimit Status Signal Object
4210 */
4211 StatusSignal<bool> &GetFault_ForwardHardLimit(bool refresh = true) override;
4212
4213 /**
4214 * \brief Forward limit switch has been asserted. Output is set to
4215 * neutral.
4216 *
4217 * - Default Value: False
4218 *
4219 * Default Rates:
4220 * - CAN: 4.0 Hz
4221 *
4222 * This refreshes and returns a cached StatusSignal object.
4223 *
4224 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4225 * \returns StickyFault_ForwardHardLimit Status Signal Object
4226 */
4228
4229 /**
4230 * \brief Reverse soft limit has been asserted. Output is set to
4231 * neutral.
4232 *
4233 * - Default Value: False
4234 *
4235 * Default Rates:
4236 * - CAN: 4.0 Hz
4237 *
4238 * This refreshes and returns a cached StatusSignal object.
4239 *
4240 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4241 * \returns Fault_ReverseSoftLimit Status Signal Object
4242 */
4243 StatusSignal<bool> &GetFault_ReverseSoftLimit(bool refresh = true) override;
4244
4245 /**
4246 * \brief Reverse soft limit has been asserted. Output is set to
4247 * neutral.
4248 *
4249 * - Default Value: False
4250 *
4251 * Default Rates:
4252 * - CAN: 4.0 Hz
4253 *
4254 * This refreshes and returns a cached StatusSignal object.
4255 *
4256 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4257 * \returns StickyFault_ReverseSoftLimit Status Signal Object
4258 */
4260
4261 /**
4262 * \brief Forward soft limit has been asserted. Output is set to
4263 * neutral.
4264 *
4265 * - Default Value: False
4266 *
4267 * Default Rates:
4268 * - CAN: 4.0 Hz
4269 *
4270 * This refreshes and returns a cached StatusSignal object.
4271 *
4272 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4273 * \returns Fault_ForwardSoftLimit Status Signal Object
4274 */
4275 StatusSignal<bool> &GetFault_ForwardSoftLimit(bool refresh = true) override;
4276
4277 /**
4278 * \brief Forward soft limit has been asserted. Output is set to
4279 * neutral.
4280 *
4281 * - Default Value: False
4282 *
4283 * Default Rates:
4284 * - CAN: 4.0 Hz
4285 *
4286 * This refreshes and returns a cached StatusSignal object.
4287 *
4288 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4289 * \returns StickyFault_ForwardSoftLimit Status Signal Object
4290 */
4292
4293 /**
4294 * \brief The remote soft limit device is not present on CAN Bus.
4295 *
4296 * - Default Value: False
4297 *
4298 * Default Rates:
4299 * - CAN: 4.0 Hz
4300 *
4301 * This refreshes and returns a cached StatusSignal object.
4302 *
4303 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4304 * \returns Fault_MissingSoftLimitRemote Status Signal Object
4305 */
4307
4308 /**
4309 * \brief The remote soft limit device is not present on CAN Bus.
4310 *
4311 * - Default Value: False
4312 *
4313 * Default Rates:
4314 * - CAN: 4.0 Hz
4315 *
4316 * This refreshes and returns a cached StatusSignal object.
4317 *
4318 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4319 * \returns StickyFault_MissingSoftLimitRemote Status Signal Object
4320 */
4322
4323 /**
4324 * \brief The remote limit switch device is not present on CAN Bus.
4325 *
4326 * - Default Value: False
4327 *
4328 * Default Rates:
4329 * - CAN: 4.0 Hz
4330 *
4331 * This refreshes and returns a cached StatusSignal object.
4332 *
4333 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4334 * \returns Fault_MissingHardLimitRemote Status Signal Object
4335 */
4337
4338 /**
4339 * \brief The remote limit switch device is not present on CAN Bus.
4340 *
4341 * - Default Value: False
4342 *
4343 * Default Rates:
4344 * - CAN: 4.0 Hz
4345 *
4346 * This refreshes and returns a cached StatusSignal object.
4347 *
4348 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4349 * \returns StickyFault_MissingHardLimitRemote Status Signal Object
4350 */
4352
4353 /**
4354 * \brief The remote sensor's data is no longer trusted. This can
4355 * happen if the remote sensor disappears from the CAN bus or if the
4356 * remote sensor indicates its data is no longer valid, such as when a
4357 * CANcoder's magnet strength falls into the "red" range.
4358 *
4359 * - Default Value: False
4360 *
4361 * Default Rates:
4362 * - CAN: 4.0 Hz
4363 *
4364 * This refreshes and returns a cached StatusSignal object.
4365 *
4366 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4367 * \returns Fault_RemoteSensorDataInvalid Status Signal Object
4368 */
4370
4371 /**
4372 * \brief The remote sensor's data is no longer trusted. This can
4373 * happen if the remote sensor disappears from the CAN bus or if the
4374 * remote sensor indicates its data is no longer valid, such as when a
4375 * CANcoder's magnet strength falls into the "red" range.
4376 *
4377 * - Default Value: False
4378 *
4379 * Default Rates:
4380 * - CAN: 4.0 Hz
4381 *
4382 * This refreshes and returns a cached StatusSignal object.
4383 *
4384 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4385 * \returns StickyFault_RemoteSensorDataInvalid Status Signal Object
4386 */
4388
4389 /**
4390 * \brief The remote sensor used for fusion has fallen out of sync to
4391 * the local sensor. A re-synchronization has occurred, which may
4392 * cause a discontinuity. This typically happens if there is
4393 * significant slop in the mechanism, or if the RotorToSensorRatio
4394 * configuration parameter is incorrect.
4395 *
4396 * - Default Value: False
4397 *
4398 * Default Rates:
4399 * - CAN: 4.0 Hz
4400 *
4401 * This refreshes and returns a cached StatusSignal object.
4402 *
4403 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4404 * \returns Fault_FusedSensorOutOfSync Status Signal Object
4405 */
4407
4408 /**
4409 * \brief The remote sensor used for fusion has fallen out of sync to
4410 * the local sensor. A re-synchronization has occurred, which may
4411 * cause a discontinuity. This typically happens if there is
4412 * significant slop in the mechanism, or if the RotorToSensorRatio
4413 * configuration parameter is incorrect.
4414 *
4415 * - Default Value: False
4416 *
4417 * Default Rates:
4418 * - CAN: 4.0 Hz
4419 *
4420 * This refreshes and returns a cached StatusSignal object.
4421 *
4422 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4423 * \returns StickyFault_FusedSensorOutOfSync Status Signal Object
4424 */
4426
4427 /**
4428 * \brief Stator current limit occured.
4429 *
4430 * - Default Value: False
4431 *
4432 * Default Rates:
4433 * - CAN: 4.0 Hz
4434 *
4435 * This refreshes and returns a cached StatusSignal object.
4436 *
4437 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4438 * \returns Fault_StatorCurrLimit Status Signal Object
4439 */
4440 StatusSignal<bool> &GetFault_StatorCurrLimit(bool refresh = true) override;
4441
4442 /**
4443 * \brief Stator current limit occured.
4444 *
4445 * - Default Value: False
4446 *
4447 * Default Rates:
4448 * - CAN: 4.0 Hz
4449 *
4450 * This refreshes and returns a cached StatusSignal object.
4451 *
4452 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4453 * \returns StickyFault_StatorCurrLimit Status Signal Object
4454 */
4456
4457 /**
4458 * \brief Supply current limit occured.
4459 *
4460 * - Default Value: False
4461 *
4462 * Default Rates:
4463 * - CAN: 4.0 Hz
4464 *
4465 * This refreshes and returns a cached StatusSignal object.
4466 *
4467 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4468 * \returns Fault_SupplyCurrLimit Status Signal Object
4469 */
4470 StatusSignal<bool> &GetFault_SupplyCurrLimit(bool refresh = true) override;
4471
4472 /**
4473 * \brief Supply current limit occured.
4474 *
4475 * - Default Value: False
4476 *
4477 * Default Rates:
4478 * - CAN: 4.0 Hz
4479 *
4480 * This refreshes and returns a cached StatusSignal object.
4481 *
4482 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4483 * \returns StickyFault_SupplyCurrLimit Status Signal Object
4484 */
4486
4487 /**
4488 * \brief Using Fused CANcoder feature while unlicensed. Device has
4489 * fallen back to remote CANcoder.
4490 *
4491 * - Default Value: False
4492 *
4493 * Default Rates:
4494 * - CAN: 4.0 Hz
4495 *
4496 * This refreshes and returns a cached StatusSignal object.
4497 *
4498 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4499 * \returns Fault_UsingFusedCANcoderWhileUnlicensed Status Signal Object
4500 */
4502
4503 /**
4504 * \brief Using Fused CANcoder feature while unlicensed. Device has
4505 * fallen back to remote CANcoder.
4506 *
4507 * - Default Value: False
4508 *
4509 * Default Rates:
4510 * - CAN: 4.0 Hz
4511 *
4512 * This refreshes and returns a cached StatusSignal object.
4513 *
4514 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4515 * \returns StickyFault_UsingFusedCANcoderWhileUnlicensed Status Signal Object
4516 */
4518
4519 /**
4520 * \brief Static brake was momentarily disabled due to excessive
4521 * braking current while disabled.
4522 *
4523 * - Default Value: False
4524 *
4525 * Default Rates:
4526 * - CAN: 4.0 Hz
4527 *
4528 * This refreshes and returns a cached StatusSignal object.
4529 *
4530 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4531 * \returns Fault_StaticBrakeDisabled Status Signal Object
4532 */
4533 StatusSignal<bool> &GetFault_StaticBrakeDisabled(bool refresh = true) override;
4534
4535 /**
4536 * \brief Static brake was momentarily disabled due to excessive
4537 * braking current while disabled.
4538 *
4539 * - Default Value: False
4540 *
4541 * Default Rates:
4542 * - CAN: 4.0 Hz
4543 *
4544 * This refreshes and returns a cached StatusSignal object.
4545 *
4546 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4547 * \returns StickyFault_StaticBrakeDisabled Status Signal Object
4548 */
4550
4551 /**
4552 * \brief Closed loop proportional component
4553 *
4554 * \details The portion of the closed loop output that is the
4555 * proportional to the error. Alternatively, the p-Contribution of the
4556 * closed loop output.
4557 *
4558 * Default Rates:
4559 * - CAN 2.0: 4.0 Hz
4560 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4561 *
4562 * This refreshes and returns a cached StatusSignal object.
4563 *
4564 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4565 * \returns ClosedLoopProportionalOutput Status Signal object
4566 */
4568
4569 /**
4570 * \brief Closed loop integrated component
4571 *
4572 * \details The portion of the closed loop output that is proportional
4573 * to the integrated error. Alternatively, the i-Contribution of the
4574 * closed loop output.
4575 *
4576 * Default Rates:
4577 * - CAN 2.0: 4.0 Hz
4578 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4579 *
4580 * This refreshes and returns a cached StatusSignal object.
4581 *
4582 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4583 * \returns ClosedLoopIntegratedOutput Status Signal object
4584 */
4586
4587 /**
4588 * \brief Feedforward passed by the user
4589 *
4590 * \details This is the general feedforward that the user provides for
4591 * the closed loop.
4592 *
4593 * Default Rates:
4594 * - CAN 2.0: 4.0 Hz
4595 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4596 *
4597 * This refreshes and returns a cached StatusSignal object.
4598 *
4599 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4600 * \returns ClosedLoopFeedForward Status Signal object
4601 */
4602 StatusSignal<double> &GetClosedLoopFeedForward(bool refresh = true) override;
4603
4604 /**
4605 * \brief Closed loop derivative component
4606 *
4607 * \details The portion of the closed loop output that is the
4608 * proportional to the deriviative the error. Alternatively, the
4609 * d-Contribution of the closed loop output.
4610 *
4611 * Default Rates:
4612 * - CAN 2.0: 4.0 Hz
4613 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4614 *
4615 * This refreshes and returns a cached StatusSignal object.
4616 *
4617 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4618 * \returns ClosedLoopDerivativeOutput Status Signal object
4619 */
4621
4622 /**
4623 * \brief Closed loop total output
4624 *
4625 * \details The total output of the closed loop output.
4626 *
4627 * Default Rates:
4628 * - CAN 2.0: 4.0 Hz
4629 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4630 *
4631 * This refreshes and returns a cached StatusSignal object.
4632 *
4633 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4634 * \returns ClosedLoopOutput Status Signal object
4635 */
4636 StatusSignal<double> &GetClosedLoopOutput(bool refresh = true) override;
4637
4638 /**
4639 * \brief Value that the closed loop is targeting
4640 *
4641 * \details This is the value that the closed loop PID controller
4642 * targets.
4643 *
4644 * Default Rates:
4645 * - CAN 2.0: 4.0 Hz
4646 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4647 *
4648 * This refreshes and returns a cached StatusSignal object.
4649 *
4650 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4651 * \returns ClosedLoopReference Status Signal object
4652 */
4653 StatusSignal<double> &GetClosedLoopReference(bool refresh = true) override;
4654
4655 /**
4656 * \brief Derivative of the target that the closed loop is targeting
4657 *
4658 * \details This is the change in the closed loop reference. This may
4659 * be used in the feed-forward calculation, the derivative-error, or
4660 * in application of the signage for kS. Typically, this represents
4661 * the target velocity during Motion Magic®.
4662 *
4663 * Default Rates:
4664 * - CAN 2.0: 4.0 Hz
4665 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4666 *
4667 * This refreshes and returns a cached StatusSignal object.
4668 *
4669 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4670 * \returns ClosedLoopReferenceSlope Status Signal object
4671 */
4673
4674 /**
4675 * \brief The difference between target reference and current
4676 * measurement
4677 *
4678 * \details This is the value that is treated as the error in the PID
4679 * loop.
4680 *
4681 * Default Rates:
4682 * - CAN 2.0: 4.0 Hz
4683 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4684 *
4685 * This refreshes and returns a cached StatusSignal object.
4686 *
4687 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4688 * \returns ClosedLoopError Status Signal object
4689 */
4690 StatusSignal<double> &GetClosedLoopError(bool refresh = true) override;
4691
4692 /**
4693 * \brief The calculated motor output for differential followers.
4694 *
4695 * \details This is a torque request when using the TorqueCurrentFOC
4696 * control output type, and a duty cycle in all other control types.
4697 *
4698 * Default Rates:
4699 * - CAN 2.0: 100.0 Hz
4700 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4701 *
4702 * This refreshes and returns a cached StatusSignal object.
4703 *
4704 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4705 * \returns DifferentialOutput Status Signal object
4706 */
4707 StatusSignal<double> &GetDifferentialOutput(bool refresh = true) override;
4708
4709 /**
4710 * \brief Differential closed loop proportional component
4711 *
4712 * \details The portion of the differential closed loop output that is
4713 * the proportional to the error. Alternatively, the p-Contribution of
4714 * the closed loop output.
4715 *
4716 * Default Rates:
4717 * - CAN 2.0: 4.0 Hz
4718 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4719 *
4720 * This refreshes and returns a cached StatusSignal object.
4721 *
4722 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4723 * \returns DifferentialClosedLoopProportionalOutput Status Signal object
4724 */
4726
4727 /**
4728 * \brief Differential closed loop integrated component
4729 *
4730 * \details The portion of the differential closed loop output that is
4731 * proportional to the integrated error. Alternatively, the
4732 * i-Contribution of the closed loop output.
4733 *
4734 * Default Rates:
4735 * - CAN 2.0: 100.0 Hz
4736 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4737 *
4738 * This refreshes and returns a cached StatusSignal object.
4739 *
4740 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4741 * \returns DifferentialClosedLoopIntegratedOutput Status Signal object
4742 */
4744
4745 /**
4746 * \brief Differential Feedforward passed by the user
4747 *
4748 * \details This is the general feedforward that the user provides for
4749 * the differential closed loop.
4750 *
4751 * Default Rates:
4752 * - CAN 2.0: 100.0 Hz
4753 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4754 *
4755 * This refreshes and returns a cached StatusSignal object.
4756 *
4757 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4758 * \returns DifferentialClosedLoopFeedForward Status Signal object
4759 */
4761
4762 /**
4763 * \brief Differential closed loop derivative component
4764 *
4765 * \details The portion of the differential closed loop output that is
4766 * the proportional to the deriviative the error. Alternatively, the
4767 * d-Contribution of the closed loop output.
4768 *
4769 * Default Rates:
4770 * - CAN 2.0: 4.0 Hz
4771 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4772 *
4773 * This refreshes and returns a cached StatusSignal object.
4774 *
4775 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4776 * \returns DifferentialClosedLoopDerivativeOutput Status Signal object
4777 */
4779
4780 /**
4781 * \brief Differential closed loop total output
4782 *
4783 * \details The total output of the differential closed loop output.
4784 *
4785 * Default Rates:
4786 * - CAN 2.0: 4.0 Hz
4787 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4788 *
4789 * This refreshes and returns a cached StatusSignal object.
4790 *
4791 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4792 * \returns DifferentialClosedLoopOutput Status Signal object
4793 */
4795
4796 /**
4797 * \brief Value that the differential closed loop is targeting
4798 *
4799 * \details This is the value that the differential closed loop PID
4800 * controller targets.
4801 *
4802 * Default Rates:
4803 * - CAN 2.0: 4.0 Hz
4804 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4805 *
4806 * This refreshes and returns a cached StatusSignal object.
4807 *
4808 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4809 * \returns DifferentialClosedLoopReference Status Signal object
4810 */
4812
4813 /**
4814 * \brief Derivative of the target that the differential closed loop
4815 * is targeting
4816 *
4817 * \details This is the change in the closed loop reference. This may
4818 * be used in the feed-forward calculation, the derivative-error, or
4819 * in application of the signage for kS. Typically, this represents
4820 * the target velocity during Motion Magic®.
4821 *
4822 * Default Rates:
4823 * - CAN 2.0: 4.0 Hz
4824 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4825 *
4826 * This refreshes and returns a cached StatusSignal object.
4827 *
4828 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4829 * \returns DifferentialClosedLoopReferenceSlope Status Signal object
4830 */
4832
4833 /**
4834 * \brief The difference between target differential reference and
4835 * current measurement
4836 *
4837 * \details This is the value that is treated as the error in the
4838 * differential PID loop.
4839 *
4840 * Default Rates:
4841 * - CAN 2.0: 4.0 Hz
4842 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4843 *
4844 * This refreshes and returns a cached StatusSignal object.
4845 *
4846 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4847 * \returns DifferentialClosedLoopError Status Signal object
4848 */
4850
4851
4852 /**
4853 * \brief Request a specified motor duty cycle.
4854 *
4855 * \details This control mode will output a proportion of the supplied
4856 * voltage which is supplied by the user.
4857 *
4858 * - DutyCycleOut Parameters:
4859 * - Output: Proportion of supply voltage to apply in fractional units between -1
4860 * and +1
4861 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
4862 * increases peak power by ~15%. Set to false to use trapezoidal
4863 * commutation.
4864 *
4865 * FOC improves motor performance by leveraging torque (current)
4866 * control. However, this may be inconvenient for applications that
4867 * require specifying duty cycle or voltage. CTR-Electronics has
4868 * developed a hybrid method that combines the performances gains of
4869 * FOC while still allowing applications to provide duty cycle or
4870 * voltage demand. This not to be confused with simple sinusoidal
4871 * control or phase voltage control which lacks the performance
4872 * gains.
4873 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
4874 * is zero (or within deadband). Set to false to use
4875 * the NeutralMode configuration setting (default).
4876 * This flag exists to provide the fundamental
4877 * behavior of this control when output is zero, which
4878 * is to provide 0V to the motor.
4879 * - LimitForwardMotion: Set to true to force forward limiting. This allows
4880 * users to use other limit switch sensors connected to
4881 * robot controller. This also allows use of active
4882 * sensors that require external power.
4883 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
4884 * users to use other limit switch sensors connected to
4885 * robot controller. This also allows use of active
4886 * sensors that require external power.
4887 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
4888 * LimitForwardMotion and LimitReverseMotion parameters,
4889 * instead allowing motion.
4890 *
4891 * This can be useful on mechanisms such as an
4892 * intake/feeder, where a limit switch stops motion while
4893 * intaking but should be ignored when feeding to a
4894 * shooter.
4895 *
4896 * The hardware limit faults and Forward/ReverseLimit
4897 * signals will still report the values of the limit
4898 * switches regardless of this parameter.
4899 * - UseTimesync: Set to true to delay applying this control request until a
4900 * timesync boundary (requires Phoenix Pro and CANivore). This
4901 * eliminates the impact of nondeterministic network delays in
4902 * exchange for a larger but deterministic control latency.
4903 *
4904 * This requires setting the ControlTimesyncFreqHz config in
4905 * MotorOutputConfigs. Additionally, when this is enabled, the
4906 * UpdateFreqHz of this request should be set to 0 Hz.
4907 *
4908 * \param request Control object to request of the device
4909 * \returns Status Code of the request, 0 is OK
4910 */
4912
4913 /**
4914 * \brief Request a specified motor current (field oriented control).
4915 *
4916 * \details This control request will drive the motor to the requested
4917 * motor (stator) current value. This leverages field oriented
4918 * control (FOC), which means greater peak power than what is
4919 * documented. This scales to torque based on Motor's kT constant.
4920 *
4921 * - TorqueCurrentFOC Parameters:
4922 * - Output: Amount of motor current in Amperes
4923 * - MaxAbsDutyCycle: The maximum absolute motor output that can be applied,
4924 * which effectively limits the velocity. For example, 0.50
4925 * means no more than 50% output in either direction. This is
4926 * useful for preventing the motor from spinning to its
4927 * terminal velocity when there is no external torque applied
4928 * unto the rotor. Note this is absolute maximum, so the
4929 * value should be between zero and one.
4930 * - Deadband: Deadband in Amperes. If torque request is within deadband, the
4931 * bridge output is neutral. If deadband is set to zero then there is
4932 * effectively no deadband. Note if deadband is zero, a free spinning
4933 * motor will spin for quite a while as the firmware attempts to hold
4934 * the motor's bemf. If user expects motor to cease spinning quickly
4935 * with a demand of zero, we recommend a deadband of one Ampere. This
4936 * value will be converted to an integral value of amps.
4937 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
4938 * (or within deadband). Set to false to use the
4939 * NeutralMode configuration setting (default). This
4940 * flag exists to provide the fundamental behavior of
4941 * this control when output is zero, which is to
4942 * provide 0A (zero torque).
4943 * - LimitForwardMotion: Set to true to force forward limiting. This allows
4944 * users to use other limit switch sensors connected to
4945 * robot controller. This also allows use of active
4946 * sensors that require external power.
4947 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
4948 * users to use other limit switch sensors connected to
4949 * robot controller. This also allows use of active
4950 * sensors that require external power.
4951 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
4952 * LimitForwardMotion and LimitReverseMotion parameters,
4953 * instead allowing motion.
4954 *
4955 * This can be useful on mechanisms such as an
4956 * intake/feeder, where a limit switch stops motion while
4957 * intaking but should be ignored when feeding to a
4958 * shooter.
4959 *
4960 * The hardware limit faults and Forward/ReverseLimit
4961 * signals will still report the values of the limit
4962 * switches regardless of this parameter.
4963 * - UseTimesync: Set to true to delay applying this control request until a
4964 * timesync boundary (requires Phoenix Pro and CANivore). This
4965 * eliminates the impact of nondeterministic network delays in
4966 * exchange for a larger but deterministic control latency.
4967 *
4968 * This requires setting the ControlTimesyncFreqHz config in
4969 * MotorOutputConfigs. Additionally, when this is enabled, the
4970 * UpdateFreqHz of this request should be set to 0 Hz.
4971 *
4972 * \param request Control object to request of the device
4973 * \returns Status Code of the request, 0 is OK
4974 */
4976
4977 /**
4978 * \brief Request a specified voltage.
4979 *
4980 * \details This control mode will attempt to apply the specified
4981 * voltage to the motor. If the supply voltage is below the requested
4982 * voltage, the motor controller will output the supply voltage.
4983 *
4984 * - VoltageOut Parameters:
4985 * - Output: Voltage to attempt to drive at
4986 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
4987 * increases peak power by ~15%. Set to false to use trapezoidal
4988 * commutation.
4989 *
4990 * FOC improves motor performance by leveraging torque (current)
4991 * control. However, this may be inconvenient for applications that
4992 * require specifying duty cycle or voltage. CTR-Electronics has
4993 * developed a hybrid method that combines the performances gains of
4994 * FOC while still allowing applications to provide duty cycle or
4995 * voltage demand. This not to be confused with simple sinusoidal
4996 * control or phase voltage control which lacks the performance
4997 * gains.
4998 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
4999 * is zero (or within deadband). Set to false to use
5000 * the NeutralMode configuration setting (default).
5001 * This flag exists to provide the fundamental
5002 * behavior of this control when output is zero, which
5003 * is to provide 0V to the motor.
5004 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5005 * users to use other limit switch sensors connected to
5006 * robot controller. This also allows use of active
5007 * sensors that require external power.
5008 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5009 * users to use other limit switch sensors connected to
5010 * robot controller. This also allows use of active
5011 * sensors that require external power.
5012 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5013 * LimitForwardMotion and LimitReverseMotion parameters,
5014 * instead allowing motion.
5015 *
5016 * This can be useful on mechanisms such as an
5017 * intake/feeder, where a limit switch stops motion while
5018 * intaking but should be ignored when feeding to a
5019 * shooter.
5020 *
5021 * The hardware limit faults and Forward/ReverseLimit
5022 * signals will still report the values of the limit
5023 * switches regardless of this parameter.
5024 * - UseTimesync: Set to true to delay applying this control request until a
5025 * timesync boundary (requires Phoenix Pro and CANivore). This
5026 * eliminates the impact of nondeterministic network delays in
5027 * exchange for a larger but deterministic control latency.
5028 *
5029 * This requires setting the ControlTimesyncFreqHz config in
5030 * MotorOutputConfigs. Additionally, when this is enabled, the
5031 * UpdateFreqHz of this request should be set to 0 Hz.
5032 *
5033 * \param request Control object to request of the device
5034 * \returns Status Code of the request, 0 is OK
5035 */
5037
5038 /**
5039 * \brief Request PID to target position with duty cycle feedforward.
5040 *
5041 * \details This control mode will set the motor's position setpoint
5042 * to the position specified by the user. In addition, it will apply
5043 * an additional duty cycle as an arbitrary feedforward value.
5044 *
5045 * - PositionDutyCycle Parameters:
5046 * - Position: Position to drive toward in rotations.
5047 * - Velocity: Velocity to drive toward in rotations per second. This is
5048 * typically used for motion profiles generated by the robot program.
5049 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5050 * increases peak power by ~15%. Set to false to use trapezoidal
5051 * commutation.
5052 *
5053 * FOC improves motor performance by leveraging torque (current)
5054 * control. However, this may be inconvenient for applications that
5055 * require specifying duty cycle or voltage. CTR-Electronics has
5056 * developed a hybrid method that combines the performances gains of
5057 * FOC while still allowing applications to provide duty cycle or
5058 * voltage demand. This not to be confused with simple sinusoidal
5059 * control or phase voltage control which lacks the performance
5060 * gains.
5061 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
5062 * - Slot: Select which gains are applied by selecting the slot. Use the
5063 * configuration api to set the gain values for the selected slot before
5064 * enabling this feature. Slot must be within [0,2].
5065 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5066 * is zero (or within deadband). Set to false to use
5067 * the NeutralMode configuration setting (default).
5068 * This flag exists to provide the fundamental
5069 * behavior of this control when output is zero, which
5070 * is to provide 0V to the motor.
5071 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5072 * users to use other limit switch sensors connected to
5073 * robot controller. This also allows use of active
5074 * sensors that require external power.
5075 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5076 * users to use other limit switch sensors connected to
5077 * robot controller. This also allows use of active
5078 * sensors that require external power.
5079 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5080 * LimitForwardMotion and LimitReverseMotion parameters,
5081 * instead allowing motion.
5082 *
5083 * This can be useful on mechanisms such as an
5084 * intake/feeder, where a limit switch stops motion while
5085 * intaking but should be ignored when feeding to a
5086 * shooter.
5087 *
5088 * The hardware limit faults and Forward/ReverseLimit
5089 * signals will still report the values of the limit
5090 * switches regardless of this parameter.
5091 * - UseTimesync: Set to true to delay applying this control request until a
5092 * timesync boundary (requires Phoenix Pro and CANivore). This
5093 * eliminates the impact of nondeterministic network delays in
5094 * exchange for a larger but deterministic control latency.
5095 *
5096 * This requires setting the ControlTimesyncFreqHz config in
5097 * MotorOutputConfigs. Additionally, when this is enabled, the
5098 * UpdateFreqHz of this request should be set to 0 Hz.
5099 *
5100 * \param request Control object to request of the device
5101 * \returns Status Code of the request, 0 is OK
5102 */
5104
5105 /**
5106 * \brief Request PID to target position with voltage feedforward
5107 *
5108 * \details This control mode will set the motor's position setpoint
5109 * to the position specified by the user. In addition, it will apply
5110 * an additional voltage as an arbitrary feedforward value.
5111 *
5112 * - PositionVoltage Parameters:
5113 * - Position: Position to drive toward in rotations.
5114 * - Velocity: Velocity to drive toward in rotations per second. This is
5115 * typically used for motion profiles generated by the robot program.
5116 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5117 * increases peak power by ~15%. Set to false to use trapezoidal
5118 * commutation.
5119 *
5120 * FOC improves motor performance by leveraging torque (current)
5121 * control. However, this may be inconvenient for applications that
5122 * require specifying duty cycle or voltage. CTR-Electronics has
5123 * developed a hybrid method that combines the performances gains of
5124 * FOC while still allowing applications to provide duty cycle or
5125 * voltage demand. This not to be confused with simple sinusoidal
5126 * control or phase voltage control which lacks the performance
5127 * gains.
5128 * - FeedForward: Feedforward to apply in volts
5129 * - Slot: Select which gains are applied by selecting the slot. Use the
5130 * configuration api to set the gain values for the selected slot before
5131 * enabling this feature. Slot must be within [0,2].
5132 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5133 * is zero (or within deadband). Set to false to use
5134 * the NeutralMode configuration setting (default).
5135 * This flag exists to provide the fundamental
5136 * behavior of this control when output is zero, which
5137 * is to provide 0V to the motor.
5138 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5139 * users to use other limit switch sensors connected to
5140 * robot controller. This also allows use of active
5141 * sensors that require external power.
5142 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5143 * users to use other limit switch sensors connected to
5144 * robot controller. This also allows use of active
5145 * sensors that require external power.
5146 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5147 * LimitForwardMotion and LimitReverseMotion parameters,
5148 * instead allowing motion.
5149 *
5150 * This can be useful on mechanisms such as an
5151 * intake/feeder, where a limit switch stops motion while
5152 * intaking but should be ignored when feeding to a
5153 * shooter.
5154 *
5155 * The hardware limit faults and Forward/ReverseLimit
5156 * signals will still report the values of the limit
5157 * switches regardless of this parameter.
5158 * - UseTimesync: Set to true to delay applying this control request until a
5159 * timesync boundary (requires Phoenix Pro and CANivore). This
5160 * eliminates the impact of nondeterministic network delays in
5161 * exchange for a larger but deterministic control latency.
5162 *
5163 * This requires setting the ControlTimesyncFreqHz config in
5164 * MotorOutputConfigs. Additionally, when this is enabled, the
5165 * UpdateFreqHz of this request should be set to 0 Hz.
5166 *
5167 * \param request Control object to request of the device
5168 * \returns Status Code of the request, 0 is OK
5169 */
5171
5172 /**
5173 * \brief Request PID to target position with torque current
5174 * feedforward.
5175 *
5176 * \details This control mode will set the motor's position setpoint
5177 * to the position specified by the user. In addition, it will apply
5178 * an additional torque current as an arbitrary feedforward value.
5179 *
5180 * - PositionTorqueCurrentFOC Parameters:
5181 * - Position: Position to drive toward in rotations.
5182 * - Velocity: Velocity to drive toward in rotations per second. This is
5183 * typically used for motion profiles generated by the robot program.
5184 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
5185 * use motor's kT to scale Newton-meter to Amperes.
5186 * - Slot: Select which gains are applied by selecting the slot. Use the
5187 * configuration api to set the gain values for the selected slot before
5188 * enabling this feature. Slot must be within [0,2].
5189 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
5190 * (or within deadband). Set to false to use the
5191 * NeutralMode configuration setting (default). This
5192 * flag exists to provide the fundamental behavior of
5193 * this control when output is zero, which is to
5194 * provide 0A (zero torque).
5195 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5196 * users to use other limit switch sensors connected to
5197 * robot controller. This also allows use of active
5198 * sensors that require external power.
5199 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5200 * users to use other limit switch sensors connected to
5201 * robot controller. This also allows use of active
5202 * sensors that require external power.
5203 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5204 * LimitForwardMotion and LimitReverseMotion parameters,
5205 * instead allowing motion.
5206 *
5207 * This can be useful on mechanisms such as an
5208 * intake/feeder, where a limit switch stops motion while
5209 * intaking but should be ignored when feeding to a
5210 * shooter.
5211 *
5212 * The hardware limit faults and Forward/ReverseLimit
5213 * signals will still report the values of the limit
5214 * switches regardless of this parameter.
5215 * - UseTimesync: Set to true to delay applying this control request until a
5216 * timesync boundary (requires Phoenix Pro and CANivore). This
5217 * eliminates the impact of nondeterministic network delays in
5218 * exchange for a larger but deterministic control latency.
5219 *
5220 * This requires setting the ControlTimesyncFreqHz config in
5221 * MotorOutputConfigs. Additionally, when this is enabled, the
5222 * UpdateFreqHz of this request should be set to 0 Hz.
5223 *
5224 * \param request Control object to request of the device
5225 * \returns Status Code of the request, 0 is OK
5226 */
5228
5229 /**
5230 * \brief Request PID to target velocity with duty cycle feedforward.
5231 *
5232 * \details This control mode will set the motor's velocity setpoint
5233 * to the velocity specified by the user. In addition, it will apply
5234 * an additional voltage as an arbitrary feedforward value.
5235 *
5236 * - VelocityDutyCycle Parameters:
5237 * - Velocity: Velocity to drive toward in rotations per second.
5238 * - Acceleration: Acceleration to drive toward in rotations per second squared.
5239 * This is typically used for motion profiles generated by the
5240 * robot program.
5241 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5242 * increases peak power by ~15%. Set to false to use trapezoidal
5243 * commutation.
5244 *
5245 * FOC improves motor performance by leveraging torque (current)
5246 * control. However, this may be inconvenient for applications that
5247 * require specifying duty cycle or voltage. CTR-Electronics has
5248 * developed a hybrid method that combines the performances gains of
5249 * FOC while still allowing applications to provide duty cycle or
5250 * voltage demand. This not to be confused with simple sinusoidal
5251 * control or phase voltage control which lacks the performance
5252 * gains.
5253 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
5254 * - Slot: Select which gains are applied by selecting the slot. Use the
5255 * configuration api to set the gain values for the selected slot before
5256 * enabling this feature. Slot must be within [0,2].
5257 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5258 * is zero (or within deadband). Set to false to use
5259 * the NeutralMode configuration setting (default).
5260 * This flag exists to provide the fundamental
5261 * behavior of this control when output is zero, which
5262 * is to provide 0V to the motor.
5263 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5264 * users to use other limit switch sensors connected to
5265 * robot controller. This also allows use of active
5266 * sensors that require external power.
5267 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5268 * users to use other limit switch sensors connected to
5269 * robot controller. This also allows use of active
5270 * sensors that require external power.
5271 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5272 * LimitForwardMotion and LimitReverseMotion parameters,
5273 * instead allowing motion.
5274 *
5275 * This can be useful on mechanisms such as an
5276 * intake/feeder, where a limit switch stops motion while
5277 * intaking but should be ignored when feeding to a
5278 * shooter.
5279 *
5280 * The hardware limit faults and Forward/ReverseLimit
5281 * signals will still report the values of the limit
5282 * switches regardless of this parameter.
5283 * - UseTimesync: Set to true to delay applying this control request until a
5284 * timesync boundary (requires Phoenix Pro and CANivore). This
5285 * eliminates the impact of nondeterministic network delays in
5286 * exchange for a larger but deterministic control latency.
5287 *
5288 * This requires setting the ControlTimesyncFreqHz config in
5289 * MotorOutputConfigs. Additionally, when this is enabled, the
5290 * UpdateFreqHz of this request should be set to 0 Hz.
5291 *
5292 * \param request Control object to request of the device
5293 * \returns Status Code of the request, 0 is OK
5294 */
5296
5297 /**
5298 * \brief Request PID to target velocity with voltage feedforward.
5299 *
5300 * \details This control mode will set the motor's velocity setpoint
5301 * to the velocity specified by the user. In addition, it will apply
5302 * an additional voltage as an arbitrary feedforward value.
5303 *
5304 * - VelocityVoltage Parameters:
5305 * - Velocity: Velocity to drive toward in rotations per second.
5306 * - Acceleration: Acceleration to drive toward in rotations per second squared.
5307 * This is typically used for motion profiles generated by the
5308 * robot program.
5309 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5310 * increases peak power by ~15%. Set to false to use trapezoidal
5311 * commutation.
5312 *
5313 * FOC improves motor performance by leveraging torque (current)
5314 * control. However, this may be inconvenient for applications that
5315 * require specifying duty cycle or voltage. CTR-Electronics has
5316 * developed a hybrid method that combines the performances gains of
5317 * FOC while still allowing applications to provide duty cycle or
5318 * voltage demand. This not to be confused with simple sinusoidal
5319 * control or phase voltage control which lacks the performance
5320 * gains.
5321 * - FeedForward: Feedforward to apply in volts
5322 * - Slot: Select which gains are applied by selecting the slot. Use the
5323 * configuration api to set the gain values for the selected slot before
5324 * enabling this feature. Slot must be within [0,2].
5325 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5326 * is zero (or within deadband). Set to false to use
5327 * the NeutralMode configuration setting (default).
5328 * This flag exists to provide the fundamental
5329 * behavior of this control when output is zero, which
5330 * is to provide 0V to the motor.
5331 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5332 * users to use other limit switch sensors connected to
5333 * robot controller. This also allows use of active
5334 * sensors that require external power.
5335 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5336 * users to use other limit switch sensors connected to
5337 * robot controller. This also allows use of active
5338 * sensors that require external power.
5339 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5340 * LimitForwardMotion and LimitReverseMotion parameters,
5341 * instead allowing motion.
5342 *
5343 * This can be useful on mechanisms such as an
5344 * intake/feeder, where a limit switch stops motion while
5345 * intaking but should be ignored when feeding to a
5346 * shooter.
5347 *
5348 * The hardware limit faults and Forward/ReverseLimit
5349 * signals will still report the values of the limit
5350 * switches regardless of this parameter.
5351 * - UseTimesync: Set to true to delay applying this control request until a
5352 * timesync boundary (requires Phoenix Pro and CANivore). This
5353 * eliminates the impact of nondeterministic network delays in
5354 * exchange for a larger but deterministic control latency.
5355 *
5356 * This requires setting the ControlTimesyncFreqHz config in
5357 * MotorOutputConfigs. Additionally, when this is enabled, the
5358 * UpdateFreqHz of this request should be set to 0 Hz.
5359 *
5360 * \param request Control object to request of the device
5361 * \returns Status Code of the request, 0 is OK
5362 */
5364
5365 /**
5366 * \brief Request PID to target velocity with torque current
5367 * feedforward.
5368 *
5369 * \details This control mode will set the motor's velocity setpoint
5370 * to the velocity specified by the user. In addition, it will apply
5371 * an additional torque current as an arbitrary feedforward value.
5372 *
5373 * - VelocityTorqueCurrentFOC Parameters:
5374 * - Velocity: Velocity to drive toward in rotations per second.
5375 * - Acceleration: Acceleration to drive toward in rotations per second squared.
5376 * This is typically used for motion profiles generated by the
5377 * robot program.
5378 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
5379 * use motor's kT to scale Newton-meter to Amperes.
5380 * - Slot: Select which gains are applied by selecting the slot. Use the
5381 * configuration api to set the gain values for the selected slot before
5382 * enabling this feature. Slot must be within [0,2].
5383 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
5384 * (or within deadband). Set to false to use the
5385 * NeutralMode configuration setting (default). This
5386 * flag exists to provide the fundamental behavior of
5387 * this control when output is zero, which is to
5388 * provide 0A (zero torque).
5389 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5390 * users to use other limit switch sensors connected to
5391 * robot controller. This also allows use of active
5392 * sensors that require external power.
5393 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5394 * users to use other limit switch sensors connected to
5395 * robot controller. This also allows use of active
5396 * sensors that require external power.
5397 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5398 * LimitForwardMotion and LimitReverseMotion parameters,
5399 * instead allowing motion.
5400 *
5401 * This can be useful on mechanisms such as an
5402 * intake/feeder, where a limit switch stops motion while
5403 * intaking but should be ignored when feeding to a
5404 * shooter.
5405 *
5406 * The hardware limit faults and Forward/ReverseLimit
5407 * signals will still report the values of the limit
5408 * switches regardless of this parameter.
5409 * - UseTimesync: Set to true to delay applying this control request until a
5410 * timesync boundary (requires Phoenix Pro and CANivore). This
5411 * eliminates the impact of nondeterministic network delays in
5412 * exchange for a larger but deterministic control latency.
5413 *
5414 * This requires setting the ControlTimesyncFreqHz config in
5415 * MotorOutputConfigs. Additionally, when this is enabled, the
5416 * UpdateFreqHz of this request should be set to 0 Hz.
5417 *
5418 * \param request Control object to request of the device
5419 * \returns Status Code of the request, 0 is OK
5420 */
5422
5423 /**
5424 * \brief Requests Motion Magic® to target a final position using a
5425 * motion profile. Users can optionally provide a duty cycle
5426 * feedforward.
5427 *
5428 * \details Motion Magic® produces a motion profile in real-time while
5429 * attempting to honor the Cruise Velocity, Acceleration, and
5430 * (optional) Jerk specified via the Motion Magic® configuration
5431 * values. This control mode does not use the Expo_kV or Expo_kA
5432 * configs.
5433 *
5434 * Target position can be changed on-the-fly and Motion Magic® will do
5435 * its best to adjust the profile. This control mode is duty cycle
5436 * based, so relevant closed-loop gains will use fractional duty cycle
5437 * for the numerator: +1.0 represents full forward output.
5438 *
5439 * - MotionMagicDutyCycle Parameters:
5440 * - Position: Position to drive toward in rotations.
5441 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5442 * increases peak power by ~15%. Set to false to use trapezoidal
5443 * commutation.
5444 *
5445 * FOC improves motor performance by leveraging torque (current)
5446 * control. However, this may be inconvenient for applications that
5447 * require specifying duty cycle or voltage. CTR-Electronics has
5448 * developed a hybrid method that combines the performances gains of
5449 * FOC while still allowing applications to provide duty cycle or
5450 * voltage demand. This not to be confused with simple sinusoidal
5451 * control or phase voltage control which lacks the performance
5452 * gains.
5453 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
5454 * - Slot: Select which gains are applied by selecting the slot. Use the
5455 * configuration api to set the gain values for the selected slot before
5456 * enabling this feature. Slot must be within [0,2].
5457 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5458 * is zero (or within deadband). Set to false to use
5459 * the NeutralMode configuration setting (default).
5460 * This flag exists to provide the fundamental
5461 * behavior of this control when output is zero, which
5462 * is to provide 0V to the motor.
5463 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5464 * users to use other limit switch sensors connected to
5465 * robot controller. This also allows use of active
5466 * sensors that require external power.
5467 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5468 * users to use other limit switch sensors connected to
5469 * robot controller. This also allows use of active
5470 * sensors that require external power.
5471 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5472 * LimitForwardMotion and LimitReverseMotion parameters,
5473 * instead allowing motion.
5474 *
5475 * This can be useful on mechanisms such as an
5476 * intake/feeder, where a limit switch stops motion while
5477 * intaking but should be ignored when feeding to a
5478 * shooter.
5479 *
5480 * The hardware limit faults and Forward/ReverseLimit
5481 * signals will still report the values of the limit
5482 * switches regardless of this parameter.
5483 * - UseTimesync: Set to true to delay applying this control request until a
5484 * timesync boundary (requires Phoenix Pro and CANivore). This
5485 * eliminates the impact of nondeterministic network delays in
5486 * exchange for a larger but deterministic control latency.
5487 *
5488 * This requires setting the ControlTimesyncFreqHz config in
5489 * MotorOutputConfigs. Additionally, when this is enabled, the
5490 * UpdateFreqHz of this request should be set to 0 Hz.
5491 *
5492 * \param request Control object to request of the device
5493 * \returns Status Code of the request, 0 is OK
5494 */
5496
5497 /**
5498 * \brief Requests Motion Magic® to target a final position using a
5499 * motion profile. Users can optionally provide a voltage
5500 * feedforward.
5501 *
5502 * \details Motion Magic® produces a motion profile in real-time while
5503 * attempting to honor the Cruise Velocity, Acceleration, and
5504 * (optional) Jerk specified via the Motion Magic® configuration
5505 * values. This control mode does not use the Expo_kV or Expo_kA
5506 * configs.
5507 *
5508 * Target position can be changed on-the-fly and Motion Magic® will do
5509 * its best to adjust the profile. This control mode is
5510 * voltage-based, so relevant closed-loop gains will use Volts for the
5511 * numerator.
5512 *
5513 * - MotionMagicVoltage Parameters:
5514 * - Position: Position to drive toward in rotations.
5515 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5516 * increases peak power by ~15%. Set to false to use trapezoidal
5517 * commutation.
5518 *
5519 * FOC improves motor performance by leveraging torque (current)
5520 * control. However, this may be inconvenient for applications that
5521 * require specifying duty cycle or voltage. CTR-Electronics has
5522 * developed a hybrid method that combines the performances gains of
5523 * FOC while still allowing applications to provide duty cycle or
5524 * voltage demand. This not to be confused with simple sinusoidal
5525 * control or phase voltage control which lacks the performance
5526 * gains.
5527 * - FeedForward: Feedforward to apply in volts
5528 * - Slot: Select which gains are applied by selecting the slot. Use the
5529 * configuration api to set the gain values for the selected slot before
5530 * enabling this feature. Slot must be within [0,2].
5531 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5532 * is zero (or within deadband). Set to false to use
5533 * the NeutralMode configuration setting (default).
5534 * This flag exists to provide the fundamental
5535 * behavior of this control when output is zero, which
5536 * is to provide 0V to the motor.
5537 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5538 * users to use other limit switch sensors connected to
5539 * robot controller. This also allows use of active
5540 * sensors that require external power.
5541 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5542 * users to use other limit switch sensors connected to
5543 * robot controller. This also allows use of active
5544 * sensors that require external power.
5545 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5546 * LimitForwardMotion and LimitReverseMotion parameters,
5547 * instead allowing motion.
5548 *
5549 * This can be useful on mechanisms such as an
5550 * intake/feeder, where a limit switch stops motion while
5551 * intaking but should be ignored when feeding to a
5552 * shooter.
5553 *
5554 * The hardware limit faults and Forward/ReverseLimit
5555 * signals will still report the values of the limit
5556 * switches regardless of this parameter.
5557 * - UseTimesync: Set to true to delay applying this control request until a
5558 * timesync boundary (requires Phoenix Pro and CANivore). This
5559 * eliminates the impact of nondeterministic network delays in
5560 * exchange for a larger but deterministic control latency.
5561 *
5562 * This requires setting the ControlTimesyncFreqHz config in
5563 * MotorOutputConfigs. Additionally, when this is enabled, the
5564 * UpdateFreqHz of this request should be set to 0 Hz.
5565 *
5566 * \param request Control object to request of the device
5567 * \returns Status Code of the request, 0 is OK
5568 */
5570
5571 /**
5572 * \brief Requests Motion Magic® to target a final position using a
5573 * motion profile. Users can optionally provide a torque current
5574 * feedforward.
5575 *
5576 * \details Motion Magic® produces a motion profile in real-time while
5577 * attempting to honor the Cruise Velocity, Acceleration, and
5578 * (optional) Jerk specified via the Motion Magic® configuration
5579 * values. This control mode does not use the Expo_kV or Expo_kA
5580 * configs.
5581 *
5582 * Target position can be changed on-the-fly and Motion Magic® will do
5583 * its best to adjust the profile. This control mode is based on
5584 * torque current, so relevant closed-loop gains will use Amperes for
5585 * the numerator.
5586 *
5587 * - MotionMagicTorqueCurrentFOC Parameters:
5588 * - Position: Position to drive toward in rotations.
5589 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
5590 * use motor's kT to scale Newton-meter to Amperes.
5591 * - Slot: Select which gains are applied by selecting the slot. Use the
5592 * configuration api to set the gain values for the selected slot before
5593 * enabling this feature. Slot must be within [0,2].
5594 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
5595 * (or within deadband). Set to false to use the
5596 * NeutralMode configuration setting (default). This
5597 * flag exists to provide the fundamental behavior of
5598 * this control when output is zero, which is to
5599 * provide 0A (zero torque).
5600 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5601 * users to use other limit switch sensors connected to
5602 * robot controller. This also allows use of active
5603 * sensors that require external power.
5604 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5605 * users to use other limit switch sensors connected to
5606 * robot controller. This also allows use of active
5607 * sensors that require external power.
5608 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5609 * LimitForwardMotion and LimitReverseMotion parameters,
5610 * instead allowing motion.
5611 *
5612 * This can be useful on mechanisms such as an
5613 * intake/feeder, where a limit switch stops motion while
5614 * intaking but should be ignored when feeding to a
5615 * shooter.
5616 *
5617 * The hardware limit faults and Forward/ReverseLimit
5618 * signals will still report the values of the limit
5619 * switches regardless of this parameter.
5620 * - UseTimesync: Set to true to delay applying this control request until a
5621 * timesync boundary (requires Phoenix Pro and CANivore). This
5622 * eliminates the impact of nondeterministic network delays in
5623 * exchange for a larger but deterministic control latency.
5624 *
5625 * This requires setting the ControlTimesyncFreqHz config in
5626 * MotorOutputConfigs. Additionally, when this is enabled, the
5627 * UpdateFreqHz of this request should be set to 0 Hz.
5628 *
5629 * \param request Control object to request of the device
5630 * \returns Status Code of the request, 0 is OK
5631 */
5633
5634 /**
5635 * \brief Request a specified motor duty cycle with a differential
5636 * position closed-loop.
5637 *
5638 * \details This control mode will output a proportion of the supplied
5639 * voltage which is supplied by the user. It will also set the motor's
5640 * differential position setpoint to the specified position.
5641 *
5642 * - DifferentialDutyCycle Parameters:
5643 * - TargetOutput: Proportion of supply voltage to apply in fractional units
5644 * between -1 and +1
5645 * - DifferentialPosition: Differential position to drive towards in rotations
5646 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5647 * increases peak power by ~15%. Set to false to use trapezoidal
5648 * commutation.
5649 *
5650 * FOC improves motor performance by leveraging torque (current)
5651 * control. However, this may be inconvenient for applications that
5652 * require specifying duty cycle or voltage. CTR-Electronics has
5653 * developed a hybrid method that combines the performances gains of
5654 * FOC while still allowing applications to provide duty cycle or
5655 * voltage demand. This not to be confused with simple sinusoidal
5656 * control or phase voltage control which lacks the performance
5657 * gains.
5658 * - DifferentialSlot: Select which gains are applied to the differential
5659 * controller by selecting the slot. Use the configuration
5660 * api to set the gain values for the selected slot before
5661 * enabling this feature. Slot must be within [0,2].
5662 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5663 * is zero (or within deadband). Set to false to use
5664 * the NeutralMode configuration setting (default).
5665 * This flag exists to provide the fundamental
5666 * behavior of this control when output is zero, which
5667 * is to provide 0V to the motor.
5668 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5669 * users to use other limit switch sensors connected to
5670 * robot controller. This also allows use of active
5671 * sensors that require external power.
5672 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5673 * users to use other limit switch sensors connected to
5674 * robot controller. This also allows use of active
5675 * sensors that require external power.
5676 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5677 * LimitForwardMotion and LimitReverseMotion parameters,
5678 * instead allowing motion.
5679 *
5680 * This can be useful on mechanisms such as an
5681 * intake/feeder, where a limit switch stops motion while
5682 * intaking but should be ignored when feeding to a
5683 * shooter.
5684 *
5685 * The hardware limit faults and Forward/ReverseLimit
5686 * signals will still report the values of the limit
5687 * switches regardless of this parameter.
5688 * - UseTimesync: Set to true to delay applying this control request until a
5689 * timesync boundary (requires Phoenix Pro and CANivore). This
5690 * eliminates the impact of nondeterministic network delays in
5691 * exchange for a larger but deterministic control latency.
5692 *
5693 * This requires setting the ControlTimesyncFreqHz config in
5694 * MotorOutputConfigs. Additionally, when this is enabled, the
5695 * UpdateFreqHz of this request should be set to 0 Hz.
5696 *
5697 * \param request Control object to request of the device
5698 * \returns Status Code of the request, 0 is OK
5699 */
5701
5702 /**
5703 * \brief Request a specified voltage with a differential position
5704 * closed-loop.
5705 *
5706 * \details This control mode will attempt to apply the specified
5707 * voltage to the motor. If the supply voltage is below the requested
5708 * voltage, the motor controller will output the supply voltage. It
5709 * will also set the motor's differential position setpoint to the
5710 * specified position.
5711 *
5712 * - DifferentialVoltage Parameters:
5713 * - TargetOutput: Voltage to attempt to drive at
5714 * - DifferentialPosition: Differential position to drive towards in rotations
5715 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5716 * increases peak power by ~15%. Set to false to use trapezoidal
5717 * commutation.
5718 *
5719 * FOC improves motor performance by leveraging torque (current)
5720 * control. However, this may be inconvenient for applications that
5721 * require specifying duty cycle or voltage. CTR-Electronics has
5722 * developed a hybrid method that combines the performances gains of
5723 * FOC while still allowing applications to provide duty cycle or
5724 * voltage demand. This not to be confused with simple sinusoidal
5725 * control or phase voltage control which lacks the performance
5726 * gains.
5727 * - DifferentialSlot: Select which gains are applied to the differential
5728 * controller by selecting the slot. Use the configuration
5729 * api to set the gain values for the selected slot before
5730 * enabling this feature. Slot must be within [0,2].
5731 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5732 * is zero (or within deadband). Set to false to use
5733 * the NeutralMode configuration setting (default).
5734 * This flag exists to provide the fundamental
5735 * behavior of this control when output is zero, which
5736 * is to provide 0V to the motor.
5737 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5738 * users to use other limit switch sensors connected to
5739 * robot controller. This also allows use of active
5740 * sensors that require external power.
5741 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5742 * users to use other limit switch sensors connected to
5743 * robot controller. This also allows use of active
5744 * sensors that require external power.
5745 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5746 * LimitForwardMotion and LimitReverseMotion parameters,
5747 * instead allowing motion.
5748 *
5749 * This can be useful on mechanisms such as an
5750 * intake/feeder, where a limit switch stops motion while
5751 * intaking but should be ignored when feeding to a
5752 * shooter.
5753 *
5754 * The hardware limit faults and Forward/ReverseLimit
5755 * signals will still report the values of the limit
5756 * switches regardless of this parameter.
5757 * - UseTimesync: Set to true to delay applying this control request until a
5758 * timesync boundary (requires Phoenix Pro and CANivore). This
5759 * eliminates the impact of nondeterministic network delays in
5760 * exchange for a larger but deterministic control latency.
5761 *
5762 * This requires setting the ControlTimesyncFreqHz config in
5763 * MotorOutputConfigs. Additionally, when this is enabled, the
5764 * UpdateFreqHz of this request should be set to 0 Hz.
5765 *
5766 * \param request Control object to request of the device
5767 * \returns Status Code of the request, 0 is OK
5768 */
5770
5771 /**
5772 * \brief Request PID to target position with a differential position
5773 * setpoint.
5774 *
5775 * \details This control mode will set the motor's position setpoint
5776 * to the position specified by the user. It will also set the motor's
5777 * differential position setpoint to the specified position.
5778 *
5779 * - DifferentialPositionDutyCycle Parameters:
5780 * - TargetPosition: Average position to drive toward in rotations.
5781 * - DifferentialPosition: Differential position to drive toward in rotations.
5782 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5783 * increases peak power by ~15%. Set to false to use trapezoidal
5784 * commutation.
5785 *
5786 * FOC improves motor performance by leveraging torque (current)
5787 * control. However, this may be inconvenient for applications that
5788 * require specifying duty cycle or voltage. CTR-Electronics has
5789 * developed a hybrid method that combines the performances gains of
5790 * FOC while still allowing applications to provide duty cycle or
5791 * voltage demand. This not to be confused with simple sinusoidal
5792 * control or phase voltage control which lacks the performance
5793 * gains.
5794 * - TargetSlot: Select which gains are applied to the primary controller by
5795 * selecting the slot. Use the configuration api to set the gain
5796 * values for the selected slot before enabling this feature. Slot
5797 * must be within [0,2].
5798 * - DifferentialSlot: Select which gains are applied to the differential
5799 * controller by selecting the slot. Use the configuration
5800 * api to set the gain values for the selected slot before
5801 * enabling this feature. Slot must be within [0,2].
5802 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5803 * is zero (or within deadband). Set to false to use
5804 * the NeutralMode configuration setting (default).
5805 * This flag exists to provide the fundamental
5806 * behavior of this control when output is zero, which
5807 * is to provide 0V to the motor.
5808 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5809 * users to use other limit switch sensors connected to
5810 * robot controller. This also allows use of active
5811 * sensors that require external power.
5812 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5813 * users to use other limit switch sensors connected to
5814 * robot controller. This also allows use of active
5815 * sensors that require external power.
5816 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5817 * LimitForwardMotion and LimitReverseMotion parameters,
5818 * instead allowing motion.
5819 *
5820 * This can be useful on mechanisms such as an
5821 * intake/feeder, where a limit switch stops motion while
5822 * intaking but should be ignored when feeding to a
5823 * shooter.
5824 *
5825 * The hardware limit faults and Forward/ReverseLimit
5826 * signals will still report the values of the limit
5827 * switches regardless of this parameter.
5828 * - UseTimesync: Set to true to delay applying this control request until a
5829 * timesync boundary (requires Phoenix Pro and CANivore). This
5830 * eliminates the impact of nondeterministic network delays in
5831 * exchange for a larger but deterministic control latency.
5832 *
5833 * This requires setting the ControlTimesyncFreqHz config in
5834 * MotorOutputConfigs. Additionally, when this is enabled, the
5835 * UpdateFreqHz of this request should be set to 0 Hz.
5836 *
5837 * \param request Control object to request of the device
5838 * \returns Status Code of the request, 0 is OK
5839 */
5841
5842 /**
5843 * \brief Request PID to target position with a differential position
5844 * setpoint
5845 *
5846 * \details This control mode will set the motor's position setpoint
5847 * to the position specified by the user. It will also set the motor's
5848 * differential position setpoint to the specified position.
5849 *
5850 * - DifferentialPositionVoltage Parameters:
5851 * - TargetPosition: Average position to drive toward in rotations.
5852 * - DifferentialPosition: Differential position to drive toward in rotations.
5853 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5854 * increases peak power by ~15%. Set to false to use trapezoidal
5855 * commutation.
5856 *
5857 * FOC improves motor performance by leveraging torque (current)
5858 * control. However, this may be inconvenient for applications that
5859 * require specifying duty cycle or voltage. CTR-Electronics has
5860 * developed a hybrid method that combines the performances gains of
5861 * FOC while still allowing applications to provide duty cycle or
5862 * voltage demand. This not to be confused with simple sinusoidal
5863 * control or phase voltage control which lacks the performance
5864 * gains.
5865 * - TargetSlot: Select which gains are applied to the primary controller by
5866 * selecting the slot. Use the configuration api to set the gain
5867 * values for the selected slot before enabling this feature. Slot
5868 * must be within [0,2].
5869 * - DifferentialSlot: Select which gains are applied to the differential
5870 * controller by selecting the slot. Use the configuration
5871 * api to set the gain values for the selected slot before
5872 * enabling this feature. Slot must be within [0,2].
5873 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5874 * is zero (or within deadband). Set to false to use
5875 * the NeutralMode configuration setting (default).
5876 * This flag exists to provide the fundamental
5877 * behavior of this control when output is zero, which
5878 * is to provide 0V to the motor.
5879 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5880 * users to use other limit switch sensors connected to
5881 * robot controller. This also allows use of active
5882 * sensors that require external power.
5883 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5884 * users to use other limit switch sensors connected to
5885 * robot controller. This also allows use of active
5886 * sensors that require external power.
5887 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5888 * LimitForwardMotion and LimitReverseMotion parameters,
5889 * instead allowing motion.
5890 *
5891 * This can be useful on mechanisms such as an
5892 * intake/feeder, where a limit switch stops motion while
5893 * intaking but should be ignored when feeding to a
5894 * shooter.
5895 *
5896 * The hardware limit faults and Forward/ReverseLimit
5897 * signals will still report the values of the limit
5898 * switches regardless of this parameter.
5899 * - UseTimesync: Set to true to delay applying this control request until a
5900 * timesync boundary (requires Phoenix Pro and CANivore). This
5901 * eliminates the impact of nondeterministic network delays in
5902 * exchange for a larger but deterministic control latency.
5903 *
5904 * This requires setting the ControlTimesyncFreqHz config in
5905 * MotorOutputConfigs. Additionally, when this is enabled, the
5906 * UpdateFreqHz of this request should be set to 0 Hz.
5907 *
5908 * \param request Control object to request of the device
5909 * \returns Status Code of the request, 0 is OK
5910 */
5912
5913 /**
5914 * \brief Request PID to target velocity with a differential position
5915 * setpoint.
5916 *
5917 * \details This control mode will set the motor's velocity setpoint
5918 * to the velocity specified by the user. It will also set the motor's
5919 * differential position setpoint to the specified position.
5920 *
5921 * - DifferentialVelocityDutyCycle Parameters:
5922 * - TargetVelocity: Average velocity to drive toward in rotations per second.
5923 * - DifferentialPosition: Differential position to drive toward in rotations.
5924 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5925 * increases peak power by ~15%. Set to false to use trapezoidal
5926 * commutation.
5927 *
5928 * FOC improves motor performance by leveraging torque (current)
5929 * control. However, this may be inconvenient for applications that
5930 * require specifying duty cycle or voltage. CTR-Electronics has
5931 * developed a hybrid method that combines the performances gains of
5932 * FOC while still allowing applications to provide duty cycle or
5933 * voltage demand. This not to be confused with simple sinusoidal
5934 * control or phase voltage control which lacks the performance
5935 * gains.
5936 * - TargetSlot: Select which gains are applied to the primary controller by
5937 * selecting the slot. Use the configuration api to set the gain
5938 * values for the selected slot before enabling this feature. Slot
5939 * must be within [0,2].
5940 * - DifferentialSlot: Select which gains are applied to the differential
5941 * controller by selecting the slot. Use the configuration
5942 * api to set the gain values for the selected slot before
5943 * enabling this feature. Slot must be within [0,2].
5944 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5945 * is zero (or within deadband). Set to false to use
5946 * the NeutralMode configuration setting (default).
5947 * This flag exists to provide the fundamental
5948 * behavior of this control when output is zero, which
5949 * is to provide 0V to the motor.
5950 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5951 * users to use other limit switch sensors connected to
5952 * robot controller. This also allows use of active
5953 * sensors that require external power.
5954 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5955 * users to use other limit switch sensors connected to
5956 * robot controller. This also allows use of active
5957 * sensors that require external power.
5958 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5959 * LimitForwardMotion and LimitReverseMotion parameters,
5960 * instead allowing motion.
5961 *
5962 * This can be useful on mechanisms such as an
5963 * intake/feeder, where a limit switch stops motion while
5964 * intaking but should be ignored when feeding to a
5965 * shooter.
5966 *
5967 * The hardware limit faults and Forward/ReverseLimit
5968 * signals will still report the values of the limit
5969 * switches regardless of this parameter.
5970 * - UseTimesync: Set to true to delay applying this control request until a
5971 * timesync boundary (requires Phoenix Pro and CANivore). This
5972 * eliminates the impact of nondeterministic network delays in
5973 * exchange for a larger but deterministic control latency.
5974 *
5975 * This requires setting the ControlTimesyncFreqHz config in
5976 * MotorOutputConfigs. Additionally, when this is enabled, the
5977 * UpdateFreqHz of this request should be set to 0 Hz.
5978 *
5979 * \param request Control object to request of the device
5980 * \returns Status Code of the request, 0 is OK
5981 */
5983
5984 /**
5985 * \brief Request PID to target velocity with a differential position
5986 * setpoint.
5987 *
5988 * \details This control mode will set the motor's velocity setpoint
5989 * to the velocity specified by the user. It will also set the motor's
5990 * differential position setpoint to the specified position.
5991 *
5992 * - DifferentialVelocityVoltage Parameters:
5993 * - TargetVelocity: Average velocity to drive toward in rotations per second.
5994 * - DifferentialPosition: Differential position to drive toward in rotations.
5995 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5996 * increases peak power by ~15%. Set to false to use trapezoidal
5997 * commutation.
5998 *
5999 * FOC improves motor performance by leveraging torque (current)
6000 * control. However, this may be inconvenient for applications that
6001 * require specifying duty cycle or voltage. CTR-Electronics has
6002 * developed a hybrid method that combines the performances gains of
6003 * FOC while still allowing applications to provide duty cycle or
6004 * voltage demand. This not to be confused with simple sinusoidal
6005 * control or phase voltage control which lacks the performance
6006 * gains.
6007 * - TargetSlot: Select which gains are applied to the primary controller by
6008 * selecting the slot. Use the configuration api to set the gain
6009 * values for the selected slot before enabling this feature. Slot
6010 * must be within [0,2].
6011 * - DifferentialSlot: Select which gains are applied to the differential
6012 * controller by selecting the slot. Use the configuration
6013 * api to set the gain values for the selected slot before
6014 * enabling this feature. Slot must be within [0,2].
6015 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6016 * is zero (or within deadband). Set to false to use
6017 * the NeutralMode configuration setting (default).
6018 * This flag exists to provide the fundamental
6019 * behavior of this control when output is zero, which
6020 * is to provide 0V to the motor.
6021 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6022 * users to use other limit switch sensors connected to
6023 * robot controller. This also allows use of active
6024 * sensors that require external power.
6025 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6026 * users to use other limit switch sensors connected to
6027 * robot controller. This also allows use of active
6028 * sensors that require external power.
6029 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6030 * LimitForwardMotion and LimitReverseMotion parameters,
6031 * instead allowing motion.
6032 *
6033 * This can be useful on mechanisms such as an
6034 * intake/feeder, where a limit switch stops motion while
6035 * intaking but should be ignored when feeding to a
6036 * shooter.
6037 *
6038 * The hardware limit faults and Forward/ReverseLimit
6039 * signals will still report the values of the limit
6040 * switches regardless of this parameter.
6041 * - UseTimesync: Set to true to delay applying this control request until a
6042 * timesync boundary (requires Phoenix Pro and CANivore). This
6043 * eliminates the impact of nondeterministic network delays in
6044 * exchange for a larger but deterministic control latency.
6045 *
6046 * This requires setting the ControlTimesyncFreqHz config in
6047 * MotorOutputConfigs. Additionally, when this is enabled, the
6048 * UpdateFreqHz of this request should be set to 0 Hz.
6049 *
6050 * \param request Control object to request of the device
6051 * \returns Status Code of the request, 0 is OK
6052 */
6054
6055 /**
6056 * \brief Requests Motion Magic® to target a final position using a
6057 * motion profile, and PID to a differential position setpoint.
6058 *
6059 * \details Motion Magic® produces a motion profile in real-time while
6060 * attempting to honor the Cruise Velocity, Acceleration, and
6061 * (optional) Jerk specified via the Motion Magic® configuration
6062 * values. This control mode does not use the Expo_kV or Expo_kA
6063 * configs.
6064 *
6065 * Target position can be changed on-the-fly and Motion Magic® will do
6066 * its best to adjust the profile. This control mode is duty cycle
6067 * based, so relevant closed-loop gains will use fractional duty cycle
6068 * for the numerator: +1.0 represents full forward output.
6069 *
6070 * - DifferentialMotionMagicDutyCycle Parameters:
6071 * - TargetPosition: Average position to drive toward in rotations.
6072 * - DifferentialPosition: Differential position to drive toward in rotations.
6073 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6074 * increases peak power by ~15%. Set to false to use trapezoidal
6075 * commutation.
6076 *
6077 * FOC improves motor performance by leveraging torque (current)
6078 * control. However, this may be inconvenient for applications that
6079 * require specifying duty cycle or voltage. CTR-Electronics has
6080 * developed a hybrid method that combines the performances gains of
6081 * FOC while still allowing applications to provide duty cycle or
6082 * voltage demand. This not to be confused with simple sinusoidal
6083 * control or phase voltage control which lacks the performance
6084 * gains.
6085 * - TargetSlot: Select which gains are applied to the primary controller by
6086 * selecting the slot. Use the configuration api to set the gain
6087 * values for the selected slot before enabling this feature. Slot
6088 * must be within [0,2].
6089 * - DifferentialSlot: Select which gains are applied to the differential
6090 * controller by selecting the slot. Use the configuration
6091 * api to set the gain values for the selected slot before
6092 * enabling this feature. Slot must be within [0,2].
6093 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6094 * is zero (or within deadband). Set to false to use
6095 * the NeutralMode configuration setting (default).
6096 * This flag exists to provide the fundamental
6097 * behavior of this control when output is zero, which
6098 * is to provide 0V to the motor.
6099 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6100 * users to use other limit switch sensors connected to
6101 * robot controller. This also allows use of active
6102 * sensors that require external power.
6103 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6104 * users to use other limit switch sensors connected to
6105 * robot controller. This also allows use of active
6106 * sensors that require external power.
6107 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6108 * LimitForwardMotion and LimitReverseMotion parameters,
6109 * instead allowing motion.
6110 *
6111 * This can be useful on mechanisms such as an
6112 * intake/feeder, where a limit switch stops motion while
6113 * intaking but should be ignored when feeding to a
6114 * shooter.
6115 *
6116 * The hardware limit faults and Forward/ReverseLimit
6117 * signals will still report the values of the limit
6118 * switches regardless of this parameter.
6119 * - UseTimesync: Set to true to delay applying this control request until a
6120 * timesync boundary (requires Phoenix Pro and CANivore). This
6121 * eliminates the impact of nondeterministic network delays in
6122 * exchange for a larger but deterministic control latency.
6123 *
6124 * This requires setting the ControlTimesyncFreqHz config in
6125 * MotorOutputConfigs. Additionally, when this is enabled, the
6126 * UpdateFreqHz of this request should be set to 0 Hz.
6127 *
6128 * \param request Control object to request of the device
6129 * \returns Status Code of the request, 0 is OK
6130 */
6132
6133 /**
6134 * \brief Requests Motion Magic® to target a final position using a
6135 * motion profile, and PID to a differential position setpoint.
6136 *
6137 * \details Motion Magic® produces a motion profile in real-time while
6138 * attempting to honor the Cruise Velocity, Acceleration, and
6139 * (optional) Jerk specified via the Motion Magic® configuration
6140 * values. This control mode does not use the Expo_kV or Expo_kA
6141 * configs.
6142 *
6143 * Target position can be changed on-the-fly and Motion Magic® will do
6144 * its best to adjust the profile. This control mode is
6145 * voltage-based, so relevant closed-loop gains will use Volts for the
6146 * numerator.
6147 *
6148 * - DifferentialMotionMagicVoltage Parameters:
6149 * - TargetPosition: Average position to drive toward in rotations.
6150 * - DifferentialPosition: Differential position to drive toward in rotations.
6151 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6152 * increases peak power by ~15%. Set to false to use trapezoidal
6153 * commutation.
6154 *
6155 * FOC improves motor performance by leveraging torque (current)
6156 * control. However, this may be inconvenient for applications that
6157 * require specifying duty cycle or voltage. CTR-Electronics has
6158 * developed a hybrid method that combines the performances gains of
6159 * FOC while still allowing applications to provide duty cycle or
6160 * voltage demand. This not to be confused with simple sinusoidal
6161 * control or phase voltage control which lacks the performance
6162 * gains.
6163 * - TargetSlot: Select which gains are applied to the primary controller by
6164 * selecting the slot. Use the configuration api to set the gain
6165 * values for the selected slot before enabling this feature. Slot
6166 * must be within [0,2].
6167 * - DifferentialSlot: Select which gains are applied to the differential
6168 * controller by selecting the slot. Use the configuration
6169 * api to set the gain values for the selected slot before
6170 * enabling this feature. Slot must be within [0,2].
6171 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6172 * is zero (or within deadband). Set to false to use
6173 * the NeutralMode configuration setting (default).
6174 * This flag exists to provide the fundamental
6175 * behavior of this control when output is zero, which
6176 * is to provide 0V to the motor.
6177 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6178 * users to use other limit switch sensors connected to
6179 * robot controller. This also allows use of active
6180 * sensors that require external power.
6181 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6182 * users to use other limit switch sensors connected to
6183 * robot controller. This also allows use of active
6184 * sensors that require external power.
6185 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6186 * LimitForwardMotion and LimitReverseMotion parameters,
6187 * instead allowing motion.
6188 *
6189 * This can be useful on mechanisms such as an
6190 * intake/feeder, where a limit switch stops motion while
6191 * intaking but should be ignored when feeding to a
6192 * shooter.
6193 *
6194 * The hardware limit faults and Forward/ReverseLimit
6195 * signals will still report the values of the limit
6196 * switches regardless of this parameter.
6197 * - UseTimesync: Set to true to delay applying this control request until a
6198 * timesync boundary (requires Phoenix Pro and CANivore). This
6199 * eliminates the impact of nondeterministic network delays in
6200 * exchange for a larger but deterministic control latency.
6201 *
6202 * This requires setting the ControlTimesyncFreqHz config in
6203 * MotorOutputConfigs. Additionally, when this is enabled, the
6204 * UpdateFreqHz of this request should be set to 0 Hz.
6205 *
6206 * \param request Control object to request of the device
6207 * \returns Status Code of the request, 0 is OK
6208 */
6210
6211 /**
6212 * \brief Follow the motor output of another Talon.
6213 *
6214 * \details If Talon is in torque control, the torque is copied -
6215 * which will increase the total torque applied. If Talon is in
6216 * percent supply output control, the duty cycle is matched. Motor
6217 * direction either matches master's configured direction or opposes
6218 * it based on OpposeMasterDirection.
6219 *
6220 * - Follower Parameters:
6221 * - MasterID: Device ID of the master to follow.
6222 * - OpposeMasterDirection: Set to false for motor invert to match the master's
6223 * configured Invert - which is typical when master and
6224 * follower are mechanically linked and spin in the same
6225 * direction. Set to true for motor invert to oppose
6226 * the master's configured Invert - this is typical
6227 * where the the master and follower mechanically spin
6228 * in opposite directions.
6229 *
6230 * \param request Control object to request of the device
6231 * \returns Status Code of the request, 0 is OK
6232 */
6234
6235 /**
6236 * \brief Follow the motor output of another Talon while ignoring the
6237 * master's invert setting.
6238 *
6239 * \details If Talon is in torque control, the torque is copied -
6240 * which will increase the total torque applied. If Talon is in
6241 * percent supply output control, the duty cycle is matched. Motor
6242 * direction is strictly determined by the configured invert and not
6243 * the master. If you want motor direction to match or oppose the
6244 * master, use FollowerRequest instead.
6245 *
6246 * - StrictFollower Parameters:
6247 * - MasterID: Device ID of the master to follow.
6248 *
6249 * \param request Control object to request of the device
6250 * \returns Status Code of the request, 0 is OK
6251 */
6253
6254 /**
6255 * \brief Follow the differential motor output of another Talon.
6256 *
6257 * \details If Talon is in torque control, the torque is copied -
6258 * which will increase the total torque applied. If Talon is in
6259 * percent supply output control, the duty cycle is matched. Motor
6260 * direction either matches master's configured direction or opposes
6261 * it based on OpposeMasterDirection.
6262 *
6263 * - DifferentialFollower Parameters:
6264 * - MasterID: Device ID of the differential master to follow.
6265 * - OpposeMasterDirection: Set to false for motor invert to match the master's
6266 * configured Invert - which is typical when master and
6267 * follower are mechanically linked and spin in the same
6268 * direction. Set to true for motor invert to oppose
6269 * the master's configured Invert - this is typical
6270 * where the the master and follower mechanically spin
6271 * in opposite directions.
6272 *
6273 * \param request Control object to request of the device
6274 * \returns Status Code of the request, 0 is OK
6275 */
6277
6278 /**
6279 * \brief Follow the differential motor output of another Talon while
6280 * ignoring the master's invert setting.
6281 *
6282 * \details If Talon is in torque control, the torque is copied -
6283 * which will increase the total torque applied. If Talon is in
6284 * percent supply output control, the duty cycle is matched. Motor
6285 * direction is strictly determined by the configured invert and not
6286 * the master. If you want motor direction to match or oppose the
6287 * master, use FollowerRequest instead.
6288 *
6289 * - DifferentialStrictFollower Parameters:
6290 * - MasterID: Device ID of the differential master to follow.
6291 *
6292 * \param request Control object to request of the device
6293 * \returns Status Code of the request, 0 is OK
6294 */
6296
6297 /**
6298 * \brief Request neutral output of actuator. The applied brake type
6299 * is determined by the NeutralMode configuration.
6300 *
6301 * - NeutralOut Parameters:
6302 * - UseTimesync: Set to true to delay applying this control request until a
6303 * timesync boundary (requires Phoenix Pro and CANivore). This
6304 * eliminates the impact of nondeterministic network delays in
6305 * exchange for a larger but deterministic control latency.
6306 *
6307 * This requires setting the ControlTimesyncFreqHz config in
6308 * MotorOutputConfigs. Additionally, when this is enabled, the
6309 * UpdateFreqHz of this request should be set to 0 Hz.
6310 *
6311 * \param request Control object to request of the device
6312 * \returns Status Code of the request, 0 is OK
6313 */
6315
6316 /**
6317 * \brief Request coast neutral output of actuator. The bridge is
6318 * disabled and the rotor is allowed to coast.
6319 *
6320 * - CoastOut Parameters:
6321 * - UseTimesync: Set to true to delay applying this control request until a
6322 * timesync boundary (requires Phoenix Pro and CANivore). This
6323 * eliminates the impact of nondeterministic network delays in
6324 * exchange for a larger but deterministic control latency.
6325 *
6326 * This requires setting the ControlTimesyncFreqHz config in
6327 * MotorOutputConfigs. Additionally, when this is enabled, the
6328 * UpdateFreqHz of this request should be set to 0 Hz.
6329 *
6330 * \param request Control object to request of the device
6331 * \returns Status Code of the request, 0 is OK
6332 */
6334
6335 /**
6336 * \brief Applies full neutral-brake by shorting motor leads together.
6337 *
6338 * - StaticBrake Parameters:
6339 * - UseTimesync: Set to true to delay applying this control request until a
6340 * timesync boundary (requires Phoenix Pro and CANivore). This
6341 * eliminates the impact of nondeterministic network delays in
6342 * exchange for a larger but deterministic control latency.
6343 *
6344 * This requires setting the ControlTimesyncFreqHz config in
6345 * MotorOutputConfigs. Additionally, when this is enabled, the
6346 * UpdateFreqHz of this request should be set to 0 Hz.
6347 *
6348 * \param request Control object to request of the device
6349 * \returns Status Code of the request, 0 is OK
6350 */
6352
6353 /**
6354 * \brief Plays a single tone at the user specified frequency.
6355 *
6356 * - MusicTone Parameters:
6357 * - AudioFrequency: Sound frequency to play. A value of zero will silence the
6358 * device. The effective frequency range is 10-20000 Hz. Any
6359 * nonzero frequency less than 10 Hz will be capped to 10 Hz.
6360 * Any frequency above 20 kHz will be capped to 20 kHz.
6361 *
6362 * \param request Control object to request of the device
6363 * \returns Status Code of the request, 0 is OK
6364 */
6366
6367 /**
6368 * \brief Requests Motion Magic® to target a final velocity using a
6369 * motion profile. This allows smooth transitions between velocity
6370 * set points. Users can optionally provide a duty cycle feedforward.
6371 *
6372 * \details Motion Magic® Velocity produces a motion profile in
6373 * real-time while attempting to honor the specified Acceleration and
6374 * (optional) Jerk. This control mode does not use the
6375 * CruiseVelocity, Expo_kV, or Expo_kA configs.
6376 *
6377 * If the specified acceleration is zero, the Acceleration under
6378 * Motion Magic® configuration parameter is used instead. This allows
6379 * for runtime adjustment of acceleration for advanced users. Jerk is
6380 * also specified in the Motion Magic® persistent configuration
6381 * values. If Jerk is set to zero, Motion Magic® will produce a
6382 * trapezoidal acceleration profile.
6383 *
6384 * Target velocity can also be changed on-the-fly and Motion Magic®
6385 * will do its best to adjust the profile. This control mode is duty
6386 * cycle based, so relevant closed-loop gains will use fractional duty
6387 * cycle for the numerator: +1.0 represents full forward output.
6388 *
6389 * - MotionMagicVelocityDutyCycle Parameters:
6390 * - Velocity: Target velocity to drive toward in rotations per second. This can
6391 * be changed on-the fly.
6392 * - Acceleration: This is the absolute Acceleration to use generating the
6393 * profile. If this parameter is zero, the Acceleration
6394 * persistent configuration parameter is used instead.
6395 * Acceleration is in rotations per second squared. If nonzero,
6396 * the signage does not matter as the absolute value is used.
6397 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6398 * increases peak power by ~15%. Set to false to use trapezoidal
6399 * commutation.
6400 *
6401 * FOC improves motor performance by leveraging torque (current)
6402 * control. However, this may be inconvenient for applications that
6403 * require specifying duty cycle or voltage. CTR-Electronics has
6404 * developed a hybrid method that combines the performances gains of
6405 * FOC while still allowing applications to provide duty cycle or
6406 * voltage demand. This not to be confused with simple sinusoidal
6407 * control or phase voltage control which lacks the performance
6408 * gains.
6409 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
6410 * - Slot: Select which gains are applied by selecting the slot. Use the
6411 * configuration api to set the gain values for the selected slot before
6412 * enabling this feature. Slot must be within [0,2].
6413 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6414 * is zero (or within deadband). Set to false to use
6415 * the NeutralMode configuration setting (default).
6416 * This flag exists to provide the fundamental
6417 * behavior of this control when output is zero, which
6418 * is to provide 0V to the motor.
6419 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6420 * users to use other limit switch sensors connected to
6421 * robot controller. This also allows use of active
6422 * sensors that require external power.
6423 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6424 * users to use other limit switch sensors connected to
6425 * robot controller. This also allows use of active
6426 * sensors that require external power.
6427 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6428 * LimitForwardMotion and LimitReverseMotion parameters,
6429 * instead allowing motion.
6430 *
6431 * This can be useful on mechanisms such as an
6432 * intake/feeder, where a limit switch stops motion while
6433 * intaking but should be ignored when feeding to a
6434 * shooter.
6435 *
6436 * The hardware limit faults and Forward/ReverseLimit
6437 * signals will still report the values of the limit
6438 * switches regardless of this parameter.
6439 * - UseTimesync: Set to true to delay applying this control request until a
6440 * timesync boundary (requires Phoenix Pro and CANivore). This
6441 * eliminates the impact of nondeterministic network delays in
6442 * exchange for a larger but deterministic control latency.
6443 *
6444 * This requires setting the ControlTimesyncFreqHz config in
6445 * MotorOutputConfigs. Additionally, when this is enabled, the
6446 * UpdateFreqHz of this request should be set to 0 Hz.
6447 *
6448 * \param request Control object to request of the device
6449 * \returns Status Code of the request, 0 is OK
6450 */
6452
6453 /**
6454 * \brief Requests Motion Magic® to target a final velocity using a
6455 * motion profile. This allows smooth transitions between velocity
6456 * set points. Users can optionally provide a torque feedforward.
6457 *
6458 * \details Motion Magic® Velocity produces a motion profile in
6459 * real-time while attempting to honor the specified Acceleration and
6460 * (optional) Jerk. This control mode does not use the
6461 * CruiseVelocity, Expo_kV, or Expo_kA configs.
6462 *
6463 * If the specified acceleration is zero, the Acceleration under
6464 * Motion Magic® configuration parameter is used instead. This allows
6465 * for runtime adjustment of acceleration for advanced users. Jerk is
6466 * also specified in the Motion Magic® persistent configuration
6467 * values. If Jerk is set to zero, Motion Magic® will produce a
6468 * trapezoidal acceleration profile.
6469 *
6470 * Target velocity can also be changed on-the-fly and Motion Magic®
6471 * will do its best to adjust the profile. This control mode is based
6472 * on torque current, so relevant closed-loop gains will use Amperes
6473 * for the numerator.
6474 *
6475 * - MotionMagicVelocityTorqueCurrentFOC Parameters:
6476 * - Velocity: Target velocity to drive toward in rotations per second. This can
6477 * be changed on-the fly.
6478 * - Acceleration: This is the absolute Acceleration to use generating the
6479 * profile. If this parameter is zero, the Acceleration
6480 * persistent configuration parameter is used instead.
6481 * Acceleration is in rotations per second squared. If nonzero,
6482 * the signage does not matter as the absolute value is used.
6483 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6484 * increases peak power by ~15%. Set to false to use trapezoidal
6485 * commutation.
6486 *
6487 * FOC improves motor performance by leveraging torque (current)
6488 * control. However, this may be inconvenient for applications that
6489 * require specifying duty cycle or voltage. CTR-Electronics has
6490 * developed a hybrid method that combines the performances gains of
6491 * FOC while still allowing applications to provide duty cycle or
6492 * voltage demand. This not to be confused with simple sinusoidal
6493 * control or phase voltage control which lacks the performance
6494 * gains.
6495 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
6496 * use motor's kT to scale Newton-meter to Amperes.
6497 * - Slot: Select which gains are applied by selecting the slot. Use the
6498 * configuration api to set the gain values for the selected slot before
6499 * enabling this feature. Slot must be within [0,2].
6500 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
6501 * (or within deadband). Set to false to use the
6502 * NeutralMode configuration setting (default). This
6503 * flag exists to provide the fundamental behavior of
6504 * this control when output is zero, which is to
6505 * provide 0A (zero torque).
6506 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6507 * users to use other limit switch sensors connected to
6508 * robot controller. This also allows use of active
6509 * sensors that require external power.
6510 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6511 * users to use other limit switch sensors connected to
6512 * robot controller. This also allows use of active
6513 * sensors that require external power.
6514 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6515 * LimitForwardMotion and LimitReverseMotion parameters,
6516 * instead allowing motion.
6517 *
6518 * This can be useful on mechanisms such as an
6519 * intake/feeder, where a limit switch stops motion while
6520 * intaking but should be ignored when feeding to a
6521 * shooter.
6522 *
6523 * The hardware limit faults and Forward/ReverseLimit
6524 * signals will still report the values of the limit
6525 * switches regardless of this parameter.
6526 * - UseTimesync: Set to true to delay applying this control request until a
6527 * timesync boundary (requires Phoenix Pro and CANivore). This
6528 * eliminates the impact of nondeterministic network delays in
6529 * exchange for a larger but deterministic control latency.
6530 *
6531 * This requires setting the ControlTimesyncFreqHz config in
6532 * MotorOutputConfigs. Additionally, when this is enabled, the
6533 * UpdateFreqHz of this request should be set to 0 Hz.
6534 *
6535 * \param request Control object to request of the device
6536 * \returns Status Code of the request, 0 is OK
6537 */
6539
6540 /**
6541 * \brief Requests Motion Magic® to target a final velocity using a
6542 * motion profile. This allows smooth transitions between velocity
6543 * set points. Users can optionally provide a voltage feedforward.
6544 *
6545 * \details Motion Magic® Velocity produces a motion profile in
6546 * real-time while attempting to honor the specified Acceleration and
6547 * (optional) Jerk. This control mode does not use the
6548 * CruiseVelocity, Expo_kV, or Expo_kA configs.
6549 *
6550 * If the specified acceleration is zero, the Acceleration under
6551 * Motion Magic® configuration parameter is used instead. This allows
6552 * for runtime adjustment of acceleration for advanced users. Jerk is
6553 * also specified in the Motion Magic® persistent configuration
6554 * values. If Jerk is set to zero, Motion Magic® will produce a
6555 * trapezoidal acceleration profile.
6556 *
6557 * Target velocity can also be changed on-the-fly and Motion Magic®
6558 * will do its best to adjust the profile. This control mode is
6559 * voltage-based, so relevant closed-loop gains will use Volts for the
6560 * numerator.
6561 *
6562 * - MotionMagicVelocityVoltage Parameters:
6563 * - Velocity: Target velocity to drive toward in rotations per second. This can
6564 * be changed on-the fly.
6565 * - Acceleration: This is the absolute Acceleration to use generating the
6566 * profile. If this parameter is zero, the Acceleration
6567 * persistent configuration parameter is used instead.
6568 * Acceleration is in rotations per second squared. If nonzero,
6569 * the signage does not matter as the absolute value is used.
6570 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6571 * increases peak power by ~15%. Set to false to use trapezoidal
6572 * commutation.
6573 *
6574 * FOC improves motor performance by leveraging torque (current)
6575 * control. However, this may be inconvenient for applications that
6576 * require specifying duty cycle or voltage. CTR-Electronics has
6577 * developed a hybrid method that combines the performances gains of
6578 * FOC while still allowing applications to provide duty cycle or
6579 * voltage demand. This not to be confused with simple sinusoidal
6580 * control or phase voltage control which lacks the performance
6581 * gains.
6582 * - FeedForward: Feedforward to apply in volts
6583 * - Slot: Select which gains are applied by selecting the slot. Use the
6584 * configuration api to set the gain values for the selected slot before
6585 * enabling this feature. Slot must be within [0,2].
6586 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6587 * is zero (or within deadband). Set to false to use
6588 * the NeutralMode configuration setting (default).
6589 * This flag exists to provide the fundamental
6590 * behavior of this control when output is zero, which
6591 * is to provide 0V to the motor.
6592 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6593 * users to use other limit switch sensors connected to
6594 * robot controller. This also allows use of active
6595 * sensors that require external power.
6596 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6597 * users to use other limit switch sensors connected to
6598 * robot controller. This also allows use of active
6599 * sensors that require external power.
6600 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6601 * LimitForwardMotion and LimitReverseMotion parameters,
6602 * instead allowing motion.
6603 *
6604 * This can be useful on mechanisms such as an
6605 * intake/feeder, where a limit switch stops motion while
6606 * intaking but should be ignored when feeding to a
6607 * shooter.
6608 *
6609 * The hardware limit faults and Forward/ReverseLimit
6610 * signals will still report the values of the limit
6611 * switches regardless of this parameter.
6612 * - UseTimesync: Set to true to delay applying this control request until a
6613 * timesync boundary (requires Phoenix Pro and CANivore). This
6614 * eliminates the impact of nondeterministic network delays in
6615 * exchange for a larger but deterministic control latency.
6616 *
6617 * This requires setting the ControlTimesyncFreqHz config in
6618 * MotorOutputConfigs. Additionally, when this is enabled, the
6619 * UpdateFreqHz of this request should be set to 0 Hz.
6620 *
6621 * \param request Control object to request of the device
6622 * \returns Status Code of the request, 0 is OK
6623 */
6625
6626 /**
6627 * \brief Requests Motion Magic® to target a final position using an
6628 * exponential motion profile. Users can optionally provide a duty
6629 * cycle feedforward.
6630 *
6631 * \details Motion Magic® Expo produces a motion profile in real-time
6632 * while attempting to honor the Cruise Velocity (optional) and the
6633 * mechanism kV and kA, specified via the Motion Magic® configuration
6634 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
6635 * configs are always in output units of Volts.
6636 *
6637 * Setting Cruise Velocity to 0 will allow the profile to run to the
6638 * max possible velocity based on Expo_kV. This control mode does not
6639 * use the Acceleration or Jerk configs.
6640 *
6641 * Target position can be changed on-the-fly and Motion Magic® will do
6642 * its best to adjust the profile. This control mode is duty cycle
6643 * based, so relevant closed-loop gains will use fractional duty cycle
6644 * for the numerator: +1.0 represents full forward output.
6645 *
6646 * - MotionMagicExpoDutyCycle Parameters:
6647 * - Position: Position to drive toward in rotations.
6648 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6649 * increases peak power by ~15%. Set to false to use trapezoidal
6650 * commutation.
6651 *
6652 * FOC improves motor performance by leveraging torque (current)
6653 * control. However, this may be inconvenient for applications that
6654 * require specifying duty cycle or voltage. CTR-Electronics has
6655 * developed a hybrid method that combines the performances gains of
6656 * FOC while still allowing applications to provide duty cycle or
6657 * voltage demand. This not to be confused with simple sinusoidal
6658 * control or phase voltage control which lacks the performance
6659 * gains.
6660 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
6661 * - Slot: Select which gains are applied by selecting the slot. Use the
6662 * configuration api to set the gain values for the selected slot before
6663 * enabling this feature. Slot must be within [0,2].
6664 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6665 * is zero (or within deadband). Set to false to use
6666 * the NeutralMode configuration setting (default).
6667 * This flag exists to provide the fundamental
6668 * behavior of this control when output is zero, which
6669 * is to provide 0V to the motor.
6670 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6671 * users to use other limit switch sensors connected to
6672 * robot controller. This also allows use of active
6673 * sensors that require external power.
6674 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6675 * users to use other limit switch sensors connected to
6676 * robot controller. This also allows use of active
6677 * sensors that require external power.
6678 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6679 * LimitForwardMotion and LimitReverseMotion parameters,
6680 * instead allowing motion.
6681 *
6682 * This can be useful on mechanisms such as an
6683 * intake/feeder, where a limit switch stops motion while
6684 * intaking but should be ignored when feeding to a
6685 * shooter.
6686 *
6687 * The hardware limit faults and Forward/ReverseLimit
6688 * signals will still report the values of the limit
6689 * switches regardless of this parameter.
6690 * - UseTimesync: Set to true to delay applying this control request until a
6691 * timesync boundary (requires Phoenix Pro and CANivore). This
6692 * eliminates the impact of nondeterministic network delays in
6693 * exchange for a larger but deterministic control latency.
6694 *
6695 * This requires setting the ControlTimesyncFreqHz config in
6696 * MotorOutputConfigs. Additionally, when this is enabled, the
6697 * UpdateFreqHz of this request should be set to 0 Hz.
6698 *
6699 * \param request Control object to request of the device
6700 * \returns Status Code of the request, 0 is OK
6701 */
6703
6704 /**
6705 * \brief Requests Motion Magic® to target a final position using an
6706 * exponential motion profile. Users can optionally provide a voltage
6707 * feedforward.
6708 *
6709 * \details Motion Magic® Expo produces a motion profile in real-time
6710 * while attempting to honor the Cruise Velocity (optional) and the
6711 * mechanism kV and kA, specified via the Motion Magic® configuration
6712 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
6713 * configs are always in output units of Volts.
6714 *
6715 * Setting Cruise Velocity to 0 will allow the profile to run to the
6716 * max possible velocity based on Expo_kV. This control mode does not
6717 * use the Acceleration or Jerk configs.
6718 *
6719 * Target position can be changed on-the-fly and Motion Magic® will do
6720 * its best to adjust the profile. This control mode is
6721 * voltage-based, so relevant closed-loop gains will use Volts for the
6722 * numerator.
6723 *
6724 * - MotionMagicExpoVoltage Parameters:
6725 * - Position: Position to drive toward in rotations.
6726 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6727 * increases peak power by ~15%. Set to false to use trapezoidal
6728 * commutation.
6729 *
6730 * FOC improves motor performance by leveraging torque (current)
6731 * control. However, this may be inconvenient for applications that
6732 * require specifying duty cycle or voltage. CTR-Electronics has
6733 * developed a hybrid method that combines the performances gains of
6734 * FOC while still allowing applications to provide duty cycle or
6735 * voltage demand. This not to be confused with simple sinusoidal
6736 * control or phase voltage control which lacks the performance
6737 * gains.
6738 * - FeedForward: Feedforward to apply in volts
6739 * - Slot: Select which gains are applied by selecting the slot. Use the
6740 * configuration api to set the gain values for the selected slot before
6741 * enabling this feature. Slot must be within [0,2].
6742 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6743 * is zero (or within deadband). Set to false to use
6744 * the NeutralMode configuration setting (default).
6745 * This flag exists to provide the fundamental
6746 * behavior of this control when output is zero, which
6747 * is to provide 0V to the motor.
6748 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6749 * users to use other limit switch sensors connected to
6750 * robot controller. This also allows use of active
6751 * sensors that require external power.
6752 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6753 * users to use other limit switch sensors connected to
6754 * robot controller. This also allows use of active
6755 * sensors that require external power.
6756 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6757 * LimitForwardMotion and LimitReverseMotion parameters,
6758 * instead allowing motion.
6759 *
6760 * This can be useful on mechanisms such as an
6761 * intake/feeder, where a limit switch stops motion while
6762 * intaking but should be ignored when feeding to a
6763 * shooter.
6764 *
6765 * The hardware limit faults and Forward/ReverseLimit
6766 * signals will still report the values of the limit
6767 * switches regardless of this parameter.
6768 * - UseTimesync: Set to true to delay applying this control request until a
6769 * timesync boundary (requires Phoenix Pro and CANivore). This
6770 * eliminates the impact of nondeterministic network delays in
6771 * exchange for a larger but deterministic control latency.
6772 *
6773 * This requires setting the ControlTimesyncFreqHz config in
6774 * MotorOutputConfigs. Additionally, when this is enabled, the
6775 * UpdateFreqHz of this request should be set to 0 Hz.
6776 *
6777 * \param request Control object to request of the device
6778 * \returns Status Code of the request, 0 is OK
6779 */
6781
6782 /**
6783 * \brief Requests Motion Magic® to target a final position using an
6784 * exponential motion profile. Users can optionally provide a torque
6785 * current feedforward.
6786 *
6787 * \details Motion Magic® Expo produces a motion profile in real-time
6788 * while attempting to honor the Cruise Velocity (optional) and the
6789 * mechanism kV and kA, specified via the Motion Magic® configuration
6790 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
6791 * configs are always in output units of Volts.
6792 *
6793 * Setting Cruise Velocity to 0 will allow the profile to run to the
6794 * max possible velocity based on Expo_kV. This control mode does not
6795 * use the Acceleration or Jerk configs.
6796 *
6797 * Target position can be changed on-the-fly and Motion Magic® will do
6798 * its best to adjust the profile. This control mode is based on
6799 * torque current, so relevant closed-loop gains will use Amperes for
6800 * the numerator.
6801 *
6802 * - MotionMagicExpoTorqueCurrentFOC Parameters:
6803 * - Position: Position to drive toward in rotations.
6804 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
6805 * use motor's kT to scale Newton-meter to Amperes.
6806 * - Slot: Select which gains are applied by selecting the slot. Use the
6807 * configuration api to set the gain values for the selected slot before
6808 * enabling this feature. Slot must be within [0,2].
6809 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
6810 * (or within deadband). Set to false to use the
6811 * NeutralMode configuration setting (default). This
6812 * flag exists to provide the fundamental behavior of
6813 * this control when output is zero, which is to
6814 * provide 0A (zero torque).
6815 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6816 * users to use other limit switch sensors connected to
6817 * robot controller. This also allows use of active
6818 * sensors that require external power.
6819 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6820 * users to use other limit switch sensors connected to
6821 * robot controller. This also allows use of active
6822 * sensors that require external power.
6823 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6824 * LimitForwardMotion and LimitReverseMotion parameters,
6825 * instead allowing motion.
6826 *
6827 * This can be useful on mechanisms such as an
6828 * intake/feeder, where a limit switch stops motion while
6829 * intaking but should be ignored when feeding to a
6830 * shooter.
6831 *
6832 * The hardware limit faults and Forward/ReverseLimit
6833 * signals will still report the values of the limit
6834 * switches regardless of this parameter.
6835 * - UseTimesync: Set to true to delay applying this control request until a
6836 * timesync boundary (requires Phoenix Pro and CANivore). This
6837 * eliminates the impact of nondeterministic network delays in
6838 * exchange for a larger but deterministic control latency.
6839 *
6840 * This requires setting the ControlTimesyncFreqHz config in
6841 * MotorOutputConfigs. Additionally, when this is enabled, the
6842 * UpdateFreqHz of this request should be set to 0 Hz.
6843 *
6844 * \param request Control object to request of the device
6845 * \returns Status Code of the request, 0 is OK
6846 */
6848
6849 /**
6850 * \brief Requests Motion Magic® to target a final position using a
6851 * motion profile. This dynamic request allows runtime changes to
6852 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
6853 * provide a duty cycle feedforward. This control requires use of a
6854 * CANivore.
6855 *
6856 * \details Motion Magic® produces a motion profile in real-time while
6857 * attempting to honor the specified Cruise Velocity, Acceleration,
6858 * and (optional) Jerk. This control mode does not use the Expo_kV or
6859 * Expo_kA configs.
6860 *
6861 * Target position can be changed on-the-fly and Motion Magic® will do
6862 * its best to adjust the profile. This control mode is duty cycle
6863 * based, so relevant closed-loop gains will use fractional duty cycle
6864 * for the numerator: +1.0 represents full forward output.
6865 *
6866 * - DynamicMotionMagicDutyCycle Parameters:
6867 * - Position: Position to drive toward in rotations.
6868 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
6869 * device will use the absolute value for profile generation.
6870 * - Acceleration: Acceleration for profiling. The signage does not matter as
6871 * the device will use the absolute value for profile generation
6872 * - Jerk: Jerk for profiling. The signage does not matter as the device will
6873 * use the absolute value for profile generation.
6874 *
6875 * Jerk is optional; if this is set to zero, then Motion Magic® will not
6876 * apply a Jerk limit.
6877 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6878 * increases peak power by ~15%. Set to false to use trapezoidal
6879 * commutation.
6880 *
6881 * FOC improves motor performance by leveraging torque (current)
6882 * control. However, this may be inconvenient for applications that
6883 * require specifying duty cycle or voltage. CTR-Electronics has
6884 * developed a hybrid method that combines the performances gains of
6885 * FOC while still allowing applications to provide duty cycle or
6886 * voltage demand. This not to be confused with simple sinusoidal
6887 * control or phase voltage control which lacks the performance
6888 * gains.
6889 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
6890 * - Slot: Select which gains are applied by selecting the slot. Use the
6891 * configuration api to set the gain values for the selected slot before
6892 * enabling this feature. Slot must be within [0,2].
6893 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6894 * is zero (or within deadband). Set to false to use
6895 * the NeutralMode configuration setting (default).
6896 * This flag exists to provide the fundamental
6897 * behavior of this control when output is zero, which
6898 * is to provide 0V to the motor.
6899 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6900 * users to use other limit switch sensors connected to
6901 * robot controller. This also allows use of active
6902 * sensors that require external power.
6903 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6904 * users to use other limit switch sensors connected to
6905 * robot controller. This also allows use of active
6906 * sensors that require external power.
6907 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6908 * LimitForwardMotion and LimitReverseMotion parameters,
6909 * instead allowing motion.
6910 *
6911 * This can be useful on mechanisms such as an
6912 * intake/feeder, where a limit switch stops motion while
6913 * intaking but should be ignored when feeding to a
6914 * shooter.
6915 *
6916 * The hardware limit faults and Forward/ReverseLimit
6917 * signals will still report the values of the limit
6918 * switches regardless of this parameter.
6919 * - UseTimesync: Set to true to delay applying this control request until a
6920 * timesync boundary (requires Phoenix Pro and CANivore). This
6921 * eliminates the impact of nondeterministic network delays in
6922 * exchange for a larger but deterministic control latency.
6923 *
6924 * This requires setting the ControlTimesyncFreqHz config in
6925 * MotorOutputConfigs. Additionally, when this is enabled, the
6926 * UpdateFreqHz of this request should be set to 0 Hz.
6927 *
6928 * \param request Control object to request of the device
6929 * \returns Status Code of the request, 0 is OK
6930 */
6932
6933 /**
6934 * \brief Requests Motion Magic® to target a final position using a
6935 * motion profile. This dynamic request allows runtime changes to
6936 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
6937 * provide a voltage feedforward. This control requires use of a
6938 * CANivore.
6939 *
6940 * \details Motion Magic® produces a motion profile in real-time while
6941 * attempting to honor the specified Cruise Velocity, Acceleration,
6942 * and (optional) Jerk. This control mode does not use the Expo_kV or
6943 * Expo_kA configs.
6944 *
6945 * Target position can be changed on-the-fly and Motion Magic® will do
6946 * its best to adjust the profile. This control mode is
6947 * voltage-based, so relevant closed-loop gains will use Volts for the
6948 * numerator.
6949 *
6950 * - DynamicMotionMagicVoltage Parameters:
6951 * - Position: Position to drive toward in rotations.
6952 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
6953 * device will use the absolute value for profile generation.
6954 * - Acceleration: Acceleration for profiling. The signage does not matter as
6955 * the device will use the absolute value for profile generation.
6956 * - Jerk: Jerk for profiling. The signage does not matter as the device will
6957 * use the absolute value for profile generation.
6958 *
6959 * Jerk is optional; if this is set to zero, then Motion Magic® will not
6960 * apply a Jerk limit.
6961 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6962 * increases peak power by ~15%. Set to false to use trapezoidal
6963 * commutation.
6964 *
6965 * FOC improves motor performance by leveraging torque (current)
6966 * control. However, this may be inconvenient for applications that
6967 * require specifying duty cycle or voltage. CTR-Electronics has
6968 * developed a hybrid method that combines the performances gains of
6969 * FOC while still allowing applications to provide duty cycle or
6970 * voltage demand. This not to be confused with simple sinusoidal
6971 * control or phase voltage control which lacks the performance
6972 * gains.
6973 * - FeedForward: Feedforward to apply in volts
6974 * - Slot: Select which gains are applied by selecting the slot. Use the
6975 * configuration api to set the gain values for the selected slot before
6976 * enabling this feature. Slot must be within [0,2].
6977 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6978 * is zero (or within deadband). Set to false to use
6979 * the NeutralMode configuration setting (default).
6980 * This flag exists to provide the fundamental
6981 * behavior of this control when output is zero, which
6982 * is to provide 0V to the motor.
6983 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6984 * users to use other limit switch sensors connected to
6985 * robot controller. This also allows use of active
6986 * sensors that require external power.
6987 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6988 * users to use other limit switch sensors connected to
6989 * robot controller. This also allows use of active
6990 * sensors that require external power.
6991 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6992 * LimitForwardMotion and LimitReverseMotion parameters,
6993 * instead allowing motion.
6994 *
6995 * This can be useful on mechanisms such as an
6996 * intake/feeder, where a limit switch stops motion while
6997 * intaking but should be ignored when feeding to a
6998 * shooter.
6999 *
7000 * The hardware limit faults and Forward/ReverseLimit
7001 * signals will still report the values of the limit
7002 * switches regardless of this parameter.
7003 * - UseTimesync: Set to true to delay applying this control request until a
7004 * timesync boundary (requires Phoenix Pro and CANivore). This
7005 * eliminates the impact of nondeterministic network delays in
7006 * exchange for a larger but deterministic control latency.
7007 *
7008 * This requires setting the ControlTimesyncFreqHz config in
7009 * MotorOutputConfigs. Additionally, when this is enabled, the
7010 * UpdateFreqHz of this request should be set to 0 Hz.
7011 *
7012 * \param request Control object to request of the device
7013 * \returns Status Code of the request, 0 is OK
7014 */
7016
7017 /**
7018 * \brief Requests Motion Magic® to target a final position using a
7019 * motion profile. This dynamic request allows runtime changes to
7020 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
7021 * provide a torque current feedforward. This control requires use of
7022 * a CANivore.
7023 *
7024 * \details Motion Magic® produces a motion profile in real-time while
7025 * attempting to honor the specified Cruise Velocity, Acceleration,
7026 * and (optional) Jerk. This control mode does not use the Expo_kV or
7027 * Expo_kA configs.
7028 *
7029 * Target position can be changed on-the-fly and Motion Magic® will do
7030 * its best to adjust the profile. This control mode is based on
7031 * torque current, so relevant closed-loop gains will use Amperes for
7032 * the numerator.
7033 *
7034 * - DynamicMotionMagicTorqueCurrentFOC Parameters:
7035 * - Position: Position to drive toward in rotations.
7036 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
7037 * device will use the absolute value for profile generation.
7038 * - Acceleration: Acceleration for profiling. The signage does not matter as
7039 * the device will use the absolute value for profile generation.
7040 * - Jerk: Jerk for profiling. The signage does not matter as the device will
7041 * use the absolute value for profile generation.
7042 *
7043 * Jerk is optional; if this is set to zero, then Motion Magic® will not
7044 * apply a Jerk limit.
7045 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
7046 * use motor's kT to scale Newton-meter to Amperes.
7047 * - Slot: Select which gains are applied by selecting the slot. Use the
7048 * configuration api to set the gain values for the selected slot before
7049 * enabling this feature. Slot must be within [0,2].
7050 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
7051 * (or within deadband). Set to false to use the
7052 * NeutralMode configuration setting (default). This
7053 * flag exists to provide the fundamental behavior of
7054 * this control when output is zero, which is to
7055 * provide 0A (zero torque).
7056 * - LimitForwardMotion: Set to true to force forward limiting. This allows
7057 * users to use other limit switch sensors connected to
7058 * robot controller. This also allows use of active
7059 * sensors that require external power.
7060 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
7061 * users to use other limit switch sensors connected to
7062 * robot controller. This also allows use of active
7063 * sensors that require external power.
7064 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
7065 * LimitForwardMotion and LimitReverseMotion parameters,
7066 * instead allowing motion.
7067 *
7068 * This can be useful on mechanisms such as an
7069 * intake/feeder, where a limit switch stops motion while
7070 * intaking but should be ignored when feeding to a
7071 * shooter.
7072 *
7073 * The hardware limit faults and Forward/ReverseLimit
7074 * signals will still report the values of the limit
7075 * switches regardless of this parameter.
7076 * - UseTimesync: Set to true to delay applying this control request until a
7077 * timesync boundary (requires Phoenix Pro and CANivore). This
7078 * eliminates the impact of nondeterministic network delays in
7079 * exchange for a larger but deterministic control latency.
7080 *
7081 * This requires setting the ControlTimesyncFreqHz config in
7082 * MotorOutputConfigs. Additionally, when this is enabled, the
7083 * UpdateFreqHz of this request should be set to 0 Hz.
7084 *
7085 * \param request Control object to request of the device
7086 * \returns Status Code of the request, 0 is OK
7087 */
7089
7090 /**
7091 * \brief Differential control with duty cycle average target and
7092 * position difference target.
7093 *
7094 * - Diff_DutyCycleOut_Position Parameters:
7095 * - AverageRequest: Average DutyCycleOut request of the mechanism.
7096 * - DifferentialRequest: Differential PositionDutyCycle request of the
7097 * mechanism.
7098 *
7099 * \param request Control object to request of the device
7100 * \returns Status Code of the request, 0 is OK
7101 */
7102 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Position &request) override;
7103
7104 /**
7105 * \brief Differential control with position average target and
7106 * position difference target using dutycycle control.
7107 *
7108 * - Diff_PositionDutyCycle_Position Parameters:
7109 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
7110 * - DifferentialRequest: Differential PositionDutyCycle request of the
7111 * mechanism.
7112 *
7113 * \param request Control object to request of the device
7114 * \returns Status Code of the request, 0 is OK
7115 */
7116 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Position &request) override;
7117
7118 /**
7119 * \brief Differential control with velocity average target and
7120 * position difference target using dutycycle control.
7121 *
7122 * - Diff_VelocityDutyCycle_Position Parameters:
7123 * - AverageRequest: Average VelocityDutyCYcle request of the mechanism.
7124 * - DifferentialRequest: Differential PositionDutyCycle request of the
7125 * mechanism.
7126 *
7127 * \param request Control object to request of the device
7128 * \returns Status Code of the request, 0 is OK
7129 */
7130 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Position &request) override;
7131
7132 /**
7133 * \brief Differential control with Motion Magic® average target and
7134 * position difference target using dutycycle control.
7135 *
7136 * - Diff_MotionMagicDutyCycle_Position Parameters:
7137 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
7138 * - DifferentialRequest: Differential PositionDutyCycle request of the
7139 * mechanism.
7140 *
7141 * \param request Control object to request of the device
7142 * \returns Status Code of the request, 0 is OK
7143 */
7144 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Position &request) override;
7145
7146 /**
7147 * \brief Differential control with duty cycle average target and
7148 * velocity difference target.
7149 *
7150 * - Diff_DutyCycleOut_Velocity Parameters:
7151 * - AverageRequest: Average DutyCycleOut request of the mechanism.
7152 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7153 * mechanism.
7154 *
7155 * \param request Control object to request of the device
7156 * \returns Status Code of the request, 0 is OK
7157 */
7158 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Velocity &request) override;
7159
7160 /**
7161 * \brief Differential control with position average target and
7162 * velocity difference target using dutycycle control.
7163 *
7164 * - Diff_PositionDutyCycle_Velocity Parameters:
7165 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
7166 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7167 * mechanism.
7168 *
7169 * \param request Control object to request of the device
7170 * \returns Status Code of the request, 0 is OK
7171 */
7172 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Velocity &request) override;
7173
7174 /**
7175 * \brief Differential control with velocity average target and
7176 * velocity difference target using dutycycle control.
7177 *
7178 * - Diff_VelocityDutyCycle_Velocity Parameters:
7179 * - AverageRequest: Average VelocityDutyCycle request of the mechanism.
7180 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7181 * mechanism.
7182 *
7183 * \param request Control object to request of the device
7184 * \returns Status Code of the request, 0 is OK
7185 */
7186 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Velocity &request) override;
7187
7188 /**
7189 * \brief Differential control with Motion Magic® average target and
7190 * velocity difference target using dutycycle control.
7191 *
7192 * - Diff_MotionMagicDutyCycle_Velocity Parameters:
7193 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
7194 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7195 * mechanism.
7196 *
7197 * \param request Control object to request of the device
7198 * \returns Status Code of the request, 0 is OK
7199 */
7200 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Velocity &request) override;
7201
7202 /**
7203 * \brief Differential control with voltage average target and
7204 * position difference target.
7205 *
7206 * - Diff_VoltageOut_Position Parameters:
7207 * - AverageRequest: Average VoltageOut request of the mechanism.
7208 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7209 *
7210 * \param request Control object to request of the device
7211 * \returns Status Code of the request, 0 is OK
7212 */
7213 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Position &request) override;
7214
7215 /**
7216 * \brief Differential control with position average target and
7217 * position difference target using voltage control.
7218 *
7219 * - Diff_PositionVoltage_Position Parameters:
7220 * - AverageRequest: Average PositionVoltage request of the mechanism.
7221 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7222 *
7223 * \param request Control object to request of the device
7224 * \returns Status Code of the request, 0 is OK
7225 */
7226 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Position &request) override;
7227
7228 /**
7229 * \brief Differential control with velocity average target and
7230 * position difference target using voltage control.
7231 *
7232 * - Diff_VelocityVoltage_Position Parameters:
7233 * - AverageRequest: Average VelocityVoltage request of the mechanism.
7234 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7235 *
7236 * \param request Control object to request of the device
7237 * \returns Status Code of the request, 0 is OK
7238 */
7239 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Position &request) override;
7240
7241 /**
7242 * \brief Differential control with Motion Magic® average target and
7243 * position difference target using voltage control.
7244 *
7245 * - Diff_MotionMagicVoltage_Position Parameters:
7246 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
7247 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7248 *
7249 * \param request Control object to request of the device
7250 * \returns Status Code of the request, 0 is OK
7251 */
7252 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Position &request) override;
7253
7254 /**
7255 * \brief Differential control with voltage average target and
7256 * velocity difference target.
7257 *
7258 * - Diff_VoltageOut_Velocity Parameters:
7259 * - AverageRequest: Average VoltageOut request of the mechanism.
7260 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7261 *
7262 * \param request Control object to request of the device
7263 * \returns Status Code of the request, 0 is OK
7264 */
7265 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Velocity &request) override;
7266
7267 /**
7268 * \brief Differential control with position average target and
7269 * velocity difference target using voltage control.
7270 *
7271 * - Diff_PositionVoltage_Velocity Parameters:
7272 * - AverageRequest: Average PositionVoltage request of the mechanism.
7273 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7274 *
7275 * \param request Control object to request of the device
7276 * \returns Status Code of the request, 0 is OK
7277 */
7278 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Velocity &request) override;
7279
7280 /**
7281 * \brief Differential control with velocity average target and
7282 * velocity difference target using voltage control.
7283 *
7284 * - Diff_VelocityVoltage_Velocity Parameters:
7285 * - AverageRequest: Average VelocityVoltage request of the mechanism.
7286 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7287 *
7288 * \param request Control object to request of the device
7289 * \returns Status Code of the request, 0 is OK
7290 */
7291 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Velocity &request) override;
7292
7293 /**
7294 * \brief Differential control with Motion Magic® average target and
7295 * velocity difference target using voltage control.
7296 *
7297 * - Diff_MotionMagicVoltage_Velocity Parameters:
7298 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
7299 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7300 *
7301 * \param request Control object to request of the device
7302 * \returns Status Code of the request, 0 is OK
7303 */
7304 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Velocity &request) override;
7305
7306 /**
7307 * \brief Differential control with torque current average target and
7308 * position difference target.
7309 *
7310 * - Diff_TorqueCurrentFOC_Position Parameters:
7311 * - AverageRequest: Average TorqueCurrentFOC request of the mechanism.
7312 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7313 * mechanism.
7314 *
7315 * \param request Control object to request of the device
7316 * \returns Status Code of the request, 0 is OK
7317 */
7318 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_TorqueCurrentFOC_Position &request) override;
7319
7320 /**
7321 * \brief Differential control with position average target and
7322 * position difference target using torque current control.
7323 *
7324 * - Diff_PositionTorqueCurrentFOC_Position Parameters:
7325 * - AverageRequest: Average PositionTorqueCurrentFOC request of the mechanism.
7326 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7327 * mechanism.
7328 *
7329 * \param request Control object to request of the device
7330 * \returns Status Code of the request, 0 is OK
7331 */
7332 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionTorqueCurrentFOC_Position &request) override;
7333
7334 /**
7335 * \brief Differential control with velocity average target and
7336 * position difference target using torque current control.
7337 *
7338 * - Diff_VelocityTorqueCurrentFOC_Position Parameters:
7339 * - AverageRequest: Average VelocityTorqueCurrentFOC request of the mechanism.
7340 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7341 * mechanism.
7342 *
7343 * \param request Control object to request of the device
7344 * \returns Status Code of the request, 0 is OK
7345 */
7346 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityTorqueCurrentFOC_Position &request) override;
7347
7348 /**
7349 * \brief Differential control with Motion Magic® average target and
7350 * position difference target using torque current control.
7351 *
7352 * - Diff_MotionMagicTorqueCurrentFOC_Position Parameters:
7353 * - AverageRequest: Average MotionMagicTorqueCurrentFOC request of the
7354 * mechanism.
7355 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7356 * mechanism.
7357 *
7358 * \param request Control object to request of the device
7359 * \returns Status Code of the request, 0 is OK
7360 */
7361 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicTorqueCurrentFOC_Position &request) override;
7362
7363 /**
7364 * \brief Differential control with torque current average target and
7365 * velocity difference target.
7366 *
7367 * - Diff_TorqueCurrentFOC_Velocity Parameters:
7368 * - AverageRequest: Average TorqueCurrentFOC request of the mechanism.
7369 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7370 * mechanism.
7371 *
7372 * \param request Control object to request of the device
7373 * \returns Status Code of the request, 0 is OK
7374 */
7375 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_TorqueCurrentFOC_Velocity &request) override;
7376
7377 /**
7378 * \brief Differential control with position average target and
7379 * velocity difference target using torque current control.
7380 *
7381 * - Diff_PositionTorqueCurrentFOC_Velocity Parameters:
7382 * - AverageRequest: Average PositionTorqueCurrentFOC request of the mechanism.
7383 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7384 * mechanism.
7385 *
7386 * \param request Control object to request of the device
7387 * \returns Status Code of the request, 0 is OK
7388 */
7389 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionTorqueCurrentFOC_Velocity &request) override;
7390
7391 /**
7392 * \brief Differential control with velocity average target and
7393 * velocity difference target using torque current control.
7394 *
7395 * - Diff_VelocityTorqueCurrentFOC_Velocity Parameters:
7396 * - AverageRequest: Average VelocityTorqueCurrentFOC request of the mechanism.
7397 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7398 * mechanism.
7399 *
7400 * \param request Control object to request of the device
7401 * \returns Status Code of the request, 0 is OK
7402 */
7403 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityTorqueCurrentFOC_Velocity &request) override;
7404
7405 /**
7406 * \brief Differential control with Motion Magic® average target and
7407 * velocity difference target using torque current control.
7408 *
7409 * - Diff_MotionMagicTorqueCurrentFOC_Velocity Parameters:
7410 * - AverageRequest: Average MotionMagicTorqueCurrentFOC request of the
7411 * mechanism.
7412 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7413 * mechanism.
7414 *
7415 * \param request Control object to request of the device
7416 * \returns Status Code of the request, 0 is OK
7417 */
7418 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicTorqueCurrentFOC_Velocity &request) override;
7419
7420 /**
7421 * \brief Control device with generic control request object. User must make
7422 * sure the specified object is castable to a valid control request,
7423 * otherwise this function will fail at run-time and return the NotSupported
7424 * StatusCode
7425 *
7426 * \param request Control object to request of the device
7427 * \returns Status Code of the request, 0 is OK
7428 */
7430 {
7431 controls::ControlRequest const *ptr = &request;
7432 (void)ptr;
7433 auto const *DutyCycleOutValue = dynamic_cast<controls::DutyCycleOut const *>(ptr);
7434 if (DutyCycleOutValue != nullptr)
7435 return SetControl(*DutyCycleOutValue);
7436 auto const *TorqueCurrentFOCValue = dynamic_cast<controls::TorqueCurrentFOC const *>(ptr);
7437 if (TorqueCurrentFOCValue != nullptr)
7438 return SetControl(*TorqueCurrentFOCValue);
7439 auto const *VoltageOutValue = dynamic_cast<controls::VoltageOut const *>(ptr);
7440 if (VoltageOutValue != nullptr)
7441 return SetControl(*VoltageOutValue);
7442 auto const *PositionDutyCycleValue = dynamic_cast<controls::PositionDutyCycle const *>(ptr);
7443 if (PositionDutyCycleValue != nullptr)
7444 return SetControl(*PositionDutyCycleValue);
7445 auto const *PositionVoltageValue = dynamic_cast<controls::PositionVoltage const *>(ptr);
7446 if (PositionVoltageValue != nullptr)
7447 return SetControl(*PositionVoltageValue);
7448 auto const *PositionTorqueCurrentFOCValue = dynamic_cast<controls::PositionTorqueCurrentFOC const *>(ptr);
7449 if (PositionTorqueCurrentFOCValue != nullptr)
7450 return SetControl(*PositionTorqueCurrentFOCValue);
7451 auto const *VelocityDutyCycleValue = dynamic_cast<controls::VelocityDutyCycle const *>(ptr);
7452 if (VelocityDutyCycleValue != nullptr)
7453 return SetControl(*VelocityDutyCycleValue);
7454 auto const *VelocityVoltageValue = dynamic_cast<controls::VelocityVoltage const *>(ptr);
7455 if (VelocityVoltageValue != nullptr)
7456 return SetControl(*VelocityVoltageValue);
7457 auto const *VelocityTorqueCurrentFOCValue = dynamic_cast<controls::VelocityTorqueCurrentFOC const *>(ptr);
7458 if (VelocityTorqueCurrentFOCValue != nullptr)
7459 return SetControl(*VelocityTorqueCurrentFOCValue);
7460 auto const *MotionMagicDutyCycleValue = dynamic_cast<controls::MotionMagicDutyCycle const *>(ptr);
7461 if (MotionMagicDutyCycleValue != nullptr)
7462 return SetControl(*MotionMagicDutyCycleValue);
7463 auto const *MotionMagicVoltageValue = dynamic_cast<controls::MotionMagicVoltage const *>(ptr);
7464 if (MotionMagicVoltageValue != nullptr)
7465 return SetControl(*MotionMagicVoltageValue);
7466 auto const *MotionMagicTorqueCurrentFOCValue = dynamic_cast<controls::MotionMagicTorqueCurrentFOC const *>(ptr);
7467 if (MotionMagicTorqueCurrentFOCValue != nullptr)
7468 return SetControl(*MotionMagicTorqueCurrentFOCValue);
7469 auto const *DifferentialDutyCycleValue = dynamic_cast<controls::DifferentialDutyCycle const *>(ptr);
7470 if (DifferentialDutyCycleValue != nullptr)
7471 return SetControl(*DifferentialDutyCycleValue);
7472 auto const *DifferentialVoltageValue = dynamic_cast<controls::DifferentialVoltage const *>(ptr);
7473 if (DifferentialVoltageValue != nullptr)
7474 return SetControl(*DifferentialVoltageValue);
7475 auto const *DifferentialPositionDutyCycleValue = dynamic_cast<controls::DifferentialPositionDutyCycle const *>(ptr);
7476 if (DifferentialPositionDutyCycleValue != nullptr)
7477 return SetControl(*DifferentialPositionDutyCycleValue);
7478 auto const *DifferentialPositionVoltageValue = dynamic_cast<controls::DifferentialPositionVoltage const *>(ptr);
7479 if (DifferentialPositionVoltageValue != nullptr)
7480 return SetControl(*DifferentialPositionVoltageValue);
7481 auto const *DifferentialVelocityDutyCycleValue = dynamic_cast<controls::DifferentialVelocityDutyCycle const *>(ptr);
7482 if (DifferentialVelocityDutyCycleValue != nullptr)
7483 return SetControl(*DifferentialVelocityDutyCycleValue);
7484 auto const *DifferentialVelocityVoltageValue = dynamic_cast<controls::DifferentialVelocityVoltage const *>(ptr);
7485 if (DifferentialVelocityVoltageValue != nullptr)
7486 return SetControl(*DifferentialVelocityVoltageValue);
7487 auto const *DifferentialMotionMagicDutyCycleValue = dynamic_cast<controls::DifferentialMotionMagicDutyCycle const *>(ptr);
7488 if (DifferentialMotionMagicDutyCycleValue != nullptr)
7489 return SetControl(*DifferentialMotionMagicDutyCycleValue);
7490 auto const *DifferentialMotionMagicVoltageValue = dynamic_cast<controls::DifferentialMotionMagicVoltage const *>(ptr);
7491 if (DifferentialMotionMagicVoltageValue != nullptr)
7492 return SetControl(*DifferentialMotionMagicVoltageValue);
7493 auto const *FollowerValue = dynamic_cast<controls::Follower const *>(ptr);
7494 if (FollowerValue != nullptr)
7495 return SetControl(*FollowerValue);
7496 auto const *StrictFollowerValue = dynamic_cast<controls::StrictFollower const *>(ptr);
7497 if (StrictFollowerValue != nullptr)
7498 return SetControl(*StrictFollowerValue);
7499 auto const *DifferentialFollowerValue = dynamic_cast<controls::DifferentialFollower const *>(ptr);
7500 if (DifferentialFollowerValue != nullptr)
7501 return SetControl(*DifferentialFollowerValue);
7502 auto const *DifferentialStrictFollowerValue = dynamic_cast<controls::DifferentialStrictFollower const *>(ptr);
7503 if (DifferentialStrictFollowerValue != nullptr)
7504 return SetControl(*DifferentialStrictFollowerValue);
7505 auto const *NeutralOutValue = dynamic_cast<controls::NeutralOut const *>(ptr);
7506 if (NeutralOutValue != nullptr)
7507 return SetControl(*NeutralOutValue);
7508 auto const *CoastOutValue = dynamic_cast<controls::CoastOut const *>(ptr);
7509 if (CoastOutValue != nullptr)
7510 return SetControl(*CoastOutValue);
7511 auto const *StaticBrakeValue = dynamic_cast<controls::StaticBrake const *>(ptr);
7512 if (StaticBrakeValue != nullptr)
7513 return SetControl(*StaticBrakeValue);
7514 auto const *MusicToneValue = dynamic_cast<controls::MusicTone const *>(ptr);
7515 if (MusicToneValue != nullptr)
7516 return SetControl(*MusicToneValue);
7517 auto const *MotionMagicVelocityDutyCycleValue = dynamic_cast<controls::MotionMagicVelocityDutyCycle const *>(ptr);
7518 if (MotionMagicVelocityDutyCycleValue != nullptr)
7519 return SetControl(*MotionMagicVelocityDutyCycleValue);
7520 auto const *MotionMagicVelocityTorqueCurrentFOCValue = dynamic_cast<controls::MotionMagicVelocityTorqueCurrentFOC const *>(ptr);
7521 if (MotionMagicVelocityTorqueCurrentFOCValue != nullptr)
7522 return SetControl(*MotionMagicVelocityTorqueCurrentFOCValue);
7523 auto const *MotionMagicVelocityVoltageValue = dynamic_cast<controls::MotionMagicVelocityVoltage const *>(ptr);
7524 if (MotionMagicVelocityVoltageValue != nullptr)
7525 return SetControl(*MotionMagicVelocityVoltageValue);
7526 auto const *MotionMagicExpoDutyCycleValue = dynamic_cast<controls::MotionMagicExpoDutyCycle const *>(ptr);
7527 if (MotionMagicExpoDutyCycleValue != nullptr)
7528 return SetControl(*MotionMagicExpoDutyCycleValue);
7529 auto const *MotionMagicExpoVoltageValue = dynamic_cast<controls::MotionMagicExpoVoltage const *>(ptr);
7530 if (MotionMagicExpoVoltageValue != nullptr)
7531 return SetControl(*MotionMagicExpoVoltageValue);
7532 auto const *MotionMagicExpoTorqueCurrentFOCValue = dynamic_cast<controls::MotionMagicExpoTorqueCurrentFOC const *>(ptr);
7533 if (MotionMagicExpoTorqueCurrentFOCValue != nullptr)
7534 return SetControl(*MotionMagicExpoTorqueCurrentFOCValue);
7535 auto const *DynamicMotionMagicDutyCycleValue = dynamic_cast<controls::DynamicMotionMagicDutyCycle const *>(ptr);
7536 if (DynamicMotionMagicDutyCycleValue != nullptr)
7537 return SetControl(*DynamicMotionMagicDutyCycleValue);
7538 auto const *DynamicMotionMagicVoltageValue = dynamic_cast<controls::DynamicMotionMagicVoltage const *>(ptr);
7539 if (DynamicMotionMagicVoltageValue != nullptr)
7540 return SetControl(*DynamicMotionMagicVoltageValue);
7541 auto const *DynamicMotionMagicTorqueCurrentFOCValue = dynamic_cast<controls::DynamicMotionMagicTorqueCurrentFOC const *>(ptr);
7542 if (DynamicMotionMagicTorqueCurrentFOCValue != nullptr)
7543 return SetControl(*DynamicMotionMagicTorqueCurrentFOCValue);
7544 auto const *Diff_DutyCycleOut_PositionValue = dynamic_cast<controls::compound::Diff_DutyCycleOut_Position const *>(ptr);
7545 if (Diff_DutyCycleOut_PositionValue != nullptr)
7546 return SetControl(*Diff_DutyCycleOut_PositionValue);
7547 auto const *Diff_PositionDutyCycle_PositionValue = dynamic_cast<controls::compound::Diff_PositionDutyCycle_Position const *>(ptr);
7548 if (Diff_PositionDutyCycle_PositionValue != nullptr)
7549 return SetControl(*Diff_PositionDutyCycle_PositionValue);
7550 auto const *Diff_VelocityDutyCycle_PositionValue = dynamic_cast<controls::compound::Diff_VelocityDutyCycle_Position const *>(ptr);
7551 if (Diff_VelocityDutyCycle_PositionValue != nullptr)
7552 return SetControl(*Diff_VelocityDutyCycle_PositionValue);
7553 auto const *Diff_MotionMagicDutyCycle_PositionValue = dynamic_cast<controls::compound::Diff_MotionMagicDutyCycle_Position const *>(ptr);
7554 if (Diff_MotionMagicDutyCycle_PositionValue != nullptr)
7555 return SetControl(*Diff_MotionMagicDutyCycle_PositionValue);
7556 auto const *Diff_DutyCycleOut_VelocityValue = dynamic_cast<controls::compound::Diff_DutyCycleOut_Velocity const *>(ptr);
7557 if (Diff_DutyCycleOut_VelocityValue != nullptr)
7558 return SetControl(*Diff_DutyCycleOut_VelocityValue);
7559 auto const *Diff_PositionDutyCycle_VelocityValue = dynamic_cast<controls::compound::Diff_PositionDutyCycle_Velocity const *>(ptr);
7560 if (Diff_PositionDutyCycle_VelocityValue != nullptr)
7561 return SetControl(*Diff_PositionDutyCycle_VelocityValue);
7562 auto const *Diff_VelocityDutyCycle_VelocityValue = dynamic_cast<controls::compound::Diff_VelocityDutyCycle_Velocity const *>(ptr);
7563 if (Diff_VelocityDutyCycle_VelocityValue != nullptr)
7564 return SetControl(*Diff_VelocityDutyCycle_VelocityValue);
7565 auto const *Diff_MotionMagicDutyCycle_VelocityValue = dynamic_cast<controls::compound::Diff_MotionMagicDutyCycle_Velocity const *>(ptr);
7566 if (Diff_MotionMagicDutyCycle_VelocityValue != nullptr)
7567 return SetControl(*Diff_MotionMagicDutyCycle_VelocityValue);
7568 auto const *Diff_VoltageOut_PositionValue = dynamic_cast<controls::compound::Diff_VoltageOut_Position const *>(ptr);
7569 if (Diff_VoltageOut_PositionValue != nullptr)
7570 return SetControl(*Diff_VoltageOut_PositionValue);
7571 auto const *Diff_PositionVoltage_PositionValue = dynamic_cast<controls::compound::Diff_PositionVoltage_Position const *>(ptr);
7572 if (Diff_PositionVoltage_PositionValue != nullptr)
7573 return SetControl(*Diff_PositionVoltage_PositionValue);
7574 auto const *Diff_VelocityVoltage_PositionValue = dynamic_cast<controls::compound::Diff_VelocityVoltage_Position const *>(ptr);
7575 if (Diff_VelocityVoltage_PositionValue != nullptr)
7576 return SetControl(*Diff_VelocityVoltage_PositionValue);
7577 auto const *Diff_MotionMagicVoltage_PositionValue = dynamic_cast<controls::compound::Diff_MotionMagicVoltage_Position const *>(ptr);
7578 if (Diff_MotionMagicVoltage_PositionValue != nullptr)
7579 return SetControl(*Diff_MotionMagicVoltage_PositionValue);
7580 auto const *Diff_VoltageOut_VelocityValue = dynamic_cast<controls::compound::Diff_VoltageOut_Velocity const *>(ptr);
7581 if (Diff_VoltageOut_VelocityValue != nullptr)
7582 return SetControl(*Diff_VoltageOut_VelocityValue);
7583 auto const *Diff_PositionVoltage_VelocityValue = dynamic_cast<controls::compound::Diff_PositionVoltage_Velocity const *>(ptr);
7584 if (Diff_PositionVoltage_VelocityValue != nullptr)
7585 return SetControl(*Diff_PositionVoltage_VelocityValue);
7586 auto const *Diff_VelocityVoltage_VelocityValue = dynamic_cast<controls::compound::Diff_VelocityVoltage_Velocity const *>(ptr);
7587 if (Diff_VelocityVoltage_VelocityValue != nullptr)
7588 return SetControl(*Diff_VelocityVoltage_VelocityValue);
7589 auto const *Diff_MotionMagicVoltage_VelocityValue = dynamic_cast<controls::compound::Diff_MotionMagicVoltage_Velocity const *>(ptr);
7590 if (Diff_MotionMagicVoltage_VelocityValue != nullptr)
7591 return SetControl(*Diff_MotionMagicVoltage_VelocityValue);
7592 auto const *Diff_TorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_TorqueCurrentFOC_Position const *>(ptr);
7593 if (Diff_TorqueCurrentFOC_PositionValue != nullptr)
7594 return SetControl(*Diff_TorqueCurrentFOC_PositionValue);
7595 auto const *Diff_PositionTorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_PositionTorqueCurrentFOC_Position const *>(ptr);
7596 if (Diff_PositionTorqueCurrentFOC_PositionValue != nullptr)
7597 return SetControl(*Diff_PositionTorqueCurrentFOC_PositionValue);
7598 auto const *Diff_VelocityTorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_VelocityTorqueCurrentFOC_Position const *>(ptr);
7599 if (Diff_VelocityTorqueCurrentFOC_PositionValue != nullptr)
7600 return SetControl(*Diff_VelocityTorqueCurrentFOC_PositionValue);
7601 auto const *Diff_MotionMagicTorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_MotionMagicTorqueCurrentFOC_Position const *>(ptr);
7602 if (Diff_MotionMagicTorqueCurrentFOC_PositionValue != nullptr)
7603 return SetControl(*Diff_MotionMagicTorqueCurrentFOC_PositionValue);
7604 auto const *Diff_TorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_TorqueCurrentFOC_Velocity const *>(ptr);
7605 if (Diff_TorqueCurrentFOC_VelocityValue != nullptr)
7606 return SetControl(*Diff_TorqueCurrentFOC_VelocityValue);
7607 auto const *Diff_PositionTorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_PositionTorqueCurrentFOC_Velocity const *>(ptr);
7608 if (Diff_PositionTorqueCurrentFOC_VelocityValue != nullptr)
7609 return SetControl(*Diff_PositionTorqueCurrentFOC_VelocityValue);
7610 auto const *Diff_VelocityTorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_VelocityTorqueCurrentFOC_Velocity const *>(ptr);
7611 if (Diff_VelocityTorqueCurrentFOC_VelocityValue != nullptr)
7612 return SetControl(*Diff_VelocityTorqueCurrentFOC_VelocityValue);
7613 auto const *Diff_MotionMagicTorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_MotionMagicTorqueCurrentFOC_Velocity const *>(ptr);
7614 if (Diff_MotionMagicTorqueCurrentFOC_VelocityValue != nullptr)
7615 return SetControl(*Diff_MotionMagicTorqueCurrentFOC_VelocityValue);
7617 }
7618
7619
7620 /**
7621 * \brief Sets the mechanism position of the device in mechanism
7622 * rotations.
7623 *
7624 * \param newValue Value to set to. Units are in rotations.
7625 * \param timeoutSeconds Maximum time to wait up to in seconds.
7626 * \returns StatusCode of the set command
7627 */
7628 ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue, units::time::second_t timeoutSeconds) override
7629 {
7630 return GetConfigurator().SetPosition(newValue, timeoutSeconds);
7631 }
7632 /**
7633 * \brief Sets the mechanism position of the device in mechanism
7634 * rotations.
7635 *
7636 * This will wait up to 0.100 seconds (100ms) by default.
7637 *
7638 * \param newValue Value to set to. Units are in rotations.
7639 * \returns StatusCode of the set command
7640 */
7641 ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue) override
7642 {
7643 return SetPosition(newValue, 0.100_s);
7644 }
7645
7646 /**
7647 * \brief Clear the sticky faults in the device.
7648 *
7649 * \details This typically has no impact on the device functionality.
7650 * Instead, it just clears telemetry faults that are accessible via
7651 * API and Tuner Self-Test.
7652 *
7653 * \param timeoutSeconds Maximum time to wait up to in seconds.
7654 * \returns StatusCode of the set command
7655 */
7656 ctre::phoenix::StatusCode ClearStickyFaults(units::time::second_t timeoutSeconds) override
7657 {
7658 return GetConfigurator().ClearStickyFaults(timeoutSeconds);
7659 }
7660 /**
7661 * \brief Clear the sticky faults in the device.
7662 *
7663 * \details This typically has no impact on the device functionality.
7664 * Instead, it just clears telemetry faults that are accessible via
7665 * API and Tuner Self-Test.
7666 *
7667 * This will wait up to 0.100 seconds (100ms) by default.
7668 *
7669 * \returns StatusCode of the set command
7670 */
7672 {
7673 return ClearStickyFaults(0.100_s);
7674 }
7675
7676 /**
7677 * \brief Clear sticky fault: Hardware fault occurred
7678 *
7679 * \param timeoutSeconds Maximum time to wait up to in seconds.
7680 * \returns StatusCode of the set command
7681 */
7682 ctre::phoenix::StatusCode ClearStickyFault_Hardware(units::time::second_t timeoutSeconds) override
7683 {
7684 return GetConfigurator().ClearStickyFault_Hardware(timeoutSeconds);
7685 }
7686 /**
7687 * \brief Clear sticky fault: Hardware fault occurred
7688 *
7689 * This will wait up to 0.100 seconds (100ms) by default.
7690 *
7691 * \returns StatusCode of the set command
7692 */
7697
7698 /**
7699 * \brief Clear sticky fault: Processor temperature exceeded limit
7700 *
7701 * \param timeoutSeconds Maximum time to wait up to in seconds.
7702 * \returns StatusCode of the set command
7703 */
7704 ctre::phoenix::StatusCode ClearStickyFault_ProcTemp(units::time::second_t timeoutSeconds) override
7705 {
7706 return GetConfigurator().ClearStickyFault_ProcTemp(timeoutSeconds);
7707 }
7708 /**
7709 * \brief Clear sticky fault: Processor temperature exceeded limit
7710 *
7711 * This will wait up to 0.100 seconds (100ms) by default.
7712 *
7713 * \returns StatusCode of the set command
7714 */
7719
7720 /**
7721 * \brief Clear sticky fault: Device temperature exceeded limit
7722 *
7723 * \param timeoutSeconds Maximum time to wait up to in seconds.
7724 * \returns StatusCode of the set command
7725 */
7726 ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp(units::time::second_t timeoutSeconds) override
7727 {
7728 return GetConfigurator().ClearStickyFault_DeviceTemp(timeoutSeconds);
7729 }
7730 /**
7731 * \brief Clear sticky fault: Device temperature exceeded limit
7732 *
7733 * This will wait up to 0.100 seconds (100ms) by default.
7734 *
7735 * \returns StatusCode of the set command
7736 */
7741
7742 /**
7743 * \brief Clear sticky fault: Device supply voltage dropped to near
7744 * brownout levels
7745 *
7746 * \param timeoutSeconds Maximum time to wait up to in seconds.
7747 * \returns StatusCode of the set command
7748 */
7749 ctre::phoenix::StatusCode ClearStickyFault_Undervoltage(units::time::second_t timeoutSeconds) override
7750 {
7751 return GetConfigurator().ClearStickyFault_Undervoltage(timeoutSeconds);
7752 }
7753 /**
7754 * \brief Clear sticky fault: Device supply voltage dropped to near
7755 * brownout levels
7756 *
7757 * This will wait up to 0.100 seconds (100ms) by default.
7758 *
7759 * \returns StatusCode of the set command
7760 */
7765
7766 /**
7767 * \brief Clear sticky fault: Device boot while detecting the enable
7768 * signal
7769 *
7770 * \param timeoutSeconds Maximum time to wait up to in seconds.
7771 * \returns StatusCode of the set command
7772 */
7773 ctre::phoenix::StatusCode ClearStickyFault_BootDuringEnable(units::time::second_t timeoutSeconds) override
7774 {
7775 return GetConfigurator().ClearStickyFault_BootDuringEnable(timeoutSeconds);
7776 }
7777 /**
7778 * \brief Clear sticky fault: Device boot while detecting the enable
7779 * signal
7780 *
7781 * This will wait up to 0.100 seconds (100ms) by default.
7782 *
7783 * \returns StatusCode of the set command
7784 */
7789
7790 /**
7791 * \brief Clear sticky fault: An unlicensed feature is in use, device
7792 * may not behave as expected.
7793 *
7794 * \param timeoutSeconds Maximum time to wait up to in seconds.
7795 * \returns StatusCode of the set command
7796 */
7797 ctre::phoenix::StatusCode ClearStickyFault_UnlicensedFeatureInUse(units::time::second_t timeoutSeconds) override
7798 {
7800 }
7801 /**
7802 * \brief Clear sticky fault: An unlicensed feature is in use, device
7803 * may not behave as expected.
7804 *
7805 * This will wait up to 0.100 seconds (100ms) by default.
7806 *
7807 * \returns StatusCode of the set command
7808 */
7813
7814 /**
7815 * \brief Clear sticky fault: Bridge was disabled most likely due to
7816 * supply voltage dropping too low.
7817 *
7818 * \param timeoutSeconds Maximum time to wait up to in seconds.
7819 * \returns StatusCode of the set command
7820 */
7821 ctre::phoenix::StatusCode ClearStickyFault_BridgeBrownout(units::time::second_t timeoutSeconds) override
7822 {
7823 return GetConfigurator().ClearStickyFault_BridgeBrownout(timeoutSeconds);
7824 }
7825 /**
7826 * \brief Clear sticky fault: Bridge was disabled most likely due to
7827 * supply voltage dropping too low.
7828 *
7829 * This will wait up to 0.100 seconds (100ms) by default.
7830 *
7831 * \returns StatusCode of the set command
7832 */
7837
7838 /**
7839 * \brief Clear sticky fault: The remote sensor has reset.
7840 *
7841 * \param timeoutSeconds Maximum time to wait up to in seconds.
7842 * \returns StatusCode of the set command
7843 */
7844 ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorReset(units::time::second_t timeoutSeconds) override
7845 {
7846 return GetConfigurator().ClearStickyFault_RemoteSensorReset(timeoutSeconds);
7847 }
7848 /**
7849 * \brief Clear sticky fault: The remote sensor has reset.
7850 *
7851 * This will wait up to 0.100 seconds (100ms) by default.
7852 *
7853 * \returns StatusCode of the set command
7854 */
7859
7860 /**
7861 * \brief Clear sticky fault: The remote Talon used for differential
7862 * control is not present on CAN Bus.
7863 *
7864 * \param timeoutSeconds Maximum time to wait up to in seconds.
7865 * \returns StatusCode of the set command
7866 */
7867 ctre::phoenix::StatusCode ClearStickyFault_MissingDifferentialFX(units::time::second_t timeoutSeconds) override
7868 {
7870 }
7871 /**
7872 * \brief Clear sticky fault: The remote Talon used for differential
7873 * control is not present on CAN Bus.
7874 *
7875 * This will wait up to 0.100 seconds (100ms) by default.
7876 *
7877 * \returns StatusCode of the set command
7878 */
7883
7884 /**
7885 * \brief Clear sticky fault: The remote sensor position has
7886 * overflowed. Because of the nature of remote sensors, it is possible
7887 * for the remote sensor position to overflow beyond what is supported
7888 * by the status signal frame. However, this is rare and cannot occur
7889 * over the course of an FRC match under normal use.
7890 *
7891 * \param timeoutSeconds Maximum time to wait up to in seconds.
7892 * \returns StatusCode of the set command
7893 */
7894 ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorPosOverflow(units::time::second_t timeoutSeconds) override
7895 {
7897 }
7898 /**
7899 * \brief Clear sticky fault: The remote sensor position has
7900 * overflowed. Because of the nature of remote sensors, it is possible
7901 * for the remote sensor position to overflow beyond what is supported
7902 * by the status signal frame. However, this is rare and cannot occur
7903 * over the course of an FRC match under normal use.
7904 *
7905 * This will wait up to 0.100 seconds (100ms) by default.
7906 *
7907 * \returns StatusCode of the set command
7908 */
7913
7914 /**
7915 * \brief Clear sticky fault: Supply Voltage has exceeded the maximum
7916 * voltage rating of device.
7917 *
7918 * \param timeoutSeconds Maximum time to wait up to in seconds.
7919 * \returns StatusCode of the set command
7920 */
7921 ctre::phoenix::StatusCode ClearStickyFault_OverSupplyV(units::time::second_t timeoutSeconds) override
7922 {
7923 return GetConfigurator().ClearStickyFault_OverSupplyV(timeoutSeconds);
7924 }
7925 /**
7926 * \brief Clear sticky fault: Supply Voltage has exceeded the maximum
7927 * voltage rating of device.
7928 *
7929 * This will wait up to 0.100 seconds (100ms) by default.
7930 *
7931 * \returns StatusCode of the set command
7932 */
7937
7938 /**
7939 * \brief Clear sticky fault: Supply Voltage is unstable. Ensure you
7940 * are using a battery and current limited power supply.
7941 *
7942 * \param timeoutSeconds Maximum time to wait up to in seconds.
7943 * \returns StatusCode of the set command
7944 */
7945 ctre::phoenix::StatusCode ClearStickyFault_UnstableSupplyV(units::time::second_t timeoutSeconds) override
7946 {
7947 return GetConfigurator().ClearStickyFault_UnstableSupplyV(timeoutSeconds);
7948 }
7949 /**
7950 * \brief Clear sticky fault: Supply Voltage is unstable. Ensure you
7951 * are using a battery and current limited power supply.
7952 *
7953 * This will wait up to 0.100 seconds (100ms) by default.
7954 *
7955 * \returns StatusCode of the set command
7956 */
7961
7962 /**
7963 * \brief Clear sticky fault: Reverse limit switch has been asserted.
7964 * Output is set to neutral.
7965 *
7966 * \param timeoutSeconds Maximum time to wait up to in seconds.
7967 * \returns StatusCode of the set command
7968 */
7969 ctre::phoenix::StatusCode ClearStickyFault_ReverseHardLimit(units::time::second_t timeoutSeconds) override
7970 {
7971 return GetConfigurator().ClearStickyFault_ReverseHardLimit(timeoutSeconds);
7972 }
7973 /**
7974 * \brief Clear sticky fault: Reverse limit switch has been asserted.
7975 * Output is set to neutral.
7976 *
7977 * This will wait up to 0.100 seconds (100ms) by default.
7978 *
7979 * \returns StatusCode of the set command
7980 */
7985
7986 /**
7987 * \brief Clear sticky fault: Forward limit switch has been asserted.
7988 * Output is set to neutral.
7989 *
7990 * \param timeoutSeconds Maximum time to wait up to in seconds.
7991 * \returns StatusCode of the set command
7992 */
7993 ctre::phoenix::StatusCode ClearStickyFault_ForwardHardLimit(units::time::second_t timeoutSeconds) override
7994 {
7995 return GetConfigurator().ClearStickyFault_ForwardHardLimit(timeoutSeconds);
7996 }
7997 /**
7998 * \brief Clear sticky fault: Forward limit switch has been asserted.
7999 * Output is set to neutral.
8000 *
8001 * This will wait up to 0.100 seconds (100ms) by default.
8002 *
8003 * \returns StatusCode of the set command
8004 */
8009
8010 /**
8011 * \brief Clear sticky fault: Reverse soft limit has been asserted.
8012 * Output is set to neutral.
8013 *
8014 * \param timeoutSeconds Maximum time to wait up to in seconds.
8015 * \returns StatusCode of the set command
8016 */
8017 ctre::phoenix::StatusCode ClearStickyFault_ReverseSoftLimit(units::time::second_t timeoutSeconds) override
8018 {
8019 return GetConfigurator().ClearStickyFault_ReverseSoftLimit(timeoutSeconds);
8020 }
8021 /**
8022 * \brief Clear sticky fault: Reverse soft limit has been asserted.
8023 * Output is set to neutral.
8024 *
8025 * This will wait up to 0.100 seconds (100ms) by default.
8026 *
8027 * \returns StatusCode of the set command
8028 */
8033
8034 /**
8035 * \brief Clear sticky fault: Forward soft limit has been asserted.
8036 * Output is set to neutral.
8037 *
8038 * \param timeoutSeconds Maximum time to wait up to in seconds.
8039 * \returns StatusCode of the set command
8040 */
8041 ctre::phoenix::StatusCode ClearStickyFault_ForwardSoftLimit(units::time::second_t timeoutSeconds) override
8042 {
8043 return GetConfigurator().ClearStickyFault_ForwardSoftLimit(timeoutSeconds);
8044 }
8045 /**
8046 * \brief Clear sticky fault: Forward soft limit has been asserted.
8047 * Output is set to neutral.
8048 *
8049 * This will wait up to 0.100 seconds (100ms) by default.
8050 *
8051 * \returns StatusCode of the set command
8052 */
8057
8058 /**
8059 * \brief Clear sticky fault: The remote soft limit device is not
8060 * present on CAN Bus.
8061 *
8062 * \param timeoutSeconds Maximum time to wait up to in seconds.
8063 * \returns StatusCode of the set command
8064 */
8065 ctre::phoenix::StatusCode ClearStickyFault_MissingSoftLimitRemote(units::time::second_t timeoutSeconds) override
8066 {
8068 }
8069 /**
8070 * \brief Clear sticky fault: The remote soft limit device is not
8071 * present on CAN Bus.
8072 *
8073 * This will wait up to 0.100 seconds (100ms) by default.
8074 *
8075 * \returns StatusCode of the set command
8076 */
8081
8082 /**
8083 * \brief Clear sticky fault: The remote limit switch device is not
8084 * present on CAN Bus.
8085 *
8086 * \param timeoutSeconds Maximum time to wait up to in seconds.
8087 * \returns StatusCode of the set command
8088 */
8089 ctre::phoenix::StatusCode ClearStickyFault_MissingHardLimitRemote(units::time::second_t timeoutSeconds) override
8090 {
8092 }
8093 /**
8094 * \brief Clear sticky fault: The remote limit switch device is not
8095 * present on CAN Bus.
8096 *
8097 * This will wait up to 0.100 seconds (100ms) by default.
8098 *
8099 * \returns StatusCode of the set command
8100 */
8105
8106 /**
8107 * \brief Clear sticky fault: The remote sensor's data is no longer
8108 * trusted. This can happen if the remote sensor disappears from the
8109 * CAN bus or if the remote sensor indicates its data is no longer
8110 * valid, such as when a CANcoder's magnet strength falls into the
8111 * "red" range.
8112 *
8113 * \param timeoutSeconds Maximum time to wait up to in seconds.
8114 * \returns StatusCode of the set command
8115 */
8116 ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorDataInvalid(units::time::second_t timeoutSeconds) override
8117 {
8119 }
8120 /**
8121 * \brief Clear sticky fault: The remote sensor's data is no longer
8122 * trusted. This can happen if the remote sensor disappears from the
8123 * CAN bus or if the remote sensor indicates its data is no longer
8124 * valid, such as when a CANcoder's magnet strength falls into the
8125 * "red" range.
8126 *
8127 * This will wait up to 0.100 seconds (100ms) by default.
8128 *
8129 * \returns StatusCode of the set command
8130 */
8135
8136 /**
8137 * \brief Clear sticky fault: The remote sensor used for fusion has
8138 * fallen out of sync to the local sensor. A re-synchronization has
8139 * occurred, which may cause a discontinuity. This typically happens
8140 * if there is significant slop in the mechanism, or if the
8141 * RotorToSensorRatio configuration parameter is incorrect.
8142 *
8143 * \param timeoutSeconds Maximum time to wait up to in seconds.
8144 * \returns StatusCode of the set command
8145 */
8146 ctre::phoenix::StatusCode ClearStickyFault_FusedSensorOutOfSync(units::time::second_t timeoutSeconds) override
8147 {
8149 }
8150 /**
8151 * \brief Clear sticky fault: The remote sensor used for fusion has
8152 * fallen out of sync to the local sensor. A re-synchronization has
8153 * occurred, which may cause a discontinuity. This typically happens
8154 * if there is significant slop in the mechanism, or if the
8155 * RotorToSensorRatio configuration parameter is incorrect.
8156 *
8157 * This will wait up to 0.100 seconds (100ms) by default.
8158 *
8159 * \returns StatusCode of the set command
8160 */
8165
8166 /**
8167 * \brief Clear sticky fault: Stator current limit occured.
8168 *
8169 * \param timeoutSeconds Maximum time to wait up to in seconds.
8170 * \returns StatusCode of the set command
8171 */
8172 ctre::phoenix::StatusCode ClearStickyFault_StatorCurrLimit(units::time::second_t timeoutSeconds) override
8173 {
8174 return GetConfigurator().ClearStickyFault_StatorCurrLimit(timeoutSeconds);
8175 }
8176 /**
8177 * \brief Clear sticky fault: Stator current limit occured.
8178 *
8179 * This will wait up to 0.100 seconds (100ms) by default.
8180 *
8181 * \returns StatusCode of the set command
8182 */
8187
8188 /**
8189 * \brief Clear sticky fault: Supply current limit occured.
8190 *
8191 * \param timeoutSeconds Maximum time to wait up to in seconds.
8192 * \returns StatusCode of the set command
8193 */
8194 ctre::phoenix::StatusCode ClearStickyFault_SupplyCurrLimit(units::time::second_t timeoutSeconds) override
8195 {
8196 return GetConfigurator().ClearStickyFault_SupplyCurrLimit(timeoutSeconds);
8197 }
8198 /**
8199 * \brief Clear sticky fault: Supply current limit occured.
8200 *
8201 * This will wait up to 0.100 seconds (100ms) by default.
8202 *
8203 * \returns StatusCode of the set command
8204 */
8209
8210 /**
8211 * \brief Clear sticky fault: Using Fused CANcoder feature while
8212 * unlicensed. Device has fallen back to remote CANcoder.
8213 *
8214 * \param timeoutSeconds Maximum time to wait up to in seconds.
8215 * \returns StatusCode of the set command
8216 */
8218 {
8220 }
8221 /**
8222 * \brief Clear sticky fault: Using Fused CANcoder feature while
8223 * unlicensed. Device has fallen back to remote CANcoder.
8224 *
8225 * This will wait up to 0.100 seconds (100ms) by default.
8226 *
8227 * \returns StatusCode of the set command
8228 */
8233
8234 /**
8235 * \brief Clear sticky fault: Static brake was momentarily disabled
8236 * due to excessive braking current while disabled.
8237 *
8238 * \param timeoutSeconds Maximum time to wait up to in seconds.
8239 * \returns StatusCode of the set command
8240 */
8241 ctre::phoenix::StatusCode ClearStickyFault_StaticBrakeDisabled(units::time::second_t timeoutSeconds) override
8242 {
8244 }
8245 /**
8246 * \brief Clear sticky fault: Static brake was momentarily disabled
8247 * due to excessive braking current while disabled.
8248 *
8249 * This will wait up to 0.100 seconds (100ms) by default.
8250 *
8251 * \returns StatusCode of the set command
8252 */
8257};
8258
8259}
8260}
8261
8262}
8263}
8264
ii that the Software will be uninterrupted or error free
Definition CTRE_LICENSE.txt:226
CTREXPORT int c_ctre_phoenix6_serialize_double(int spn, double value, char **str)
Class for getting information about an available CAN bus.
Definition CANBus.hpp:19
Represents a status signal with data of type T, and operations available to retrieve information abou...
Definition StatusSignal.hpp:657
Configs that affect audible components of the device.
Definition Configs.hpp:3085
std::string Serialize() const override
Definition Configs.hpp:3190
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3200
std::string ToString() const override
Definition Configs.hpp:3180
Configs that affect general behavior during closed-looping.
Definition Configs.hpp:3744
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3781
std::string ToString() const override
Definition Configs.hpp:3765
std::string Serialize() const override
Definition Configs.hpp:3773
Configs that affect the closed-loop control of this motor controller.
Definition Configs.hpp:2386
std::string Serialize() const override
Definition Configs.hpp:2544
std::string ToString() const override
Definition Configs.hpp:2534
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:2554
Configs that directly affect current limiting features.
Definition Configs.hpp:886
std::string Serialize() const override
Definition Configs.hpp:1147
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:1160
std::string ToString() const override
Definition Configs.hpp:1134
Custom Params.
Definition Configs.hpp:3640
std::string ToString() const override
Definition Configs.hpp:3709
std::string Serialize() const override
Definition Configs.hpp:3718
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3727
Configs related to constants used for differential control of a mechanism.
Definition Configs.hpp:2074
std::string Serialize() const override
Definition Configs.hpp:2184
std::string ToString() const override
Definition Configs.hpp:2174
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:2194
Configs related to sensors used for differential control of a mechanism.
Definition Configs.hpp:1895
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:2055
std::string Serialize() const override
Definition Configs.hpp:2045
std::string ToString() const override
Definition Configs.hpp:2035
Configs that affect the feedback of this motor controller.
Definition Configs.hpp:1485
std::string ToString() const override
Definition Configs.hpp:1839
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:1865
std::string Serialize() const override
Definition Configs.hpp:1852
Configs that change how the motor controller behaves under different limit switch states.
Definition Configs.hpp:2581
std::string ToString() const override
Definition Configs.hpp:3016
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3054
std::string Serialize() const override
Definition Configs.hpp:3035
Configs for Motion Magic®.
Definition Configs.hpp:3384
std::string Serialize() const override
Definition Configs.hpp:3598
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3610
std::string ToString() const override
Definition Configs.hpp:3586
Configs that directly affect motor output.
Definition Configs.hpp:645
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:856
std::string ToString() const override
Definition Configs.hpp:830
std::string Serialize() const override
Definition Configs.hpp:843
Configs that affect the open-loop control of this motor controller.
Definition Configs.hpp:2219
std::string Serialize() const override
Definition Configs.hpp:2351
std::string ToString() const override
Definition Configs.hpp:2341
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:2361
Definition Configurator.hpp:22
ctre::phoenix::StatusCode SetConfigsPrivate(const std::string &serializedString, units::time::second_t timeoutSeconds, bool futureProofConfigs, bool overrideIfDuplicate)
Definition Configurator.hpp:77
ctre::phoenix::StatusCode GetConfigsPrivate(std::string &serializedString, units::time::second_t timeoutSeconds) const
Definition Configurator.hpp:101
units::time::second_t DefaultTimeoutSeconds
The default maximum amount of time to wait for a config.
Definition Configurator.hpp:27
Gains for the specified slot.
Definition Configs.hpp:4279
std::string ToString() const override
Definition Configs.hpp:4703
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:4735
std::string Serialize() const override
Definition Configs.hpp:4719
Gains for the specified slot.
Definition Configs.hpp:4774
std::string Serialize() const override
Definition Configs.hpp:5214
std::string ToString() const override
Definition Configs.hpp:5198
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:5230
Gains for the specified slot.
Definition Configs.hpp:5269
std::string Serialize() const override
Definition Configs.hpp:5709
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:5725
std::string ToString() const override
Definition Configs.hpp:5693
Gains for the specified slot.
Definition Configs.hpp:5763
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize)
Definition Configs.hpp:6280
std::string Serialize() const
Definition Configs.hpp:6263
Configs that affect how software-limit switches behave.
Definition Configs.hpp:3219
std::string ToString() const override
Definition Configs.hpp:3338
std::string Serialize() const override
Definition Configs.hpp:3349
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3360
Class description for the Talon FX integrated motor controller.
Definition CoreTalonFX.hpp:102
TorqueCurrentConfigs TorqueCurrent
Configs that affect Torque Current control types.
Definition CoreTalonFX.hpp:153
constexpr TalonFXConfiguration & WithTorqueCurrent(TorqueCurrentConfigs newTorqueCurrent)
Modifies this configuration's TorqueCurrent parameter and returns itself for method-chaining and easi...
Definition CoreTalonFX.hpp:335
MotorOutputConfigs MotorOutput
Configs that directly affect motor output.
Definition CoreTalonFX.hpp:128
constexpr TalonFXConfiguration & WithAudio(AudioConfigs newAudio)
Modifies this configuration's Audio parameter and returns itself for method-chaining and easier to us...
Definition CoreTalonFX.hpp:463
constexpr TalonFXConfiguration & WithOpenLoopRamps(OpenLoopRampsConfigs newOpenLoopRamps)
Modifies this configuration's OpenLoopRamps parameter and returns itself for method-chaining and easi...
Definition CoreTalonFX.hpp:408
bool FutureProofConfigs
True if we should factory default newer unsupported configs, false to leave newer unsupported configs...
Definition CoreTalonFX.hpp:119
constexpr TalonFXConfiguration & WithSlot1(Slot1Configs newSlot1)
Modifies this configuration's Slot1 parameter and returns itself for method-chaining and easier to us...
Definition CoreTalonFX.hpp:569
constexpr TalonFXConfiguration & WithHardwareLimitSwitch(HardwareLimitSwitchConfigs newHardwareLimitSwitch)
Modifies this configuration's HardwareLimitSwitch parameter and returns itself for method-chaining an...
Definition CoreTalonFX.hpp:446
constexpr TalonFXConfiguration & WithFeedback(FeedbackConfigs newFeedback)
Modifies this configuration's Feedback parameter and returns itself for method-chaining and easier to...
Definition CoreTalonFX.hpp:355
constexpr TalonFXConfiguration & WithClosedLoopRamps(ClosedLoopRampsConfigs newClosedLoopRamps)
Modifies this configuration's ClosedLoopRamps parameter and returns itself for method-chaining and ea...
Definition CoreTalonFX.hpp:426
constexpr TalonFXConfiguration & WithMotionMagic(MotionMagicConfigs newMotionMagic)
Modifies this configuration's MotionMagic parameter and returns itself for method-chaining and easier...
Definition CoreTalonFX.hpp:499
constexpr TalonFXConfiguration & WithDifferentialConstants(DifferentialConstantsConfigs newDifferentialConstants)
Modifies this configuration's DifferentialConstants parameter and returns itself for method-chaining ...
Definition CoreTalonFX.hpp:391
constexpr TalonFXConfiguration & WithClosedLoopGeneral(ClosedLoopGeneralConfigs newClosedLoopGeneral)
Modifies this configuration's ClosedLoopGeneral parameter and returns itself for method-chaining and ...
Definition CoreTalonFX.hpp:533
constexpr TalonFXConfiguration & WithCustomParams(CustomParamsConfigs newCustomParams)
Modifies this configuration's CustomParams parameter and returns itself for method-chaining and easie...
Definition CoreTalonFX.hpp:516
constexpr TalonFXConfiguration & WithSlot2(Slot2Configs newSlot2)
Modifies this configuration's Slot2 parameter and returns itself for method-chaining and easier to us...
Definition CoreTalonFX.hpp:587
DifferentialConstantsConfigs DifferentialConstants
Configs related to constants used for differential control of a mechanism.
Definition CoreTalonFX.hpp:179
constexpr TalonFXConfiguration & WithDifferentialSensors(DifferentialSensorsConfigs newDifferentialSensors)
Modifies this configuration's DifferentialSensors parameter and returns itself for method-chaining an...
Definition CoreTalonFX.hpp:373
VoltageConfigs Voltage
Configs that affect Voltage control types.
Definition CoreTalonFX.hpp:144
HardwareLimitSwitchConfigs HardwareLimitSwitch
Configs that change how the motor controller behaves under different limit switch states.
Definition CoreTalonFX.hpp:205
constexpr TalonFXConfiguration & WithCurrentLimits(CurrentLimitsConfigs newCurrentLimits)
Modifies this configuration's CurrentLimits parameter and returns itself for method-chaining and easi...
Definition CoreTalonFX.hpp:298
ClosedLoopRampsConfigs ClosedLoopRamps
Configs that affect the closed-loop control of this motor controller.
Definition CoreTalonFX.hpp:195
Slot2Configs Slot2
Gains for the specified slot.
Definition CoreTalonFX.hpp:266
OpenLoopRampsConfigs OpenLoopRamps
Configs that affect the open-loop control of this motor controller.
Definition CoreTalonFX.hpp:187
SoftwareLimitSwitchConfigs SoftwareLimitSwitch
Configs that affect how software-limit switches behave.
Definition CoreTalonFX.hpp:220
MotionMagicConfigs MotionMagic
Configs for Motion Magic®.
Definition CoreTalonFX.hpp:228
std::string ToString() const
Get the string representation of this configuration.
Definition CoreTalonFX.hpp:596
FeedbackConfigs Feedback
Configs that affect the feedback of this motor controller.
Definition CoreTalonFX.hpp:163
Slot0Configs Slot0
Gains for the specified slot.
Definition CoreTalonFX.hpp:250
constexpr TalonFXConfiguration & WithSlot0(Slot0Configs newSlot0)
Modifies this configuration's Slot0 parameter and returns itself for method-chaining and easier to us...
Definition CoreTalonFX.hpp:551
AudioConfigs Audio
Configs that affect audible components of the device.
Definition CoreTalonFX.hpp:212
DifferentialSensorsConfigs DifferentialSensors
Configs related to sensors used for differential control of a mechanism.
Definition CoreTalonFX.hpp:171
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize)
Take a string and deserialize it to this configuration.
Definition CoreTalonFX.hpp:651
CurrentLimitsConfigs CurrentLimits
Configs that directly affect current limiting features.
Definition CoreTalonFX.hpp:136
constexpr TalonFXConfiguration & WithMotorOutput(MotorOutputConfigs newMotorOutput)
Modifies this configuration's MotorOutput parameter and returns itself for method-chaining and easier...
Definition CoreTalonFX.hpp:280
CustomParamsConfigs CustomParams
Custom Params.
Definition CoreTalonFX.hpp:235
ClosedLoopGeneralConfigs ClosedLoopGeneral
Configs that affect general behavior during closed-looping.
Definition CoreTalonFX.hpp:242
std::string Serialize() const
Get the serialized form of this configuration.
Definition CoreTalonFX.hpp:624
constexpr TalonFXConfiguration & WithVoltage(VoltageConfigs newVoltage)
Modifies this configuration's Voltage parameter and returns itself for method-chaining and easier to ...
Definition CoreTalonFX.hpp:316
Slot1Configs Slot1
Gains for the specified slot.
Definition CoreTalonFX.hpp:258
constexpr TalonFXConfiguration & WithSoftwareLimitSwitch(SoftwareLimitSwitchConfigs newSoftwareLimitSwitch)
Modifies this configuration's SoftwareLimitSwitch parameter and returns itself for method-chaining an...
Definition CoreTalonFX.hpp:481
Class description for the Talon FX integrated motor controller.
Definition CoreTalonFX.hpp:682
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorDataInvalid()
Clear sticky fault: The remote sensor's data is no longer trusted.
Definition CoreTalonFX.hpp:2697
ctre::phoenix::StatusCode Refresh(AudioConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1363
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorPosOverflow(units::time::second_t timeoutSeconds)
Clear sticky fault: The remote sensor position has overflowed.
Definition CoreTalonFX.hpp:2360
ctre::phoenix::StatusCode ClearStickyFault_ForwardSoftLimit()
Clear sticky fault: Forward soft limit has been asserted.
Definition CoreTalonFX.hpp:2577
ctre::phoenix::StatusCode ClearStickyFault_MissingHardLimitRemote(units::time::second_t timeoutSeconds)
Clear sticky fault: The remote limit switch device is not present on CAN Bus.
Definition CoreTalonFX.hpp:2672
ctre::phoenix::StatusCode Refresh(Slot1Configs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1736
ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue)
Sets the mechanism position of the device in mechanism rotations.
Definition CoreTalonFX.hpp:1909
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorDataInvalid(units::time::second_t timeoutSeconds)
Clear sticky fault: The remote sensor's data is no longer trusted.
Definition CoreTalonFX.hpp:2717
ctre::phoenix::StatusCode ClearStickyFaults()
Clear the sticky faults in the device.
Definition CoreTalonFX.hpp:1952
ctre::phoenix::StatusCode Apply(const DifferentialConstantsConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1168
ctre::phoenix::StatusCode Refresh(OpenLoopRampsConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1183
ctre::phoenix::StatusCode Apply(const AudioConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1394
ctre::phoenix::StatusCode Refresh(FeedbackConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1003
ctre::phoenix::StatusCode Apply(const Slot0Configs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1708
ctre::phoenix::StatusCode Refresh(Slot0Configs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1663
ctre::phoenix::StatusCode Refresh(ClosedLoopGeneralConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1616
ctre::phoenix::StatusCode Refresh(SoftwareLimitSwitchConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1423
ctre::phoenix::StatusCode Apply(const TalonFXConfiguration &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:733
ctre::phoenix::StatusCode Apply(const MotionMagicConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1514
ctre::phoenix::StatusCode ClearStickyFault_ProcTemp(units::time::second_t timeoutSeconds)
Clear sticky fault: Processor temperature exceeded limit.
Definition CoreTalonFX.hpp:2046
ctre::phoenix::StatusCode Apply(const DifferentialSensorsConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1094
ctre::phoenix::StatusCode Refresh(Slot2Configs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1796
ctre::phoenix::StatusCode ClearStickyFault_BridgeBrownout(units::time::second_t timeoutSeconds)
Clear sticky fault: Bridge was disabled most likely due to supply voltage dropping too low.
Definition CoreTalonFX.hpp:2239
ctre::phoenix::StatusCode Refresh(ClosedLoopRampsConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1256
ctre::phoenix::StatusCode ClearStickyFault_Undervoltage()
Clear sticky fault: Device supply voltage dropped to near brownout levels.
Definition CoreTalonFX.hpp:2105
ctre::phoenix::StatusCode Refresh(MotionMagicConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1483
ctre::phoenix::StatusCode Apply(const Slot2Configs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1828
ctre::phoenix::StatusCode ClearStickyFault_OverSupplyV(units::time::second_t timeoutSeconds)
Clear sticky fault: Supply Voltage has exceeded the maximum voltage rating of device.
Definition CoreTalonFX.hpp:2399
ctre::phoenix::StatusCode ClearStickyFault_StaticBrakeDisabled(units::time::second_t timeoutSeconds)
Clear sticky fault: Static brake was momentarily disabled due to excessive braking current while disa...
Definition CoreTalonFX.hpp:2914
ctre::phoenix::StatusCode Apply(const DifferentialConstantsConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1154
ctre::phoenix::StatusCode Refresh(VoltageConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:896
ctre::phoenix::StatusCode ClearStickyFault_ProcTemp()
Clear sticky fault: Processor temperature exceeded limit.
Definition CoreTalonFX.hpp:2030
ctre::phoenix::StatusCode Refresh(SlotConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1843
ctre::phoenix::StatusCode Refresh(Slot1Configs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1723
ctre::phoenix::StatusCode Refresh(CustomParamsConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1543
ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp()
Clear sticky fault: Device temperature exceeded limit.
Definition CoreTalonFX.hpp:2067
ctre::phoenix::StatusCode ClearStickyFault_ForwardSoftLimit(units::time::second_t timeoutSeconds)
Clear sticky fault: Forward soft limit has been asserted.
Definition CoreTalonFX.hpp:2594
ctre::phoenix::StatusCode Apply(const CustomParamsConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1588
ctre::phoenix::StatusCode Refresh(ClosedLoopGeneralConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1603
ctre::phoenix::StatusCode Refresh(Slot2Configs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1783
ctre::phoenix::StatusCode ClearStickyFault_StaticBrakeDisabled()
Clear sticky fault: Static brake was momentarily disabled due to excessive braking current while disa...
Definition CoreTalonFX.hpp:2897
ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue, units::time::second_t timeoutSeconds)
Sets the mechanism position of the device in mechanism rotations.
Definition CoreTalonFX.hpp:1927
ctre::phoenix::StatusCode ClearStickyFault_Hardware()
Clear sticky fault: Hardware fault occurred.
Definition CoreTalonFX.hpp:1993
ctre::phoenix::StatusCode Apply(const SlotConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1888
ctre::phoenix::StatusCode Apply(const OpenLoopRampsConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1214
ctre::phoenix::StatusCode Apply(const Slot1Configs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1768
ctre::phoenix::StatusCode ClearStickyFault_ReverseSoftLimit(units::time::second_t timeoutSeconds)
Clear sticky fault: Reverse soft limit has been asserted.
Definition CoreTalonFX.hpp:2555
ctre::phoenix::StatusCode ClearStickyFault_ReverseSoftLimit()
Clear sticky fault: Reverse soft limit has been asserted.
Definition CoreTalonFX.hpp:2538
ctre::phoenix::StatusCode Refresh(VoltageConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:883
ctre::phoenix::StatusCode Refresh(FeedbackConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1016
ctre::phoenix::StatusCode Apply(const ClosedLoopRampsConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1274
ctre::phoenix::StatusCode Apply(const TalonFXConfiguration &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:747
ctre::phoenix::StatusCode Apply(const ClosedLoopRampsConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1288
ctre::phoenix::StatusCode ClearStickyFault_UnlicensedFeatureInUse()
Clear sticky fault: An unlicensed feature is in use, device may not behave as expected.
Definition CoreTalonFX.hpp:2183
ctre::phoenix::StatusCode Apply(const SoftwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1468
ctre::phoenix::StatusCode Apply(const Slot0Configs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1694
ctre::phoenix::StatusCode Apply(const CustomParamsConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1574
ctre::phoenix::StatusCode Apply(const TorqueCurrentConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:988
ctre::phoenix::StatusCode ClearStickyFault_FusedSensorOutOfSync(units::time::second_t timeoutSeconds)
Clear sticky fault: The remote sensor used for fusion has fallen out of sync to the local sensor.
Definition CoreTalonFX.hpp:2762
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorPosOverflow()
Clear sticky fault: The remote sensor position has overflowed.
Definition CoreTalonFX.hpp:2340
ctre::phoenix::StatusCode ClearStickyFault_Hardware(units::time::second_t timeoutSeconds)
Clear sticky fault: Hardware fault occurred.
Definition CoreTalonFX.hpp:2009
ctre::phoenix::StatusCode Apply(const ClosedLoopGeneralConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1634
ctre::phoenix::StatusCode ClearStickyFault_Undervoltage(units::time::second_t timeoutSeconds)
Clear sticky fault: Device supply voltage dropped to near brownout levels.
Definition CoreTalonFX.hpp:2122
ctre::phoenix::StatusCode Apply(const ClosedLoopGeneralConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1648
ctre::phoenix::StatusCode Refresh(CustomParamsConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1556
ctre::phoenix::StatusCode Refresh(SoftwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1436
ctre::phoenix::StatusCode Apply(const MotorOutputConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:794
ctre::phoenix::StatusCode Apply(const Slot2Configs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1814
ctre::phoenix::StatusCode Apply(const MotionMagicConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1528
ctre::phoenix::StatusCode ClearStickyFaults(units::time::second_t timeoutSeconds)
Clear the sticky faults in the device.
Definition CoreTalonFX.hpp:1972
ctre::phoenix::StatusCode ClearStickyFault_UnstableSupplyV(units::time::second_t timeoutSeconds)
Clear sticky fault: Supply Voltage is unstable.
Definition CoreTalonFX.hpp:2438
ctre::phoenix::StatusCode Refresh(AudioConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1376
ctre::phoenix::StatusCode Apply(const VoltageConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:928
ctre::phoenix::StatusCode Refresh(MotorOutputConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:776
ctre::phoenix::StatusCode Refresh(CurrentLimitsConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:823
ctre::phoenix::StatusCode ClearStickyFault_BootDuringEnable()
Clear sticky fault: Device boot while detecting the enable signal.
Definition CoreTalonFX.hpp:2144
ctre::phoenix::StatusCode ClearStickyFault_OverSupplyV()
Clear sticky fault: Supply Voltage has exceeded the maximum voltage rating of device.
Definition CoreTalonFX.hpp:2382
ctre::phoenix::StatusCode Refresh(TalonFXConfiguration &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:715
ctre::phoenix::StatusCode Refresh(DifferentialSensorsConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1063
ctre::phoenix::StatusCode ClearStickyFault_UsingFusedCANcoderWhileUnlicensed()
Clear sticky fault: Using Fused CANcoder feature while unlicensed.
Definition CoreTalonFX.hpp:2858
ctre::phoenix::StatusCode Refresh(TorqueCurrentConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:943
ctre::phoenix::StatusCode ClearStickyFault_BridgeBrownout()
Clear sticky fault: Bridge was disabled most likely due to supply voltage dropping too low.
Definition CoreTalonFX.hpp:2222
ctre::phoenix::StatusCode Apply(const SlotConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1874
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorReset(units::time::second_t timeoutSeconds)
Clear sticky fault: The remote sensor has reset.
Definition CoreTalonFX.hpp:2276
ctre::phoenix::StatusCode ClearStickyFault_UnlicensedFeatureInUse(units::time::second_t timeoutSeconds)
Clear sticky fault: An unlicensed feature is in use, device may not behave as expected.
Definition CoreTalonFX.hpp:2200
ctre::phoenix::StatusCode ClearStickyFault_SupplyCurrLimit()
Clear sticky fault: Supply current limit occured.
Definition CoreTalonFX.hpp:2820
ctre::phoenix::StatusCode ClearStickyFault_UnstableSupplyV()
Clear sticky fault: Supply Voltage is unstable.
Definition CoreTalonFX.hpp:2421
ctre::phoenix::StatusCode Refresh(OpenLoopRampsConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1196
ctre::phoenix::StatusCode Apply(const Slot1Configs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1754
ctre::phoenix::StatusCode Apply(const SoftwareLimitSwitchConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1454
ctre::phoenix::StatusCode Refresh(DifferentialSensorsConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1076
ctre::phoenix::StatusCode ClearStickyFault_MissingDifferentialFX(units::time::second_t timeoutSeconds)
Clear sticky fault: The remote Talon used for differential control is not present on CAN Bus.
Definition CoreTalonFX.hpp:2315
ctre::phoenix::StatusCode ClearStickyFault_ForwardHardLimit()
Clear sticky fault: Forward limit switch has been asserted.
Definition CoreTalonFX.hpp:2499
ctre::phoenix::StatusCode ClearStickyFault_StatorCurrLimit(units::time::second_t timeoutSeconds)
Clear sticky fault: Stator current limit occured.
Definition CoreTalonFX.hpp:2799
ctre::phoenix::StatusCode ClearStickyFault_MissingHardLimitRemote()
Clear sticky fault: The remote limit switch device is not present on CAN Bus.
Definition CoreTalonFX.hpp:2655
ctre::phoenix::StatusCode ClearStickyFault_StatorCurrLimit()
Clear sticky fault: Stator current limit occured.
Definition CoreTalonFX.hpp:2783
ctre::phoenix::StatusCode Apply(const HardwareLimitSwitchConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1334
ctre::phoenix::StatusCode ClearStickyFault_FusedSensorOutOfSync()
Clear sticky fault: The remote sensor used for fusion has fallen out of sync to the local sensor.
Definition CoreTalonFX.hpp:2742
ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp(units::time::second_t timeoutSeconds)
Clear sticky fault: Device temperature exceeded limit.
Definition CoreTalonFX.hpp:2083
ctre::phoenix::StatusCode Apply(const CurrentLimitsConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:868
ctre::phoenix::StatusCode ClearStickyFault_MissingSoftLimitRemote()
Clear sticky fault: The remote soft limit device is not present on CAN Bus.
Definition CoreTalonFX.hpp:2616
ctre::phoenix::StatusCode ClearStickyFault_ReverseHardLimit(units::time::second_t timeoutSeconds)
Clear sticky fault: Reverse limit switch has been asserted.
Definition CoreTalonFX.hpp:2477
ctre::phoenix::StatusCode ClearStickyFault_UsingFusedCANcoderWhileUnlicensed(units::time::second_t timeoutSeconds)
Clear sticky fault: Using Fused CANcoder feature while unlicensed.
Definition CoreTalonFX.hpp:2875
ctre::phoenix::StatusCode Refresh(DifferentialConstantsConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1136
ctre::phoenix::StatusCode ClearStickyFault_BootDuringEnable(units::time::second_t timeoutSeconds)
Clear sticky fault: Device boot while detecting the enable signal.
Definition CoreTalonFX.hpp:2161
ctre::phoenix::StatusCode Apply(const HardwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1348
ctre::phoenix::StatusCode Apply(const VoltageConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:914
ctre::phoenix::StatusCode Apply(const FeedbackConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1034
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorReset()
Clear sticky fault: The remote sensor has reset.
Definition CoreTalonFX.hpp:2260
ctre::phoenix::StatusCode Refresh(DifferentialConstantsConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1123
ctre::phoenix::StatusCode ClearStickyFault_MissingDifferentialFX()
Clear sticky fault: The remote Talon used for differential control is not present on CAN Bus.
Definition CoreTalonFX.hpp:2298
ctre::phoenix::StatusCode Refresh(Slot0Configs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1676
ctre::phoenix::StatusCode Refresh(TalonFXConfiguration &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:701
ctre::phoenix::StatusCode Apply(const TorqueCurrentConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:974
ctre::phoenix::StatusCode Apply(const DifferentialSensorsConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1108
ctre::phoenix::StatusCode ClearStickyFault_MissingSoftLimitRemote(units::time::second_t timeoutSeconds)
Clear sticky fault: The remote soft limit device is not present on CAN Bus.
Definition CoreTalonFX.hpp:2633
ctre::phoenix::StatusCode Refresh(HardwareLimitSwitchConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1316
ctre::phoenix::StatusCode Apply(const MotorOutputConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:808
ctre::phoenix::StatusCode ClearStickyFault_ReverseHardLimit()
Clear sticky fault: Reverse limit switch has been asserted.
Definition CoreTalonFX.hpp:2460
ctre::phoenix::StatusCode Refresh(SlotConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1856
ctre::phoenix::StatusCode Refresh(ClosedLoopRampsConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1243
ctre::phoenix::StatusCode Refresh(MotorOutputConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:763
ctre::phoenix::StatusCode Apply(const OpenLoopRampsConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1228
ctre::phoenix::StatusCode Refresh(MotionMagicConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1496
ctre::phoenix::StatusCode Apply(const FeedbackConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1048
ctre::phoenix::StatusCode Refresh(CurrentLimitsConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:836
ctre::phoenix::StatusCode Apply(const AudioConfigs &configs, units::time::second_t timeoutSeconds)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:1408
ctre::phoenix::StatusCode ClearStickyFault_SupplyCurrLimit(units::time::second_t timeoutSeconds)
Clear sticky fault: Supply current limit occured.
Definition CoreTalonFX.hpp:2836
ctre::phoenix::StatusCode Apply(const CurrentLimitsConfigs &configs)
Applies the contents of the specified config to the device.
Definition CoreTalonFX.hpp:854
ctre::phoenix::StatusCode Refresh(TorqueCurrentConfigs &configs, units::time::second_t timeoutSeconds) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:956
ctre::phoenix::StatusCode Refresh(HardwareLimitSwitchConfigs &configs) const
Refreshes the values of the specified config group.
Definition CoreTalonFX.hpp:1303
ctre::phoenix::StatusCode ClearStickyFault_ForwardHardLimit(units::time::second_t timeoutSeconds)
Clear sticky fault: Forward limit switch has been asserted.
Definition CoreTalonFX.hpp:2516
Configs that affect Torque Current control types.
Definition Configs.hpp:1340
std::string ToString() const override
Definition Configs.hpp:1438
std::string Serialize() const override
Definition Configs.hpp:1448
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:1458
Configs that affect Voltage control types.
Definition Configs.hpp:1190
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:1314
std::string Serialize() const override
Definition Configs.hpp:1304
std::string ToString() const override
Definition Configs.hpp:1294
Request coast neutral output of actuator.
Definition CoastOut.hpp:27
Abstract Control Request class that other control requests extend for use.
Definition ControlRequest.hpp:29
Request a specified motor duty cycle with a differential position closed-loop.
Definition DifferentialDutyCycle.hpp:31
Follow the differential motor output of another Talon.
Definition DifferentialFollower.hpp:30
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicDutyCycle.hpp:35
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicVoltage.hpp:34
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionDutyCycle.hpp:29
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionVoltage.hpp:29
Follow the differential motor output of another Talon while ignoring the master's invert setting.
Definition DifferentialStrictFollower.hpp:32
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityDutyCycle.hpp:30
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityVoltage.hpp:30
Request a specified voltage with a differential position closed-loop.
Definition DifferentialVoltage.hpp:31
Request a specified motor duty cycle.
Definition DutyCycleOut.hpp:28
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicDutyCycle.hpp:42
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicTorqueCurrentFOC.hpp:41
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicVoltage.hpp:41
Follow the motor output of another Talon.
Definition Follower.hpp:30
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicDutyCycle.hpp:36
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoDutyCycle.hpp:39
Requires Phoenix Pro; Requests Motion Magic® to target a final position using an exponential motion p...
Definition MotionMagicExpoTorqueCurrentFOC.hpp:39
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoVoltage.hpp:38
Requires Phoenix Pro; Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicTorqueCurrentFOC.hpp:36
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityDutyCycle.hpp:43
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityTorqueCurrentFOC.hpp:43
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityVoltage.hpp:42
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicVoltage.hpp:35
Plays a single tone at the user specified frequency.
Definition MusicTone.hpp:26
Request neutral output of actuator.
Definition NeutralOut.hpp:27
Request PID to target position with duty cycle feedforward.
Definition PositionDutyCycle.hpp:31
Requires Phoenix Pro; Request PID to target position with torque current feedforward.
Definition PositionTorqueCurrentFOC.hpp:32
Request PID to target position with voltage feedforward.
Definition PositionVoltage.hpp:31
Applies full neutral-brake by shorting motor leads together.
Definition StaticBrake.hpp:26
Follow the motor output of another Talon while ignoring the master's invert setting.
Definition StrictFollower.hpp:32
Requires Phoenix Pro; Request a specified motor current (field oriented control).
Definition TorqueCurrentFOC.hpp:32
Request PID to target velocity with duty cycle feedforward.
Definition VelocityDutyCycle.hpp:31
Requires Phoenix Pro; Request PID to target velocity with torque current feedforward.
Definition VelocityTorqueCurrentFOC.hpp:32
Request PID to target velocity with voltage feedforward.
Definition VelocityVoltage.hpp:31
Request a specified voltage.
Definition VoltageOut.hpp:29
Definition DeviceIdentifier.hpp:19
Parent class for all devices.
Definition ParentDevice.hpp:29
Class description for the Talon FX integrated motor controller.
Definition CoreTalonFX.hpp:2932
StatusSignal< double > & GetDifferentialOutput(bool refresh=true) override
The calculated motor output for differential followers.
ctre::phoenix::StatusCode SetControl(const controls::StrictFollower &request) override
Follow the motor output of another Talon while ignoring the master's invert setting.
StatusSignal< int > & GetVersionBugfix(bool refresh=true) override
App Bugfix Version number.
CoreTalonFX(int deviceId, CANBus canbus)
Constructs a new Talon FX motor controller object.
Definition CoreTalonFX.hpp:2959
StatusSignal< bool > & GetFault_ReverseHardLimit(bool refresh=true) override
Reverse limit switch has been asserted.
StatusSignal< ctre::unit::newton_meters_per_ampere_t > & GetMotorKT(bool refresh=true) override
The torque constant (K_T) of the motor.
ctre::phoenix::StatusCode ClearStickyFault_Hardware(units::time::second_t timeoutSeconds) override
Clear sticky fault: Hardware fault occurred.
Definition CoreTalonFX.hpp:7682
StatusSignal< double > & GetClosedLoopOutput(bool refresh=true) override
Closed loop total output.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_TorqueCurrentFOC_Velocity &request) override
Differential control with torque current average target and velocity difference target.
CoreTalonFX(int deviceId, std::string canbus="")
Constructs a new Talon FX motor controller object.
StatusSignal< int > & GetFaultField(bool refresh=true) override
Integer representing all fault flags reported by the device.
StatusSignal< signals::ConnectedMotorValue > & GetConnectedMotor(bool refresh=true) override
The type of motor attached to the Talon.
ctre::phoenix::StatusCode ClearStickyFault_ReverseSoftLimit(units::time::second_t timeoutSeconds) override
Clear sticky fault: Reverse soft limit has been asserted.
Definition CoreTalonFX.hpp:8017
StatusSignal< bool > & GetStickyFault_BridgeBrownout(bool refresh=true) override
Bridge was disabled most likely due to supply voltage dropping too low.
StatusSignal< int > & GetVersionBuild(bool refresh=true) override
App Build Version number.
StatusSignal< bool > & GetStickyFault_MissingHardLimitRemote(bool refresh=true) override
The remote limit switch device is not present on CAN Bus.
StatusSignal< bool > & GetFault_RemoteSensorDataInvalid(bool refresh=true) override
The remote sensor's data is no longer trusted.
ctre::phoenix::StatusCode ClearStickyFault_SupplyCurrLimit(units::time::second_t timeoutSeconds) override
Clear sticky fault: Supply current limit occured.
Definition CoreTalonFX.hpp:8194
StatusSignal< bool > & GetFault_SupplyCurrLimit(bool refresh=true) override
Supply current limit occured.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Position &request) override
Differential control with Motion Magic® average target and position difference target using dutycycle...
StatusSignal< units::angular_velocity::turns_per_second_t > & GetDifferentialDifferenceVelocity(bool refresh=true) override
Difference component of the differential velocity of device.
StatusSignal< double > & GetClosedLoopDerivativeOutput(bool refresh=true) override
Closed loop derivative component.
StatusSignal< units::current::ampere_t > & GetMotorStallCurrent(bool refresh=true) override
The stall current of the motor at 12 V output.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionTorqueCurrentFOC_Position &request) override
Differential control with position average target and position difference target using torque current...
StatusSignal< bool > & GetFault_UnstableSupplyV(bool refresh=true) override
Supply Voltage is unstable.
ctre::phoenix::StatusCode ClearStickyFault_BootDuringEnable() override
Clear sticky fault: Device boot while detecting the enable signal.
Definition CoreTalonFX.hpp:7785
ctre::phoenix::StatusCode ClearStickyFaults() override
Clear the sticky faults in the device.
Definition CoreTalonFX.hpp:7671
ctre::phoenix::StatusCode SetControl(const controls::DifferentialFollower &request) override
Follow the differential motor output of another Talon.
StatusSignal< units::current::ampere_t > & GetStatorCurrent(bool refresh=true) override
Current corresponding to the stator windings.
ctre::phoenix::StatusCode SetControl(const controls::DifferentialVoltage &request) override
Request a specified voltage with a differential position closed-loop.
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVelocityTorqueCurrentFOC &request) override
Requests Motion Magic® to target a final velocity using a motion profile.
ctre::phoenix::StatusCode SetControl(const controls::PositionVoltage &request) override
Request PID to target position with voltage feedforward.
ctre::phoenix::StatusCode SetControl(const controls::TorqueCurrentFOC &request) override
Request a specified motor current (field oriented control).
StatusSignal< units::temperature::celsius_t > & GetProcessorTemp(bool refresh=true) override
Temperature of the processor.
StatusSignal< int > & GetClosedLoopSlot(bool refresh=true) override
The slot that the closed-loop PID is using.
StatusSignal< bool > & GetStickyFault_DeviceTemp(bool refresh=true) override
Device temperature exceeded limit.
StatusSignal< double > & GetDifferentialClosedLoopFeedForward(bool refresh=true) override
Differential Feedforward passed by the user.
StatusSignal< double > & GetClosedLoopReference(bool refresh=true) override
Value that the closed loop is targeting.
ctre::phoenix::StatusCode ClearStickyFault_SupplyCurrLimit() override
Clear sticky fault: Supply current limit occured.
Definition CoreTalonFX.hpp:8205
ctre::phoenix::StatusCode ClearStickyFault_Undervoltage(units::time::second_t timeoutSeconds) override
Clear sticky fault: Device supply voltage dropped to near brownout levels.
Definition CoreTalonFX.hpp:7749
StatusSignal< units::voltage::volt_t > & GetSupplyVoltage(bool refresh=true) override
Measured supply voltage to the device.
StatusSignal< signals::ForwardLimitValue > & GetForwardLimit(bool refresh=true) override
Forward Limit Pin.
StatusSignal< bool > & GetStickyFault_ProcTemp(bool refresh=true) override
Processor temperature exceeded limit.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Position &request) override
Differential control with Motion Magic® average target and position difference target using voltage c...
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Position &request) override
Differential control with voltage average target and position difference target.
ctre::phoenix::StatusCode ClearStickyFault_MissingHardLimitRemote() override
Clear sticky fault: The remote limit switch device is not present on CAN Bus.
Definition CoreTalonFX.hpp:8101
ctre::phoenix::StatusCode ClearStickyFault_StaticBrakeDisabled() override
Clear sticky fault: Static brake was momentarily disabled due to excessive braking current while disa...
Definition CoreTalonFX.hpp:8253
ctre::phoenix::StatusCode ClearStickyFault_StatorCurrLimit() override
Clear sticky fault: Stator current limit occured.
Definition CoreTalonFX.hpp:8183
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Velocity &request) override
Differential control with position average target and velocity difference target using dutycycle cont...
StatusSignal< int > & GetVersionMajor(bool refresh=true) override
App Major Version number.
ctre::phoenix::StatusCode ClearStickyFault_MissingDifferentialFX(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote Talon used for differential control is not present on CAN Bus.
Definition CoreTalonFX.hpp:7867
StatusSignal< bool > & GetFault_StatorCurrLimit(bool refresh=true) override
Stator current limit occured.
StatusSignal< double > & GetClosedLoopProportionalOutput(bool refresh=true) override
Closed loop proportional component.
ctre::phoenix::StatusCode ClearStickyFault_ReverseHardLimit() override
Clear sticky fault: Reverse limit switch has been asserted.
Definition CoreTalonFX.hpp:7981
ctre::phoenix::StatusCode ClearStickyFault_MissingSoftLimitRemote() override
Clear sticky fault: The remote soft limit device is not present on CAN Bus.
Definition CoreTalonFX.hpp:8077
StatusSignal< bool > & GetStickyFault_SupplyCurrLimit(bool refresh=true) override
Supply current limit occured.
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorDataInvalid() override
Clear sticky fault: The remote sensor's data is no longer trusted.
Definition CoreTalonFX.hpp:8131
ctre::phoenix::StatusCode ClearStickyFault_FusedSensorOutOfSync() override
Clear sticky fault: The remote sensor used for fusion has fallen out of sync to the local sensor.
Definition CoreTalonFX.hpp:8161
StatusSignal< bool > & GetStickyFault_RemoteSensorPosOverflow(bool refresh=true) override
The remote sensor position has overflowed.
ctre::phoenix::StatusCode ClearStickyFault_StatorCurrLimit(units::time::second_t timeoutSeconds) override
Clear sticky fault: Stator current limit occured.
Definition CoreTalonFX.hpp:8172
ctre::phoenix::StatusCode ClearStickyFault_ProcTemp() override
Clear sticky fault: Processor temperature exceeded limit.
Definition CoreTalonFX.hpp:7715
StatusSignal< signals::AppliedRotorPolarityValue > & GetAppliedRotorPolarity(bool refresh=true) override
The applied rotor polarity as seen from the front of the motor.
ctre::phoenix::StatusCode SetControl(const controls::StaticBrake &request) override
Applies full neutral-brake by shorting motor leads together.
ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp() override
Clear sticky fault: Device temperature exceeded limit.
Definition CoreTalonFX.hpp:7737
configs::TalonFXConfigurator const & GetConfigurator() const
Gets the configurator for this TalonFX.
Definition CoreTalonFX.hpp:2982
StatusSignal< bool > & GetStickyFault_FusedSensorOutOfSync(bool refresh=true) override
The remote sensor used for fusion has fallen out of sync to the local sensor.
StatusSignal< bool > & GetFault_ForwardHardLimit(bool refresh=true) override
Forward limit switch has been asserted.
StatusSignal< int > & GetDifferentialClosedLoopSlot(bool refresh=true) override
The slot that the closed-loop differential PID is using.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Velocity &request) override
Differential control with duty cycle average target and velocity difference target.
StatusSignal< units::angle::turn_t > & GetPosition(bool refresh=true) override
Position of the device in mechanism rotations.
ctre::phoenix::StatusCode SetControl(const controls::DifferentialVelocityVoltage &request) override
Request PID to target velocity with a differential position setpoint.
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorPosOverflow(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote sensor position has overflowed.
Definition CoreTalonFX.hpp:7894
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVoltage &request) override
Requests Motion Magic® to target a final position using a motion profile.
StatusSignal< bool > & GetFault_Undervoltage(bool refresh=true) override
Device supply voltage dropped to near brownout levels.
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorDataInvalid(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote sensor's data is no longer trusted.
Definition CoreTalonFX.hpp:8116
StatusSignal< bool > & GetStickyFault_MissingSoftLimitRemote(bool refresh=true) override
The remote soft limit device is not present on CAN Bus.
ctre::phoenix::StatusCode ClearStickyFault_BridgeBrownout() override
Clear sticky fault: Bridge was disabled most likely due to supply voltage dropping too low.
Definition CoreTalonFX.hpp:7833
ctre::phoenix::StatusCode SetControl(const controls::DutyCycleOut &request) override
Request a specified motor duty cycle.
StatusSignal< signals::ReverseLimitValue > & GetReverseLimit(bool refresh=true) override
Reverse Limit Pin.
StatusSignal< bool > & GetFault_UnlicensedFeatureInUse(bool refresh=true) override
An unlicensed feature is in use, device may not behave as expected.
StatusSignal< units::angular_velocity::turns_per_second_t > & GetDifferentialAverageVelocity(bool refresh=true) override
Average component of the differential velocity of device.
StatusSignal< units::angular_velocity::turns_per_second_t > & GetRotorVelocity(bool refresh=true) override
Velocity of the motor rotor.
ctre::phoenix::StatusCode ClearStickyFault_UsingFusedCANcoderWhileUnlicensed() override
Clear sticky fault: Using Fused CANcoder feature while unlicensed.
Definition CoreTalonFX.hpp:8229
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Position &request) override
Differential control with position average target and position difference target using dutycycle cont...
StatusSignal< double > & GetDifferentialClosedLoopProportionalOutput(bool refresh=true) override
Differential closed loop proportional component.
StatusSignal< bool > & GetFault_RemoteSensorPosOverflow(bool refresh=true) override
The remote sensor position has overflowed.
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorPosOverflow() override
Clear sticky fault: The remote sensor position has overflowed.
Definition CoreTalonFX.hpp:7909
ctre::phoenix::StatusCode ClearStickyFault_UnlicensedFeatureInUse(units::time::second_t timeoutSeconds) override
Clear sticky fault: An unlicensed feature is in use, device may not behave as expected.
Definition CoreTalonFX.hpp:7797
StatusSignal< bool > & GetIsProLicensed(bool refresh=true) override
Whether the device is Phoenix Pro licensed.
StatusSignal< bool > & GetStickyFault_Undervoltage(bool refresh=true) override
Device supply voltage dropped to near brownout levels.
StatusSignal< units::angle::turn_t > & GetRotorPosition(bool refresh=true) override
Position of the motor rotor.
ctre::phoenix::StatusCode SetControl(const controls::Follower &request) override
Follow the motor output of another Talon.
ctre::phoenix::StatusCode ClearStickyFault_Undervoltage() override
Clear sticky fault: Device supply voltage dropped to near brownout levels.
Definition CoreTalonFX.hpp:7761
ctre::phoenix::StatusCode ClearStickyFaults(units::time::second_t timeoutSeconds) override
Clear the sticky faults in the device.
Definition CoreTalonFX.hpp:7656
StatusSignal< bool > & GetFault_OverSupplyV(bool refresh=true) override
Supply Voltage has exceeded the maximum voltage rating of device.
StatusSignal< bool > & GetFault_ForwardSoftLimit(bool refresh=true) override
Forward soft limit has been asserted.
ctre::phoenix::StatusCode ClearStickyFault_ForwardSoftLimit(units::time::second_t timeoutSeconds) override
Clear sticky fault: Forward soft limit has been asserted.
Definition CoreTalonFX.hpp:8041
ctre::phoenix::StatusCode SetControl(const controls::DynamicMotionMagicDutyCycle &request) override
Requests Motion Magic® to target a final position using a motion profile.
StatusSignal< bool > & GetFault_MissingHardLimitRemote(bool refresh=true) override
The remote limit switch device is not present on CAN Bus.
StatusSignal< int > & GetStickyFaultField(bool refresh=true) override
Integer representing all (persistent) sticky fault flags reported by the device.
StatusSignal< bool > & GetFault_DeviceTemp(bool refresh=true) override
Device temperature exceeded limit.
StatusSignal< signals::ControlModeValue > & GetControlMode(bool refresh=true) override
The active control mode of the motor controller.
StatusSignal< bool > & GetFault_ProcTemp(bool refresh=true) override
Processor temperature exceeded limit.
StatusSignal< units::angle::turn_t > & GetDifferentialAveragePosition(bool refresh=true) override
Average component of the differential position of device.
StatusSignal< bool > & GetFault_MissingSoftLimitRemote(bool refresh=true) override
The remote soft limit device is not present on CAN Bus.
ctre::phoenix::StatusCode SetControl(const controls::PositionDutyCycle &request) override
Request PID to target position with duty cycle feedforward.
StatusSignal< units::angular_velocity::turns_per_second_t > & GetVelocity(bool refresh=true) override
Velocity of the device in mechanism rotations per second.
StatusSignal< bool > & GetStickyFault_OverSupplyV(bool refresh=true) override
Supply Voltage has exceeded the maximum voltage rating of device.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Position &request) override
Differential control with duty cycle average target and position difference target.
ctre::phoenix::StatusCode SetControl(const controls::DifferentialStrictFollower &request) override
Follow the differential motor output of another Talon while ignoring the master's invert setting.
ctre::phoenix::StatusCode SetControl(const controls::DifferentialPositionVoltage &request) override
Request PID to target position with a differential position setpoint.
StatusSignal< double > & GetClosedLoopFeedForward(bool refresh=true) override
Feedforward passed by the user.
ctre::phoenix::StatusCode ClearStickyFault_OverSupplyV() override
Clear sticky fault: Supply Voltage has exceeded the maximum voltage rating of device.
Definition CoreTalonFX.hpp:7933
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicTorqueCurrentFOC &request) override
Requests Motion Magic® to target a final position using a motion profile.
StatusSignal< bool > & GetStickyFault_UsingFusedCANcoderWhileUnlicensed(bool refresh=true) override
Using Fused CANcoder feature while unlicensed.
StatusSignal< signals::DeviceEnableValue > & GetDeviceEnable(bool refresh=true) override
Indicates if device is actuator enabled.
StatusSignal< bool > & GetStickyFault_ForwardSoftLimit(bool refresh=true) override
Forward soft limit has been asserted.
StatusSignal< double > & GetDifferentialClosedLoopIntegratedOutput(bool refresh=true) override
Differential closed loop integrated component.
ctre::phoenix::StatusCode ClearStickyFault_ProcTemp(units::time::second_t timeoutSeconds) override
Clear sticky fault: Processor temperature exceeded limit.
Definition CoreTalonFX.hpp:7704
StatusSignal< double > & GetDifferentialClosedLoopReference(bool refresh=true) override
Value that the differential closed loop is targeting.
StatusSignal< units::temperature::celsius_t > & GetAncillaryDeviceTemp(bool refresh=true) override
Temperature of device from second sensor.
ctre::phoenix::StatusCode SetControl(const controls::ControlRequest &request) override
Control device with generic control request object.
Definition CoreTalonFX.hpp:7429
ctre::phoenix::StatusCode SetControl(const controls::CoastOut &request) override
Request coast neutral output of actuator.
StatusSignal< signals::MotorOutputStatusValue > & GetMotorOutputStatus(bool refresh=true) override
Assess the status of the motor output with respect to load and supply.
ctre::phoenix::StatusCode SetControl(const controls::VelocityVoltage &request) override
Request PID to target velocity with voltage feedforward.
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicExpoDutyCycle &request) override
Requests Motion Magic® to target a final position using an exponential motion profile.
ctre::phoenix::StatusCode SetControl(const controls::DifferentialMotionMagicDutyCycle &request) override
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
ctre::phoenix::StatusCode ClearStickyFault_FusedSensorOutOfSync(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote sensor used for fusion has fallen out of sync to the local sensor.
Definition CoreTalonFX.hpp:8146
ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp(units::time::second_t timeoutSeconds) override
Clear sticky fault: Device temperature exceeded limit.
Definition CoreTalonFX.hpp:7726
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Velocity &request) override
Differential control with velocity average target and velocity difference target using voltage contro...
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityTorqueCurrentFOC_Velocity &request) override
Differential control with velocity average target and velocity difference target using torque current...
StatusSignal< double > & GetClosedLoopError(bool refresh=true) override
The difference between target reference and current measurement.
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVelocityVoltage &request) override
Requests Motion Magic® to target a final velocity using a motion profile.
ctre::phoenix::StatusCode ClearStickyFault_Hardware() override
Clear sticky fault: Hardware fault occurred.
Definition CoreTalonFX.hpp:7693
StatusSignal< signals::BridgeOutputValue > & GetBridgeOutput(bool refresh=true) override
The applied output of the bridge.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Velocity &request) override
Differential control with voltage average target and velocity difference target.
StatusSignal< bool > & GetFault_StaticBrakeDisabled(bool refresh=true) override
Static brake was momentarily disabled due to excessive braking current while disabled.
StatusSignal< units::angular_acceleration::turns_per_second_squared_t > & GetAcceleration(bool refresh=true) override
Acceleration of the device in mechanism rotations per second².
StatusSignal< double > & GetDifferentialClosedLoopOutput(bool refresh=true) override
Differential closed loop total output.
ctre::phoenix::StatusCode SetControl(const controls::DifferentialPositionDutyCycle &request) override
Request PID to target position with a differential position setpoint.
configs::TalonFXConfigurator & GetConfigurator()
Gets the configurator for this TalonFX.
Definition CoreTalonFX.hpp:2970
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_TorqueCurrentFOC_Position &request) override
Differential control with torque current average target and position difference target.
ctre::phoenix::StatusCode ClearStickyFault_UnstableSupplyV() override
Clear sticky fault: Supply Voltage is unstable.
Definition CoreTalonFX.hpp:7957
StatusSignal< bool > & GetStickyFault_BootDuringEnable(bool refresh=true) override
Device boot while detecting the enable signal.
StatusSignal< bool > & GetFault_Hardware(bool refresh=true) override
Hardware fault occurred.
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorReset() override
Clear sticky fault: The remote sensor has reset.
Definition CoreTalonFX.hpp:7855
StatusSignal< units::current::ampere_t > & GetTorqueCurrent(bool refresh=true) override
Current corresponding to the torque output by the motor.
ctre::phoenix::StatusCode ClearStickyFault_MissingDifferentialFX() override
Clear sticky fault: The remote Talon used for differential control is not present on CAN Bus.
Definition CoreTalonFX.hpp:7879
ctre::phoenix::StatusCode SetControl(const controls::DifferentialDutyCycle &request) override
Request a specified motor duty cycle with a differential position closed-loop.
StatusSignal< bool > & GetFault_BridgeBrownout(bool refresh=true) override
Bridge was disabled most likely due to supply voltage dropping too low.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityTorqueCurrentFOC_Position &request) override
Differential control with velocity average target and position difference target using torque current...
ctre::phoenix::StatusCode ClearStickyFault_MissingSoftLimitRemote(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote soft limit device is not present on CAN Bus.
Definition CoreTalonFX.hpp:8065
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicTorqueCurrentFOC_Position &request) override
Differential control with Motion Magic® average target and position difference target using torque cu...
StatusSignal< bool > & GetStickyFault_UnstableSupplyV(bool refresh=true) override
Supply Voltage is unstable.
StatusSignal< units::temperature::celsius_t > & GetDeviceTemp(bool refresh=true) override
Temperature of device.
ctre::phoenix::StatusCode ClearStickyFault_UsingFusedCANcoderWhileUnlicensed(units::time::second_t timeoutSeconds) override
Clear sticky fault: Using Fused CANcoder feature while unlicensed.
Definition CoreTalonFX.hpp:8217
StatusSignal< bool > & GetStickyFault_RemoteSensorReset(bool refresh=true) override
The remote sensor has reset.
ctre::phoenix::StatusCode ClearStickyFault_ForwardHardLimit() override
Clear sticky fault: Forward limit switch has been asserted.
Definition CoreTalonFX.hpp:8005
ctre::phoenix::StatusCode SetControl(const controls::VelocityTorqueCurrentFOC &request) override
Request PID to target velocity with torque current feedforward.
StatusSignal< ctre::unit::rpm_per_volt_t > & GetMotorKV(bool refresh=true) override
The velocity constant (K_V) of the motor.
StatusSignal< bool > & GetStickyFault_ReverseSoftLimit(bool refresh=true) override
Reverse soft limit has been asserted.
ctre::phoenix::StatusCode SetControl(const controls::DifferentialVelocityDutyCycle &request) override
Request PID to target velocity with a differential position setpoint.
ctre::phoenix::StatusCode ClearStickyFault_ReverseSoftLimit() override
Clear sticky fault: Reverse soft limit has been asserted.
Definition CoreTalonFX.hpp:8029
ctre::phoenix::StatusCode SetControl(const controls::DynamicMotionMagicVoltage &request) override
Requests Motion Magic® to target a final position using a motion profile.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Velocity &request) override
Differential control with Motion Magic® average target and velocity difference target using voltage c...
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Position &request) override
Differential control with position average target and position difference target using voltage contro...
ctre::phoenix::StatusCode SetControl(const controls::DifferentialMotionMagicVoltage &request) override
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Position &request) override
Differential control with velocity average target and position difference target using voltage contro...
ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue, units::time::second_t timeoutSeconds) override
Sets the mechanism position of the device in mechanism rotations.
Definition CoreTalonFX.hpp:7628
StatusSignal< bool > & GetFault_BootDuringEnable(bool refresh=true) override
Device boot while detecting the enable signal.
ctre::phoenix::StatusCode SetControl(const controls::NeutralOut &request) override
Request neutral output of actuator.
StatusSignal< signals::DifferentialControlModeValue > & GetDifferentialControlMode(bool refresh=true) override
The active control mode of the differential controller.
ctre::phoenix::StatusCode ClearStickyFault_StaticBrakeDisabled(units::time::second_t timeoutSeconds) override
Clear sticky fault: Static brake was momentarily disabled due to excessive braking current while disa...
Definition CoreTalonFX.hpp:8241
StatusSignal< units::dimensionless::scalar_t > & GetDutyCycle(bool refresh=true) override
The applied motor duty cycle.
StatusSignal< units::angle::turn_t > & GetDifferentialDifferencePosition(bool refresh=true) override
Difference component of the differential position of device.
ctre::phoenix::StatusCode ClearStickyFault_ForwardHardLimit(units::time::second_t timeoutSeconds) override
Clear sticky fault: Forward limit switch has been asserted.
Definition CoreTalonFX.hpp:7993
ctre::phoenix::StatusCode ClearStickyFault_UnstableSupplyV(units::time::second_t timeoutSeconds) override
Clear sticky fault: Supply Voltage is unstable.
Definition CoreTalonFX.hpp:7945
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicExpoTorqueCurrentFOC &request) override
Requests Motion Magic® to target a final position using an exponential motion profile.
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVelocityDutyCycle &request) override
Requests Motion Magic® to target a final velocity using a motion profile.
ctre::phoenix::StatusCode ClearStickyFault_ForwardSoftLimit() override
Clear sticky fault: Forward soft limit has been asserted.
Definition CoreTalonFX.hpp:8053
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicDutyCycle &request) override
Requests Motion Magic® to target a final position using a motion profile.
ctre::phoenix::StatusCode SetControl(const controls::VoltageOut &request) override
Request a specified voltage.
StatusSignal< int > & GetVersionMinor(bool refresh=true) override
App Minor Version number.
StatusSignal< bool > & GetStickyFault_UnlicensedFeatureInUse(bool refresh=true) override
An unlicensed feature is in use, device may not behave as expected.
ctre::phoenix::StatusCode ClearStickyFault_OverSupplyV(units::time::second_t timeoutSeconds) override
Clear sticky fault: Supply Voltage has exceeded the maximum voltage rating of device.
Definition CoreTalonFX.hpp:7921
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Position &request) override
Differential control with velocity average target and position difference target using dutycycle cont...
ctre::phoenix::StatusCode ClearStickyFault_UnlicensedFeatureInUse() override
Clear sticky fault: An unlicensed feature is in use, device may not behave as expected.
Definition CoreTalonFX.hpp:7809
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionTorqueCurrentFOC_Velocity &request) override
Differential control with position average target and velocity difference target using torque current...
StatusSignal< bool > & GetStickyFault_StaticBrakeDisabled(bool refresh=true) override
Static brake was momentarily disabled due to excessive braking current while disabled.
StatusSignal< double > & GetClosedLoopIntegratedOutput(bool refresh=true) override
Closed loop integrated component.
StatusSignal< bool > & GetFault_ReverseSoftLimit(bool refresh=true) override
Reverse soft limit has been asserted.
ctre::phoenix::StatusCode ClearStickyFault_ReverseHardLimit(units::time::second_t timeoutSeconds) override
Clear sticky fault: Reverse limit switch has been asserted.
Definition CoreTalonFX.hpp:7969
ctre::phoenix::StatusCode ClearStickyFault_MissingHardLimitRemote(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote limit switch device is not present on CAN Bus.
Definition CoreTalonFX.hpp:8089
StatusSignal< bool > & GetFault_UsingFusedCANcoderWhileUnlicensed(bool refresh=true) override
Using Fused CANcoder feature while unlicensed.
StatusSignal< bool > & GetStickyFault_ReverseHardLimit(bool refresh=true) override
Reverse limit switch has been asserted.
StatusSignal< bool > & GetStickyFault_MissingDifferentialFX(bool refresh=true) override
The remote Talon used for differential control is not present on CAN Bus.
StatusSignal< signals::MotionMagicIsRunningValue > & GetMotionMagicIsRunning(bool refresh=true) override
Check if Motion Magic® is running.
ctre::phoenix::StatusCode SetControl(const controls::PositionTorqueCurrentFOC &request) override
Request PID to target position with torque current feedforward.
StatusSignal< bool > & GetStickyFault_Hardware(bool refresh=true) override
Hardware fault occurred.
StatusSignal< bool > & GetStickyFault_RemoteSensorDataInvalid(bool refresh=true) override
The remote sensor's data is no longer trusted.
ctre::phoenix::StatusCode SetControl(const controls::VelocityDutyCycle &request) override
Request PID to target velocity with duty cycle feedforward.
ctre::phoenix::StatusCode SetControl(const controls::DynamicMotionMagicTorqueCurrentFOC &request) override
Requests Motion Magic® to target a final position using a motion profile.
ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue) override
Sets the mechanism position of the device in mechanism rotations.
Definition CoreTalonFX.hpp:7641
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Velocity &request) override
Differential control with velocity average target and velocity difference target using dutycycle cont...
StatusSignal< units::voltage::volt_t > & GetMotorVoltage(bool refresh=true) override
The applied (output) motor voltage.
ctre::phoenix::StatusCode ClearStickyFault_BridgeBrownout(units::time::second_t timeoutSeconds) override
Clear sticky fault: Bridge was disabled most likely due to supply voltage dropping too low.
Definition CoreTalonFX.hpp:7821
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorReset(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote sensor has reset.
Definition CoreTalonFX.hpp:7844
StatusSignal< bool > & GetFault_RemoteSensorReset(bool refresh=true) override
The remote sensor has reset.
StatusSignal< bool > & GetFault_MissingDifferentialFX(bool refresh=true) override
The remote Talon used for differential control is not present on CAN Bus.
ctre::phoenix::StatusCode SetControl(const controls::MotionMagicExpoVoltage &request) override
Requests Motion Magic® to target a final position using an exponential motion profile.
StatusSignal< bool > & GetStickyFault_ForwardHardLimit(bool refresh=true) override
Forward limit switch has been asserted.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Velocity &request) override
Differential control with Motion Magic® average target and velocity difference target using dutycycle...
sim::TalonFXSimState & GetSimState()
Get the simulation state for this device.
Definition CoreTalonFX.hpp:3000
StatusSignal< double > & GetClosedLoopReferenceSlope(bool refresh=true) override
Derivative of the target that the closed loop is targeting.
StatusSignal< bool > & GetStickyFault_StatorCurrLimit(bool refresh=true) override
Stator current limit occured.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Velocity &request) override
Differential control with position average target and velocity difference target using voltage contro...
StatusSignal< double > & GetDifferentialClosedLoopError(bool refresh=true) override
The difference between target differential reference and current measurement.
ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicTorqueCurrentFOC_Velocity &request) override
Differential control with Motion Magic® average target and velocity difference target using torque cu...
StatusSignal< double > & GetDifferentialClosedLoopReferenceSlope(bool refresh=true) override
Derivative of the target that the differential closed loop is targeting.
StatusSignal< double > & GetDifferentialClosedLoopDerivativeOutput(bool refresh=true) override
Differential closed loop derivative component.
ctre::phoenix::StatusCode ClearStickyFault_BootDuringEnable(units::time::second_t timeoutSeconds) override
Clear sticky fault: Device boot while detecting the enable signal.
Definition CoreTalonFX.hpp:7773
ctre::phoenix::StatusCode SetControl(const controls::MusicTone &request) override
Plays a single tone at the user specified frequency.
StatusSignal< bool > & GetFault_FusedSensorOutOfSync(bool refresh=true) override
The remote sensor used for fusion has fallen out of sync to the local sensor.
StatusSignal< units::current::ampere_t > & GetSupplyCurrent(bool refresh=true) override
Measured supply side current.
StatusSignal< int > & GetVersion(bool refresh=true) override
Full Version of firmware in device.
Contains everything common between Talon motor controllers that support FOC (requires Phoenix Pro).
Definition CommonTalonWithFOC.hpp:27
Class to control the state of a simulated hardware::TalonFX.
Definition TalonFXSimState.hpp:33
Status codes reported by APIs, including OK, warnings, and errors.
Definition StatusCodes.h:27
static constexpr int OK
No Error.
Definition StatusCodes.h:34
static constexpr int NotSupported
This is not supported.
Definition StatusCodes.h:652
Definition StatusCodes.h:18
Definition span.hpp:401