CTRE Phoenix 6 C++ 25.2.1
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:
2938
2939 /**
2940 * Constructs a new Talon FX motor controller object.
2941 *
2942 * \param deviceId ID of the device, as configured in Phoenix Tuner.
2943 * \param canbus Name of the CAN bus this device is on. Possible CAN bus strings are:
2944 * - "rio" for the native roboRIO CAN bus
2945 * - CANivore name or serial number
2946 * - SocketCAN interface (non-FRC Linux only)
2947 * - "*" for any CANivore seen by the program
2948 * - empty string (default) to select the default for the system:
2949 * - "rio" on roboRIO
2950 * - "can0" on Linux
2951 * - "*" on Windows
2952 */
2953 CoreTalonFX(int deviceId, std::string canbus = "");
2954
2955 /**
2956 * Constructs a new Talon FX motor controller object.
2957 *
2958 * \param deviceId ID of the device, as configured in Phoenix Tuner.
2959 * \param canbus The CAN bus this device is on.
2960 */
2961 CoreTalonFX(int deviceId, CANBus canbus) :
2962 CoreTalonFX{deviceId, std::string{canbus.GetName()}}
2963 {}
2964
2965 /**
2966 * \brief Gets the configurator for this TalonFX
2967 *
2968 * \details Gets the configurator for this TalonFX
2969 *
2970 * \returns Configurator for this TalonFX
2971 */
2973 {
2974 return _configs;
2975 }
2976
2977 /**
2978 * \brief Gets the configurator for this TalonFX
2979 *
2980 * \details Gets the configurator for this TalonFX
2981 *
2982 * \returns Configurator for this TalonFX
2983 */
2985 {
2986 return _configs;
2987 }
2988
2989
2990private:
2991 std::unique_ptr<sim::TalonFXSimState> _simState{};
2992public:
2993 /**
2994 * \brief Get the simulation state for this device.
2995 *
2996 * \details This function reuses an allocated simulation
2997 * state object, so it is safe to call this function multiple
2998 * times in a robot loop.
2999 *
3000 * \returns Simulation state
3001 */
3003 {
3004 if (_simState == nullptr)
3005 _simState = std::make_unique<sim::TalonFXSimState>(*this);
3006 return *_simState;
3007 }
3008
3009
3010
3011 /**
3012 * \brief App Major Version number.
3013 *
3014 * - Minimum Value: 0
3015 * - Maximum Value: 255
3016 * - Default Value: 0
3017 * - Units:
3018 *
3019 * Default Rates:
3020 * - CAN: 4.0 Hz
3021 *
3022 * This refreshes and returns a cached StatusSignal object.
3023 *
3024 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3025 * \returns VersionMajor Status Signal Object
3026 */
3027 StatusSignal<int> &GetVersionMajor(bool refresh = true) override;
3028
3029 /**
3030 * \brief App Minor Version number.
3031 *
3032 * - Minimum Value: 0
3033 * - Maximum Value: 255
3034 * - Default Value: 0
3035 * - Units:
3036 *
3037 * Default Rates:
3038 * - CAN: 4.0 Hz
3039 *
3040 * This refreshes and returns a cached StatusSignal object.
3041 *
3042 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3043 * \returns VersionMinor Status Signal Object
3044 */
3045 StatusSignal<int> &GetVersionMinor(bool refresh = true) override;
3046
3047 /**
3048 * \brief App Bugfix Version number.
3049 *
3050 * - Minimum Value: 0
3051 * - Maximum Value: 255
3052 * - Default Value: 0
3053 * - Units:
3054 *
3055 * Default Rates:
3056 * - CAN: 4.0 Hz
3057 *
3058 * This refreshes and returns a cached StatusSignal object.
3059 *
3060 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3061 * \returns VersionBugfix Status Signal Object
3062 */
3063 StatusSignal<int> &GetVersionBugfix(bool refresh = true) override;
3064
3065 /**
3066 * \brief App Build Version number.
3067 *
3068 * - Minimum Value: 0
3069 * - Maximum Value: 255
3070 * - Default Value: 0
3071 * - Units:
3072 *
3073 * Default Rates:
3074 * - CAN: 4.0 Hz
3075 *
3076 * This refreshes and returns a cached StatusSignal object.
3077 *
3078 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3079 * \returns VersionBuild Status Signal Object
3080 */
3081 StatusSignal<int> &GetVersionBuild(bool refresh = true) override;
3082
3083 /**
3084 * \brief Full Version of firmware in device. The format is a four
3085 * byte value.
3086 *
3087 * - Minimum Value: 0
3088 * - Maximum Value: 4294967295
3089 * - Default Value: 0
3090 * - Units:
3091 *
3092 * Default Rates:
3093 * - CAN: 4.0 Hz
3094 *
3095 * This refreshes and returns a cached StatusSignal object.
3096 *
3097 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3098 * \returns Version Status Signal Object
3099 */
3100 StatusSignal<int> &GetVersion(bool refresh = true) override;
3101
3102 /**
3103 * \brief Integer representing all fault flags reported by the device.
3104 *
3105 * \details These are device specific and are not used directly in
3106 * typical applications. Use the signal specific GetFault_*() methods
3107 * instead.
3108 *
3109 * - Minimum Value: 0
3110 * - Maximum Value: 4294967295
3111 * - Default Value: 0
3112 * - Units:
3113 *
3114 * Default Rates:
3115 * - CAN: 4.0 Hz
3116 *
3117 * This refreshes and returns a cached StatusSignal object.
3118 *
3119 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3120 * \returns FaultField Status Signal Object
3121 */
3122 StatusSignal<int> &GetFaultField(bool refresh = true) override;
3123
3124 /**
3125 * \brief Integer representing all (persistent) sticky fault flags
3126 * reported by the device.
3127 *
3128 * \details These are device specific and are not used directly in
3129 * typical applications. Use the signal specific GetStickyFault_*()
3130 * methods instead.
3131 *
3132 * - Minimum Value: 0
3133 * - Maximum Value: 4294967295
3134 * - Default Value: 0
3135 * - Units:
3136 *
3137 * Default Rates:
3138 * - CAN: 4.0 Hz
3139 *
3140 * This refreshes and returns a cached StatusSignal object.
3141 *
3142 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3143 * \returns StickyFaultField Status Signal Object
3144 */
3145 StatusSignal<int> &GetStickyFaultField(bool refresh = true) override;
3146
3147 /**
3148 * \brief The applied (output) motor voltage.
3149 *
3150 * - Minimum Value: -40.96
3151 * - Maximum Value: 40.95
3152 * - Default Value: 0
3153 * - Units: V
3154 *
3155 * Default Rates:
3156 * - CAN 2.0: 100.0 Hz
3157 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3158 *
3159 * This refreshes and returns a cached StatusSignal object.
3160 *
3161 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3162 * \returns MotorVoltage Status Signal Object
3163 */
3165
3166 /**
3167 * \brief Forward Limit Pin.
3168 *
3169 *
3170 * Default Rates:
3171 * - CAN 2.0: 100.0 Hz
3172 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3173 *
3174 * This refreshes and returns a cached StatusSignal object.
3175 *
3176 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3177 * \returns ForwardLimit Status Signal Object
3178 */
3180
3181 /**
3182 * \brief Reverse Limit Pin.
3183 *
3184 *
3185 * Default Rates:
3186 * - CAN 2.0: 100.0 Hz
3187 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3188 *
3189 * This refreshes and returns a cached StatusSignal object.
3190 *
3191 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3192 * \returns ReverseLimit Status Signal Object
3193 */
3195
3196 /**
3197 * \brief The applied rotor polarity as seen from the front of the
3198 * motor. This typically is determined by the Inverted config, but
3199 * can be overridden if using Follower features.
3200 *
3201 *
3202 * Default Rates:
3203 * - CAN 2.0: 100.0 Hz
3204 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3205 *
3206 * This refreshes and returns a cached StatusSignal object.
3207 *
3208 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3209 * \returns AppliedRotorPolarity Status Signal Object
3210 */
3212
3213 /**
3214 * \brief The applied motor duty cycle.
3215 *
3216 * - Minimum Value: -2.0
3217 * - Maximum Value: 1.9990234375
3218 * - Default Value: 0
3219 * - Units: fractional
3220 *
3221 * Default Rates:
3222 * - CAN 2.0: 100.0 Hz
3223 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3224 *
3225 * This refreshes and returns a cached StatusSignal object.
3226 *
3227 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3228 * \returns DutyCycle Status Signal Object
3229 */
3231
3232 /**
3233 * \brief Current corresponding to the torque output by the motor.
3234 * Similar to StatorCurrent. Users will likely prefer this current to
3235 * calculate the applied torque to the rotor.
3236 *
3237 * \details Stator current where positive current means torque is
3238 * applied in the forward direction as determined by the Inverted
3239 * setting.
3240 *
3241 * - Minimum Value: -327.68
3242 * - Maximum Value: 327.67
3243 * - Default Value: 0
3244 * - Units: A
3245 *
3246 * Default Rates:
3247 * - CAN 2.0: 100.0 Hz
3248 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3249 *
3250 * This refreshes and returns a cached StatusSignal object.
3251 *
3252 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3253 * \returns TorqueCurrent Status Signal Object
3254 */
3256
3257 /**
3258 * \brief Current corresponding to the stator windings. Similar to
3259 * TorqueCurrent. Users will likely prefer TorqueCurrent over
3260 * StatorCurrent.
3261 *
3262 * \details Stator current where Positive current indicates motoring
3263 * regardless of direction. Negative current indicates regenerative
3264 * braking regardless of direction.
3265 *
3266 * - Minimum Value: -327.68
3267 * - Maximum Value: 327.66
3268 * - Default Value: 0
3269 * - Units: A
3270 *
3271 * Default Rates:
3272 * - CAN 2.0: 4.0 Hz
3273 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3274 *
3275 * This refreshes and returns a cached StatusSignal object.
3276 *
3277 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3278 * \returns StatorCurrent Status Signal Object
3279 */
3281
3282 /**
3283 * \brief Measured supply side current.
3284 *
3285 * - Minimum Value: -327.68
3286 * - Maximum Value: 327.66
3287 * - Default Value: 0
3288 * - Units: A
3289 *
3290 * Default Rates:
3291 * - CAN 2.0: 4.0 Hz
3292 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3293 *
3294 * This refreshes and returns a cached StatusSignal object.
3295 *
3296 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3297 * \returns SupplyCurrent Status Signal Object
3298 */
3300
3301 /**
3302 * \brief Measured supply voltage to the device.
3303 *
3304 * - Minimum Value: 4
3305 * - Maximum Value: 29.575
3306 * - Default Value: 4
3307 * - Units: V
3308 *
3309 * Default Rates:
3310 * - CAN 2.0: 4.0 Hz
3311 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3312 *
3313 * This refreshes and returns a cached StatusSignal object.
3314 *
3315 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3316 * \returns SupplyVoltage Status Signal Object
3317 */
3319
3320 /**
3321 * \brief Temperature of device.
3322 *
3323 * \details This is the temperature that the device measures itself to
3324 * be at. Similar to Processor Temperature.
3325 *
3326 * - Minimum Value: 0.0
3327 * - Maximum Value: 255.0
3328 * - Default Value: 0
3329 * - Units: ℃
3330 *
3331 * Default Rates:
3332 * - CAN 2.0: 4.0 Hz
3333 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3334 *
3335 * This refreshes and returns a cached StatusSignal object.
3336 *
3337 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3338 * \returns DeviceTemp Status Signal Object
3339 */
3341
3342 /**
3343 * \brief Temperature of the processor.
3344 *
3345 * \details This is the temperature that the processor measures itself
3346 * to be at. Similar to Device Temperature.
3347 *
3348 * - Minimum Value: 0.0
3349 * - Maximum Value: 255.0
3350 * - Default Value: 0
3351 * - Units: ℃
3352 *
3353 * Default Rates:
3354 * - CAN 2.0: 4.0 Hz
3355 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3356 *
3357 * This refreshes and returns a cached StatusSignal object.
3358 *
3359 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3360 * \returns ProcessorTemp Status Signal Object
3361 */
3363
3364 /**
3365 * \brief Velocity of the motor rotor. This velocity is not affected
3366 * by any feedback configs.
3367 *
3368 * - Minimum Value: -512.0
3369 * - Maximum Value: 511.998046875
3370 * - Default Value: 0
3371 * - Units: rotations per second
3372 *
3373 * Default Rates:
3374 * - CAN 2.0: 4.0 Hz
3375 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3376 *
3377 * This refreshes and returns a cached StatusSignal object.
3378 *
3379 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3380 * \returns RotorVelocity Status Signal Object
3381 */
3383
3384 /**
3385 * \brief Position of the motor rotor. This position is only affected
3386 * by the RotorOffset config and calls to setPosition.
3387 *
3388 * - Minimum Value: -16384.0
3389 * - Maximum Value: 16383.999755859375
3390 * - Default Value: 0
3391 * - Units: rotations
3392 *
3393 * Default Rates:
3394 * - CAN 2.0: 4.0 Hz
3395 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3396 *
3397 * This refreshes and returns a cached StatusSignal object.
3398 *
3399 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3400 * \returns RotorPosition Status Signal Object
3401 */
3403
3404 /**
3405 * \brief Velocity of the device in mechanism rotations per second.
3406 * This can be the velocity of a remote sensor and is affected by the
3407 * RotorToSensorRatio and SensorToMechanismRatio configs.
3408 *
3409 * - Minimum Value: -512.0
3410 * - Maximum Value: 511.998046875
3411 * - Default Value: 0
3412 * - Units: rotations per second
3413 *
3414 * Default Rates:
3415 * - CAN 2.0: 50.0 Hz
3416 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3417 *
3418 * This refreshes and returns a cached StatusSignal object.
3419 *
3420 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3421 * \returns Velocity Status Signal Object
3422 */
3424
3425 /**
3426 * \brief Position of the device in mechanism rotations. This can be
3427 * the position of a remote sensor and is affected by the
3428 * RotorToSensorRatio and SensorToMechanismRatio configs, as well as
3429 * calls to setPosition.
3430 *
3431 * - Minimum Value: -16384.0
3432 * - Maximum Value: 16383.999755859375
3433 * - Default Value: 0
3434 * - Units: rotations
3435 *
3436 * Default Rates:
3437 * - CAN 2.0: 50.0 Hz
3438 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3439 *
3440 * This refreshes and returns a cached StatusSignal object.
3441 *
3442 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3443 * \returns Position Status Signal Object
3444 */
3445 StatusSignal<units::angle::turn_t> &GetPosition(bool refresh = true) override;
3446
3447 /**
3448 * \brief Acceleration of the device in mechanism rotations per
3449 * second². This can be the acceleration of a remote sensor and is
3450 * affected by the RotorToSensorRatio and SensorToMechanismRatio
3451 * configs.
3452 *
3453 * - Minimum Value: -2048.0
3454 * - Maximum Value: 2047.75
3455 * - Default Value: 0
3456 * - Units: rotations per second²
3457 *
3458 * Default Rates:
3459 * - CAN 2.0: 50.0 Hz
3460 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3461 *
3462 * This refreshes and returns a cached StatusSignal object.
3463 *
3464 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3465 * \returns Acceleration Status Signal Object
3466 */
3468
3469 /**
3470 * \brief The active control mode of the motor controller.
3471 *
3472 *
3473 * Default Rates:
3474 * - CAN 2.0: 4.0 Hz
3475 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3476 *
3477 * This refreshes and returns a cached StatusSignal object.
3478 *
3479 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3480 * \returns ControlMode Status Signal Object
3481 */
3483
3484 /**
3485 * \brief Check if Motion Magic® is running. This is equivalent to
3486 * checking that the reported control mode is a Motion Magic® based
3487 * mode.
3488 *
3489 *
3490 * Default Rates:
3491 * - CAN 2.0: 4.0 Hz
3492 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3493 *
3494 * This refreshes and returns a cached StatusSignal object.
3495 *
3496 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3497 * \returns MotionMagicIsRunning Status Signal Object
3498 */
3500
3501 /**
3502 * \brief Indicates if device is actuator enabled.
3503 *
3504 *
3505 * Default Rates:
3506 * - CAN 2.0: 4.0 Hz
3507 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3508 *
3509 * This refreshes and returns a cached StatusSignal object.
3510 *
3511 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3512 * \returns DeviceEnable Status Signal Object
3513 */
3515
3516 /**
3517 * \brief The slot that the closed-loop PID is using.
3518 *
3519 * - Minimum Value: 0
3520 * - Maximum Value: 2
3521 * - Default Value: 0
3522 * - Units:
3523 *
3524 * Default Rates:
3525 * - CAN 2.0: 4.0 Hz
3526 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3527 *
3528 * This refreshes and returns a cached StatusSignal object.
3529 *
3530 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3531 * \returns ClosedLoopSlot Status Signal Object
3532 */
3533 StatusSignal<int> &GetClosedLoopSlot(bool refresh = true) override;
3534
3535 /**
3536 * \brief Assess the status of the motor output with respect to load
3537 * and supply.
3538 *
3539 * \details This routine can be used to determine the general status
3540 * of motor commutation.
3541 *
3542 *
3543 * Default Rates:
3544 * - CAN 2.0: 4.0 Hz
3545 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3546 *
3547 * This refreshes and returns a cached StatusSignal object.
3548 *
3549 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3550 * \returns MotorOutputStatus Status Signal Object
3551 */
3553
3554 /**
3555 * \brief The active control mode of the differential controller.
3556 *
3557 *
3558 * Default Rates:
3559 * - CAN 2.0: 100.0 Hz
3560 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3561 *
3562 * This refreshes and returns a cached StatusSignal object.
3563 *
3564 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3565 * \returns DifferentialControlMode Status Signal Object
3566 */
3568
3569 /**
3570 * \brief Average component of the differential velocity of device.
3571 *
3572 * - Minimum Value: -512.0
3573 * - Maximum Value: 511.998046875
3574 * - Default Value: 0
3575 * - Units: rotations per second
3576 *
3577 * Default Rates:
3578 * - CAN 2.0: 4.0 Hz
3579 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3580 *
3581 * This refreshes and returns a cached StatusSignal object.
3582 *
3583 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3584 * \returns DifferentialAverageVelocity Status Signal Object
3585 */
3587
3588 /**
3589 * \brief Average component of the differential position of device.
3590 *
3591 * - Minimum Value: -16384.0
3592 * - Maximum Value: 16383.999755859375
3593 * - Default Value: 0
3594 * - Units: rotations
3595 *
3596 * Default Rates:
3597 * - CAN 2.0: 4.0 Hz
3598 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3599 *
3600 * This refreshes and returns a cached StatusSignal object.
3601 *
3602 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3603 * \returns DifferentialAveragePosition Status Signal Object
3604 */
3606
3607 /**
3608 * \brief Difference component of the differential velocity of device.
3609 *
3610 * - Minimum Value: -512.0
3611 * - Maximum Value: 511.998046875
3612 * - Default Value: 0
3613 * - Units: rotations per second
3614 *
3615 * Default Rates:
3616 * - CAN 2.0: 4.0 Hz
3617 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3618 *
3619 * This refreshes and returns a cached StatusSignal object.
3620 *
3621 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3622 * \returns DifferentialDifferenceVelocity Status Signal Object
3623 */
3625
3626 /**
3627 * \brief Difference component of the differential position of device.
3628 *
3629 * - Minimum Value: -16384.0
3630 * - Maximum Value: 16383.999755859375
3631 * - Default Value: 0
3632 * - Units: rotations
3633 *
3634 * Default Rates:
3635 * - CAN 2.0: 4.0 Hz
3636 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3637 *
3638 * This refreshes and returns a cached StatusSignal object.
3639 *
3640 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3641 * \returns DifferentialDifferencePosition Status Signal Object
3642 */
3644
3645 /**
3646 * \brief The slot that the closed-loop differential PID is using.
3647 *
3648 * - Minimum Value: 0
3649 * - Maximum Value: 2
3650 * - Default Value: 0
3651 * - Units:
3652 *
3653 * Default Rates:
3654 * - CAN 2.0: 4.0 Hz
3655 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3656 *
3657 * This refreshes and returns a cached StatusSignal object.
3658 *
3659 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3660 * \returns DifferentialClosedLoopSlot Status Signal Object
3661 */
3662 StatusSignal<int> &GetDifferentialClosedLoopSlot(bool refresh = true) override;
3663
3664 /**
3665 * \brief The torque constant (K_T) of the motor.
3666 *
3667 * - Minimum Value: 0.0
3668 * - Maximum Value: 0.025500000000000002
3669 * - Default Value: 0
3670 * - Units: Nm/A
3671 *
3672 * Default Rates:
3673 * - CAN: 4.0 Hz
3674 *
3675 * This refreshes and returns a cached StatusSignal object.
3676 *
3677 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3678 * \returns MotorKT Status Signal Object
3679 */
3681
3682 /**
3683 * \brief The velocity constant (K_V) of the motor.
3684 *
3685 * - Minimum Value: 0.0
3686 * - Maximum Value: 2047.0
3687 * - Default Value: 0
3688 * - Units: RPM/V
3689 *
3690 * Default Rates:
3691 * - CAN: 4.0 Hz
3692 *
3693 * This refreshes and returns a cached StatusSignal object.
3694 *
3695 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3696 * \returns MotorKV Status Signal Object
3697 */
3699
3700 /**
3701 * \brief The stall current of the motor at 12 V output.
3702 *
3703 * - Minimum Value: 0.0
3704 * - Maximum Value: 1023.0
3705 * - Default Value: 0
3706 * - Units: A
3707 *
3708 * Default Rates:
3709 * - CAN: 4.0 Hz
3710 *
3711 * This refreshes and returns a cached StatusSignal object.
3712 *
3713 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3714 * \returns MotorStallCurrent Status Signal Object
3715 */
3717
3718 /**
3719 * \brief The applied output of the bridge.
3720 *
3721 *
3722 * Default Rates:
3723 * - CAN 2.0: 100.0 Hz
3724 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3725 *
3726 * This refreshes and returns a cached StatusSignal object.
3727 *
3728 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3729 * \returns BridgeOutput Status Signal Object
3730 */
3732
3733 /**
3734 * \brief Whether the device is Phoenix Pro licensed.
3735 *
3736 * - Default Value: False
3737 *
3738 * Default Rates:
3739 * - CAN: 4.0 Hz
3740 *
3741 * This refreshes and returns a cached StatusSignal object.
3742 *
3743 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3744 * \returns IsProLicensed Status Signal Object
3745 */
3746 StatusSignal<bool> &GetIsProLicensed(bool refresh = true) override;
3747
3748 /**
3749 * \brief Temperature of device from second sensor.
3750 *
3751 * \details Newer versions of Talon have multiple temperature
3752 * measurement methods.
3753 *
3754 * - Minimum Value: 0.0
3755 * - Maximum Value: 255.0
3756 * - Default Value: 0
3757 * - Units: ℃
3758 *
3759 * Default Rates:
3760 * - CAN 2.0: 4.0 Hz
3761 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3762 *
3763 * This refreshes and returns a cached StatusSignal object.
3764 *
3765 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3766 * \returns AncillaryDeviceTemp Status Signal Object
3767 */
3769
3770 /**
3771 * \brief The type of motor attached to the Talon.
3772 *
3773 * \details This can be used to determine what motor is attached to
3774 * the Talon FX. Return will be "Unknown" if firmware is too old or
3775 * device is not present.
3776 *
3777 *
3778 * Default Rates:
3779 * - CAN 2.0: 4.0 Hz
3780 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
3781 *
3782 * This refreshes and returns a cached StatusSignal object.
3783 *
3784 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3785 * \returns ConnectedMotor Status Signal Object
3786 */
3788
3789 /**
3790 * \brief Hardware fault occurred
3791 *
3792 * - Default Value: False
3793 *
3794 * Default Rates:
3795 * - CAN: 4.0 Hz
3796 *
3797 * This refreshes and returns a cached StatusSignal object.
3798 *
3799 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3800 * \returns Fault_Hardware Status Signal Object
3801 */
3802 StatusSignal<bool> &GetFault_Hardware(bool refresh = true) override;
3803
3804 /**
3805 * \brief Hardware fault occurred
3806 *
3807 * - Default Value: False
3808 *
3809 * Default Rates:
3810 * - CAN: 4.0 Hz
3811 *
3812 * This refreshes and returns a cached StatusSignal object.
3813 *
3814 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3815 * \returns StickyFault_Hardware Status Signal Object
3816 */
3817 StatusSignal<bool> &GetStickyFault_Hardware(bool refresh = true) override;
3818
3819 /**
3820 * \brief Processor temperature exceeded limit
3821 *
3822 * - Default Value: False
3823 *
3824 * Default Rates:
3825 * - CAN: 4.0 Hz
3826 *
3827 * This refreshes and returns a cached StatusSignal object.
3828 *
3829 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3830 * \returns Fault_ProcTemp Status Signal Object
3831 */
3832 StatusSignal<bool> &GetFault_ProcTemp(bool refresh = true) override;
3833
3834 /**
3835 * \brief Processor temperature exceeded limit
3836 *
3837 * - Default Value: False
3838 *
3839 * Default Rates:
3840 * - CAN: 4.0 Hz
3841 *
3842 * This refreshes and returns a cached StatusSignal object.
3843 *
3844 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3845 * \returns StickyFault_ProcTemp Status Signal Object
3846 */
3847 StatusSignal<bool> &GetStickyFault_ProcTemp(bool refresh = true) override;
3848
3849 /**
3850 * \brief Device temperature exceeded limit
3851 *
3852 * - Default Value: False
3853 *
3854 * Default Rates:
3855 * - CAN: 4.0 Hz
3856 *
3857 * This refreshes and returns a cached StatusSignal object.
3858 *
3859 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3860 * \returns Fault_DeviceTemp Status Signal Object
3861 */
3862 StatusSignal<bool> &GetFault_DeviceTemp(bool refresh = true) override;
3863
3864 /**
3865 * \brief Device temperature exceeded limit
3866 *
3867 * - Default Value: False
3868 *
3869 * Default Rates:
3870 * - CAN: 4.0 Hz
3871 *
3872 * This refreshes and returns a cached StatusSignal object.
3873 *
3874 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3875 * \returns StickyFault_DeviceTemp Status Signal Object
3876 */
3877 StatusSignal<bool> &GetStickyFault_DeviceTemp(bool refresh = true) override;
3878
3879 /**
3880 * \brief Device supply voltage dropped to near brownout levels
3881 *
3882 * - Default Value: False
3883 *
3884 * Default Rates:
3885 * - CAN: 4.0 Hz
3886 *
3887 * This refreshes and returns a cached StatusSignal object.
3888 *
3889 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3890 * \returns Fault_Undervoltage Status Signal Object
3891 */
3892 StatusSignal<bool> &GetFault_Undervoltage(bool refresh = true) override;
3893
3894 /**
3895 * \brief Device supply voltage dropped to near brownout levels
3896 *
3897 * - Default Value: False
3898 *
3899 * Default Rates:
3900 * - CAN: 4.0 Hz
3901 *
3902 * This refreshes and returns a cached StatusSignal object.
3903 *
3904 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3905 * \returns StickyFault_Undervoltage Status Signal Object
3906 */
3907 StatusSignal<bool> &GetStickyFault_Undervoltage(bool refresh = true) override;
3908
3909 /**
3910 * \brief Device boot while detecting the enable signal
3911 *
3912 * - Default Value: False
3913 *
3914 * Default Rates:
3915 * - CAN: 4.0 Hz
3916 *
3917 * This refreshes and returns a cached StatusSignal object.
3918 *
3919 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3920 * \returns Fault_BootDuringEnable Status Signal Object
3921 */
3922 StatusSignal<bool> &GetFault_BootDuringEnable(bool refresh = true) override;
3923
3924 /**
3925 * \brief Device boot while detecting the enable signal
3926 *
3927 * - Default Value: False
3928 *
3929 * Default Rates:
3930 * - CAN: 4.0 Hz
3931 *
3932 * This refreshes and returns a cached StatusSignal object.
3933 *
3934 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3935 * \returns StickyFault_BootDuringEnable Status Signal Object
3936 */
3938
3939 /**
3940 * \brief An unlicensed feature is in use, device may not behave as
3941 * expected.
3942 *
3943 * - Default Value: False
3944 *
3945 * Default Rates:
3946 * - CAN: 4.0 Hz
3947 *
3948 * This refreshes and returns a cached StatusSignal object.
3949 *
3950 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3951 * \returns Fault_UnlicensedFeatureInUse Status Signal Object
3952 */
3954
3955 /**
3956 * \brief An unlicensed feature is in use, device may not behave as
3957 * expected.
3958 *
3959 * - Default Value: False
3960 *
3961 * Default Rates:
3962 * - CAN: 4.0 Hz
3963 *
3964 * This refreshes and returns a cached StatusSignal object.
3965 *
3966 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3967 * \returns StickyFault_UnlicensedFeatureInUse Status Signal Object
3968 */
3970
3971 /**
3972 * \brief Bridge was disabled most likely due to supply voltage
3973 * dropping too low.
3974 *
3975 * - Default Value: False
3976 *
3977 * Default Rates:
3978 * - CAN: 4.0 Hz
3979 *
3980 * This refreshes and returns a cached StatusSignal object.
3981 *
3982 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3983 * \returns Fault_BridgeBrownout Status Signal Object
3984 */
3985 StatusSignal<bool> &GetFault_BridgeBrownout(bool refresh = true) override;
3986
3987 /**
3988 * \brief Bridge was disabled most likely due to supply voltage
3989 * dropping too low.
3990 *
3991 * - Default Value: False
3992 *
3993 * Default Rates:
3994 * - CAN: 4.0 Hz
3995 *
3996 * This refreshes and returns a cached StatusSignal object.
3997 *
3998 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
3999 * \returns StickyFault_BridgeBrownout Status Signal Object
4000 */
4002
4003 /**
4004 * \brief The remote sensor has reset.
4005 *
4006 * - Default Value: False
4007 *
4008 * Default Rates:
4009 * - CAN: 4.0 Hz
4010 *
4011 * This refreshes and returns a cached StatusSignal object.
4012 *
4013 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4014 * \returns Fault_RemoteSensorReset Status Signal Object
4015 */
4016 StatusSignal<bool> &GetFault_RemoteSensorReset(bool refresh = true) override;
4017
4018 /**
4019 * \brief The remote sensor has reset.
4020 *
4021 * - Default Value: False
4022 *
4023 * Default Rates:
4024 * - CAN: 4.0 Hz
4025 *
4026 * This refreshes and returns a cached StatusSignal object.
4027 *
4028 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4029 * \returns StickyFault_RemoteSensorReset Status Signal Object
4030 */
4032
4033 /**
4034 * \brief The remote Talon used for differential control is not
4035 * present on CAN Bus.
4036 *
4037 * - Default Value: False
4038 *
4039 * Default Rates:
4040 * - CAN: 4.0 Hz
4041 *
4042 * This refreshes and returns a cached StatusSignal object.
4043 *
4044 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4045 * \returns Fault_MissingDifferentialFX Status Signal Object
4046 */
4048
4049 /**
4050 * \brief The remote Talon used for differential control is not
4051 * present on CAN Bus.
4052 *
4053 * - Default Value: False
4054 *
4055 * Default Rates:
4056 * - CAN: 4.0 Hz
4057 *
4058 * This refreshes and returns a cached StatusSignal object.
4059 *
4060 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4061 * \returns StickyFault_MissingDifferentialFX Status Signal Object
4062 */
4064
4065 /**
4066 * \brief The remote sensor position has overflowed. Because of the
4067 * nature of remote sensors, it is possible for the remote sensor
4068 * position to overflow beyond what is supported by the status signal
4069 * frame. However, this is rare and cannot occur over the course of an
4070 * FRC match under normal use.
4071 *
4072 * - Default Value: False
4073 *
4074 * Default Rates:
4075 * - CAN: 4.0 Hz
4076 *
4077 * This refreshes and returns a cached StatusSignal object.
4078 *
4079 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4080 * \returns Fault_RemoteSensorPosOverflow Status Signal Object
4081 */
4083
4084 /**
4085 * \brief The remote sensor position has overflowed. Because of the
4086 * nature of remote sensors, it is possible for the remote sensor
4087 * position to overflow beyond what is supported by the status signal
4088 * frame. However, this is rare and cannot occur over the course of an
4089 * FRC match under normal use.
4090 *
4091 * - Default Value: False
4092 *
4093 * Default Rates:
4094 * - CAN: 4.0 Hz
4095 *
4096 * This refreshes and returns a cached StatusSignal object.
4097 *
4098 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4099 * \returns StickyFault_RemoteSensorPosOverflow Status Signal Object
4100 */
4102
4103 /**
4104 * \brief Supply Voltage has exceeded the maximum voltage rating of
4105 * device.
4106 *
4107 * - Default Value: False
4108 *
4109 * Default Rates:
4110 * - CAN: 4.0 Hz
4111 *
4112 * This refreshes and returns a cached StatusSignal object.
4113 *
4114 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4115 * \returns Fault_OverSupplyV Status Signal Object
4116 */
4117 StatusSignal<bool> &GetFault_OverSupplyV(bool refresh = true) override;
4118
4119 /**
4120 * \brief Supply Voltage has exceeded the maximum voltage rating of
4121 * device.
4122 *
4123 * - Default Value: False
4124 *
4125 * Default Rates:
4126 * - CAN: 4.0 Hz
4127 *
4128 * This refreshes and returns a cached StatusSignal object.
4129 *
4130 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4131 * \returns StickyFault_OverSupplyV Status Signal Object
4132 */
4133 StatusSignal<bool> &GetStickyFault_OverSupplyV(bool refresh = true) override;
4134
4135 /**
4136 * \brief Supply Voltage is unstable. Ensure you are using a battery
4137 * and current limited power supply.
4138 *
4139 * - Default Value: False
4140 *
4141 * Default Rates:
4142 * - CAN: 4.0 Hz
4143 *
4144 * This refreshes and returns a cached StatusSignal object.
4145 *
4146 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4147 * \returns Fault_UnstableSupplyV Status Signal Object
4148 */
4149 StatusSignal<bool> &GetFault_UnstableSupplyV(bool refresh = true) override;
4150
4151 /**
4152 * \brief Supply Voltage is unstable. Ensure you are using a battery
4153 * and current limited power supply.
4154 *
4155 * - Default Value: False
4156 *
4157 * Default Rates:
4158 * - CAN: 4.0 Hz
4159 *
4160 * This refreshes and returns a cached StatusSignal object.
4161 *
4162 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4163 * \returns StickyFault_UnstableSupplyV Status Signal Object
4164 */
4166
4167 /**
4168 * \brief Reverse limit switch has been asserted. Output is set to
4169 * neutral.
4170 *
4171 * - Default Value: False
4172 *
4173 * Default Rates:
4174 * - CAN: 4.0 Hz
4175 *
4176 * This refreshes and returns a cached StatusSignal object.
4177 *
4178 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4179 * \returns Fault_ReverseHardLimit Status Signal Object
4180 */
4181 StatusSignal<bool> &GetFault_ReverseHardLimit(bool refresh = true) override;
4182
4183 /**
4184 * \brief Reverse limit switch has been asserted. Output is set to
4185 * neutral.
4186 *
4187 * - Default Value: False
4188 *
4189 * Default Rates:
4190 * - CAN: 4.0 Hz
4191 *
4192 * This refreshes and returns a cached StatusSignal object.
4193 *
4194 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4195 * \returns StickyFault_ReverseHardLimit Status Signal Object
4196 */
4198
4199 /**
4200 * \brief Forward limit switch has been asserted. Output is set to
4201 * neutral.
4202 *
4203 * - Default Value: False
4204 *
4205 * Default Rates:
4206 * - CAN: 4.0 Hz
4207 *
4208 * This refreshes and returns a cached StatusSignal object.
4209 *
4210 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4211 * \returns Fault_ForwardHardLimit Status Signal Object
4212 */
4213 StatusSignal<bool> &GetFault_ForwardHardLimit(bool refresh = true) override;
4214
4215 /**
4216 * \brief Forward limit switch has been asserted. Output is set to
4217 * neutral.
4218 *
4219 * - Default Value: False
4220 *
4221 * Default Rates:
4222 * - CAN: 4.0 Hz
4223 *
4224 * This refreshes and returns a cached StatusSignal object.
4225 *
4226 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4227 * \returns StickyFault_ForwardHardLimit Status Signal Object
4228 */
4230
4231 /**
4232 * \brief Reverse soft limit has been asserted. Output is set to
4233 * neutral.
4234 *
4235 * - Default Value: False
4236 *
4237 * Default Rates:
4238 * - CAN: 4.0 Hz
4239 *
4240 * This refreshes and returns a cached StatusSignal object.
4241 *
4242 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4243 * \returns Fault_ReverseSoftLimit Status Signal Object
4244 */
4245 StatusSignal<bool> &GetFault_ReverseSoftLimit(bool refresh = true) override;
4246
4247 /**
4248 * \brief Reverse soft limit has been asserted. Output is set to
4249 * neutral.
4250 *
4251 * - Default Value: False
4252 *
4253 * Default Rates:
4254 * - CAN: 4.0 Hz
4255 *
4256 * This refreshes and returns a cached StatusSignal object.
4257 *
4258 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4259 * \returns StickyFault_ReverseSoftLimit Status Signal Object
4260 */
4262
4263 /**
4264 * \brief Forward soft limit has been asserted. Output is set to
4265 * neutral.
4266 *
4267 * - Default Value: False
4268 *
4269 * Default Rates:
4270 * - CAN: 4.0 Hz
4271 *
4272 * This refreshes and returns a cached StatusSignal object.
4273 *
4274 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4275 * \returns Fault_ForwardSoftLimit Status Signal Object
4276 */
4277 StatusSignal<bool> &GetFault_ForwardSoftLimit(bool refresh = true) override;
4278
4279 /**
4280 * \brief Forward soft limit has been asserted. Output is set to
4281 * neutral.
4282 *
4283 * - Default Value: False
4284 *
4285 * Default Rates:
4286 * - CAN: 4.0 Hz
4287 *
4288 * This refreshes and returns a cached StatusSignal object.
4289 *
4290 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4291 * \returns StickyFault_ForwardSoftLimit Status Signal Object
4292 */
4294
4295 /**
4296 * \brief The remote soft limit device is not present on CAN Bus.
4297 *
4298 * - Default Value: False
4299 *
4300 * Default Rates:
4301 * - CAN: 4.0 Hz
4302 *
4303 * This refreshes and returns a cached StatusSignal object.
4304 *
4305 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4306 * \returns Fault_MissingSoftLimitRemote Status Signal Object
4307 */
4309
4310 /**
4311 * \brief The remote soft limit device is not present on CAN Bus.
4312 *
4313 * - Default Value: False
4314 *
4315 * Default Rates:
4316 * - CAN: 4.0 Hz
4317 *
4318 * This refreshes and returns a cached StatusSignal object.
4319 *
4320 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4321 * \returns StickyFault_MissingSoftLimitRemote Status Signal Object
4322 */
4324
4325 /**
4326 * \brief The remote limit switch device is not present on CAN Bus.
4327 *
4328 * - Default Value: False
4329 *
4330 * Default Rates:
4331 * - CAN: 4.0 Hz
4332 *
4333 * This refreshes and returns a cached StatusSignal object.
4334 *
4335 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4336 * \returns Fault_MissingHardLimitRemote Status Signal Object
4337 */
4339
4340 /**
4341 * \brief The remote limit switch device is not present on CAN Bus.
4342 *
4343 * - Default Value: False
4344 *
4345 * Default Rates:
4346 * - CAN: 4.0 Hz
4347 *
4348 * This refreshes and returns a cached StatusSignal object.
4349 *
4350 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4351 * \returns StickyFault_MissingHardLimitRemote Status Signal Object
4352 */
4354
4355 /**
4356 * \brief The remote sensor's data is no longer trusted. This can
4357 * happen if the remote sensor disappears from the CAN bus or if the
4358 * remote sensor indicates its data is no longer valid, such as when a
4359 * CANcoder's magnet strength falls into the "red" range.
4360 *
4361 * - Default Value: False
4362 *
4363 * Default Rates:
4364 * - CAN: 4.0 Hz
4365 *
4366 * This refreshes and returns a cached StatusSignal object.
4367 *
4368 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4369 * \returns Fault_RemoteSensorDataInvalid Status Signal Object
4370 */
4372
4373 /**
4374 * \brief The remote sensor's data is no longer trusted. This can
4375 * happen if the remote sensor disappears from the CAN bus or if the
4376 * remote sensor indicates its data is no longer valid, such as when a
4377 * CANcoder's magnet strength falls into the "red" range.
4378 *
4379 * - Default Value: False
4380 *
4381 * Default Rates:
4382 * - CAN: 4.0 Hz
4383 *
4384 * This refreshes and returns a cached StatusSignal object.
4385 *
4386 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4387 * \returns StickyFault_RemoteSensorDataInvalid Status Signal Object
4388 */
4390
4391 /**
4392 * \brief The remote sensor used for fusion has fallen out of sync to
4393 * the local sensor. A re-synchronization has occurred, which may
4394 * cause a discontinuity. This typically happens if there is
4395 * significant slop in the mechanism, or if the RotorToSensorRatio
4396 * configuration parameter is incorrect.
4397 *
4398 * - Default Value: False
4399 *
4400 * Default Rates:
4401 * - CAN: 4.0 Hz
4402 *
4403 * This refreshes and returns a cached StatusSignal object.
4404 *
4405 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4406 * \returns Fault_FusedSensorOutOfSync Status Signal Object
4407 */
4409
4410 /**
4411 * \brief The remote sensor used for fusion has fallen out of sync to
4412 * the local sensor. A re-synchronization has occurred, which may
4413 * cause a discontinuity. This typically happens if there is
4414 * significant slop in the mechanism, or if the RotorToSensorRatio
4415 * configuration parameter is incorrect.
4416 *
4417 * - Default Value: False
4418 *
4419 * Default Rates:
4420 * - CAN: 4.0 Hz
4421 *
4422 * This refreshes and returns a cached StatusSignal object.
4423 *
4424 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4425 * \returns StickyFault_FusedSensorOutOfSync Status Signal Object
4426 */
4428
4429 /**
4430 * \brief Stator current limit occured.
4431 *
4432 * - Default Value: False
4433 *
4434 * Default Rates:
4435 * - CAN: 4.0 Hz
4436 *
4437 * This refreshes and returns a cached StatusSignal object.
4438 *
4439 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4440 * \returns Fault_StatorCurrLimit Status Signal Object
4441 */
4442 StatusSignal<bool> &GetFault_StatorCurrLimit(bool refresh = true) override;
4443
4444 /**
4445 * \brief Stator current limit occured.
4446 *
4447 * - Default Value: False
4448 *
4449 * Default Rates:
4450 * - CAN: 4.0 Hz
4451 *
4452 * This refreshes and returns a cached StatusSignal object.
4453 *
4454 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4455 * \returns StickyFault_StatorCurrLimit Status Signal Object
4456 */
4458
4459 /**
4460 * \brief Supply current limit occured.
4461 *
4462 * - Default Value: False
4463 *
4464 * Default Rates:
4465 * - CAN: 4.0 Hz
4466 *
4467 * This refreshes and returns a cached StatusSignal object.
4468 *
4469 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4470 * \returns Fault_SupplyCurrLimit Status Signal Object
4471 */
4472 StatusSignal<bool> &GetFault_SupplyCurrLimit(bool refresh = true) override;
4473
4474 /**
4475 * \brief Supply current limit occured.
4476 *
4477 * - Default Value: False
4478 *
4479 * Default Rates:
4480 * - CAN: 4.0 Hz
4481 *
4482 * This refreshes and returns a cached StatusSignal object.
4483 *
4484 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4485 * \returns StickyFault_SupplyCurrLimit Status Signal Object
4486 */
4488
4489 /**
4490 * \brief Using Fused CANcoder feature while unlicensed. Device has
4491 * fallen back to remote CANcoder.
4492 *
4493 * - Default Value: False
4494 *
4495 * Default Rates:
4496 * - CAN: 4.0 Hz
4497 *
4498 * This refreshes and returns a cached StatusSignal object.
4499 *
4500 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4501 * \returns Fault_UsingFusedCANcoderWhileUnlicensed Status Signal Object
4502 */
4504
4505 /**
4506 * \brief Using Fused CANcoder feature while unlicensed. Device has
4507 * fallen back to remote CANcoder.
4508 *
4509 * - Default Value: False
4510 *
4511 * Default Rates:
4512 * - CAN: 4.0 Hz
4513 *
4514 * This refreshes and returns a cached StatusSignal object.
4515 *
4516 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4517 * \returns StickyFault_UsingFusedCANcoderWhileUnlicensed Status Signal Object
4518 */
4520
4521 /**
4522 * \brief Static brake was momentarily disabled due to excessive
4523 * braking current while disabled.
4524 *
4525 * - Default Value: False
4526 *
4527 * Default Rates:
4528 * - CAN: 4.0 Hz
4529 *
4530 * This refreshes and returns a cached StatusSignal object.
4531 *
4532 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4533 * \returns Fault_StaticBrakeDisabled Status Signal Object
4534 */
4535 StatusSignal<bool> &GetFault_StaticBrakeDisabled(bool refresh = true) override;
4536
4537 /**
4538 * \brief Static brake was momentarily disabled due to excessive
4539 * braking current while disabled.
4540 *
4541 * - Default Value: False
4542 *
4543 * Default Rates:
4544 * - CAN: 4.0 Hz
4545 *
4546 * This refreshes and returns a cached StatusSignal object.
4547 *
4548 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4549 * \returns StickyFault_StaticBrakeDisabled Status Signal Object
4550 */
4552
4553 /**
4554 * \brief Closed loop proportional component
4555 *
4556 * \details The portion of the closed loop output that is the
4557 * proportional to the error. Alternatively, the p-Contribution of the
4558 * closed loop output.
4559 *
4560 * Default Rates:
4561 * - CAN 2.0: 4.0 Hz
4562 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4563 *
4564 * This refreshes and returns a cached StatusSignal object.
4565 *
4566 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4567 * \returns ClosedLoopProportionalOutput Status Signal object
4568 */
4570
4571 /**
4572 * \brief Closed loop integrated component
4573 *
4574 * \details The portion of the closed loop output that is proportional
4575 * to the integrated error. Alternatively, the i-Contribution of the
4576 * closed loop output.
4577 *
4578 * Default Rates:
4579 * - CAN 2.0: 4.0 Hz
4580 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4581 *
4582 * This refreshes and returns a cached StatusSignal object.
4583 *
4584 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4585 * \returns ClosedLoopIntegratedOutput Status Signal object
4586 */
4588
4589 /**
4590 * \brief Feedforward passed by the user
4591 *
4592 * \details This is the general feedforward that the user provides for
4593 * the closed loop.
4594 *
4595 * Default Rates:
4596 * - CAN 2.0: 4.0 Hz
4597 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4598 *
4599 * This refreshes and returns a cached StatusSignal object.
4600 *
4601 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4602 * \returns ClosedLoopFeedForward Status Signal object
4603 */
4604 StatusSignal<double> &GetClosedLoopFeedForward(bool refresh = true) override;
4605
4606 /**
4607 * \brief Closed loop derivative component
4608 *
4609 * \details The portion of the closed loop output that is the
4610 * proportional to the deriviative the error. Alternatively, the
4611 * d-Contribution of the closed loop output.
4612 *
4613 * Default Rates:
4614 * - CAN 2.0: 4.0 Hz
4615 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4616 *
4617 * This refreshes and returns a cached StatusSignal object.
4618 *
4619 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4620 * \returns ClosedLoopDerivativeOutput Status Signal object
4621 */
4623
4624 /**
4625 * \brief Closed loop total output
4626 *
4627 * \details The total output of the closed loop output.
4628 *
4629 * Default Rates:
4630 * - CAN 2.0: 4.0 Hz
4631 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4632 *
4633 * This refreshes and returns a cached StatusSignal object.
4634 *
4635 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4636 * \returns ClosedLoopOutput Status Signal object
4637 */
4638 StatusSignal<double> &GetClosedLoopOutput(bool refresh = true) override;
4639
4640 /**
4641 * \brief Value that the closed loop is targeting
4642 *
4643 * \details This is the value that the closed loop PID controller
4644 * targets.
4645 *
4646 * Default Rates:
4647 * - CAN 2.0: 4.0 Hz
4648 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4649 *
4650 * This refreshes and returns a cached StatusSignal object.
4651 *
4652 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4653 * \returns ClosedLoopReference Status Signal object
4654 */
4655 StatusSignal<double> &GetClosedLoopReference(bool refresh = true) override;
4656
4657 /**
4658 * \brief Derivative of the target that the closed loop is targeting
4659 *
4660 * \details This is the change in the closed loop reference. This may
4661 * be used in the feed-forward calculation, the derivative-error, or
4662 * in application of the signage for kS. Typically, this represents
4663 * the target velocity during Motion Magic®.
4664 *
4665 * Default Rates:
4666 * - CAN 2.0: 4.0 Hz
4667 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4668 *
4669 * This refreshes and returns a cached StatusSignal object.
4670 *
4671 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4672 * \returns ClosedLoopReferenceSlope Status Signal object
4673 */
4675
4676 /**
4677 * \brief The difference between target reference and current
4678 * measurement
4679 *
4680 * \details This is the value that is treated as the error in the PID
4681 * loop.
4682 *
4683 * Default Rates:
4684 * - CAN 2.0: 4.0 Hz
4685 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4686 *
4687 * This refreshes and returns a cached StatusSignal object.
4688 *
4689 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4690 * \returns ClosedLoopError Status Signal object
4691 */
4692 StatusSignal<double> &GetClosedLoopError(bool refresh = true) override;
4693
4694 /**
4695 * \brief The calculated motor output for differential followers.
4696 *
4697 * \details This is a torque request when using the TorqueCurrentFOC
4698 * control output type, and a duty cycle in all other control types.
4699 *
4700 * Default Rates:
4701 * - CAN 2.0: 100.0 Hz
4702 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4703 *
4704 * This refreshes and returns a cached StatusSignal object.
4705 *
4706 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4707 * \returns DifferentialOutput Status Signal object
4708 */
4709 StatusSignal<double> &GetDifferentialOutput(bool refresh = true) override;
4710
4711 /**
4712 * \brief Differential closed loop proportional component
4713 *
4714 * \details The portion of the differential closed loop output that is
4715 * the proportional to the error. Alternatively, the p-Contribution of
4716 * the closed loop output.
4717 *
4718 * Default Rates:
4719 * - CAN 2.0: 4.0 Hz
4720 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4721 *
4722 * This refreshes and returns a cached StatusSignal object.
4723 *
4724 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4725 * \returns DifferentialClosedLoopProportionalOutput Status Signal object
4726 */
4728
4729 /**
4730 * \brief Differential closed loop integrated component
4731 *
4732 * \details The portion of the differential closed loop output that is
4733 * proportional to the integrated error. Alternatively, the
4734 * i-Contribution of the closed loop output.
4735 *
4736 * Default Rates:
4737 * - CAN 2.0: 100.0 Hz
4738 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4739 *
4740 * This refreshes and returns a cached StatusSignal object.
4741 *
4742 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4743 * \returns DifferentialClosedLoopIntegratedOutput Status Signal object
4744 */
4746
4747 /**
4748 * \brief Differential Feedforward passed by the user
4749 *
4750 * \details This is the general feedforward that the user provides for
4751 * the differential closed loop.
4752 *
4753 * Default Rates:
4754 * - CAN 2.0: 100.0 Hz
4755 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4756 *
4757 * This refreshes and returns a cached StatusSignal object.
4758 *
4759 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4760 * \returns DifferentialClosedLoopFeedForward Status Signal object
4761 */
4763
4764 /**
4765 * \brief Differential closed loop derivative component
4766 *
4767 * \details The portion of the differential closed loop output that is
4768 * the proportional to the deriviative the error. Alternatively, the
4769 * d-Contribution of the closed loop output.
4770 *
4771 * Default Rates:
4772 * - CAN 2.0: 4.0 Hz
4773 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4774 *
4775 * This refreshes and returns a cached StatusSignal object.
4776 *
4777 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4778 * \returns DifferentialClosedLoopDerivativeOutput Status Signal object
4779 */
4781
4782 /**
4783 * \brief Differential closed loop total output
4784 *
4785 * \details The total output of the differential closed loop output.
4786 *
4787 * Default Rates:
4788 * - CAN 2.0: 4.0 Hz
4789 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4790 *
4791 * This refreshes and returns a cached StatusSignal object.
4792 *
4793 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4794 * \returns DifferentialClosedLoopOutput Status Signal object
4795 */
4797
4798 /**
4799 * \brief Value that the differential closed loop is targeting
4800 *
4801 * \details This is the value that the differential closed loop PID
4802 * controller targets.
4803 *
4804 * Default Rates:
4805 * - CAN 2.0: 4.0 Hz
4806 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4807 *
4808 * This refreshes and returns a cached StatusSignal object.
4809 *
4810 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4811 * \returns DifferentialClosedLoopReference Status Signal object
4812 */
4814
4815 /**
4816 * \brief Derivative of the target that the differential closed loop
4817 * is targeting
4818 *
4819 * \details This is the change in the closed loop reference. This may
4820 * be used in the feed-forward calculation, the derivative-error, or
4821 * in application of the signage for kS. Typically, this represents
4822 * the target velocity during Motion Magic®.
4823 *
4824 * Default Rates:
4825 * - CAN 2.0: 4.0 Hz
4826 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4827 *
4828 * This refreshes and returns a cached StatusSignal object.
4829 *
4830 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4831 * \returns DifferentialClosedLoopReferenceSlope Status Signal object
4832 */
4834
4835 /**
4836 * \brief The difference between target differential reference and
4837 * current measurement
4838 *
4839 * \details This is the value that is treated as the error in the
4840 * differential PID loop.
4841 *
4842 * Default Rates:
4843 * - CAN 2.0: 4.0 Hz
4844 * - CAN FD: 100.0 Hz (TimeSynced with Pro)
4845 *
4846 * This refreshes and returns a cached StatusSignal object.
4847 *
4848 * \param refresh Whether to refresh the StatusSignal before returning it; defaults to true
4849 * \returns DifferentialClosedLoopError Status Signal object
4850 */
4852
4853
4854 /**
4855 * \brief Request a specified motor duty cycle.
4856 *
4857 * \details This control mode will output a proportion of the supplied
4858 * voltage which is supplied by the user.
4859 *
4860 * - DutyCycleOut Parameters:
4861 * - Output: Proportion of supply voltage to apply in fractional units between -1
4862 * and +1
4863 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
4864 * increases peak power by ~15%. Set to false to use trapezoidal
4865 * commutation.
4866 *
4867 * FOC improves motor performance by leveraging torque (current)
4868 * control. However, this may be inconvenient for applications that
4869 * require specifying duty cycle or voltage. CTR-Electronics has
4870 * developed a hybrid method that combines the performances gains of
4871 * FOC while still allowing applications to provide duty cycle or
4872 * voltage demand. This not to be confused with simple sinusoidal
4873 * control or phase voltage control which lacks the performance
4874 * gains.
4875 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
4876 * is zero (or within deadband). Set to false to use
4877 * the NeutralMode configuration setting (default).
4878 * This flag exists to provide the fundamental
4879 * behavior of this control when output is zero, which
4880 * is to provide 0V to the motor.
4881 * - LimitForwardMotion: Set to true to force forward limiting. This allows
4882 * users to use other limit switch sensors connected to
4883 * robot controller. This also allows use of active
4884 * sensors that require external power.
4885 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
4886 * users to use other limit switch sensors connected to
4887 * robot controller. This also allows use of active
4888 * sensors that require external power.
4889 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
4890 * LimitForwardMotion and LimitReverseMotion parameters,
4891 * instead allowing motion.
4892 *
4893 * This can be useful on mechanisms such as an
4894 * intake/feeder, where a limit switch stops motion while
4895 * intaking but should be ignored when feeding to a
4896 * shooter.
4897 *
4898 * The hardware limit faults and Forward/ReverseLimit
4899 * signals will still report the values of the limit
4900 * switches regardless of this parameter.
4901 * - UseTimesync: Set to true to delay applying this control request until a
4902 * timesync boundary (requires Phoenix Pro and CANivore). This
4903 * eliminates the impact of nondeterministic network delays in
4904 * exchange for a larger but deterministic control latency.
4905 *
4906 * This requires setting the ControlTimesyncFreqHz config in
4907 * MotorOutputConfigs. Additionally, when this is enabled, the
4908 * UpdateFreqHz of this request should be set to 0 Hz.
4909 *
4910 * \param request Control object to request of the device
4911 * \returns Status Code of the request, 0 is OK
4912 */
4914
4915 /**
4916 * \brief Request a specified motor current (field oriented control).
4917 *
4918 * \details This control request will drive the motor to the requested
4919 * motor (stator) current value. This leverages field oriented
4920 * control (FOC), which means greater peak power than what is
4921 * documented. This scales to torque based on Motor's kT constant.
4922 *
4923 * - TorqueCurrentFOC Parameters:
4924 * - Output: Amount of motor current in Amperes
4925 * - MaxAbsDutyCycle: The maximum absolute motor output that can be applied,
4926 * which effectively limits the velocity. For example, 0.50
4927 * means no more than 50% output in either direction. This is
4928 * useful for preventing the motor from spinning to its
4929 * terminal velocity when there is no external torque applied
4930 * unto the rotor. Note this is absolute maximum, so the
4931 * value should be between zero and one.
4932 * - Deadband: Deadband in Amperes. If torque request is within deadband, the
4933 * bridge output is neutral. If deadband is set to zero then there is
4934 * effectively no deadband. Note if deadband is zero, a free spinning
4935 * motor will spin for quite a while as the firmware attempts to hold
4936 * the motor's bemf. If user expects motor to cease spinning quickly
4937 * with a demand of zero, we recommend a deadband of one Ampere. This
4938 * value will be converted to an integral value of amps.
4939 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
4940 * (or within deadband). Set to false to use the
4941 * NeutralMode configuration setting (default). This
4942 * flag exists to provide the fundamental behavior of
4943 * this control when output is zero, which is to
4944 * provide 0A (zero torque).
4945 * - LimitForwardMotion: Set to true to force forward limiting. This allows
4946 * users to use other limit switch sensors connected to
4947 * robot controller. This also allows use of active
4948 * sensors that require external power.
4949 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
4950 * users to use other limit switch sensors connected to
4951 * robot controller. This also allows use of active
4952 * sensors that require external power.
4953 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
4954 * LimitForwardMotion and LimitReverseMotion parameters,
4955 * instead allowing motion.
4956 *
4957 * This can be useful on mechanisms such as an
4958 * intake/feeder, where a limit switch stops motion while
4959 * intaking but should be ignored when feeding to a
4960 * shooter.
4961 *
4962 * The hardware limit faults and Forward/ReverseLimit
4963 * signals will still report the values of the limit
4964 * switches regardless of this parameter.
4965 * - UseTimesync: Set to true to delay applying this control request until a
4966 * timesync boundary (requires Phoenix Pro and CANivore). This
4967 * eliminates the impact of nondeterministic network delays in
4968 * exchange for a larger but deterministic control latency.
4969 *
4970 * This requires setting the ControlTimesyncFreqHz config in
4971 * MotorOutputConfigs. Additionally, when this is enabled, the
4972 * UpdateFreqHz of this request should be set to 0 Hz.
4973 *
4974 * \param request Control object to request of the device
4975 * \returns Status Code of the request, 0 is OK
4976 */
4978
4979 /**
4980 * \brief Request a specified voltage.
4981 *
4982 * \details This control mode will attempt to apply the specified
4983 * voltage to the motor. If the supply voltage is below the requested
4984 * voltage, the motor controller will output the supply voltage.
4985 *
4986 * - VoltageOut Parameters:
4987 * - Output: Voltage to attempt to drive at
4988 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
4989 * increases peak power by ~15%. Set to false to use trapezoidal
4990 * commutation.
4991 *
4992 * FOC improves motor performance by leveraging torque (current)
4993 * control. However, this may be inconvenient for applications that
4994 * require specifying duty cycle or voltage. CTR-Electronics has
4995 * developed a hybrid method that combines the performances gains of
4996 * FOC while still allowing applications to provide duty cycle or
4997 * voltage demand. This not to be confused with simple sinusoidal
4998 * control or phase voltage control which lacks the performance
4999 * gains.
5000 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5001 * is zero (or within deadband). Set to false to use
5002 * the NeutralMode configuration setting (default).
5003 * This flag exists to provide the fundamental
5004 * behavior of this control when output is zero, which
5005 * is to provide 0V to the motor.
5006 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5007 * users to use other limit switch sensors connected to
5008 * robot controller. This also allows use of active
5009 * sensors that require external power.
5010 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5011 * users to use other limit switch sensors connected to
5012 * robot controller. This also allows use of active
5013 * sensors that require external power.
5014 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5015 * LimitForwardMotion and LimitReverseMotion parameters,
5016 * instead allowing motion.
5017 *
5018 * This can be useful on mechanisms such as an
5019 * intake/feeder, where a limit switch stops motion while
5020 * intaking but should be ignored when feeding to a
5021 * shooter.
5022 *
5023 * The hardware limit faults and Forward/ReverseLimit
5024 * signals will still report the values of the limit
5025 * switches regardless of this parameter.
5026 * - UseTimesync: Set to true to delay applying this control request until a
5027 * timesync boundary (requires Phoenix Pro and CANivore). This
5028 * eliminates the impact of nondeterministic network delays in
5029 * exchange for a larger but deterministic control latency.
5030 *
5031 * This requires setting the ControlTimesyncFreqHz config in
5032 * MotorOutputConfigs. Additionally, when this is enabled, the
5033 * UpdateFreqHz of this request should be set to 0 Hz.
5034 *
5035 * \param request Control object to request of the device
5036 * \returns Status Code of the request, 0 is OK
5037 */
5039
5040 /**
5041 * \brief Request PID to target position with duty cycle feedforward.
5042 *
5043 * \details This control mode will set the motor's position setpoint
5044 * to the position specified by the user. In addition, it will apply
5045 * an additional duty cycle as an arbitrary feedforward value.
5046 *
5047 * - PositionDutyCycle Parameters:
5048 * - Position: Position to drive toward in rotations.
5049 * - Velocity: Velocity to drive toward in rotations per second. This is
5050 * typically used for motion profiles generated by the robot program.
5051 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5052 * increases peak power by ~15%. Set to false to use trapezoidal
5053 * commutation.
5054 *
5055 * FOC improves motor performance by leveraging torque (current)
5056 * control. However, this may be inconvenient for applications that
5057 * require specifying duty cycle or voltage. CTR-Electronics has
5058 * developed a hybrid method that combines the performances gains of
5059 * FOC while still allowing applications to provide duty cycle or
5060 * voltage demand. This not to be confused with simple sinusoidal
5061 * control or phase voltage control which lacks the performance
5062 * gains.
5063 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
5064 * - Slot: Select which gains are applied by selecting the slot. Use the
5065 * configuration api to set the gain values for the selected slot before
5066 * enabling this feature. Slot must be within [0,2].
5067 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5068 * is zero (or within deadband). Set to false to use
5069 * the NeutralMode configuration setting (default).
5070 * This flag exists to provide the fundamental
5071 * behavior of this control when output is zero, which
5072 * is to provide 0V to the motor.
5073 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5074 * users to use other limit switch sensors connected to
5075 * robot controller. This also allows use of active
5076 * sensors that require external power.
5077 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5078 * users to use other limit switch sensors connected to
5079 * robot controller. This also allows use of active
5080 * sensors that require external power.
5081 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5082 * LimitForwardMotion and LimitReverseMotion parameters,
5083 * instead allowing motion.
5084 *
5085 * This can be useful on mechanisms such as an
5086 * intake/feeder, where a limit switch stops motion while
5087 * intaking but should be ignored when feeding to a
5088 * shooter.
5089 *
5090 * The hardware limit faults and Forward/ReverseLimit
5091 * signals will still report the values of the limit
5092 * switches regardless of this parameter.
5093 * - UseTimesync: Set to true to delay applying this control request until a
5094 * timesync boundary (requires Phoenix Pro and CANivore). This
5095 * eliminates the impact of nondeterministic network delays in
5096 * exchange for a larger but deterministic control latency.
5097 *
5098 * This requires setting the ControlTimesyncFreqHz config in
5099 * MotorOutputConfigs. Additionally, when this is enabled, the
5100 * UpdateFreqHz of this request should be set to 0 Hz.
5101 *
5102 * \param request Control object to request of the device
5103 * \returns Status Code of the request, 0 is OK
5104 */
5106
5107 /**
5108 * \brief Request PID to target position with voltage feedforward
5109 *
5110 * \details This control mode will set the motor's position setpoint
5111 * to the position specified by the user. In addition, it will apply
5112 * an additional voltage as an arbitrary feedforward value.
5113 *
5114 * - PositionVoltage Parameters:
5115 * - Position: Position to drive toward in rotations.
5116 * - Velocity: Velocity to drive toward in rotations per second. This is
5117 * typically used for motion profiles generated by the robot program.
5118 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5119 * increases peak power by ~15%. Set to false to use trapezoidal
5120 * commutation.
5121 *
5122 * FOC improves motor performance by leveraging torque (current)
5123 * control. However, this may be inconvenient for applications that
5124 * require specifying duty cycle or voltage. CTR-Electronics has
5125 * developed a hybrid method that combines the performances gains of
5126 * FOC while still allowing applications to provide duty cycle or
5127 * voltage demand. This not to be confused with simple sinusoidal
5128 * control or phase voltage control which lacks the performance
5129 * gains.
5130 * - FeedForward: Feedforward to apply in volts
5131 * - Slot: Select which gains are applied by selecting the slot. Use the
5132 * configuration api to set the gain values for the selected slot before
5133 * enabling this feature. Slot must be within [0,2].
5134 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5135 * is zero (or within deadband). Set to false to use
5136 * the NeutralMode configuration setting (default).
5137 * This flag exists to provide the fundamental
5138 * behavior of this control when output is zero, which
5139 * is to provide 0V to the motor.
5140 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5141 * users to use other limit switch sensors connected to
5142 * robot controller. This also allows use of active
5143 * sensors that require external power.
5144 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5145 * users to use other limit switch sensors connected to
5146 * robot controller. This also allows use of active
5147 * sensors that require external power.
5148 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5149 * LimitForwardMotion and LimitReverseMotion parameters,
5150 * instead allowing motion.
5151 *
5152 * This can be useful on mechanisms such as an
5153 * intake/feeder, where a limit switch stops motion while
5154 * intaking but should be ignored when feeding to a
5155 * shooter.
5156 *
5157 * The hardware limit faults and Forward/ReverseLimit
5158 * signals will still report the values of the limit
5159 * switches regardless of this parameter.
5160 * - UseTimesync: Set to true to delay applying this control request until a
5161 * timesync boundary (requires Phoenix Pro and CANivore). This
5162 * eliminates the impact of nondeterministic network delays in
5163 * exchange for a larger but deterministic control latency.
5164 *
5165 * This requires setting the ControlTimesyncFreqHz config in
5166 * MotorOutputConfigs. Additionally, when this is enabled, the
5167 * UpdateFreqHz of this request should be set to 0 Hz.
5168 *
5169 * \param request Control object to request of the device
5170 * \returns Status Code of the request, 0 is OK
5171 */
5173
5174 /**
5175 * \brief Request PID to target position with torque current
5176 * feedforward.
5177 *
5178 * \details This control mode will set the motor's position setpoint
5179 * to the position specified by the user. In addition, it will apply
5180 * an additional torque current as an arbitrary feedforward value.
5181 *
5182 * - PositionTorqueCurrentFOC Parameters:
5183 * - Position: Position to drive toward in rotations.
5184 * - Velocity: Velocity to drive toward in rotations per second. This is
5185 * typically used for motion profiles generated by the robot program.
5186 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
5187 * use motor's kT to scale Newton-meter to Amperes.
5188 * - Slot: Select which gains are applied by selecting the slot. Use the
5189 * configuration api to set the gain values for the selected slot before
5190 * enabling this feature. Slot must be within [0,2].
5191 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
5192 * (or within deadband). Set to false to use the
5193 * NeutralMode configuration setting (default). This
5194 * flag exists to provide the fundamental behavior of
5195 * this control when output is zero, which is to
5196 * provide 0A (zero torque).
5197 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5198 * users to use other limit switch sensors connected to
5199 * robot controller. This also allows use of active
5200 * sensors that require external power.
5201 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5202 * users to use other limit switch sensors connected to
5203 * robot controller. This also allows use of active
5204 * sensors that require external power.
5205 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5206 * LimitForwardMotion and LimitReverseMotion parameters,
5207 * instead allowing motion.
5208 *
5209 * This can be useful on mechanisms such as an
5210 * intake/feeder, where a limit switch stops motion while
5211 * intaking but should be ignored when feeding to a
5212 * shooter.
5213 *
5214 * The hardware limit faults and Forward/ReverseLimit
5215 * signals will still report the values of the limit
5216 * switches regardless of this parameter.
5217 * - UseTimesync: Set to true to delay applying this control request until a
5218 * timesync boundary (requires Phoenix Pro and CANivore). This
5219 * eliminates the impact of nondeterministic network delays in
5220 * exchange for a larger but deterministic control latency.
5221 *
5222 * This requires setting the ControlTimesyncFreqHz config in
5223 * MotorOutputConfigs. Additionally, when this is enabled, the
5224 * UpdateFreqHz of this request should be set to 0 Hz.
5225 *
5226 * \param request Control object to request of the device
5227 * \returns Status Code of the request, 0 is OK
5228 */
5230
5231 /**
5232 * \brief Request PID to target velocity with duty cycle feedforward.
5233 *
5234 * \details This control mode will set the motor's velocity setpoint
5235 * to the velocity specified by the user. In addition, it will apply
5236 * an additional voltage as an arbitrary feedforward value.
5237 *
5238 * - VelocityDutyCycle Parameters:
5239 * - Velocity: Velocity to drive toward in rotations per second.
5240 * - Acceleration: Acceleration to drive toward in rotations per second squared.
5241 * This is typically used for motion profiles generated by the
5242 * robot program.
5243 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5244 * increases peak power by ~15%. Set to false to use trapezoidal
5245 * commutation.
5246 *
5247 * FOC improves motor performance by leveraging torque (current)
5248 * control. However, this may be inconvenient for applications that
5249 * require specifying duty cycle or voltage. CTR-Electronics has
5250 * developed a hybrid method that combines the performances gains of
5251 * FOC while still allowing applications to provide duty cycle or
5252 * voltage demand. This not to be confused with simple sinusoidal
5253 * control or phase voltage control which lacks the performance
5254 * gains.
5255 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
5256 * - Slot: Select which gains are applied by selecting the slot. Use the
5257 * configuration api to set the gain values for the selected slot before
5258 * enabling this feature. Slot must be within [0,2].
5259 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5260 * is zero (or within deadband). Set to false to use
5261 * the NeutralMode configuration setting (default).
5262 * This flag exists to provide the fundamental
5263 * behavior of this control when output is zero, which
5264 * is to provide 0V to the motor.
5265 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5266 * users to use other limit switch sensors connected to
5267 * robot controller. This also allows use of active
5268 * sensors that require external power.
5269 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5270 * users to use other limit switch sensors connected to
5271 * robot controller. This also allows use of active
5272 * sensors that require external power.
5273 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5274 * LimitForwardMotion and LimitReverseMotion parameters,
5275 * instead allowing motion.
5276 *
5277 * This can be useful on mechanisms such as an
5278 * intake/feeder, where a limit switch stops motion while
5279 * intaking but should be ignored when feeding to a
5280 * shooter.
5281 *
5282 * The hardware limit faults and Forward/ReverseLimit
5283 * signals will still report the values of the limit
5284 * switches regardless of this parameter.
5285 * - UseTimesync: Set to true to delay applying this control request until a
5286 * timesync boundary (requires Phoenix Pro and CANivore). This
5287 * eliminates the impact of nondeterministic network delays in
5288 * exchange for a larger but deterministic control latency.
5289 *
5290 * This requires setting the ControlTimesyncFreqHz config in
5291 * MotorOutputConfigs. Additionally, when this is enabled, the
5292 * UpdateFreqHz of this request should be set to 0 Hz.
5293 *
5294 * \param request Control object to request of the device
5295 * \returns Status Code of the request, 0 is OK
5296 */
5298
5299 /**
5300 * \brief Request PID to target velocity with voltage feedforward.
5301 *
5302 * \details This control mode will set the motor's velocity setpoint
5303 * to the velocity specified by the user. In addition, it will apply
5304 * an additional voltage as an arbitrary feedforward value.
5305 *
5306 * - VelocityVoltage Parameters:
5307 * - Velocity: Velocity to drive toward in rotations per second.
5308 * - Acceleration: Acceleration to drive toward in rotations per second squared.
5309 * This is typically used for motion profiles generated by the
5310 * robot program.
5311 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5312 * increases peak power by ~15%. Set to false to use trapezoidal
5313 * commutation.
5314 *
5315 * FOC improves motor performance by leveraging torque (current)
5316 * control. However, this may be inconvenient for applications that
5317 * require specifying duty cycle or voltage. CTR-Electronics has
5318 * developed a hybrid method that combines the performances gains of
5319 * FOC while still allowing applications to provide duty cycle or
5320 * voltage demand. This not to be confused with simple sinusoidal
5321 * control or phase voltage control which lacks the performance
5322 * gains.
5323 * - FeedForward: Feedforward to apply in volts
5324 * - Slot: Select which gains are applied by selecting the slot. Use the
5325 * configuration api to set the gain values for the selected slot before
5326 * enabling this feature. Slot must be within [0,2].
5327 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5328 * is zero (or within deadband). Set to false to use
5329 * the NeutralMode configuration setting (default).
5330 * This flag exists to provide the fundamental
5331 * behavior of this control when output is zero, which
5332 * is to provide 0V to the motor.
5333 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5334 * users to use other limit switch sensors connected to
5335 * robot controller. This also allows use of active
5336 * sensors that require external power.
5337 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5338 * users to use other limit switch sensors connected to
5339 * robot controller. This also allows use of active
5340 * sensors that require external power.
5341 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5342 * LimitForwardMotion and LimitReverseMotion parameters,
5343 * instead allowing motion.
5344 *
5345 * This can be useful on mechanisms such as an
5346 * intake/feeder, where a limit switch stops motion while
5347 * intaking but should be ignored when feeding to a
5348 * shooter.
5349 *
5350 * The hardware limit faults and Forward/ReverseLimit
5351 * signals will still report the values of the limit
5352 * switches regardless of this parameter.
5353 * - UseTimesync: Set to true to delay applying this control request until a
5354 * timesync boundary (requires Phoenix Pro and CANivore). This
5355 * eliminates the impact of nondeterministic network delays in
5356 * exchange for a larger but deterministic control latency.
5357 *
5358 * This requires setting the ControlTimesyncFreqHz config in
5359 * MotorOutputConfigs. Additionally, when this is enabled, the
5360 * UpdateFreqHz of this request should be set to 0 Hz.
5361 *
5362 * \param request Control object to request of the device
5363 * \returns Status Code of the request, 0 is OK
5364 */
5366
5367 /**
5368 * \brief Request PID to target velocity with torque current
5369 * feedforward.
5370 *
5371 * \details This control mode will set the motor's velocity setpoint
5372 * to the velocity specified by the user. In addition, it will apply
5373 * an additional torque current as an arbitrary feedforward value.
5374 *
5375 * - VelocityTorqueCurrentFOC Parameters:
5376 * - Velocity: Velocity to drive toward in rotations per second.
5377 * - Acceleration: Acceleration to drive toward in rotations per second squared.
5378 * This is typically used for motion profiles generated by the
5379 * robot program.
5380 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
5381 * use motor's kT to scale Newton-meter to Amperes.
5382 * - Slot: Select which gains are applied by selecting the slot. Use the
5383 * configuration api to set the gain values for the selected slot before
5384 * enabling this feature. Slot must be within [0,2].
5385 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
5386 * (or within deadband). Set to false to use the
5387 * NeutralMode configuration setting (default). This
5388 * flag exists to provide the fundamental behavior of
5389 * this control when output is zero, which is to
5390 * provide 0A (zero torque).
5391 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5392 * users to use other limit switch sensors connected to
5393 * robot controller. This also allows use of active
5394 * sensors that require external power.
5395 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5396 * users to use other limit switch sensors connected to
5397 * robot controller. This also allows use of active
5398 * sensors that require external power.
5399 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5400 * LimitForwardMotion and LimitReverseMotion parameters,
5401 * instead allowing motion.
5402 *
5403 * This can be useful on mechanisms such as an
5404 * intake/feeder, where a limit switch stops motion while
5405 * intaking but should be ignored when feeding to a
5406 * shooter.
5407 *
5408 * The hardware limit faults and Forward/ReverseLimit
5409 * signals will still report the values of the limit
5410 * switches regardless of this parameter.
5411 * - UseTimesync: Set to true to delay applying this control request until a
5412 * timesync boundary (requires Phoenix Pro and CANivore). This
5413 * eliminates the impact of nondeterministic network delays in
5414 * exchange for a larger but deterministic control latency.
5415 *
5416 * This requires setting the ControlTimesyncFreqHz config in
5417 * MotorOutputConfigs. Additionally, when this is enabled, the
5418 * UpdateFreqHz of this request should be set to 0 Hz.
5419 *
5420 * \param request Control object to request of the device
5421 * \returns Status Code of the request, 0 is OK
5422 */
5424
5425 /**
5426 * \brief Requests Motion Magic® to target a final position using a
5427 * motion profile. Users can optionally provide a duty cycle
5428 * feedforward.
5429 *
5430 * \details Motion Magic® produces a motion profile in real-time while
5431 * attempting to honor the Cruise Velocity, Acceleration, and
5432 * (optional) Jerk specified via the Motion Magic® configuration
5433 * values. This control mode does not use the Expo_kV or Expo_kA
5434 * configs.
5435 *
5436 * Target position can be changed on-the-fly and Motion Magic® will do
5437 * its best to adjust the profile. This control mode is duty cycle
5438 * based, so relevant closed-loop gains will use fractional duty cycle
5439 * for the numerator: +1.0 represents full forward output.
5440 *
5441 * - MotionMagicDutyCycle Parameters:
5442 * - Position: Position to drive toward in rotations.
5443 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5444 * increases peak power by ~15%. Set to false to use trapezoidal
5445 * commutation.
5446 *
5447 * FOC improves motor performance by leveraging torque (current)
5448 * control. However, this may be inconvenient for applications that
5449 * require specifying duty cycle or voltage. CTR-Electronics has
5450 * developed a hybrid method that combines the performances gains of
5451 * FOC while still allowing applications to provide duty cycle or
5452 * voltage demand. This not to be confused with simple sinusoidal
5453 * control or phase voltage control which lacks the performance
5454 * gains.
5455 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
5456 * - Slot: Select which gains are applied by selecting the slot. Use the
5457 * configuration api to set the gain values for the selected slot before
5458 * enabling this feature. Slot must be within [0,2].
5459 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5460 * is zero (or within deadband). Set to false to use
5461 * the NeutralMode configuration setting (default).
5462 * This flag exists to provide the fundamental
5463 * behavior of this control when output is zero, which
5464 * is to provide 0V to the motor.
5465 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5466 * users to use other limit switch sensors connected to
5467 * robot controller. This also allows use of active
5468 * sensors that require external power.
5469 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5470 * users to use other limit switch sensors connected to
5471 * robot controller. This also allows use of active
5472 * sensors that require external power.
5473 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5474 * LimitForwardMotion and LimitReverseMotion parameters,
5475 * instead allowing motion.
5476 *
5477 * This can be useful on mechanisms such as an
5478 * intake/feeder, where a limit switch stops motion while
5479 * intaking but should be ignored when feeding to a
5480 * shooter.
5481 *
5482 * The hardware limit faults and Forward/ReverseLimit
5483 * signals will still report the values of the limit
5484 * switches regardless of this parameter.
5485 * - UseTimesync: Set to true to delay applying this control request until a
5486 * timesync boundary (requires Phoenix Pro and CANivore). This
5487 * eliminates the impact of nondeterministic network delays in
5488 * exchange for a larger but deterministic control latency.
5489 *
5490 * This requires setting the ControlTimesyncFreqHz config in
5491 * MotorOutputConfigs. Additionally, when this is enabled, the
5492 * UpdateFreqHz of this request should be set to 0 Hz.
5493 *
5494 * \param request Control object to request of the device
5495 * \returns Status Code of the request, 0 is OK
5496 */
5498
5499 /**
5500 * \brief Requests Motion Magic® to target a final position using a
5501 * motion profile. Users can optionally provide a voltage
5502 * feedforward.
5503 *
5504 * \details Motion Magic® produces a motion profile in real-time while
5505 * attempting to honor the Cruise Velocity, Acceleration, and
5506 * (optional) Jerk specified via the Motion Magic® configuration
5507 * values. This control mode does not use the Expo_kV or Expo_kA
5508 * configs.
5509 *
5510 * Target position can be changed on-the-fly and Motion Magic® will do
5511 * its best to adjust the profile. This control mode is
5512 * voltage-based, so relevant closed-loop gains will use Volts for the
5513 * numerator.
5514 *
5515 * - MotionMagicVoltage Parameters:
5516 * - Position: Position to drive toward in rotations.
5517 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5518 * increases peak power by ~15%. Set to false to use trapezoidal
5519 * commutation.
5520 *
5521 * FOC improves motor performance by leveraging torque (current)
5522 * control. However, this may be inconvenient for applications that
5523 * require specifying duty cycle or voltage. CTR-Electronics has
5524 * developed a hybrid method that combines the performances gains of
5525 * FOC while still allowing applications to provide duty cycle or
5526 * voltage demand. This not to be confused with simple sinusoidal
5527 * control or phase voltage control which lacks the performance
5528 * gains.
5529 * - FeedForward: Feedforward to apply in volts
5530 * - Slot: Select which gains are applied by selecting the slot. Use the
5531 * configuration api to set the gain values for the selected slot before
5532 * enabling this feature. Slot must be within [0,2].
5533 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5534 * is zero (or within deadband). Set to false to use
5535 * the NeutralMode configuration setting (default).
5536 * This flag exists to provide the fundamental
5537 * behavior of this control when output is zero, which
5538 * is to provide 0V to the motor.
5539 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5540 * users to use other limit switch sensors connected to
5541 * robot controller. This also allows use of active
5542 * sensors that require external power.
5543 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5544 * users to use other limit switch sensors connected to
5545 * robot controller. This also allows use of active
5546 * sensors that require external power.
5547 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5548 * LimitForwardMotion and LimitReverseMotion parameters,
5549 * instead allowing motion.
5550 *
5551 * This can be useful on mechanisms such as an
5552 * intake/feeder, where a limit switch stops motion while
5553 * intaking but should be ignored when feeding to a
5554 * shooter.
5555 *
5556 * The hardware limit faults and Forward/ReverseLimit
5557 * signals will still report the values of the limit
5558 * switches regardless of this parameter.
5559 * - UseTimesync: Set to true to delay applying this control request until a
5560 * timesync boundary (requires Phoenix Pro and CANivore). This
5561 * eliminates the impact of nondeterministic network delays in
5562 * exchange for a larger but deterministic control latency.
5563 *
5564 * This requires setting the ControlTimesyncFreqHz config in
5565 * MotorOutputConfigs. Additionally, when this is enabled, the
5566 * UpdateFreqHz of this request should be set to 0 Hz.
5567 *
5568 * \param request Control object to request of the device
5569 * \returns Status Code of the request, 0 is OK
5570 */
5572
5573 /**
5574 * \brief Requests Motion Magic® to target a final position using a
5575 * motion profile. Users can optionally provide a torque current
5576 * feedforward.
5577 *
5578 * \details Motion Magic® produces a motion profile in real-time while
5579 * attempting to honor the Cruise Velocity, Acceleration, and
5580 * (optional) Jerk specified via the Motion Magic® configuration
5581 * values. This control mode does not use the Expo_kV or Expo_kA
5582 * configs.
5583 *
5584 * Target position can be changed on-the-fly and Motion Magic® will do
5585 * its best to adjust the profile. This control mode is based on
5586 * torque current, so relevant closed-loop gains will use Amperes for
5587 * the numerator.
5588 *
5589 * - MotionMagicTorqueCurrentFOC Parameters:
5590 * - Position: Position to drive toward in rotations.
5591 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
5592 * use motor's kT to scale Newton-meter to Amperes.
5593 * - Slot: Select which gains are applied by selecting the slot. Use the
5594 * configuration api to set the gain values for the selected slot before
5595 * enabling this feature. Slot must be within [0,2].
5596 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
5597 * (or within deadband). Set to false to use the
5598 * NeutralMode configuration setting (default). This
5599 * flag exists to provide the fundamental behavior of
5600 * this control when output is zero, which is to
5601 * provide 0A (zero torque).
5602 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5603 * users to use other limit switch sensors connected to
5604 * robot controller. This also allows use of active
5605 * sensors that require external power.
5606 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5607 * users to use other limit switch sensors connected to
5608 * robot controller. This also allows use of active
5609 * sensors that require external power.
5610 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5611 * LimitForwardMotion and LimitReverseMotion parameters,
5612 * instead allowing motion.
5613 *
5614 * This can be useful on mechanisms such as an
5615 * intake/feeder, where a limit switch stops motion while
5616 * intaking but should be ignored when feeding to a
5617 * shooter.
5618 *
5619 * The hardware limit faults and Forward/ReverseLimit
5620 * signals will still report the values of the limit
5621 * switches regardless of this parameter.
5622 * - UseTimesync: Set to true to delay applying this control request until a
5623 * timesync boundary (requires Phoenix Pro and CANivore). This
5624 * eliminates the impact of nondeterministic network delays in
5625 * exchange for a larger but deterministic control latency.
5626 *
5627 * This requires setting the ControlTimesyncFreqHz config in
5628 * MotorOutputConfigs. Additionally, when this is enabled, the
5629 * UpdateFreqHz of this request should be set to 0 Hz.
5630 *
5631 * \param request Control object to request of the device
5632 * \returns Status Code of the request, 0 is OK
5633 */
5635
5636 /**
5637 * \brief Request a specified motor duty cycle with a differential
5638 * position closed-loop.
5639 *
5640 * \details This control mode will output a proportion of the supplied
5641 * voltage which is supplied by the user. It will also set the motor's
5642 * differential position setpoint to the specified position.
5643 *
5644 * - DifferentialDutyCycle Parameters:
5645 * - TargetOutput: Proportion of supply voltage to apply in fractional units
5646 * between -1 and +1
5647 * - DifferentialPosition: Differential position to drive towards in rotations
5648 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5649 * increases peak power by ~15%. Set to false to use trapezoidal
5650 * commutation.
5651 *
5652 * FOC improves motor performance by leveraging torque (current)
5653 * control. However, this may be inconvenient for applications that
5654 * require specifying duty cycle or voltage. CTR-Electronics has
5655 * developed a hybrid method that combines the performances gains of
5656 * FOC while still allowing applications to provide duty cycle or
5657 * voltage demand. This not to be confused with simple sinusoidal
5658 * control or phase voltage control which lacks the performance
5659 * gains.
5660 * - DifferentialSlot: Select which gains are applied to the differential
5661 * controller by selecting the slot. Use the configuration
5662 * api to set the gain values for the selected slot before
5663 * enabling this feature. Slot must be within [0,2].
5664 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5665 * is zero (or within deadband). Set to false to use
5666 * the NeutralMode configuration setting (default).
5667 * This flag exists to provide the fundamental
5668 * behavior of this control when output is zero, which
5669 * is to provide 0V to the motor.
5670 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5671 * users to use other limit switch sensors connected to
5672 * robot controller. This also allows use of active
5673 * sensors that require external power.
5674 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5675 * users to use other limit switch sensors connected to
5676 * robot controller. This also allows use of active
5677 * sensors that require external power.
5678 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5679 * LimitForwardMotion and LimitReverseMotion parameters,
5680 * instead allowing motion.
5681 *
5682 * This can be useful on mechanisms such as an
5683 * intake/feeder, where a limit switch stops motion while
5684 * intaking but should be ignored when feeding to a
5685 * shooter.
5686 *
5687 * The hardware limit faults and Forward/ReverseLimit
5688 * signals will still report the values of the limit
5689 * switches regardless of this parameter.
5690 * - UseTimesync: Set to true to delay applying this control request until a
5691 * timesync boundary (requires Phoenix Pro and CANivore). This
5692 * eliminates the impact of nondeterministic network delays in
5693 * exchange for a larger but deterministic control latency.
5694 *
5695 * This requires setting the ControlTimesyncFreqHz config in
5696 * MotorOutputConfigs. Additionally, when this is enabled, the
5697 * UpdateFreqHz of this request should be set to 0 Hz.
5698 *
5699 * \param request Control object to request of the device
5700 * \returns Status Code of the request, 0 is OK
5701 */
5703
5704 /**
5705 * \brief Request a specified voltage with a differential position
5706 * closed-loop.
5707 *
5708 * \details This control mode will attempt to apply the specified
5709 * voltage to the motor. If the supply voltage is below the requested
5710 * voltage, the motor controller will output the supply voltage. It
5711 * will also set the motor's differential position setpoint to the
5712 * specified position.
5713 *
5714 * - DifferentialVoltage Parameters:
5715 * - TargetOutput: Voltage to attempt to drive at
5716 * - DifferentialPosition: Differential position to drive towards in rotations
5717 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5718 * increases peak power by ~15%. Set to false to use trapezoidal
5719 * commutation.
5720 *
5721 * FOC improves motor performance by leveraging torque (current)
5722 * control. However, this may be inconvenient for applications that
5723 * require specifying duty cycle or voltage. CTR-Electronics has
5724 * developed a hybrid method that combines the performances gains of
5725 * FOC while still allowing applications to provide duty cycle or
5726 * voltage demand. This not to be confused with simple sinusoidal
5727 * control or phase voltage control which lacks the performance
5728 * gains.
5729 * - DifferentialSlot: Select which gains are applied to the differential
5730 * controller by selecting the slot. Use the configuration
5731 * api to set the gain values for the selected slot before
5732 * enabling this feature. Slot must be within [0,2].
5733 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5734 * is zero (or within deadband). Set to false to use
5735 * the NeutralMode configuration setting (default).
5736 * This flag exists to provide the fundamental
5737 * behavior of this control when output is zero, which
5738 * is to provide 0V to the motor.
5739 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5740 * users to use other limit switch sensors connected to
5741 * robot controller. This also allows use of active
5742 * sensors that require external power.
5743 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5744 * users to use other limit switch sensors connected to
5745 * robot controller. This also allows use of active
5746 * sensors that require external power.
5747 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5748 * LimitForwardMotion and LimitReverseMotion parameters,
5749 * instead allowing motion.
5750 *
5751 * This can be useful on mechanisms such as an
5752 * intake/feeder, where a limit switch stops motion while
5753 * intaking but should be ignored when feeding to a
5754 * shooter.
5755 *
5756 * The hardware limit faults and Forward/ReverseLimit
5757 * signals will still report the values of the limit
5758 * switches regardless of this parameter.
5759 * - UseTimesync: Set to true to delay applying this control request until a
5760 * timesync boundary (requires Phoenix Pro and CANivore). This
5761 * eliminates the impact of nondeterministic network delays in
5762 * exchange for a larger but deterministic control latency.
5763 *
5764 * This requires setting the ControlTimesyncFreqHz config in
5765 * MotorOutputConfigs. Additionally, when this is enabled, the
5766 * UpdateFreqHz of this request should be set to 0 Hz.
5767 *
5768 * \param request Control object to request of the device
5769 * \returns Status Code of the request, 0 is OK
5770 */
5772
5773 /**
5774 * \brief Request PID to target position with a differential position
5775 * setpoint.
5776 *
5777 * \details This control mode will set the motor's position setpoint
5778 * to the position specified by the user. It will also set the motor's
5779 * differential position setpoint to the specified position.
5780 *
5781 * - DifferentialPositionDutyCycle Parameters:
5782 * - TargetPosition: Average position to drive toward in rotations.
5783 * - DifferentialPosition: Differential position to drive toward in rotations.
5784 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5785 * increases peak power by ~15%. Set to false to use trapezoidal
5786 * commutation.
5787 *
5788 * FOC improves motor performance by leveraging torque (current)
5789 * control. However, this may be inconvenient for applications that
5790 * require specifying duty cycle or voltage. CTR-Electronics has
5791 * developed a hybrid method that combines the performances gains of
5792 * FOC while still allowing applications to provide duty cycle or
5793 * voltage demand. This not to be confused with simple sinusoidal
5794 * control or phase voltage control which lacks the performance
5795 * gains.
5796 * - TargetSlot: Select which gains are applied to the primary controller by
5797 * selecting the slot. Use the configuration api to set the gain
5798 * values for the selected slot before enabling this feature. Slot
5799 * must be within [0,2].
5800 * - DifferentialSlot: Select which gains are applied to the differential
5801 * controller by selecting the slot. Use the configuration
5802 * api to set the gain values for the selected slot before
5803 * enabling this feature. Slot must be within [0,2].
5804 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5805 * is zero (or within deadband). Set to false to use
5806 * the NeutralMode configuration setting (default).
5807 * This flag exists to provide the fundamental
5808 * behavior of this control when output is zero, which
5809 * is to provide 0V to the motor.
5810 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5811 * users to use other limit switch sensors connected to
5812 * robot controller. This also allows use of active
5813 * sensors that require external power.
5814 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5815 * users to use other limit switch sensors connected to
5816 * robot controller. This also allows use of active
5817 * sensors that require external power.
5818 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5819 * LimitForwardMotion and LimitReverseMotion parameters,
5820 * instead allowing motion.
5821 *
5822 * This can be useful on mechanisms such as an
5823 * intake/feeder, where a limit switch stops motion while
5824 * intaking but should be ignored when feeding to a
5825 * shooter.
5826 *
5827 * The hardware limit faults and Forward/ReverseLimit
5828 * signals will still report the values of the limit
5829 * switches regardless of this parameter.
5830 * - UseTimesync: Set to true to delay applying this control request until a
5831 * timesync boundary (requires Phoenix Pro and CANivore). This
5832 * eliminates the impact of nondeterministic network delays in
5833 * exchange for a larger but deterministic control latency.
5834 *
5835 * This requires setting the ControlTimesyncFreqHz config in
5836 * MotorOutputConfigs. Additionally, when this is enabled, the
5837 * UpdateFreqHz of this request should be set to 0 Hz.
5838 *
5839 * \param request Control object to request of the device
5840 * \returns Status Code of the request, 0 is OK
5841 */
5843
5844 /**
5845 * \brief Request PID to target position with a differential position
5846 * setpoint
5847 *
5848 * \details This control mode will set the motor's position setpoint
5849 * to the position specified by the user. It will also set the motor's
5850 * differential position setpoint to the specified position.
5851 *
5852 * - DifferentialPositionVoltage Parameters:
5853 * - TargetPosition: Average position to drive toward in rotations.
5854 * - DifferentialPosition: Differential position to drive toward in rotations.
5855 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5856 * increases peak power by ~15%. Set to false to use trapezoidal
5857 * commutation.
5858 *
5859 * FOC improves motor performance by leveraging torque (current)
5860 * control. However, this may be inconvenient for applications that
5861 * require specifying duty cycle or voltage. CTR-Electronics has
5862 * developed a hybrid method that combines the performances gains of
5863 * FOC while still allowing applications to provide duty cycle or
5864 * voltage demand. This not to be confused with simple sinusoidal
5865 * control or phase voltage control which lacks the performance
5866 * gains.
5867 * - TargetSlot: Select which gains are applied to the primary controller by
5868 * selecting the slot. Use the configuration api to set the gain
5869 * values for the selected slot before enabling this feature. Slot
5870 * must be within [0,2].
5871 * - DifferentialSlot: Select which gains are applied to the differential
5872 * controller by selecting the slot. Use the configuration
5873 * api to set the gain values for the selected slot before
5874 * enabling this feature. Slot must be within [0,2].
5875 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5876 * is zero (or within deadband). Set to false to use
5877 * the NeutralMode configuration setting (default).
5878 * This flag exists to provide the fundamental
5879 * behavior of this control when output is zero, which
5880 * is to provide 0V to the motor.
5881 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5882 * users to use other limit switch sensors connected to
5883 * robot controller. This also allows use of active
5884 * sensors that require external power.
5885 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5886 * users to use other limit switch sensors connected to
5887 * robot controller. This also allows use of active
5888 * sensors that require external power.
5889 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5890 * LimitForwardMotion and LimitReverseMotion parameters,
5891 * instead allowing motion.
5892 *
5893 * This can be useful on mechanisms such as an
5894 * intake/feeder, where a limit switch stops motion while
5895 * intaking but should be ignored when feeding to a
5896 * shooter.
5897 *
5898 * The hardware limit faults and Forward/ReverseLimit
5899 * signals will still report the values of the limit
5900 * switches regardless of this parameter.
5901 * - UseTimesync: Set to true to delay applying this control request until a
5902 * timesync boundary (requires Phoenix Pro and CANivore). This
5903 * eliminates the impact of nondeterministic network delays in
5904 * exchange for a larger but deterministic control latency.
5905 *
5906 * This requires setting the ControlTimesyncFreqHz config in
5907 * MotorOutputConfigs. Additionally, when this is enabled, the
5908 * UpdateFreqHz of this request should be set to 0 Hz.
5909 *
5910 * \param request Control object to request of the device
5911 * \returns Status Code of the request, 0 is OK
5912 */
5914
5915 /**
5916 * \brief Request PID to target velocity with a differential position
5917 * setpoint.
5918 *
5919 * \details This control mode will set the motor's velocity setpoint
5920 * to the velocity specified by the user. It will also set the motor's
5921 * differential position setpoint to the specified position.
5922 *
5923 * - DifferentialVelocityDutyCycle Parameters:
5924 * - TargetVelocity: Average velocity to drive toward in rotations per second.
5925 * - DifferentialPosition: Differential position to drive toward in rotations.
5926 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5927 * increases peak power by ~15%. Set to false to use trapezoidal
5928 * commutation.
5929 *
5930 * FOC improves motor performance by leveraging torque (current)
5931 * control. However, this may be inconvenient for applications that
5932 * require specifying duty cycle or voltage. CTR-Electronics has
5933 * developed a hybrid method that combines the performances gains of
5934 * FOC while still allowing applications to provide duty cycle or
5935 * voltage demand. This not to be confused with simple sinusoidal
5936 * control or phase voltage control which lacks the performance
5937 * gains.
5938 * - TargetSlot: Select which gains are applied to the primary controller by
5939 * selecting the slot. Use the configuration api to set the gain
5940 * values for the selected slot before enabling this feature. Slot
5941 * must be within [0,2].
5942 * - DifferentialSlot: Select which gains are applied to the differential
5943 * controller by selecting the slot. Use the configuration
5944 * api to set the gain values for the selected slot before
5945 * enabling this feature. Slot must be within [0,2].
5946 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
5947 * is zero (or within deadband). Set to false to use
5948 * the NeutralMode configuration setting (default).
5949 * This flag exists to provide the fundamental
5950 * behavior of this control when output is zero, which
5951 * is to provide 0V to the motor.
5952 * - LimitForwardMotion: Set to true to force forward limiting. This allows
5953 * users to use other limit switch sensors connected to
5954 * robot controller. This also allows use of active
5955 * sensors that require external power.
5956 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
5957 * users to use other limit switch sensors connected to
5958 * robot controller. This also allows use of active
5959 * sensors that require external power.
5960 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
5961 * LimitForwardMotion and LimitReverseMotion parameters,
5962 * instead allowing motion.
5963 *
5964 * This can be useful on mechanisms such as an
5965 * intake/feeder, where a limit switch stops motion while
5966 * intaking but should be ignored when feeding to a
5967 * shooter.
5968 *
5969 * The hardware limit faults and Forward/ReverseLimit
5970 * signals will still report the values of the limit
5971 * switches regardless of this parameter.
5972 * - UseTimesync: Set to true to delay applying this control request until a
5973 * timesync boundary (requires Phoenix Pro and CANivore). This
5974 * eliminates the impact of nondeterministic network delays in
5975 * exchange for a larger but deterministic control latency.
5976 *
5977 * This requires setting the ControlTimesyncFreqHz config in
5978 * MotorOutputConfigs. Additionally, when this is enabled, the
5979 * UpdateFreqHz of this request should be set to 0 Hz.
5980 *
5981 * \param request Control object to request of the device
5982 * \returns Status Code of the request, 0 is OK
5983 */
5985
5986 /**
5987 * \brief Request PID to target velocity with a differential position
5988 * setpoint.
5989 *
5990 * \details This control mode will set the motor's velocity setpoint
5991 * to the velocity specified by the user. It will also set the motor's
5992 * differential position setpoint to the specified position.
5993 *
5994 * - DifferentialVelocityVoltage Parameters:
5995 * - TargetVelocity: Average velocity to drive toward in rotations per second.
5996 * - DifferentialPosition: Differential position to drive toward in rotations.
5997 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
5998 * increases peak power by ~15%. Set to false to use trapezoidal
5999 * commutation.
6000 *
6001 * FOC improves motor performance by leveraging torque (current)
6002 * control. However, this may be inconvenient for applications that
6003 * require specifying duty cycle or voltage. CTR-Electronics has
6004 * developed a hybrid method that combines the performances gains of
6005 * FOC while still allowing applications to provide duty cycle or
6006 * voltage demand. This not to be confused with simple sinusoidal
6007 * control or phase voltage control which lacks the performance
6008 * gains.
6009 * - TargetSlot: Select which gains are applied to the primary controller by
6010 * selecting the slot. Use the configuration api to set the gain
6011 * values for the selected slot before enabling this feature. Slot
6012 * must be within [0,2].
6013 * - DifferentialSlot: Select which gains are applied to the differential
6014 * controller by selecting the slot. Use the configuration
6015 * api to set the gain values for the selected slot before
6016 * enabling this feature. Slot must be within [0,2].
6017 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6018 * is zero (or within deadband). Set to false to use
6019 * the NeutralMode configuration setting (default).
6020 * This flag exists to provide the fundamental
6021 * behavior of this control when output is zero, which
6022 * is to provide 0V to the motor.
6023 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6024 * users to use other limit switch sensors connected to
6025 * robot controller. This also allows use of active
6026 * sensors that require external power.
6027 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6028 * users to use other limit switch sensors connected to
6029 * robot controller. This also allows use of active
6030 * sensors that require external power.
6031 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6032 * LimitForwardMotion and LimitReverseMotion parameters,
6033 * instead allowing motion.
6034 *
6035 * This can be useful on mechanisms such as an
6036 * intake/feeder, where a limit switch stops motion while
6037 * intaking but should be ignored when feeding to a
6038 * shooter.
6039 *
6040 * The hardware limit faults and Forward/ReverseLimit
6041 * signals will still report the values of the limit
6042 * switches regardless of this parameter.
6043 * - UseTimesync: Set to true to delay applying this control request until a
6044 * timesync boundary (requires Phoenix Pro and CANivore). This
6045 * eliminates the impact of nondeterministic network delays in
6046 * exchange for a larger but deterministic control latency.
6047 *
6048 * This requires setting the ControlTimesyncFreqHz config in
6049 * MotorOutputConfigs. Additionally, when this is enabled, the
6050 * UpdateFreqHz of this request should be set to 0 Hz.
6051 *
6052 * \param request Control object to request of the device
6053 * \returns Status Code of the request, 0 is OK
6054 */
6056
6057 /**
6058 * \brief Requests Motion Magic® to target a final position using a
6059 * motion profile, and PID to a differential position setpoint.
6060 *
6061 * \details Motion Magic® produces a motion profile in real-time while
6062 * attempting to honor the Cruise Velocity, Acceleration, and
6063 * (optional) Jerk specified via the Motion Magic® configuration
6064 * values. This control mode does not use the Expo_kV or Expo_kA
6065 * configs.
6066 *
6067 * Target position can be changed on-the-fly and Motion Magic® will do
6068 * its best to adjust the profile. This control mode is duty cycle
6069 * based, so relevant closed-loop gains will use fractional duty cycle
6070 * for the numerator: +1.0 represents full forward output.
6071 *
6072 * - DifferentialMotionMagicDutyCycle Parameters:
6073 * - TargetPosition: Average position to drive toward in rotations.
6074 * - DifferentialPosition: Differential position to drive toward in rotations.
6075 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6076 * increases peak power by ~15%. Set to false to use trapezoidal
6077 * commutation.
6078 *
6079 * FOC improves motor performance by leveraging torque (current)
6080 * control. However, this may be inconvenient for applications that
6081 * require specifying duty cycle or voltage. CTR-Electronics has
6082 * developed a hybrid method that combines the performances gains of
6083 * FOC while still allowing applications to provide duty cycle or
6084 * voltage demand. This not to be confused with simple sinusoidal
6085 * control or phase voltage control which lacks the performance
6086 * gains.
6087 * - TargetSlot: Select which gains are applied to the primary controller by
6088 * selecting the slot. Use the configuration api to set the gain
6089 * values for the selected slot before enabling this feature. Slot
6090 * must be within [0,2].
6091 * - DifferentialSlot: Select which gains are applied to the differential
6092 * controller by selecting the slot. Use the configuration
6093 * api to set the gain values for the selected slot before
6094 * enabling this feature. Slot must be within [0,2].
6095 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6096 * is zero (or within deadband). Set to false to use
6097 * the NeutralMode configuration setting (default).
6098 * This flag exists to provide the fundamental
6099 * behavior of this control when output is zero, which
6100 * is to provide 0V to the motor.
6101 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6102 * users to use other limit switch sensors connected to
6103 * robot controller. This also allows use of active
6104 * sensors that require external power.
6105 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6106 * users to use other limit switch sensors connected to
6107 * robot controller. This also allows use of active
6108 * sensors that require external power.
6109 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6110 * LimitForwardMotion and LimitReverseMotion parameters,
6111 * instead allowing motion.
6112 *
6113 * This can be useful on mechanisms such as an
6114 * intake/feeder, where a limit switch stops motion while
6115 * intaking but should be ignored when feeding to a
6116 * shooter.
6117 *
6118 * The hardware limit faults and Forward/ReverseLimit
6119 * signals will still report the values of the limit
6120 * switches regardless of this parameter.
6121 * - UseTimesync: Set to true to delay applying this control request until a
6122 * timesync boundary (requires Phoenix Pro and CANivore). This
6123 * eliminates the impact of nondeterministic network delays in
6124 * exchange for a larger but deterministic control latency.
6125 *
6126 * This requires setting the ControlTimesyncFreqHz config in
6127 * MotorOutputConfigs. Additionally, when this is enabled, the
6128 * UpdateFreqHz of this request should be set to 0 Hz.
6129 *
6130 * \param request Control object to request of the device
6131 * \returns Status Code of the request, 0 is OK
6132 */
6134
6135 /**
6136 * \brief Requests Motion Magic® to target a final position using a
6137 * motion profile, and PID to a differential position setpoint.
6138 *
6139 * \details Motion Magic® produces a motion profile in real-time while
6140 * attempting to honor the Cruise Velocity, Acceleration, and
6141 * (optional) Jerk specified via the Motion Magic® configuration
6142 * values. This control mode does not use the Expo_kV or Expo_kA
6143 * configs.
6144 *
6145 * Target position can be changed on-the-fly and Motion Magic® will do
6146 * its best to adjust the profile. This control mode is
6147 * voltage-based, so relevant closed-loop gains will use Volts for the
6148 * numerator.
6149 *
6150 * - DifferentialMotionMagicVoltage Parameters:
6151 * - TargetPosition: Average position to drive toward in rotations.
6152 * - DifferentialPosition: Differential position to drive toward in rotations.
6153 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6154 * increases peak power by ~15%. Set to false to use trapezoidal
6155 * commutation.
6156 *
6157 * FOC improves motor performance by leveraging torque (current)
6158 * control. However, this may be inconvenient for applications that
6159 * require specifying duty cycle or voltage. CTR-Electronics has
6160 * developed a hybrid method that combines the performances gains of
6161 * FOC while still allowing applications to provide duty cycle or
6162 * voltage demand. This not to be confused with simple sinusoidal
6163 * control or phase voltage control which lacks the performance
6164 * gains.
6165 * - TargetSlot: Select which gains are applied to the primary controller by
6166 * selecting the slot. Use the configuration api to set the gain
6167 * values for the selected slot before enabling this feature. Slot
6168 * must be within [0,2].
6169 * - DifferentialSlot: Select which gains are applied to the differential
6170 * controller by selecting the slot. Use the configuration
6171 * api to set the gain values for the selected slot before
6172 * enabling this feature. Slot must be within [0,2].
6173 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6174 * is zero (or within deadband). Set to false to use
6175 * the NeutralMode configuration setting (default).
6176 * This flag exists to provide the fundamental
6177 * behavior of this control when output is zero, which
6178 * is to provide 0V to the motor.
6179 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6180 * users to use other limit switch sensors connected to
6181 * robot controller. This also allows use of active
6182 * sensors that require external power.
6183 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6184 * users to use other limit switch sensors connected to
6185 * robot controller. This also allows use of active
6186 * sensors that require external power.
6187 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6188 * LimitForwardMotion and LimitReverseMotion parameters,
6189 * instead allowing motion.
6190 *
6191 * This can be useful on mechanisms such as an
6192 * intake/feeder, where a limit switch stops motion while
6193 * intaking but should be ignored when feeding to a
6194 * shooter.
6195 *
6196 * The hardware limit faults and Forward/ReverseLimit
6197 * signals will still report the values of the limit
6198 * switches regardless of this parameter.
6199 * - UseTimesync: Set to true to delay applying this control request until a
6200 * timesync boundary (requires Phoenix Pro and CANivore). This
6201 * eliminates the impact of nondeterministic network delays in
6202 * exchange for a larger but deterministic control latency.
6203 *
6204 * This requires setting the ControlTimesyncFreqHz config in
6205 * MotorOutputConfigs. Additionally, when this is enabled, the
6206 * UpdateFreqHz of this request should be set to 0 Hz.
6207 *
6208 * \param request Control object to request of the device
6209 * \returns Status Code of the request, 0 is OK
6210 */
6212
6213 /**
6214 * \brief Follow the motor output of another Talon.
6215 *
6216 * \details If Talon is in torque control, the torque is copied -
6217 * which will increase the total torque applied. If Talon is in
6218 * percent supply output control, the duty cycle is matched. Motor
6219 * direction either matches master's configured direction or opposes
6220 * it based on OpposeMasterDirection.
6221 *
6222 * - Follower Parameters:
6223 * - MasterID: Device ID of the master to follow.
6224 * - OpposeMasterDirection: Set to false for motor invert to match the master's
6225 * configured Invert - which is typical when master and
6226 * follower are mechanically linked and spin in the same
6227 * direction. Set to true for motor invert to oppose
6228 * the master's configured Invert - this is typical
6229 * where the the master and follower mechanically spin
6230 * in opposite directions.
6231 *
6232 * \param request Control object to request of the device
6233 * \returns Status Code of the request, 0 is OK
6234 */
6236
6237 /**
6238 * \brief Follow the motor output of another Talon while ignoring the
6239 * master's invert setting.
6240 *
6241 * \details If Talon is in torque control, the torque is copied -
6242 * which will increase the total torque applied. If Talon is in
6243 * percent supply output control, the duty cycle is matched. Motor
6244 * direction is strictly determined by the configured invert and not
6245 * the master. If you want motor direction to match or oppose the
6246 * master, use FollowerRequest instead.
6247 *
6248 * - StrictFollower Parameters:
6249 * - MasterID: Device ID of the master to follow.
6250 *
6251 * \param request Control object to request of the device
6252 * \returns Status Code of the request, 0 is OK
6253 */
6255
6256 /**
6257 * \brief Follow the differential motor output of another Talon.
6258 *
6259 * \details If Talon is in torque control, the torque is copied -
6260 * which will increase the total torque applied. If Talon is in
6261 * percent supply output control, the duty cycle is matched. Motor
6262 * direction either matches master's configured direction or opposes
6263 * it based on OpposeMasterDirection.
6264 *
6265 * - DifferentialFollower Parameters:
6266 * - MasterID: Device ID of the differential master to follow.
6267 * - OpposeMasterDirection: Set to false for motor invert to match the master's
6268 * configured Invert - which is typical when master and
6269 * follower are mechanically linked and spin in the same
6270 * direction. Set to true for motor invert to oppose
6271 * the master's configured Invert - this is typical
6272 * where the the master and follower mechanically spin
6273 * in opposite directions.
6274 *
6275 * \param request Control object to request of the device
6276 * \returns Status Code of the request, 0 is OK
6277 */
6279
6280 /**
6281 * \brief Follow the differential motor output of another Talon while
6282 * ignoring the master's invert setting.
6283 *
6284 * \details If Talon is in torque control, the torque is copied -
6285 * which will increase the total torque applied. If Talon is in
6286 * percent supply output control, the duty cycle is matched. Motor
6287 * direction is strictly determined by the configured invert and not
6288 * the master. If you want motor direction to match or oppose the
6289 * master, use FollowerRequest instead.
6290 *
6291 * - DifferentialStrictFollower Parameters:
6292 * - MasterID: Device ID of the differential master to follow.
6293 *
6294 * \param request Control object to request of the device
6295 * \returns Status Code of the request, 0 is OK
6296 */
6298
6299 /**
6300 * \brief Request neutral output of actuator. The applied brake type
6301 * is determined by the NeutralMode configuration.
6302 *
6303 * - NeutralOut Parameters:
6304 * - UseTimesync: Set to true to delay applying this control request until a
6305 * timesync boundary (requires Phoenix Pro and CANivore). This
6306 * eliminates the impact of nondeterministic network delays in
6307 * exchange for a larger but deterministic control latency.
6308 *
6309 * This requires setting the ControlTimesyncFreqHz config in
6310 * MotorOutputConfigs. Additionally, when this is enabled, the
6311 * UpdateFreqHz of this request should be set to 0 Hz.
6312 *
6313 * \param request Control object to request of the device
6314 * \returns Status Code of the request, 0 is OK
6315 */
6317
6318 /**
6319 * \brief Request coast neutral output of actuator. The bridge is
6320 * disabled and the rotor is allowed to coast.
6321 *
6322 * - CoastOut Parameters:
6323 * - UseTimesync: Set to true to delay applying this control request until a
6324 * timesync boundary (requires Phoenix Pro and CANivore). This
6325 * eliminates the impact of nondeterministic network delays in
6326 * exchange for a larger but deterministic control latency.
6327 *
6328 * This requires setting the ControlTimesyncFreqHz config in
6329 * MotorOutputConfigs. Additionally, when this is enabled, the
6330 * UpdateFreqHz of this request should be set to 0 Hz.
6331 *
6332 * \param request Control object to request of the device
6333 * \returns Status Code of the request, 0 is OK
6334 */
6336
6337 /**
6338 * \brief Applies full neutral-brake by shorting motor leads together.
6339 *
6340 * - StaticBrake Parameters:
6341 * - UseTimesync: Set to true to delay applying this control request until a
6342 * timesync boundary (requires Phoenix Pro and CANivore). This
6343 * eliminates the impact of nondeterministic network delays in
6344 * exchange for a larger but deterministic control latency.
6345 *
6346 * This requires setting the ControlTimesyncFreqHz config in
6347 * MotorOutputConfigs. Additionally, when this is enabled, the
6348 * UpdateFreqHz of this request should be set to 0 Hz.
6349 *
6350 * \param request Control object to request of the device
6351 * \returns Status Code of the request, 0 is OK
6352 */
6354
6355 /**
6356 * \brief Plays a single tone at the user specified frequency.
6357 *
6358 * - MusicTone Parameters:
6359 * - AudioFrequency: Sound frequency to play. A value of zero will silence the
6360 * device. The effective frequency range is 10-20000 Hz. Any
6361 * nonzero frequency less than 10 Hz will be capped to 10 Hz.
6362 * Any frequency above 20 kHz will be capped to 20 kHz.
6363 *
6364 * \param request Control object to request of the device
6365 * \returns Status Code of the request, 0 is OK
6366 */
6368
6369 /**
6370 * \brief Requests Motion Magic® to target a final velocity using a
6371 * motion profile. This allows smooth transitions between velocity
6372 * set points. Users can optionally provide a duty cycle feedforward.
6373 *
6374 * \details Motion Magic® Velocity produces a motion profile in
6375 * real-time while attempting to honor the specified Acceleration and
6376 * (optional) Jerk. This control mode does not use the
6377 * CruiseVelocity, Expo_kV, or Expo_kA configs.
6378 *
6379 * If the specified acceleration is zero, the Acceleration under
6380 * Motion Magic® configuration parameter is used instead. This allows
6381 * for runtime adjustment of acceleration for advanced users. Jerk is
6382 * also specified in the Motion Magic® persistent configuration
6383 * values. If Jerk is set to zero, Motion Magic® will produce a
6384 * trapezoidal acceleration profile.
6385 *
6386 * Target velocity can also be changed on-the-fly and Motion Magic®
6387 * will do its best to adjust the profile. This control mode is duty
6388 * cycle based, so relevant closed-loop gains will use fractional duty
6389 * cycle for the numerator: +1.0 represents full forward output.
6390 *
6391 * - MotionMagicVelocityDutyCycle Parameters:
6392 * - Velocity: Target velocity to drive toward in rotations per second. This can
6393 * be changed on-the fly.
6394 * - Acceleration: This is the absolute Acceleration to use generating the
6395 * profile. If this parameter is zero, the Acceleration
6396 * persistent configuration parameter is used instead.
6397 * Acceleration is in rotations per second squared. If nonzero,
6398 * the signage does not matter as the absolute value is used.
6399 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6400 * increases peak power by ~15%. Set to false to use trapezoidal
6401 * commutation.
6402 *
6403 * FOC improves motor performance by leveraging torque (current)
6404 * control. However, this may be inconvenient for applications that
6405 * require specifying duty cycle or voltage. CTR-Electronics has
6406 * developed a hybrid method that combines the performances gains of
6407 * FOC while still allowing applications to provide duty cycle or
6408 * voltage demand. This not to be confused with simple sinusoidal
6409 * control or phase voltage control which lacks the performance
6410 * gains.
6411 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
6412 * - Slot: Select which gains are applied by selecting the slot. Use the
6413 * configuration api to set the gain values for the selected slot before
6414 * enabling this feature. Slot must be within [0,2].
6415 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6416 * is zero (or within deadband). Set to false to use
6417 * the NeutralMode configuration setting (default).
6418 * This flag exists to provide the fundamental
6419 * behavior of this control when output is zero, which
6420 * is to provide 0V to the motor.
6421 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6422 * users to use other limit switch sensors connected to
6423 * robot controller. This also allows use of active
6424 * sensors that require external power.
6425 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6426 * users to use other limit switch sensors connected to
6427 * robot controller. This also allows use of active
6428 * sensors that require external power.
6429 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6430 * LimitForwardMotion and LimitReverseMotion parameters,
6431 * instead allowing motion.
6432 *
6433 * This can be useful on mechanisms such as an
6434 * intake/feeder, where a limit switch stops motion while
6435 * intaking but should be ignored when feeding to a
6436 * shooter.
6437 *
6438 * The hardware limit faults and Forward/ReverseLimit
6439 * signals will still report the values of the limit
6440 * switches regardless of this parameter.
6441 * - UseTimesync: Set to true to delay applying this control request until a
6442 * timesync boundary (requires Phoenix Pro and CANivore). This
6443 * eliminates the impact of nondeterministic network delays in
6444 * exchange for a larger but deterministic control latency.
6445 *
6446 * This requires setting the ControlTimesyncFreqHz config in
6447 * MotorOutputConfigs. Additionally, when this is enabled, the
6448 * UpdateFreqHz of this request should be set to 0 Hz.
6449 *
6450 * \param request Control object to request of the device
6451 * \returns Status Code of the request, 0 is OK
6452 */
6454
6455 /**
6456 * \brief Requests Motion Magic® to target a final velocity using a
6457 * motion profile. This allows smooth transitions between velocity
6458 * set points. Users can optionally provide a torque feedforward.
6459 *
6460 * \details Motion Magic® Velocity produces a motion profile in
6461 * real-time while attempting to honor the specified Acceleration and
6462 * (optional) Jerk. This control mode does not use the
6463 * CruiseVelocity, Expo_kV, or Expo_kA configs.
6464 *
6465 * If the specified acceleration is zero, the Acceleration under
6466 * Motion Magic® configuration parameter is used instead. This allows
6467 * for runtime adjustment of acceleration for advanced users. Jerk is
6468 * also specified in the Motion Magic® persistent configuration
6469 * values. If Jerk is set to zero, Motion Magic® will produce a
6470 * trapezoidal acceleration profile.
6471 *
6472 * Target velocity can also be changed on-the-fly and Motion Magic®
6473 * will do its best to adjust the profile. This control mode is based
6474 * on torque current, so relevant closed-loop gains will use Amperes
6475 * for the numerator.
6476 *
6477 * - MotionMagicVelocityTorqueCurrentFOC Parameters:
6478 * - Velocity: Target velocity to drive toward in rotations per second. This can
6479 * be changed on-the fly.
6480 * - Acceleration: This is the absolute Acceleration to use generating the
6481 * profile. If this parameter is zero, the Acceleration
6482 * persistent configuration parameter is used instead.
6483 * Acceleration is in rotations per second squared. If nonzero,
6484 * the signage does not matter as the absolute value is used.
6485 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6486 * increases peak power by ~15%. Set to false to use trapezoidal
6487 * commutation.
6488 *
6489 * FOC improves motor performance by leveraging torque (current)
6490 * control. However, this may be inconvenient for applications that
6491 * require specifying duty cycle or voltage. CTR-Electronics has
6492 * developed a hybrid method that combines the performances gains of
6493 * FOC while still allowing applications to provide duty cycle or
6494 * voltage demand. This not to be confused with simple sinusoidal
6495 * control or phase voltage control which lacks the performance
6496 * gains.
6497 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
6498 * use motor's kT to scale Newton-meter to Amperes.
6499 * - Slot: Select which gains are applied by selecting the slot. Use the
6500 * configuration api to set the gain values for the selected slot before
6501 * enabling this feature. Slot must be within [0,2].
6502 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
6503 * (or within deadband). Set to false to use the
6504 * NeutralMode configuration setting (default). This
6505 * flag exists to provide the fundamental behavior of
6506 * this control when output is zero, which is to
6507 * provide 0A (zero torque).
6508 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6509 * users to use other limit switch sensors connected to
6510 * robot controller. This also allows use of active
6511 * sensors that require external power.
6512 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6513 * users to use other limit switch sensors connected to
6514 * robot controller. This also allows use of active
6515 * sensors that require external power.
6516 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6517 * LimitForwardMotion and LimitReverseMotion parameters,
6518 * instead allowing motion.
6519 *
6520 * This can be useful on mechanisms such as an
6521 * intake/feeder, where a limit switch stops motion while
6522 * intaking but should be ignored when feeding to a
6523 * shooter.
6524 *
6525 * The hardware limit faults and Forward/ReverseLimit
6526 * signals will still report the values of the limit
6527 * switches regardless of this parameter.
6528 * - UseTimesync: Set to true to delay applying this control request until a
6529 * timesync boundary (requires Phoenix Pro and CANivore). This
6530 * eliminates the impact of nondeterministic network delays in
6531 * exchange for a larger but deterministic control latency.
6532 *
6533 * This requires setting the ControlTimesyncFreqHz config in
6534 * MotorOutputConfigs. Additionally, when this is enabled, the
6535 * UpdateFreqHz of this request should be set to 0 Hz.
6536 *
6537 * \param request Control object to request of the device
6538 * \returns Status Code of the request, 0 is OK
6539 */
6541
6542 /**
6543 * \brief Requests Motion Magic® to target a final velocity using a
6544 * motion profile. This allows smooth transitions between velocity
6545 * set points. Users can optionally provide a voltage feedforward.
6546 *
6547 * \details Motion Magic® Velocity produces a motion profile in
6548 * real-time while attempting to honor the specified Acceleration and
6549 * (optional) Jerk. This control mode does not use the
6550 * CruiseVelocity, Expo_kV, or Expo_kA configs.
6551 *
6552 * If the specified acceleration is zero, the Acceleration under
6553 * Motion Magic® configuration parameter is used instead. This allows
6554 * for runtime adjustment of acceleration for advanced users. Jerk is
6555 * also specified in the Motion Magic® persistent configuration
6556 * values. If Jerk is set to zero, Motion Magic® will produce a
6557 * trapezoidal acceleration profile.
6558 *
6559 * Target velocity can also be changed on-the-fly and Motion Magic®
6560 * will do its best to adjust the profile. This control mode is
6561 * voltage-based, so relevant closed-loop gains will use Volts for the
6562 * numerator.
6563 *
6564 * - MotionMagicVelocityVoltage Parameters:
6565 * - Velocity: Target velocity to drive toward in rotations per second. This can
6566 * be changed on-the fly.
6567 * - Acceleration: This is the absolute Acceleration to use generating the
6568 * profile. If this parameter is zero, the Acceleration
6569 * persistent configuration parameter is used instead.
6570 * Acceleration is in rotations per second squared. If nonzero,
6571 * the signage does not matter as the absolute value is used.
6572 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6573 * increases peak power by ~15%. Set to false to use trapezoidal
6574 * commutation.
6575 *
6576 * FOC improves motor performance by leveraging torque (current)
6577 * control. However, this may be inconvenient for applications that
6578 * require specifying duty cycle or voltage. CTR-Electronics has
6579 * developed a hybrid method that combines the performances gains of
6580 * FOC while still allowing applications to provide duty cycle or
6581 * voltage demand. This not to be confused with simple sinusoidal
6582 * control or phase voltage control which lacks the performance
6583 * gains.
6584 * - FeedForward: Feedforward to apply in volts
6585 * - Slot: Select which gains are applied by selecting the slot. Use the
6586 * configuration api to set the gain values for the selected slot before
6587 * enabling this feature. Slot must be within [0,2].
6588 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6589 * is zero (or within deadband). Set to false to use
6590 * the NeutralMode configuration setting (default).
6591 * This flag exists to provide the fundamental
6592 * behavior of this control when output is zero, which
6593 * is to provide 0V to the motor.
6594 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6595 * users to use other limit switch sensors connected to
6596 * robot controller. This also allows use of active
6597 * sensors that require external power.
6598 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6599 * users to use other limit switch sensors connected to
6600 * robot controller. This also allows use of active
6601 * sensors that require external power.
6602 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6603 * LimitForwardMotion and LimitReverseMotion parameters,
6604 * instead allowing motion.
6605 *
6606 * This can be useful on mechanisms such as an
6607 * intake/feeder, where a limit switch stops motion while
6608 * intaking but should be ignored when feeding to a
6609 * shooter.
6610 *
6611 * The hardware limit faults and Forward/ReverseLimit
6612 * signals will still report the values of the limit
6613 * switches regardless of this parameter.
6614 * - UseTimesync: Set to true to delay applying this control request until a
6615 * timesync boundary (requires Phoenix Pro and CANivore). This
6616 * eliminates the impact of nondeterministic network delays in
6617 * exchange for a larger but deterministic control latency.
6618 *
6619 * This requires setting the ControlTimesyncFreqHz config in
6620 * MotorOutputConfigs. Additionally, when this is enabled, the
6621 * UpdateFreqHz of this request should be set to 0 Hz.
6622 *
6623 * \param request Control object to request of the device
6624 * \returns Status Code of the request, 0 is OK
6625 */
6627
6628 /**
6629 * \brief Requests Motion Magic® to target a final position using an
6630 * exponential motion profile. Users can optionally provide a duty
6631 * cycle feedforward.
6632 *
6633 * \details Motion Magic® Expo produces a motion profile in real-time
6634 * while attempting to honor the Cruise Velocity (optional) and the
6635 * mechanism kV and kA, specified via the Motion Magic® configuration
6636 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
6637 * configs are always in output units of Volts.
6638 *
6639 * Setting Cruise Velocity to 0 will allow the profile to run to the
6640 * max possible velocity based on Expo_kV. This control mode does not
6641 * use the Acceleration or Jerk configs.
6642 *
6643 * Target position can be changed on-the-fly and Motion Magic® will do
6644 * its best to adjust the profile. This control mode is duty cycle
6645 * based, so relevant closed-loop gains will use fractional duty cycle
6646 * for the numerator: +1.0 represents full forward output.
6647 *
6648 * - MotionMagicExpoDutyCycle Parameters:
6649 * - Position: Position to drive toward in rotations.
6650 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6651 * increases peak power by ~15%. Set to false to use trapezoidal
6652 * commutation.
6653 *
6654 * FOC improves motor performance by leveraging torque (current)
6655 * control. However, this may be inconvenient for applications that
6656 * require specifying duty cycle or voltage. CTR-Electronics has
6657 * developed a hybrid method that combines the performances gains of
6658 * FOC while still allowing applications to provide duty cycle or
6659 * voltage demand. This not to be confused with simple sinusoidal
6660 * control or phase voltage control which lacks the performance
6661 * gains.
6662 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
6663 * - Slot: Select which gains are applied by selecting the slot. Use the
6664 * configuration api to set the gain values for the selected slot before
6665 * enabling this feature. Slot must be within [0,2].
6666 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6667 * is zero (or within deadband). Set to false to use
6668 * the NeutralMode configuration setting (default).
6669 * This flag exists to provide the fundamental
6670 * behavior of this control when output is zero, which
6671 * is to provide 0V to the motor.
6672 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6673 * users to use other limit switch sensors connected to
6674 * robot controller. This also allows use of active
6675 * sensors that require external power.
6676 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6677 * users to use other limit switch sensors connected to
6678 * robot controller. This also allows use of active
6679 * sensors that require external power.
6680 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6681 * LimitForwardMotion and LimitReverseMotion parameters,
6682 * instead allowing motion.
6683 *
6684 * This can be useful on mechanisms such as an
6685 * intake/feeder, where a limit switch stops motion while
6686 * intaking but should be ignored when feeding to a
6687 * shooter.
6688 *
6689 * The hardware limit faults and Forward/ReverseLimit
6690 * signals will still report the values of the limit
6691 * switches regardless of this parameter.
6692 * - UseTimesync: Set to true to delay applying this control request until a
6693 * timesync boundary (requires Phoenix Pro and CANivore). This
6694 * eliminates the impact of nondeterministic network delays in
6695 * exchange for a larger but deterministic control latency.
6696 *
6697 * This requires setting the ControlTimesyncFreqHz config in
6698 * MotorOutputConfigs. Additionally, when this is enabled, the
6699 * UpdateFreqHz of this request should be set to 0 Hz.
6700 *
6701 * \param request Control object to request of the device
6702 * \returns Status Code of the request, 0 is OK
6703 */
6705
6706 /**
6707 * \brief Requests Motion Magic® to target a final position using an
6708 * exponential motion profile. Users can optionally provide a voltage
6709 * feedforward.
6710 *
6711 * \details Motion Magic® Expo produces a motion profile in real-time
6712 * while attempting to honor the Cruise Velocity (optional) and the
6713 * mechanism kV and kA, specified via the Motion Magic® configuration
6714 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
6715 * configs are always in output units of Volts.
6716 *
6717 * Setting Cruise Velocity to 0 will allow the profile to run to the
6718 * max possible velocity based on Expo_kV. This control mode does not
6719 * use the Acceleration or Jerk configs.
6720 *
6721 * Target position can be changed on-the-fly and Motion Magic® will do
6722 * its best to adjust the profile. This control mode is
6723 * voltage-based, so relevant closed-loop gains will use Volts for the
6724 * numerator.
6725 *
6726 * - MotionMagicExpoVoltage Parameters:
6727 * - Position: Position to drive toward in rotations.
6728 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6729 * increases peak power by ~15%. Set to false to use trapezoidal
6730 * commutation.
6731 *
6732 * FOC improves motor performance by leveraging torque (current)
6733 * control. However, this may be inconvenient for applications that
6734 * require specifying duty cycle or voltage. CTR-Electronics has
6735 * developed a hybrid method that combines the performances gains of
6736 * FOC while still allowing applications to provide duty cycle or
6737 * voltage demand. This not to be confused with simple sinusoidal
6738 * control or phase voltage control which lacks the performance
6739 * gains.
6740 * - FeedForward: Feedforward to apply in volts
6741 * - Slot: Select which gains are applied by selecting the slot. Use the
6742 * configuration api to set the gain values for the selected slot before
6743 * enabling this feature. Slot must be within [0,2].
6744 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6745 * is zero (or within deadband). Set to false to use
6746 * the NeutralMode configuration setting (default).
6747 * This flag exists to provide the fundamental
6748 * behavior of this control when output is zero, which
6749 * is to provide 0V to the motor.
6750 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6751 * users to use other limit switch sensors connected to
6752 * robot controller. This also allows use of active
6753 * sensors that require external power.
6754 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6755 * users to use other limit switch sensors connected to
6756 * robot controller. This also allows use of active
6757 * sensors that require external power.
6758 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6759 * LimitForwardMotion and LimitReverseMotion parameters,
6760 * instead allowing motion.
6761 *
6762 * This can be useful on mechanisms such as an
6763 * intake/feeder, where a limit switch stops motion while
6764 * intaking but should be ignored when feeding to a
6765 * shooter.
6766 *
6767 * The hardware limit faults and Forward/ReverseLimit
6768 * signals will still report the values of the limit
6769 * switches regardless of this parameter.
6770 * - UseTimesync: Set to true to delay applying this control request until a
6771 * timesync boundary (requires Phoenix Pro and CANivore). This
6772 * eliminates the impact of nondeterministic network delays in
6773 * exchange for a larger but deterministic control latency.
6774 *
6775 * This requires setting the ControlTimesyncFreqHz config in
6776 * MotorOutputConfigs. Additionally, when this is enabled, the
6777 * UpdateFreqHz of this request should be set to 0 Hz.
6778 *
6779 * \param request Control object to request of the device
6780 * \returns Status Code of the request, 0 is OK
6781 */
6783
6784 /**
6785 * \brief Requests Motion Magic® to target a final position using an
6786 * exponential motion profile. Users can optionally provide a torque
6787 * current feedforward.
6788 *
6789 * \details Motion Magic® Expo produces a motion profile in real-time
6790 * while attempting to honor the Cruise Velocity (optional) and the
6791 * mechanism kV and kA, specified via the Motion Magic® configuration
6792 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
6793 * configs are always in output units of Volts.
6794 *
6795 * Setting Cruise Velocity to 0 will allow the profile to run to the
6796 * max possible velocity based on Expo_kV. This control mode does not
6797 * use the Acceleration or Jerk configs.
6798 *
6799 * Target position can be changed on-the-fly and Motion Magic® will do
6800 * its best to adjust the profile. This control mode is based on
6801 * torque current, so relevant closed-loop gains will use Amperes for
6802 * the numerator.
6803 *
6804 * - MotionMagicExpoTorqueCurrentFOC Parameters:
6805 * - Position: Position to drive toward in rotations.
6806 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
6807 * use motor's kT to scale Newton-meter to Amperes.
6808 * - Slot: Select which gains are applied by selecting the slot. Use the
6809 * configuration api to set the gain values for the selected slot before
6810 * enabling this feature. Slot must be within [0,2].
6811 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
6812 * (or within deadband). Set to false to use the
6813 * NeutralMode configuration setting (default). This
6814 * flag exists to provide the fundamental behavior of
6815 * this control when output is zero, which is to
6816 * provide 0A (zero torque).
6817 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6818 * users to use other limit switch sensors connected to
6819 * robot controller. This also allows use of active
6820 * sensors that require external power.
6821 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6822 * users to use other limit switch sensors connected to
6823 * robot controller. This also allows use of active
6824 * sensors that require external power.
6825 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6826 * LimitForwardMotion and LimitReverseMotion parameters,
6827 * instead allowing motion.
6828 *
6829 * This can be useful on mechanisms such as an
6830 * intake/feeder, where a limit switch stops motion while
6831 * intaking but should be ignored when feeding to a
6832 * shooter.
6833 *
6834 * The hardware limit faults and Forward/ReverseLimit
6835 * signals will still report the values of the limit
6836 * switches regardless of this parameter.
6837 * - UseTimesync: Set to true to delay applying this control request until a
6838 * timesync boundary (requires Phoenix Pro and CANivore). This
6839 * eliminates the impact of nondeterministic network delays in
6840 * exchange for a larger but deterministic control latency.
6841 *
6842 * This requires setting the ControlTimesyncFreqHz config in
6843 * MotorOutputConfigs. Additionally, when this is enabled, the
6844 * UpdateFreqHz of this request should be set to 0 Hz.
6845 *
6846 * \param request Control object to request of the device
6847 * \returns Status Code of the request, 0 is OK
6848 */
6850
6851 /**
6852 * \brief Requests Motion Magic® to target a final position using a
6853 * motion profile. This dynamic request allows runtime changes to
6854 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
6855 * provide a duty cycle feedforward. This control requires use of a
6856 * CANivore.
6857 *
6858 * \details Motion Magic® produces a motion profile in real-time while
6859 * attempting to honor the specified Cruise Velocity, Acceleration,
6860 * and (optional) Jerk. This control mode does not use the Expo_kV or
6861 * Expo_kA configs.
6862 *
6863 * Target position can be changed on-the-fly and Motion Magic® will do
6864 * its best to adjust the profile. This control mode is duty cycle
6865 * based, so relevant closed-loop gains will use fractional duty cycle
6866 * for the numerator: +1.0 represents full forward output.
6867 *
6868 * - DynamicMotionMagicDutyCycle Parameters:
6869 * - Position: Position to drive toward in rotations.
6870 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
6871 * device will use the absolute value for profile generation.
6872 * - Acceleration: Acceleration for profiling. The signage does not matter as
6873 * the device will use the absolute value for profile generation
6874 * - Jerk: Jerk for profiling. The signage does not matter as the device will
6875 * use the absolute value for profile generation.
6876 *
6877 * Jerk is optional; if this is set to zero, then Motion Magic® will not
6878 * apply a Jerk limit.
6879 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6880 * increases peak power by ~15%. Set to false to use trapezoidal
6881 * commutation.
6882 *
6883 * FOC improves motor performance by leveraging torque (current)
6884 * control. However, this may be inconvenient for applications that
6885 * require specifying duty cycle or voltage. CTR-Electronics has
6886 * developed a hybrid method that combines the performances gains of
6887 * FOC while still allowing applications to provide duty cycle or
6888 * voltage demand. This not to be confused with simple sinusoidal
6889 * control or phase voltage control which lacks the performance
6890 * gains.
6891 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
6892 * - Slot: Select which gains are applied by selecting the slot. Use the
6893 * configuration api to set the gain values for the selected slot before
6894 * enabling this feature. Slot must be within [0,2].
6895 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6896 * is zero (or within deadband). Set to false to use
6897 * the NeutralMode configuration setting (default).
6898 * This flag exists to provide the fundamental
6899 * behavior of this control when output is zero, which
6900 * is to provide 0V to the motor.
6901 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6902 * users to use other limit switch sensors connected to
6903 * robot controller. This also allows use of active
6904 * sensors that require external power.
6905 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6906 * users to use other limit switch sensors connected to
6907 * robot controller. This also allows use of active
6908 * sensors that require external power.
6909 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6910 * LimitForwardMotion and LimitReverseMotion parameters,
6911 * instead allowing motion.
6912 *
6913 * This can be useful on mechanisms such as an
6914 * intake/feeder, where a limit switch stops motion while
6915 * intaking but should be ignored when feeding to a
6916 * shooter.
6917 *
6918 * The hardware limit faults and Forward/ReverseLimit
6919 * signals will still report the values of the limit
6920 * switches regardless of this parameter.
6921 * - UseTimesync: Set to true to delay applying this control request until a
6922 * timesync boundary (requires Phoenix Pro and CANivore). This
6923 * eliminates the impact of nondeterministic network delays in
6924 * exchange for a larger but deterministic control latency.
6925 *
6926 * This requires setting the ControlTimesyncFreqHz config in
6927 * MotorOutputConfigs. Additionally, when this is enabled, the
6928 * UpdateFreqHz of this request should be set to 0 Hz.
6929 *
6930 * \param request Control object to request of the device
6931 * \returns Status Code of the request, 0 is OK
6932 */
6934
6935 /**
6936 * \brief Requests Motion Magic® to target a final position using a
6937 * motion profile. This dynamic request allows runtime changes to
6938 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
6939 * provide a voltage feedforward. This control requires use of a
6940 * CANivore.
6941 *
6942 * \details Motion Magic® produces a motion profile in real-time while
6943 * attempting to honor the specified Cruise Velocity, Acceleration,
6944 * and (optional) Jerk. This control mode does not use the Expo_kV or
6945 * Expo_kA configs.
6946 *
6947 * Target position can be changed on-the-fly and Motion Magic® will do
6948 * its best to adjust the profile. This control mode is
6949 * voltage-based, so relevant closed-loop gains will use Volts for the
6950 * numerator.
6951 *
6952 * - DynamicMotionMagicVoltage Parameters:
6953 * - Position: Position to drive toward in rotations.
6954 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
6955 * device will use the absolute value for profile generation.
6956 * - Acceleration: Acceleration for profiling. The signage does not matter as
6957 * the device will use the absolute value for profile generation.
6958 * - Jerk: Jerk for profiling. The signage does not matter as the device will
6959 * use the absolute value for profile generation.
6960 *
6961 * Jerk is optional; if this is set to zero, then Motion Magic® will not
6962 * apply a Jerk limit.
6963 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
6964 * increases peak power by ~15%. Set to false to use trapezoidal
6965 * commutation.
6966 *
6967 * FOC improves motor performance by leveraging torque (current)
6968 * control. However, this may be inconvenient for applications that
6969 * require specifying duty cycle or voltage. CTR-Electronics has
6970 * developed a hybrid method that combines the performances gains of
6971 * FOC while still allowing applications to provide duty cycle or
6972 * voltage demand. This not to be confused with simple sinusoidal
6973 * control or phase voltage control which lacks the performance
6974 * gains.
6975 * - FeedForward: Feedforward to apply in volts
6976 * - Slot: Select which gains are applied by selecting the slot. Use the
6977 * configuration api to set the gain values for the selected slot before
6978 * enabling this feature. Slot must be within [0,2].
6979 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
6980 * is zero (or within deadband). Set to false to use
6981 * the NeutralMode configuration setting (default).
6982 * This flag exists to provide the fundamental
6983 * behavior of this control when output is zero, which
6984 * is to provide 0V to the motor.
6985 * - LimitForwardMotion: Set to true to force forward limiting. This allows
6986 * users to use other limit switch sensors connected to
6987 * robot controller. This also allows use of active
6988 * sensors that require external power.
6989 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
6990 * users to use other limit switch sensors connected to
6991 * robot controller. This also allows use of active
6992 * sensors that require external power.
6993 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
6994 * LimitForwardMotion and LimitReverseMotion parameters,
6995 * instead allowing motion.
6996 *
6997 * This can be useful on mechanisms such as an
6998 * intake/feeder, where a limit switch stops motion while
6999 * intaking but should be ignored when feeding to a
7000 * shooter.
7001 *
7002 * The hardware limit faults and Forward/ReverseLimit
7003 * signals will still report the values of the limit
7004 * switches regardless of this parameter.
7005 * - UseTimesync: Set to true to delay applying this control request until a
7006 * timesync boundary (requires Phoenix Pro and CANivore). This
7007 * eliminates the impact of nondeterministic network delays in
7008 * exchange for a larger but deterministic control latency.
7009 *
7010 * This requires setting the ControlTimesyncFreqHz config in
7011 * MotorOutputConfigs. Additionally, when this is enabled, the
7012 * UpdateFreqHz of this request should be set to 0 Hz.
7013 *
7014 * \param request Control object to request of the device
7015 * \returns Status Code of the request, 0 is OK
7016 */
7018
7019 /**
7020 * \brief Requests Motion Magic® to target a final position using a
7021 * motion profile. This dynamic request allows runtime changes to
7022 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
7023 * provide a torque current feedforward. This control requires use of
7024 * a CANivore.
7025 *
7026 * \details Motion Magic® produces a motion profile in real-time while
7027 * attempting to honor the specified Cruise Velocity, Acceleration,
7028 * and (optional) Jerk. This control mode does not use the Expo_kV or
7029 * Expo_kA configs.
7030 *
7031 * Target position can be changed on-the-fly and Motion Magic® will do
7032 * its best to adjust the profile. This control mode is based on
7033 * torque current, so relevant closed-loop gains will use Amperes for
7034 * the numerator.
7035 *
7036 * - DynamicMotionMagicTorqueCurrentFOC Parameters:
7037 * - Position: Position to drive toward in rotations.
7038 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
7039 * device will use the absolute value for profile generation.
7040 * - Acceleration: Acceleration for profiling. The signage does not matter as
7041 * the device will use the absolute value for profile generation.
7042 * - Jerk: Jerk for profiling. The signage does not matter as the device will
7043 * use the absolute value for profile generation.
7044 *
7045 * Jerk is optional; if this is set to zero, then Motion Magic® will not
7046 * apply a Jerk limit.
7047 * - FeedForward: Feedforward to apply in torque current in Amperes. User can
7048 * use motor's kT to scale Newton-meter to Amperes.
7049 * - Slot: Select which gains are applied by selecting the slot. Use the
7050 * configuration api to set the gain values for the selected slot before
7051 * enabling this feature. Slot must be within [0,2].
7052 * - OverrideCoastDurNeutral: Set to true to coast the rotor when output is zero
7053 * (or within deadband). Set to false to use the
7054 * NeutralMode configuration setting (default). This
7055 * flag exists to provide the fundamental behavior of
7056 * this control when output is zero, which is to
7057 * provide 0A (zero torque).
7058 * - LimitForwardMotion: Set to true to force forward limiting. This allows
7059 * users to use other limit switch sensors connected to
7060 * robot controller. This also allows use of active
7061 * sensors that require external power.
7062 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
7063 * users to use other limit switch sensors connected to
7064 * robot controller. This also allows use of active
7065 * sensors that require external power.
7066 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
7067 * LimitForwardMotion and LimitReverseMotion parameters,
7068 * instead allowing motion.
7069 *
7070 * This can be useful on mechanisms such as an
7071 * intake/feeder, where a limit switch stops motion while
7072 * intaking but should be ignored when feeding to a
7073 * shooter.
7074 *
7075 * The hardware limit faults and Forward/ReverseLimit
7076 * signals will still report the values of the limit
7077 * switches regardless of this parameter.
7078 * - UseTimesync: Set to true to delay applying this control request until a
7079 * timesync boundary (requires Phoenix Pro and CANivore). This
7080 * eliminates the impact of nondeterministic network delays in
7081 * exchange for a larger but deterministic control latency.
7082 *
7083 * This requires setting the ControlTimesyncFreqHz config in
7084 * MotorOutputConfigs. Additionally, when this is enabled, the
7085 * UpdateFreqHz of this request should be set to 0 Hz.
7086 *
7087 * \param request Control object to request of the device
7088 * \returns Status Code of the request, 0 is OK
7089 */
7091
7092 /**
7093 * \brief Differential control with duty cycle average target and
7094 * position difference target.
7095 *
7096 * - Diff_DutyCycleOut_Position Parameters:
7097 * - AverageRequest: Average DutyCycleOut request of the mechanism.
7098 * - DifferentialRequest: Differential PositionDutyCycle request of the
7099 * mechanism.
7100 *
7101 * \param request Control object to request of the device
7102 * \returns Status Code of the request, 0 is OK
7103 */
7104 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Position &request) override;
7105
7106 /**
7107 * \brief Differential control with position average target and
7108 * position difference target using dutycycle control.
7109 *
7110 * - Diff_PositionDutyCycle_Position Parameters:
7111 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
7112 * - DifferentialRequest: Differential PositionDutyCycle request of the
7113 * mechanism.
7114 *
7115 * \param request Control object to request of the device
7116 * \returns Status Code of the request, 0 is OK
7117 */
7118 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Position &request) override;
7119
7120 /**
7121 * \brief Differential control with velocity average target and
7122 * position difference target using dutycycle control.
7123 *
7124 * - Diff_VelocityDutyCycle_Position Parameters:
7125 * - AverageRequest: Average VelocityDutyCYcle request of the mechanism.
7126 * - DifferentialRequest: Differential PositionDutyCycle request of the
7127 * mechanism.
7128 *
7129 * \param request Control object to request of the device
7130 * \returns Status Code of the request, 0 is OK
7131 */
7132 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Position &request) override;
7133
7134 /**
7135 * \brief Differential control with Motion Magic® average target and
7136 * position difference target using dutycycle control.
7137 *
7138 * - Diff_MotionMagicDutyCycle_Position Parameters:
7139 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
7140 * - DifferentialRequest: Differential PositionDutyCycle request of the
7141 * mechanism.
7142 *
7143 * \param request Control object to request of the device
7144 * \returns Status Code of the request, 0 is OK
7145 */
7146 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Position &request) override;
7147
7148 /**
7149 * \brief Differential control with duty cycle average target and
7150 * velocity difference target.
7151 *
7152 * - Diff_DutyCycleOut_Velocity Parameters:
7153 * - AverageRequest: Average DutyCycleOut request of the mechanism.
7154 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7155 * mechanism.
7156 *
7157 * \param request Control object to request of the device
7158 * \returns Status Code of the request, 0 is OK
7159 */
7160 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Velocity &request) override;
7161
7162 /**
7163 * \brief Differential control with position average target and
7164 * velocity difference target using dutycycle control.
7165 *
7166 * - Diff_PositionDutyCycle_Velocity Parameters:
7167 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
7168 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7169 * mechanism.
7170 *
7171 * \param request Control object to request of the device
7172 * \returns Status Code of the request, 0 is OK
7173 */
7174 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Velocity &request) override;
7175
7176 /**
7177 * \brief Differential control with velocity average target and
7178 * velocity difference target using dutycycle control.
7179 *
7180 * - Diff_VelocityDutyCycle_Velocity Parameters:
7181 * - AverageRequest: Average VelocityDutyCycle request of the mechanism.
7182 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7183 * mechanism.
7184 *
7185 * \param request Control object to request of the device
7186 * \returns Status Code of the request, 0 is OK
7187 */
7188 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Velocity &request) override;
7189
7190 /**
7191 * \brief Differential control with Motion Magic® average target and
7192 * velocity difference target using dutycycle control.
7193 *
7194 * - Diff_MotionMagicDutyCycle_Velocity Parameters:
7195 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
7196 * - DifferentialRequest: Differential VelocityDutyCycle request of the
7197 * mechanism.
7198 *
7199 * \param request Control object to request of the device
7200 * \returns Status Code of the request, 0 is OK
7201 */
7202 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Velocity &request) override;
7203
7204 /**
7205 * \brief Differential control with voltage average target and
7206 * position difference target.
7207 *
7208 * - Diff_VoltageOut_Position Parameters:
7209 * - AverageRequest: Average VoltageOut request of the mechanism.
7210 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7211 *
7212 * \param request Control object to request of the device
7213 * \returns Status Code of the request, 0 is OK
7214 */
7215 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Position &request) override;
7216
7217 /**
7218 * \brief Differential control with position average target and
7219 * position difference target using voltage control.
7220 *
7221 * - Diff_PositionVoltage_Position Parameters:
7222 * - AverageRequest: Average PositionVoltage request of the mechanism.
7223 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7224 *
7225 * \param request Control object to request of the device
7226 * \returns Status Code of the request, 0 is OK
7227 */
7228 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Position &request) override;
7229
7230 /**
7231 * \brief Differential control with velocity average target and
7232 * position difference target using voltage control.
7233 *
7234 * - Diff_VelocityVoltage_Position Parameters:
7235 * - AverageRequest: Average VelocityVoltage request of the mechanism.
7236 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7237 *
7238 * \param request Control object to request of the device
7239 * \returns Status Code of the request, 0 is OK
7240 */
7241 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Position &request) override;
7242
7243 /**
7244 * \brief Differential control with Motion Magic® average target and
7245 * position difference target using voltage control.
7246 *
7247 * - Diff_MotionMagicVoltage_Position Parameters:
7248 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
7249 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
7250 *
7251 * \param request Control object to request of the device
7252 * \returns Status Code of the request, 0 is OK
7253 */
7254 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Position &request) override;
7255
7256 /**
7257 * \brief Differential control with voltage average target and
7258 * velocity difference target.
7259 *
7260 * - Diff_VoltageOut_Velocity Parameters:
7261 * - AverageRequest: Average VoltageOut request of the mechanism.
7262 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7263 *
7264 * \param request Control object to request of the device
7265 * \returns Status Code of the request, 0 is OK
7266 */
7267 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Velocity &request) override;
7268
7269 /**
7270 * \brief Differential control with position average target and
7271 * velocity difference target using voltage control.
7272 *
7273 * - Diff_PositionVoltage_Velocity Parameters:
7274 * - AverageRequest: Average PositionVoltage request of the mechanism.
7275 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7276 *
7277 * \param request Control object to request of the device
7278 * \returns Status Code of the request, 0 is OK
7279 */
7280 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Velocity &request) override;
7281
7282 /**
7283 * \brief Differential control with velocity average target and
7284 * velocity difference target using voltage control.
7285 *
7286 * - Diff_VelocityVoltage_Velocity Parameters:
7287 * - AverageRequest: Average VelocityVoltage request of the mechanism.
7288 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7289 *
7290 * \param request Control object to request of the device
7291 * \returns Status Code of the request, 0 is OK
7292 */
7293 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Velocity &request) override;
7294
7295 /**
7296 * \brief Differential control with Motion Magic® average target and
7297 * velocity difference target using voltage control.
7298 *
7299 * - Diff_MotionMagicVoltage_Velocity Parameters:
7300 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
7301 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
7302 *
7303 * \param request Control object to request of the device
7304 * \returns Status Code of the request, 0 is OK
7305 */
7306 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Velocity &request) override;
7307
7308 /**
7309 * \brief Differential control with torque current average target and
7310 * position difference target.
7311 *
7312 * - Diff_TorqueCurrentFOC_Position Parameters:
7313 * - AverageRequest: Average TorqueCurrentFOC request of the mechanism.
7314 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7315 * mechanism.
7316 *
7317 * \param request Control object to request of the device
7318 * \returns Status Code of the request, 0 is OK
7319 */
7320 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_TorqueCurrentFOC_Position &request) override;
7321
7322 /**
7323 * \brief Differential control with position average target and
7324 * position difference target using torque current control.
7325 *
7326 * - Diff_PositionTorqueCurrentFOC_Position Parameters:
7327 * - AverageRequest: Average PositionTorqueCurrentFOC request of the mechanism.
7328 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7329 * mechanism.
7330 *
7331 * \param request Control object to request of the device
7332 * \returns Status Code of the request, 0 is OK
7333 */
7334 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionTorqueCurrentFOC_Position &request) override;
7335
7336 /**
7337 * \brief Differential control with velocity average target and
7338 * position difference target using torque current control.
7339 *
7340 * - Diff_VelocityTorqueCurrentFOC_Position Parameters:
7341 * - AverageRequest: Average VelocityTorqueCurrentFOC request of the mechanism.
7342 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7343 * mechanism.
7344 *
7345 * \param request Control object to request of the device
7346 * \returns Status Code of the request, 0 is OK
7347 */
7348 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityTorqueCurrentFOC_Position &request) override;
7349
7350 /**
7351 * \brief Differential control with Motion Magic® average target and
7352 * position difference target using torque current control.
7353 *
7354 * - Diff_MotionMagicTorqueCurrentFOC_Position Parameters:
7355 * - AverageRequest: Average MotionMagicTorqueCurrentFOC request of the
7356 * mechanism.
7357 * - DifferentialRequest: Differential PositionTorqueCurrentFOC request of the
7358 * mechanism.
7359 *
7360 * \param request Control object to request of the device
7361 * \returns Status Code of the request, 0 is OK
7362 */
7363 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicTorqueCurrentFOC_Position &request) override;
7364
7365 /**
7366 * \brief Differential control with torque current average target and
7367 * velocity difference target.
7368 *
7369 * - Diff_TorqueCurrentFOC_Velocity Parameters:
7370 * - AverageRequest: Average TorqueCurrentFOC request of the mechanism.
7371 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7372 * mechanism.
7373 *
7374 * \param request Control object to request of the device
7375 * \returns Status Code of the request, 0 is OK
7376 */
7377 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_TorqueCurrentFOC_Velocity &request) override;
7378
7379 /**
7380 * \brief Differential control with position average target and
7381 * velocity difference target using torque current control.
7382 *
7383 * - Diff_PositionTorqueCurrentFOC_Velocity Parameters:
7384 * - AverageRequest: Average PositionTorqueCurrentFOC request of the mechanism.
7385 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7386 * mechanism.
7387 *
7388 * \param request Control object to request of the device
7389 * \returns Status Code of the request, 0 is OK
7390 */
7391 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionTorqueCurrentFOC_Velocity &request) override;
7392
7393 /**
7394 * \brief Differential control with velocity average target and
7395 * velocity difference target using torque current control.
7396 *
7397 * - Diff_VelocityTorqueCurrentFOC_Velocity Parameters:
7398 * - AverageRequest: Average VelocityTorqueCurrentFOC request of the mechanism.
7399 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7400 * mechanism.
7401 *
7402 * \param request Control object to request of the device
7403 * \returns Status Code of the request, 0 is OK
7404 */
7405 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityTorqueCurrentFOC_Velocity &request) override;
7406
7407 /**
7408 * \brief Differential control with Motion Magic® average target and
7409 * velocity difference target using torque current control.
7410 *
7411 * - Diff_MotionMagicTorqueCurrentFOC_Velocity Parameters:
7412 * - AverageRequest: Average MotionMagicTorqueCurrentFOC request of the
7413 * mechanism.
7414 * - DifferentialRequest: Differential VelocityTorqueCurrentFOC request of the
7415 * mechanism.
7416 *
7417 * \param request Control object to request of the device
7418 * \returns Status Code of the request, 0 is OK
7419 */
7420 ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicTorqueCurrentFOC_Velocity &request) override;
7421
7422 /**
7423 * \brief Control device with generic control request object. User must make
7424 * sure the specified object is castable to a valid control request,
7425 * otherwise this function will fail at run-time and return the NotSupported
7426 * StatusCode
7427 *
7428 * \param request Control object to request of the device
7429 * \returns Status Code of the request, 0 is OK
7430 */
7432 {
7433 controls::ControlRequest const *ptr = &request;
7434 (void)ptr;
7435 auto const *DutyCycleOutValue = dynamic_cast<controls::DutyCycleOut const *>(ptr);
7436 if (DutyCycleOutValue != nullptr)
7437 return SetControl(*DutyCycleOutValue);
7438 auto const *TorqueCurrentFOCValue = dynamic_cast<controls::TorqueCurrentFOC const *>(ptr);
7439 if (TorqueCurrentFOCValue != nullptr)
7440 return SetControl(*TorqueCurrentFOCValue);
7441 auto const *VoltageOutValue = dynamic_cast<controls::VoltageOut const *>(ptr);
7442 if (VoltageOutValue != nullptr)
7443 return SetControl(*VoltageOutValue);
7444 auto const *PositionDutyCycleValue = dynamic_cast<controls::PositionDutyCycle const *>(ptr);
7445 if (PositionDutyCycleValue != nullptr)
7446 return SetControl(*PositionDutyCycleValue);
7447 auto const *PositionVoltageValue = dynamic_cast<controls::PositionVoltage const *>(ptr);
7448 if (PositionVoltageValue != nullptr)
7449 return SetControl(*PositionVoltageValue);
7450 auto const *PositionTorqueCurrentFOCValue = dynamic_cast<controls::PositionTorqueCurrentFOC const *>(ptr);
7451 if (PositionTorqueCurrentFOCValue != nullptr)
7452 return SetControl(*PositionTorqueCurrentFOCValue);
7453 auto const *VelocityDutyCycleValue = dynamic_cast<controls::VelocityDutyCycle const *>(ptr);
7454 if (VelocityDutyCycleValue != nullptr)
7455 return SetControl(*VelocityDutyCycleValue);
7456 auto const *VelocityVoltageValue = dynamic_cast<controls::VelocityVoltage const *>(ptr);
7457 if (VelocityVoltageValue != nullptr)
7458 return SetControl(*VelocityVoltageValue);
7459 auto const *VelocityTorqueCurrentFOCValue = dynamic_cast<controls::VelocityTorqueCurrentFOC const *>(ptr);
7460 if (VelocityTorqueCurrentFOCValue != nullptr)
7461 return SetControl(*VelocityTorqueCurrentFOCValue);
7462 auto const *MotionMagicDutyCycleValue = dynamic_cast<controls::MotionMagicDutyCycle const *>(ptr);
7463 if (MotionMagicDutyCycleValue != nullptr)
7464 return SetControl(*MotionMagicDutyCycleValue);
7465 auto const *MotionMagicVoltageValue = dynamic_cast<controls::MotionMagicVoltage const *>(ptr);
7466 if (MotionMagicVoltageValue != nullptr)
7467 return SetControl(*MotionMagicVoltageValue);
7468 auto const *MotionMagicTorqueCurrentFOCValue = dynamic_cast<controls::MotionMagicTorqueCurrentFOC const *>(ptr);
7469 if (MotionMagicTorqueCurrentFOCValue != nullptr)
7470 return SetControl(*MotionMagicTorqueCurrentFOCValue);
7471 auto const *DifferentialDutyCycleValue = dynamic_cast<controls::DifferentialDutyCycle const *>(ptr);
7472 if (DifferentialDutyCycleValue != nullptr)
7473 return SetControl(*DifferentialDutyCycleValue);
7474 auto const *DifferentialVoltageValue = dynamic_cast<controls::DifferentialVoltage const *>(ptr);
7475 if (DifferentialVoltageValue != nullptr)
7476 return SetControl(*DifferentialVoltageValue);
7477 auto const *DifferentialPositionDutyCycleValue = dynamic_cast<controls::DifferentialPositionDutyCycle const *>(ptr);
7478 if (DifferentialPositionDutyCycleValue != nullptr)
7479 return SetControl(*DifferentialPositionDutyCycleValue);
7480 auto const *DifferentialPositionVoltageValue = dynamic_cast<controls::DifferentialPositionVoltage const *>(ptr);
7481 if (DifferentialPositionVoltageValue != nullptr)
7482 return SetControl(*DifferentialPositionVoltageValue);
7483 auto const *DifferentialVelocityDutyCycleValue = dynamic_cast<controls::DifferentialVelocityDutyCycle const *>(ptr);
7484 if (DifferentialVelocityDutyCycleValue != nullptr)
7485 return SetControl(*DifferentialVelocityDutyCycleValue);
7486 auto const *DifferentialVelocityVoltageValue = dynamic_cast<controls::DifferentialVelocityVoltage const *>(ptr);
7487 if (DifferentialVelocityVoltageValue != nullptr)
7488 return SetControl(*DifferentialVelocityVoltageValue);
7489 auto const *DifferentialMotionMagicDutyCycleValue = dynamic_cast<controls::DifferentialMotionMagicDutyCycle const *>(ptr);
7490 if (DifferentialMotionMagicDutyCycleValue != nullptr)
7491 return SetControl(*DifferentialMotionMagicDutyCycleValue);
7492 auto const *DifferentialMotionMagicVoltageValue = dynamic_cast<controls::DifferentialMotionMagicVoltage const *>(ptr);
7493 if (DifferentialMotionMagicVoltageValue != nullptr)
7494 return SetControl(*DifferentialMotionMagicVoltageValue);
7495 auto const *FollowerValue = dynamic_cast<controls::Follower const *>(ptr);
7496 if (FollowerValue != nullptr)
7497 return SetControl(*FollowerValue);
7498 auto const *StrictFollowerValue = dynamic_cast<controls::StrictFollower const *>(ptr);
7499 if (StrictFollowerValue != nullptr)
7500 return SetControl(*StrictFollowerValue);
7501 auto const *DifferentialFollowerValue = dynamic_cast<controls::DifferentialFollower const *>(ptr);
7502 if (DifferentialFollowerValue != nullptr)
7503 return SetControl(*DifferentialFollowerValue);
7504 auto const *DifferentialStrictFollowerValue = dynamic_cast<controls::DifferentialStrictFollower const *>(ptr);
7505 if (DifferentialStrictFollowerValue != nullptr)
7506 return SetControl(*DifferentialStrictFollowerValue);
7507 auto const *NeutralOutValue = dynamic_cast<controls::NeutralOut const *>(ptr);
7508 if (NeutralOutValue != nullptr)
7509 return SetControl(*NeutralOutValue);
7510 auto const *CoastOutValue = dynamic_cast<controls::CoastOut const *>(ptr);
7511 if (CoastOutValue != nullptr)
7512 return SetControl(*CoastOutValue);
7513 auto const *StaticBrakeValue = dynamic_cast<controls::StaticBrake const *>(ptr);
7514 if (StaticBrakeValue != nullptr)
7515 return SetControl(*StaticBrakeValue);
7516 auto const *MusicToneValue = dynamic_cast<controls::MusicTone const *>(ptr);
7517 if (MusicToneValue != nullptr)
7518 return SetControl(*MusicToneValue);
7519 auto const *MotionMagicVelocityDutyCycleValue = dynamic_cast<controls::MotionMagicVelocityDutyCycle const *>(ptr);
7520 if (MotionMagicVelocityDutyCycleValue != nullptr)
7521 return SetControl(*MotionMagicVelocityDutyCycleValue);
7522 auto const *MotionMagicVelocityTorqueCurrentFOCValue = dynamic_cast<controls::MotionMagicVelocityTorqueCurrentFOC const *>(ptr);
7523 if (MotionMagicVelocityTorqueCurrentFOCValue != nullptr)
7524 return SetControl(*MotionMagicVelocityTorqueCurrentFOCValue);
7525 auto const *MotionMagicVelocityVoltageValue = dynamic_cast<controls::MotionMagicVelocityVoltage const *>(ptr);
7526 if (MotionMagicVelocityVoltageValue != nullptr)
7527 return SetControl(*MotionMagicVelocityVoltageValue);
7528 auto const *MotionMagicExpoDutyCycleValue = dynamic_cast<controls::MotionMagicExpoDutyCycle const *>(ptr);
7529 if (MotionMagicExpoDutyCycleValue != nullptr)
7530 return SetControl(*MotionMagicExpoDutyCycleValue);
7531 auto const *MotionMagicExpoVoltageValue = dynamic_cast<controls::MotionMagicExpoVoltage const *>(ptr);
7532 if (MotionMagicExpoVoltageValue != nullptr)
7533 return SetControl(*MotionMagicExpoVoltageValue);
7534 auto const *MotionMagicExpoTorqueCurrentFOCValue = dynamic_cast<controls::MotionMagicExpoTorqueCurrentFOC const *>(ptr);
7535 if (MotionMagicExpoTorqueCurrentFOCValue != nullptr)
7536 return SetControl(*MotionMagicExpoTorqueCurrentFOCValue);
7537 auto const *DynamicMotionMagicDutyCycleValue = dynamic_cast<controls::DynamicMotionMagicDutyCycle const *>(ptr);
7538 if (DynamicMotionMagicDutyCycleValue != nullptr)
7539 return SetControl(*DynamicMotionMagicDutyCycleValue);
7540 auto const *DynamicMotionMagicVoltageValue = dynamic_cast<controls::DynamicMotionMagicVoltage const *>(ptr);
7541 if (DynamicMotionMagicVoltageValue != nullptr)
7542 return SetControl(*DynamicMotionMagicVoltageValue);
7543 auto const *DynamicMotionMagicTorqueCurrentFOCValue = dynamic_cast<controls::DynamicMotionMagicTorqueCurrentFOC const *>(ptr);
7544 if (DynamicMotionMagicTorqueCurrentFOCValue != nullptr)
7545 return SetControl(*DynamicMotionMagicTorqueCurrentFOCValue);
7546 auto const *Diff_DutyCycleOut_PositionValue = dynamic_cast<controls::compound::Diff_DutyCycleOut_Position const *>(ptr);
7547 if (Diff_DutyCycleOut_PositionValue != nullptr)
7548 return SetControl(*Diff_DutyCycleOut_PositionValue);
7549 auto const *Diff_PositionDutyCycle_PositionValue = dynamic_cast<controls::compound::Diff_PositionDutyCycle_Position const *>(ptr);
7550 if (Diff_PositionDutyCycle_PositionValue != nullptr)
7551 return SetControl(*Diff_PositionDutyCycle_PositionValue);
7552 auto const *Diff_VelocityDutyCycle_PositionValue = dynamic_cast<controls::compound::Diff_VelocityDutyCycle_Position const *>(ptr);
7553 if (Diff_VelocityDutyCycle_PositionValue != nullptr)
7554 return SetControl(*Diff_VelocityDutyCycle_PositionValue);
7555 auto const *Diff_MotionMagicDutyCycle_PositionValue = dynamic_cast<controls::compound::Diff_MotionMagicDutyCycle_Position const *>(ptr);
7556 if (Diff_MotionMagicDutyCycle_PositionValue != nullptr)
7557 return SetControl(*Diff_MotionMagicDutyCycle_PositionValue);
7558 auto const *Diff_DutyCycleOut_VelocityValue = dynamic_cast<controls::compound::Diff_DutyCycleOut_Velocity const *>(ptr);
7559 if (Diff_DutyCycleOut_VelocityValue != nullptr)
7560 return SetControl(*Diff_DutyCycleOut_VelocityValue);
7561 auto const *Diff_PositionDutyCycle_VelocityValue = dynamic_cast<controls::compound::Diff_PositionDutyCycle_Velocity const *>(ptr);
7562 if (Diff_PositionDutyCycle_VelocityValue != nullptr)
7563 return SetControl(*Diff_PositionDutyCycle_VelocityValue);
7564 auto const *Diff_VelocityDutyCycle_VelocityValue = dynamic_cast<controls::compound::Diff_VelocityDutyCycle_Velocity const *>(ptr);
7565 if (Diff_VelocityDutyCycle_VelocityValue != nullptr)
7566 return SetControl(*Diff_VelocityDutyCycle_VelocityValue);
7567 auto const *Diff_MotionMagicDutyCycle_VelocityValue = dynamic_cast<controls::compound::Diff_MotionMagicDutyCycle_Velocity const *>(ptr);
7568 if (Diff_MotionMagicDutyCycle_VelocityValue != nullptr)
7569 return SetControl(*Diff_MotionMagicDutyCycle_VelocityValue);
7570 auto const *Diff_VoltageOut_PositionValue = dynamic_cast<controls::compound::Diff_VoltageOut_Position const *>(ptr);
7571 if (Diff_VoltageOut_PositionValue != nullptr)
7572 return SetControl(*Diff_VoltageOut_PositionValue);
7573 auto const *Diff_PositionVoltage_PositionValue = dynamic_cast<controls::compound::Diff_PositionVoltage_Position const *>(ptr);
7574 if (Diff_PositionVoltage_PositionValue != nullptr)
7575 return SetControl(*Diff_PositionVoltage_PositionValue);
7576 auto const *Diff_VelocityVoltage_PositionValue = dynamic_cast<controls::compound::Diff_VelocityVoltage_Position const *>(ptr);
7577 if (Diff_VelocityVoltage_PositionValue != nullptr)
7578 return SetControl(*Diff_VelocityVoltage_PositionValue);
7579 auto const *Diff_MotionMagicVoltage_PositionValue = dynamic_cast<controls::compound::Diff_MotionMagicVoltage_Position const *>(ptr);
7580 if (Diff_MotionMagicVoltage_PositionValue != nullptr)
7581 return SetControl(*Diff_MotionMagicVoltage_PositionValue);
7582 auto const *Diff_VoltageOut_VelocityValue = dynamic_cast<controls::compound::Diff_VoltageOut_Velocity const *>(ptr);
7583 if (Diff_VoltageOut_VelocityValue != nullptr)
7584 return SetControl(*Diff_VoltageOut_VelocityValue);
7585 auto const *Diff_PositionVoltage_VelocityValue = dynamic_cast<controls::compound::Diff_PositionVoltage_Velocity const *>(ptr);
7586 if (Diff_PositionVoltage_VelocityValue != nullptr)
7587 return SetControl(*Diff_PositionVoltage_VelocityValue);
7588 auto const *Diff_VelocityVoltage_VelocityValue = dynamic_cast<controls::compound::Diff_VelocityVoltage_Velocity const *>(ptr);
7589 if (Diff_VelocityVoltage_VelocityValue != nullptr)
7590 return SetControl(*Diff_VelocityVoltage_VelocityValue);
7591 auto const *Diff_MotionMagicVoltage_VelocityValue = dynamic_cast<controls::compound::Diff_MotionMagicVoltage_Velocity const *>(ptr);
7592 if (Diff_MotionMagicVoltage_VelocityValue != nullptr)
7593 return SetControl(*Diff_MotionMagicVoltage_VelocityValue);
7594 auto const *Diff_TorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_TorqueCurrentFOC_Position const *>(ptr);
7595 if (Diff_TorqueCurrentFOC_PositionValue != nullptr)
7596 return SetControl(*Diff_TorqueCurrentFOC_PositionValue);
7597 auto const *Diff_PositionTorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_PositionTorqueCurrentFOC_Position const *>(ptr);
7598 if (Diff_PositionTorqueCurrentFOC_PositionValue != nullptr)
7599 return SetControl(*Diff_PositionTorqueCurrentFOC_PositionValue);
7600 auto const *Diff_VelocityTorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_VelocityTorqueCurrentFOC_Position const *>(ptr);
7601 if (Diff_VelocityTorqueCurrentFOC_PositionValue != nullptr)
7602 return SetControl(*Diff_VelocityTorqueCurrentFOC_PositionValue);
7603 auto const *Diff_MotionMagicTorqueCurrentFOC_PositionValue = dynamic_cast<controls::compound::Diff_MotionMagicTorqueCurrentFOC_Position const *>(ptr);
7604 if (Diff_MotionMagicTorqueCurrentFOC_PositionValue != nullptr)
7605 return SetControl(*Diff_MotionMagicTorqueCurrentFOC_PositionValue);
7606 auto const *Diff_TorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_TorqueCurrentFOC_Velocity const *>(ptr);
7607 if (Diff_TorqueCurrentFOC_VelocityValue != nullptr)
7608 return SetControl(*Diff_TorqueCurrentFOC_VelocityValue);
7609 auto const *Diff_PositionTorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_PositionTorqueCurrentFOC_Velocity const *>(ptr);
7610 if (Diff_PositionTorqueCurrentFOC_VelocityValue != nullptr)
7611 return SetControl(*Diff_PositionTorqueCurrentFOC_VelocityValue);
7612 auto const *Diff_VelocityTorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_VelocityTorqueCurrentFOC_Velocity const *>(ptr);
7613 if (Diff_VelocityTorqueCurrentFOC_VelocityValue != nullptr)
7614 return SetControl(*Diff_VelocityTorqueCurrentFOC_VelocityValue);
7615 auto const *Diff_MotionMagicTorqueCurrentFOC_VelocityValue = dynamic_cast<controls::compound::Diff_MotionMagicTorqueCurrentFOC_Velocity const *>(ptr);
7616 if (Diff_MotionMagicTorqueCurrentFOC_VelocityValue != nullptr)
7617 return SetControl(*Diff_MotionMagicTorqueCurrentFOC_VelocityValue);
7619 }
7620
7621
7622 /**
7623 * \brief Sets the mechanism position of the device in mechanism
7624 * rotations.
7625 *
7626 * \param newValue Value to set to. Units are in rotations.
7627 * \param timeoutSeconds Maximum time to wait up to in seconds.
7628 * \returns StatusCode of the set command
7629 */
7630 ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue, units::time::second_t timeoutSeconds) override
7631 {
7632 return GetConfigurator().SetPosition(newValue, timeoutSeconds);
7633 }
7634 /**
7635 * \brief Sets the mechanism position of the device in mechanism
7636 * rotations.
7637 *
7638 * This will wait up to 0.100 seconds (100ms) by default.
7639 *
7640 * \param newValue Value to set to. Units are in rotations.
7641 * \returns StatusCode of the set command
7642 */
7643 ctre::phoenix::StatusCode SetPosition(units::angle::turn_t newValue) override
7644 {
7645 return SetPosition(newValue, 0.100_s);
7646 }
7647
7648 /**
7649 * \brief Clear the sticky faults in the device.
7650 *
7651 * \details This typically has no impact on the device functionality.
7652 * Instead, it just clears telemetry faults that are accessible via
7653 * API and Tuner Self-Test.
7654 *
7655 * \param timeoutSeconds Maximum time to wait up to in seconds.
7656 * \returns StatusCode of the set command
7657 */
7658 ctre::phoenix::StatusCode ClearStickyFaults(units::time::second_t timeoutSeconds) override
7659 {
7660 return GetConfigurator().ClearStickyFaults(timeoutSeconds);
7661 }
7662 /**
7663 * \brief Clear the sticky faults in the device.
7664 *
7665 * \details This typically has no impact on the device functionality.
7666 * Instead, it just clears telemetry faults that are accessible via
7667 * API and Tuner Self-Test.
7668 *
7669 * This will wait up to 0.100 seconds (100ms) by default.
7670 *
7671 * \returns StatusCode of the set command
7672 */
7674 {
7675 return ClearStickyFaults(0.100_s);
7676 }
7677
7678 /**
7679 * \brief Clear sticky fault: Hardware fault occurred
7680 *
7681 * \param timeoutSeconds Maximum time to wait up to in seconds.
7682 * \returns StatusCode of the set command
7683 */
7684 ctre::phoenix::StatusCode ClearStickyFault_Hardware(units::time::second_t timeoutSeconds) override
7685 {
7686 return GetConfigurator().ClearStickyFault_Hardware(timeoutSeconds);
7687 }
7688 /**
7689 * \brief Clear sticky fault: Hardware fault occurred
7690 *
7691 * This will wait up to 0.100 seconds (100ms) by default.
7692 *
7693 * \returns StatusCode of the set command
7694 */
7699
7700 /**
7701 * \brief Clear sticky fault: Processor temperature exceeded limit
7702 *
7703 * \param timeoutSeconds Maximum time to wait up to in seconds.
7704 * \returns StatusCode of the set command
7705 */
7706 ctre::phoenix::StatusCode ClearStickyFault_ProcTemp(units::time::second_t timeoutSeconds) override
7707 {
7708 return GetConfigurator().ClearStickyFault_ProcTemp(timeoutSeconds);
7709 }
7710 /**
7711 * \brief Clear sticky fault: Processor temperature exceeded limit
7712 *
7713 * This will wait up to 0.100 seconds (100ms) by default.
7714 *
7715 * \returns StatusCode of the set command
7716 */
7721
7722 /**
7723 * \brief Clear sticky fault: Device temperature exceeded limit
7724 *
7725 * \param timeoutSeconds Maximum time to wait up to in seconds.
7726 * \returns StatusCode of the set command
7727 */
7728 ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp(units::time::second_t timeoutSeconds) override
7729 {
7730 return GetConfigurator().ClearStickyFault_DeviceTemp(timeoutSeconds);
7731 }
7732 /**
7733 * \brief Clear sticky fault: Device temperature exceeded limit
7734 *
7735 * This will wait up to 0.100 seconds (100ms) by default.
7736 *
7737 * \returns StatusCode of the set command
7738 */
7743
7744 /**
7745 * \brief Clear sticky fault: Device supply voltage dropped to near
7746 * brownout levels
7747 *
7748 * \param timeoutSeconds Maximum time to wait up to in seconds.
7749 * \returns StatusCode of the set command
7750 */
7751 ctre::phoenix::StatusCode ClearStickyFault_Undervoltage(units::time::second_t timeoutSeconds) override
7752 {
7753 return GetConfigurator().ClearStickyFault_Undervoltage(timeoutSeconds);
7754 }
7755 /**
7756 * \brief Clear sticky fault: Device supply voltage dropped to near
7757 * brownout levels
7758 *
7759 * This will wait up to 0.100 seconds (100ms) by default.
7760 *
7761 * \returns StatusCode of the set command
7762 */
7767
7768 /**
7769 * \brief Clear sticky fault: Device boot while detecting the enable
7770 * signal
7771 *
7772 * \param timeoutSeconds Maximum time to wait up to in seconds.
7773 * \returns StatusCode of the set command
7774 */
7775 ctre::phoenix::StatusCode ClearStickyFault_BootDuringEnable(units::time::second_t timeoutSeconds) override
7776 {
7777 return GetConfigurator().ClearStickyFault_BootDuringEnable(timeoutSeconds);
7778 }
7779 /**
7780 * \brief Clear sticky fault: Device boot while detecting the enable
7781 * signal
7782 *
7783 * This will wait up to 0.100 seconds (100ms) by default.
7784 *
7785 * \returns StatusCode of the set command
7786 */
7791
7792 /**
7793 * \brief Clear sticky fault: An unlicensed feature is in use, device
7794 * may not behave as expected.
7795 *
7796 * \param timeoutSeconds Maximum time to wait up to in seconds.
7797 * \returns StatusCode of the set command
7798 */
7799 ctre::phoenix::StatusCode ClearStickyFault_UnlicensedFeatureInUse(units::time::second_t timeoutSeconds) override
7800 {
7802 }
7803 /**
7804 * \brief Clear sticky fault: An unlicensed feature is in use, device
7805 * may not behave as expected.
7806 *
7807 * This will wait up to 0.100 seconds (100ms) by default.
7808 *
7809 * \returns StatusCode of the set command
7810 */
7815
7816 /**
7817 * \brief Clear sticky fault: Bridge was disabled most likely due to
7818 * supply voltage dropping too low.
7819 *
7820 * \param timeoutSeconds Maximum time to wait up to in seconds.
7821 * \returns StatusCode of the set command
7822 */
7823 ctre::phoenix::StatusCode ClearStickyFault_BridgeBrownout(units::time::second_t timeoutSeconds) override
7824 {
7825 return GetConfigurator().ClearStickyFault_BridgeBrownout(timeoutSeconds);
7826 }
7827 /**
7828 * \brief Clear sticky fault: Bridge was disabled most likely due to
7829 * supply voltage dropping too low.
7830 *
7831 * This will wait up to 0.100 seconds (100ms) by default.
7832 *
7833 * \returns StatusCode of the set command
7834 */
7839
7840 /**
7841 * \brief Clear sticky fault: The remote sensor has reset.
7842 *
7843 * \param timeoutSeconds Maximum time to wait up to in seconds.
7844 * \returns StatusCode of the set command
7845 */
7846 ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorReset(units::time::second_t timeoutSeconds) override
7847 {
7848 return GetConfigurator().ClearStickyFault_RemoteSensorReset(timeoutSeconds);
7849 }
7850 /**
7851 * \brief Clear sticky fault: The remote sensor has reset.
7852 *
7853 * This will wait up to 0.100 seconds (100ms) by default.
7854 *
7855 * \returns StatusCode of the set command
7856 */
7861
7862 /**
7863 * \brief Clear sticky fault: The remote Talon used for differential
7864 * control is not present on CAN Bus.
7865 *
7866 * \param timeoutSeconds Maximum time to wait up to in seconds.
7867 * \returns StatusCode of the set command
7868 */
7869 ctre::phoenix::StatusCode ClearStickyFault_MissingDifferentialFX(units::time::second_t timeoutSeconds) override
7870 {
7872 }
7873 /**
7874 * \brief Clear sticky fault: The remote Talon used for differential
7875 * control is not present on CAN Bus.
7876 *
7877 * This will wait up to 0.100 seconds (100ms) by default.
7878 *
7879 * \returns StatusCode of the set command
7880 */
7885
7886 /**
7887 * \brief Clear sticky fault: The remote sensor position has
7888 * overflowed. Because of the nature of remote sensors, it is possible
7889 * for the remote sensor position to overflow beyond what is supported
7890 * by the status signal frame. However, this is rare and cannot occur
7891 * over the course of an FRC match under normal use.
7892 *
7893 * \param timeoutSeconds Maximum time to wait up to in seconds.
7894 * \returns StatusCode of the set command
7895 */
7896 ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorPosOverflow(units::time::second_t timeoutSeconds) override
7897 {
7899 }
7900 /**
7901 * \brief Clear sticky fault: The remote sensor position has
7902 * overflowed. Because of the nature of remote sensors, it is possible
7903 * for the remote sensor position to overflow beyond what is supported
7904 * by the status signal frame. However, this is rare and cannot occur
7905 * over the course of an FRC match under normal use.
7906 *
7907 * This will wait up to 0.100 seconds (100ms) by default.
7908 *
7909 * \returns StatusCode of the set command
7910 */
7915
7916 /**
7917 * \brief Clear sticky fault: Supply Voltage has exceeded the maximum
7918 * voltage rating of device.
7919 *
7920 * \param timeoutSeconds Maximum time to wait up to in seconds.
7921 * \returns StatusCode of the set command
7922 */
7923 ctre::phoenix::StatusCode ClearStickyFault_OverSupplyV(units::time::second_t timeoutSeconds) override
7924 {
7925 return GetConfigurator().ClearStickyFault_OverSupplyV(timeoutSeconds);
7926 }
7927 /**
7928 * \brief Clear sticky fault: Supply Voltage has exceeded the maximum
7929 * voltage rating of device.
7930 *
7931 * This will wait up to 0.100 seconds (100ms) by default.
7932 *
7933 * \returns StatusCode of the set command
7934 */
7939
7940 /**
7941 * \brief Clear sticky fault: Supply Voltage is unstable. Ensure you
7942 * are using a battery and current limited power supply.
7943 *
7944 * \param timeoutSeconds Maximum time to wait up to in seconds.
7945 * \returns StatusCode of the set command
7946 */
7947 ctre::phoenix::StatusCode ClearStickyFault_UnstableSupplyV(units::time::second_t timeoutSeconds) override
7948 {
7949 return GetConfigurator().ClearStickyFault_UnstableSupplyV(timeoutSeconds);
7950 }
7951 /**
7952 * \brief Clear sticky fault: Supply Voltage is unstable. Ensure you
7953 * are using a battery and current limited power supply.
7954 *
7955 * This will wait up to 0.100 seconds (100ms) by default.
7956 *
7957 * \returns StatusCode of the set command
7958 */
7963
7964 /**
7965 * \brief Clear sticky fault: Reverse limit switch has been asserted.
7966 * Output is set to neutral.
7967 *
7968 * \param timeoutSeconds Maximum time to wait up to in seconds.
7969 * \returns StatusCode of the set command
7970 */
7971 ctre::phoenix::StatusCode ClearStickyFault_ReverseHardLimit(units::time::second_t timeoutSeconds) override
7972 {
7973 return GetConfigurator().ClearStickyFault_ReverseHardLimit(timeoutSeconds);
7974 }
7975 /**
7976 * \brief Clear sticky fault: Reverse limit switch has been asserted.
7977 * Output is set to neutral.
7978 *
7979 * This will wait up to 0.100 seconds (100ms) by default.
7980 *
7981 * \returns StatusCode of the set command
7982 */
7987
7988 /**
7989 * \brief Clear sticky fault: Forward limit switch has been asserted.
7990 * Output is set to neutral.
7991 *
7992 * \param timeoutSeconds Maximum time to wait up to in seconds.
7993 * \returns StatusCode of the set command
7994 */
7995 ctre::phoenix::StatusCode ClearStickyFault_ForwardHardLimit(units::time::second_t timeoutSeconds) override
7996 {
7997 return GetConfigurator().ClearStickyFault_ForwardHardLimit(timeoutSeconds);
7998 }
7999 /**
8000 * \brief Clear sticky fault: Forward limit switch has been asserted.
8001 * Output is set to neutral.
8002 *
8003 * This will wait up to 0.100 seconds (100ms) by default.
8004 *
8005 * \returns StatusCode of the set command
8006 */
8011
8012 /**
8013 * \brief Clear sticky fault: Reverse soft limit has been asserted.
8014 * Output is set to neutral.
8015 *
8016 * \param timeoutSeconds Maximum time to wait up to in seconds.
8017 * \returns StatusCode of the set command
8018 */
8019 ctre::phoenix::StatusCode ClearStickyFault_ReverseSoftLimit(units::time::second_t timeoutSeconds) override
8020 {
8021 return GetConfigurator().ClearStickyFault_ReverseSoftLimit(timeoutSeconds);
8022 }
8023 /**
8024 * \brief Clear sticky fault: Reverse soft limit has been asserted.
8025 * Output is set to neutral.
8026 *
8027 * This will wait up to 0.100 seconds (100ms) by default.
8028 *
8029 * \returns StatusCode of the set command
8030 */
8035
8036 /**
8037 * \brief Clear sticky fault: Forward soft limit has been asserted.
8038 * Output is set to neutral.
8039 *
8040 * \param timeoutSeconds Maximum time to wait up to in seconds.
8041 * \returns StatusCode of the set command
8042 */
8043 ctre::phoenix::StatusCode ClearStickyFault_ForwardSoftLimit(units::time::second_t timeoutSeconds) override
8044 {
8045 return GetConfigurator().ClearStickyFault_ForwardSoftLimit(timeoutSeconds);
8046 }
8047 /**
8048 * \brief Clear sticky fault: Forward soft limit has been asserted.
8049 * Output is set to neutral.
8050 *
8051 * This will wait up to 0.100 seconds (100ms) by default.
8052 *
8053 * \returns StatusCode of the set command
8054 */
8059
8060 /**
8061 * \brief Clear sticky fault: The remote soft limit device is not
8062 * present on CAN Bus.
8063 *
8064 * \param timeoutSeconds Maximum time to wait up to in seconds.
8065 * \returns StatusCode of the set command
8066 */
8067 ctre::phoenix::StatusCode ClearStickyFault_MissingSoftLimitRemote(units::time::second_t timeoutSeconds) override
8068 {
8070 }
8071 /**
8072 * \brief Clear sticky fault: The remote soft limit device is not
8073 * present on CAN Bus.
8074 *
8075 * This will wait up to 0.100 seconds (100ms) by default.
8076 *
8077 * \returns StatusCode of the set command
8078 */
8083
8084 /**
8085 * \brief Clear sticky fault: The remote limit switch device is not
8086 * present on CAN Bus.
8087 *
8088 * \param timeoutSeconds Maximum time to wait up to in seconds.
8089 * \returns StatusCode of the set command
8090 */
8091 ctre::phoenix::StatusCode ClearStickyFault_MissingHardLimitRemote(units::time::second_t timeoutSeconds) override
8092 {
8094 }
8095 /**
8096 * \brief Clear sticky fault: The remote limit switch device is not
8097 * present on CAN Bus.
8098 *
8099 * This will wait up to 0.100 seconds (100ms) by default.
8100 *
8101 * \returns StatusCode of the set command
8102 */
8107
8108 /**
8109 * \brief Clear sticky fault: The remote sensor's data is no longer
8110 * trusted. This can happen if the remote sensor disappears from the
8111 * CAN bus or if the remote sensor indicates its data is no longer
8112 * valid, such as when a CANcoder's magnet strength falls into the
8113 * "red" range.
8114 *
8115 * \param timeoutSeconds Maximum time to wait up to in seconds.
8116 * \returns StatusCode of the set command
8117 */
8118 ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorDataInvalid(units::time::second_t timeoutSeconds) override
8119 {
8121 }
8122 /**
8123 * \brief Clear sticky fault: The remote sensor's data is no longer
8124 * trusted. This can happen if the remote sensor disappears from the
8125 * CAN bus or if the remote sensor indicates its data is no longer
8126 * valid, such as when a CANcoder's magnet strength falls into the
8127 * "red" range.
8128 *
8129 * This will wait up to 0.100 seconds (100ms) by default.
8130 *
8131 * \returns StatusCode of the set command
8132 */
8137
8138 /**
8139 * \brief Clear sticky fault: The remote sensor used for fusion has
8140 * fallen out of sync to the local sensor. A re-synchronization has
8141 * occurred, which may cause a discontinuity. This typically happens
8142 * if there is significant slop in the mechanism, or if the
8143 * RotorToSensorRatio configuration parameter is incorrect.
8144 *
8145 * \param timeoutSeconds Maximum time to wait up to in seconds.
8146 * \returns StatusCode of the set command
8147 */
8148 ctre::phoenix::StatusCode ClearStickyFault_FusedSensorOutOfSync(units::time::second_t timeoutSeconds) override
8149 {
8151 }
8152 /**
8153 * \brief Clear sticky fault: The remote sensor used for fusion has
8154 * fallen out of sync to the local sensor. A re-synchronization has
8155 * occurred, which may cause a discontinuity. This typically happens
8156 * if there is significant slop in the mechanism, or if the
8157 * RotorToSensorRatio configuration parameter is incorrect.
8158 *
8159 * This will wait up to 0.100 seconds (100ms) by default.
8160 *
8161 * \returns StatusCode of the set command
8162 */
8167
8168 /**
8169 * \brief Clear sticky fault: Stator current limit occured.
8170 *
8171 * \param timeoutSeconds Maximum time to wait up to in seconds.
8172 * \returns StatusCode of the set command
8173 */
8174 ctre::phoenix::StatusCode ClearStickyFault_StatorCurrLimit(units::time::second_t timeoutSeconds) override
8175 {
8176 return GetConfigurator().ClearStickyFault_StatorCurrLimit(timeoutSeconds);
8177 }
8178 /**
8179 * \brief Clear sticky fault: Stator current limit occured.
8180 *
8181 * This will wait up to 0.100 seconds (100ms) by default.
8182 *
8183 * \returns StatusCode of the set command
8184 */
8189
8190 /**
8191 * \brief Clear sticky fault: Supply current limit occured.
8192 *
8193 * \param timeoutSeconds Maximum time to wait up to in seconds.
8194 * \returns StatusCode of the set command
8195 */
8196 ctre::phoenix::StatusCode ClearStickyFault_SupplyCurrLimit(units::time::second_t timeoutSeconds) override
8197 {
8198 return GetConfigurator().ClearStickyFault_SupplyCurrLimit(timeoutSeconds);
8199 }
8200 /**
8201 * \brief Clear sticky fault: Supply current limit occured.
8202 *
8203 * This will wait up to 0.100 seconds (100ms) by default.
8204 *
8205 * \returns StatusCode of the set command
8206 */
8211
8212 /**
8213 * \brief Clear sticky fault: Using Fused CANcoder feature while
8214 * unlicensed. Device has fallen back to remote CANcoder.
8215 *
8216 * \param timeoutSeconds Maximum time to wait up to in seconds.
8217 * \returns StatusCode of the set command
8218 */
8220 {
8222 }
8223 /**
8224 * \brief Clear sticky fault: Using Fused CANcoder feature while
8225 * unlicensed. Device has fallen back to remote CANcoder.
8226 *
8227 * This will wait up to 0.100 seconds (100ms) by default.
8228 *
8229 * \returns StatusCode of the set command
8230 */
8235
8236 /**
8237 * \brief Clear sticky fault: Static brake was momentarily disabled
8238 * due to excessive braking current while disabled.
8239 *
8240 * \param timeoutSeconds Maximum time to wait up to in seconds.
8241 * \returns StatusCode of the set command
8242 */
8243 ctre::phoenix::StatusCode ClearStickyFault_StaticBrakeDisabled(units::time::second_t timeoutSeconds) override
8244 {
8246 }
8247 /**
8248 * \brief Clear sticky fault: Static brake was momentarily disabled
8249 * due to excessive braking current while disabled.
8250 *
8251 * This will wait up to 0.100 seconds (100ms) by default.
8252 *
8253 * \returns StatusCode of the set command
8254 */
8259};
8260
8261}
8262}
8263
8264}
8265}
8266
ii that the Software will be uninterrupted or error free
Definition CTRE_LICENSE.txt:251
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:656
Configs that affect audible components of the device.
Definition Configs.hpp:3703
std::string Serialize() const override
Definition Configs.hpp:3808
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3818
std::string ToString() const override
Definition Configs.hpp:3798
Configs that affect general behavior during closed-looping.
Definition Configs.hpp:4362
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:4422
std::string ToString() const override
Definition Configs.hpp:4406
std::string Serialize() const override
Definition Configs.hpp:4414
Configs that affect the closed-loop control of this motor controller.
Definition Configs.hpp:3004
std::string Serialize() const override
Definition Configs.hpp:3162
std::string ToString() const override
Definition Configs.hpp:3152
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3172
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:4258
std::string ToString() const override
Definition Configs.hpp:4327
std::string Serialize() const override
Definition Configs.hpp:4336
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:4345
Configs related to constants used for differential control of a mechanism.
Definition Configs.hpp:2692
std::string Serialize() const override
Definition Configs.hpp:2802
std::string ToString() const override
Definition Configs.hpp:2792
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:2812
Configs related to sensors used for differential control of a mechanism.
Definition Configs.hpp:2513
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:2673
std::string Serialize() const override
Definition Configs.hpp:2663
std::string ToString() const override
Definition Configs.hpp:2653
Configs that affect the feedback of this motor controller.
Definition Configs.hpp:1485
std::string ToString() const override
Definition Configs.hpp:1837
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:1863
std::string Serialize() const override
Definition Configs.hpp:1850
Configs that change how the motor controller behaves under different limit switch states.
Definition Configs.hpp:3199
std::string ToString() const override
Definition Configs.hpp:3634
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3672
std::string Serialize() const override
Definition Configs.hpp:3653
Configs for Motion Magic®.
Definition Configs.hpp:4002
std::string Serialize() const override
Definition Configs.hpp:4216
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:4228
std::string ToString() const override
Definition Configs.hpp:4204
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:2837
std::string Serialize() const override
Definition Configs.hpp:2969
std::string ToString() const override
Definition Configs.hpp:2959
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:2979
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:5711
std::string ToString() const override
Definition Configs.hpp:6135
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:6167
std::string Serialize() const override
Definition Configs.hpp:6151
Gains for the specified slot.
Definition Configs.hpp:6206
std::string Serialize() const override
Definition Configs.hpp:6646
std::string ToString() const override
Definition Configs.hpp:6630
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:6662
Gains for the specified slot.
Definition Configs.hpp:6701
std::string Serialize() const override
Definition Configs.hpp:7141
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:7157
std::string ToString() const override
Definition Configs.hpp:7125
Gains for the specified slot.
Definition Configs.hpp:7195
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize)
Definition Configs.hpp:7712
std::string Serialize() const
Definition Configs.hpp:7695
Configs that affect how software-limit switches behave.
Definition Configs.hpp:3837
std::string ToString() const override
Definition Configs.hpp:3956
std::string Serialize() const override
Definition Configs.hpp:3967
ctre::phoenix::StatusCode Deserialize(const std::string &to_deserialize) override
Definition Configs.hpp:3978
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:26
Abstract Control Request class that other control requests extend for use.
Definition ControlRequest.hpp:30
Request a specified motor duty cycle with a differential position closed-loop.
Definition DifferentialDutyCycle.hpp:30
Follow the differential motor output of another Talon.
Definition DifferentialFollower.hpp:29
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicDutyCycle.hpp:34
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicVoltage.hpp:33
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionDutyCycle.hpp:28
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionVoltage.hpp:28
Follow the differential motor output of another Talon while ignoring the master's invert setting.
Definition DifferentialStrictFollower.hpp:31
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityDutyCycle.hpp:29
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityVoltage.hpp:29
Request a specified voltage with a differential position closed-loop.
Definition DifferentialVoltage.hpp:30
Request a specified motor duty cycle.
Definition DutyCycleOut.hpp:27
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicDutyCycle.hpp:41
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicTorqueCurrentFOC.hpp:40
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicVoltage.hpp:40
Follow the motor output of another Talon.
Definition Follower.hpp:29
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicDutyCycle.hpp:35
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoDutyCycle.hpp:38
Requires Phoenix Pro; Requests Motion Magic® to target a final position using an exponential motion p...
Definition MotionMagicExpoTorqueCurrentFOC.hpp:38
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoVoltage.hpp:37
Requires Phoenix Pro; Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicTorqueCurrentFOC.hpp:35
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityDutyCycle.hpp:42
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityTorqueCurrentFOC.hpp:42
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityVoltage.hpp:41
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicVoltage.hpp:34
Plays a single tone at the user specified frequency.
Definition MusicTone.hpp:25
Request neutral output of actuator.
Definition NeutralOut.hpp:26
Request PID to target position with duty cycle feedforward.
Definition PositionDutyCycle.hpp:30
Requires Phoenix Pro; Request PID to target position with torque current feedforward.
Definition PositionTorqueCurrentFOC.hpp:31
Request PID to target position with voltage feedforward.
Definition PositionVoltage.hpp:30
Applies full neutral-brake by shorting motor leads together.
Definition StaticBrake.hpp:25
Follow the motor output of another Talon while ignoring the master's invert setting.
Definition StrictFollower.hpp:31
Requires Phoenix Pro; Request a specified motor current (field oriented control).
Definition TorqueCurrentFOC.hpp:31
Request PID to target velocity with duty cycle feedforward.
Definition VelocityDutyCycle.hpp:30
Requires Phoenix Pro; Request PID to target velocity with torque current feedforward.
Definition VelocityTorqueCurrentFOC.hpp:31
Request PID to target velocity with voltage feedforward.
Definition VelocityVoltage.hpp:30
Request a specified voltage.
Definition VoltageOut.hpp:28
Definition DeviceIdentifier.hpp:19
Parent class for all devices.
Definition ParentDevice.hpp:28
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:2961
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:7684
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:8019
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:8196
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:7787
ctre::phoenix::StatusCode ClearStickyFaults() override
Clear the sticky faults in the device.
Definition CoreTalonFX.hpp:7673
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:8207
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:7751
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:8103
ctre::phoenix::StatusCode ClearStickyFault_StaticBrakeDisabled() override
Clear sticky fault: Static brake was momentarily disabled due to excessive braking current while disa...
Definition CoreTalonFX.hpp:8255
ctre::phoenix::StatusCode ClearStickyFault_StatorCurrLimit() override
Clear sticky fault: Stator current limit occured.
Definition CoreTalonFX.hpp:8185
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:7869
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:7983
ctre::phoenix::StatusCode ClearStickyFault_MissingSoftLimitRemote() override
Clear sticky fault: The remote soft limit device is not present on CAN Bus.
Definition CoreTalonFX.hpp:8079
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:8133
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:8163
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:8174
ctre::phoenix::StatusCode ClearStickyFault_ProcTemp() override
Clear sticky fault: Processor temperature exceeded limit.
Definition CoreTalonFX.hpp:7717
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:7739
configs::TalonFXConfigurator const & GetConfigurator() const
Gets the configurator for this TalonFX.
Definition CoreTalonFX.hpp:2984
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:7896
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:8118
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:7835
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:8231
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:7911
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:7799
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:7763
ctre::phoenix::StatusCode ClearStickyFaults(units::time::second_t timeoutSeconds) override
Clear the sticky faults in the device.
Definition CoreTalonFX.hpp:7658
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:8043
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:7935
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:7706
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:7431
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:8148
ctre::phoenix::StatusCode ClearStickyFault_DeviceTemp(units::time::second_t timeoutSeconds) override
Clear sticky fault: Device temperature exceeded limit.
Definition CoreTalonFX.hpp:7728
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:7695
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:2972
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:7959
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:7857
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:7881
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:8067
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:8219
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:8007
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:8031
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:7630
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:8243
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:7995
ctre::phoenix::StatusCode ClearStickyFault_UnstableSupplyV(units::time::second_t timeoutSeconds) override
Clear sticky fault: Supply Voltage is unstable.
Definition CoreTalonFX.hpp:7947
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:8055
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:7923
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:7811
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:7971
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:8091
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:7643
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:7823
ctre::phoenix::StatusCode ClearStickyFault_RemoteSensorReset(units::time::second_t timeoutSeconds) override
Clear sticky fault: The remote sensor has reset.
Definition CoreTalonFX.hpp:7846
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:3002
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:7775
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 MotionMagicExpoTorqueCurrentFOC.hpp:18
Definition span.hpp:401