CTRE Phoenix 6 C++ 25.0.0-beta-4
Loading...
Searching...
No Matches
HasTalonControls.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
57
58
59namespace ctre {
60namespace phoenix6 {
61namespace hardware {
62namespace traits {
63
64/**
65 * Contains all control functions available for devices that support Talon
66 * controls.
67 */
69{
70public:
71 virtual ~HasTalonControls() = default;
72
73
74 /**
75 * \brief Request a specified motor duty cycle.
76 *
77 * \details This control mode will output a proportion of the supplied
78 * voltage which is supplied by the user.
79 *
80 * - DutyCycleOut Parameters:
81 * - Output: Proportion of supply voltage to apply in fractional units between -1
82 * and +1
83 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
84 * increases peak power by ~15%. Set to false to use trapezoidal
85 * commutation.
86 *
87 * FOC improves motor performance by leveraging torque (current)
88 * control. However, this may be inconvenient for applications that
89 * require specifying duty cycle or voltage. CTR-Electronics has
90 * developed a hybrid method that combines the performances gains of
91 * FOC while still allowing applications to provide duty cycle or
92 * voltage demand. This not to be confused with simple sinusoidal
93 * control or phase voltage control which lacks the performance
94 * gains.
95 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
96 * is zero (or within deadband). Set to false to use
97 * the NeutralMode configuration setting (default).
98 * This flag exists to provide the fundamental
99 * behavior of this control when output is zero, which
100 * is to provide 0V to the motor.
101 * - LimitForwardMotion: Set to true to force forward limiting. This allows
102 * users to use other limit switch sensors connected to
103 * robot controller. This also allows use of active
104 * sensors that require external power.
105 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
106 * users to use other limit switch sensors connected to
107 * robot controller. This also allows use of active
108 * sensors that require external power.
109 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
110 * LimitForwardMotion and LimitReverseMotion parameters,
111 * instead allowing motion.
112 *
113 * This can be useful on mechanisms such as an
114 * intake/feeder, where a limit switch stops motion while
115 * intaking but should be ignored when feeding to a
116 * shooter.
117 *
118 * The hardware limit faults and Forward/ReverseLimit
119 * signals will still report the values of the limit
120 * switches regardless of this parameter.
121 * - UseTimesync: Set to true to delay applying this control request until a
122 * timesync boundary (requires Phoenix Pro and CANivore). This
123 * eliminates the impact of nondeterministic network delays in
124 * exchange for a larger but deterministic control latency.
125 *
126 * This requires setting the ControlTimesyncFreqHz config in
127 * MotorOutputConfigs. Additionally, when this is enabled, the
128 * UpdateFreqHz of this request should be set to 0 Hz.
129 *
130 * \param request Control object to request of the device
131 * \returns Status Code of the request, 0 is OK
132 */
134
135 /**
136 * \brief Request a specified voltage.
137 *
138 * \details This control mode will attempt to apply the specified
139 * voltage to the motor. If the supply voltage is below the requested
140 * voltage, the motor controller will output the supply voltage.
141 *
142 * - VoltageOut Parameters:
143 * - Output: Voltage to attempt to drive at
144 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
145 * increases peak power by ~15%. Set to false to use trapezoidal
146 * commutation.
147 *
148 * FOC improves motor performance by leveraging torque (current)
149 * control. However, this may be inconvenient for applications that
150 * require specifying duty cycle or voltage. CTR-Electronics has
151 * developed a hybrid method that combines the performances gains of
152 * FOC while still allowing applications to provide duty cycle or
153 * voltage demand. This not to be confused with simple sinusoidal
154 * control or phase voltage control which lacks the performance
155 * gains.
156 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
157 * is zero (or within deadband). Set to false to use
158 * the NeutralMode configuration setting (default).
159 * This flag exists to provide the fundamental
160 * behavior of this control when output is zero, which
161 * is to provide 0V to the motor.
162 * - LimitForwardMotion: Set to true to force forward limiting. This allows
163 * users to use other limit switch sensors connected to
164 * robot controller. This also allows use of active
165 * sensors that require external power.
166 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
167 * users to use other limit switch sensors connected to
168 * robot controller. This also allows use of active
169 * sensors that require external power.
170 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
171 * LimitForwardMotion and LimitReverseMotion parameters,
172 * instead allowing motion.
173 *
174 * This can be useful on mechanisms such as an
175 * intake/feeder, where a limit switch stops motion while
176 * intaking but should be ignored when feeding to a
177 * shooter.
178 *
179 * The hardware limit faults and Forward/ReverseLimit
180 * signals will still report the values of the limit
181 * switches regardless of this parameter.
182 * - UseTimesync: Set to true to delay applying this control request until a
183 * timesync boundary (requires Phoenix Pro and CANivore). This
184 * eliminates the impact of nondeterministic network delays in
185 * exchange for a larger but deterministic control latency.
186 *
187 * This requires setting the ControlTimesyncFreqHz config in
188 * MotorOutputConfigs. Additionally, when this is enabled, the
189 * UpdateFreqHz of this request should be set to 0 Hz.
190 *
191 * \param request Control object to request of the device
192 * \returns Status Code of the request, 0 is OK
193 */
195
196 /**
197 * \brief Request PID to target position with duty cycle feedforward.
198 *
199 * \details This control mode will set the motor's position setpoint
200 * to the position specified by the user. In addition, it will apply
201 * an additional duty cycle as an arbitrary feedforward value.
202 *
203 * - PositionDutyCycle Parameters:
204 * - Position: Position to drive toward in rotations.
205 * - Velocity: Velocity to drive toward in rotations per second. This is
206 * typically used for motion profiles generated by the robot program.
207 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
208 * increases peak power by ~15%. Set to false to use trapezoidal
209 * commutation.
210 *
211 * FOC improves motor performance by leveraging torque (current)
212 * control. However, this may be inconvenient for applications that
213 * require specifying duty cycle or voltage. CTR-Electronics has
214 * developed a hybrid method that combines the performances gains of
215 * FOC while still allowing applications to provide duty cycle or
216 * voltage demand. This not to be confused with simple sinusoidal
217 * control or phase voltage control which lacks the performance
218 * gains.
219 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
220 * - Slot: Select which gains are applied by selecting the slot. Use the
221 * configuration api to set the gain values for the selected slot before
222 * enabling this feature. Slot must be within [0,2].
223 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
224 * is zero (or within deadband). Set to false to use
225 * the NeutralMode configuration setting (default).
226 * This flag exists to provide the fundamental
227 * behavior of this control when output is zero, which
228 * is to provide 0V to the motor.
229 * - LimitForwardMotion: Set to true to force forward limiting. This allows
230 * users to use other limit switch sensors connected to
231 * robot controller. This also allows use of active
232 * sensors that require external power.
233 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
234 * users to use other limit switch sensors connected to
235 * robot controller. This also allows use of active
236 * sensors that require external power.
237 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
238 * LimitForwardMotion and LimitReverseMotion parameters,
239 * instead allowing motion.
240 *
241 * This can be useful on mechanisms such as an
242 * intake/feeder, where a limit switch stops motion while
243 * intaking but should be ignored when feeding to a
244 * shooter.
245 *
246 * The hardware limit faults and Forward/ReverseLimit
247 * signals will still report the values of the limit
248 * switches regardless of this parameter.
249 * - UseTimesync: Set to true to delay applying this control request until a
250 * timesync boundary (requires Phoenix Pro and CANivore). This
251 * eliminates the impact of nondeterministic network delays in
252 * exchange for a larger but deterministic control latency.
253 *
254 * This requires setting the ControlTimesyncFreqHz config in
255 * MotorOutputConfigs. Additionally, when this is enabled, the
256 * UpdateFreqHz of this request should be set to 0 Hz.
257 *
258 * \param request Control object to request of the device
259 * \returns Status Code of the request, 0 is OK
260 */
262
263 /**
264 * \brief Request PID to target position with voltage feedforward
265 *
266 * \details This control mode will set the motor's position setpoint
267 * to the position specified by the user. In addition, it will apply
268 * an additional voltage as an arbitrary feedforward value.
269 *
270 * - PositionVoltage Parameters:
271 * - Position: Position to drive toward in rotations.
272 * - Velocity: Velocity to drive toward in rotations per second. This is
273 * typically used for motion profiles generated by the robot program.
274 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
275 * increases peak power by ~15%. Set to false to use trapezoidal
276 * commutation.
277 *
278 * FOC improves motor performance by leveraging torque (current)
279 * control. However, this may be inconvenient for applications that
280 * require specifying duty cycle or voltage. CTR-Electronics has
281 * developed a hybrid method that combines the performances gains of
282 * FOC while still allowing applications to provide duty cycle or
283 * voltage demand. This not to be confused with simple sinusoidal
284 * control or phase voltage control which lacks the performance
285 * gains.
286 * - FeedForward: Feedforward to apply in volts
287 * - Slot: Select which gains are applied by selecting the slot. Use the
288 * configuration api to set the gain values for the selected slot before
289 * enabling this feature. Slot must be within [0,2].
290 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
291 * is zero (or within deadband). Set to false to use
292 * the NeutralMode configuration setting (default).
293 * This flag exists to provide the fundamental
294 * behavior of this control when output is zero, which
295 * is to provide 0V to the motor.
296 * - LimitForwardMotion: Set to true to force forward limiting. This allows
297 * users to use other limit switch sensors connected to
298 * robot controller. This also allows use of active
299 * sensors that require external power.
300 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
301 * users to use other limit switch sensors connected to
302 * robot controller. This also allows use of active
303 * sensors that require external power.
304 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
305 * LimitForwardMotion and LimitReverseMotion parameters,
306 * instead allowing motion.
307 *
308 * This can be useful on mechanisms such as an
309 * intake/feeder, where a limit switch stops motion while
310 * intaking but should be ignored when feeding to a
311 * shooter.
312 *
313 * The hardware limit faults and Forward/ReverseLimit
314 * signals will still report the values of the limit
315 * switches regardless of this parameter.
316 * - UseTimesync: Set to true to delay applying this control request until a
317 * timesync boundary (requires Phoenix Pro and CANivore). This
318 * eliminates the impact of nondeterministic network delays in
319 * exchange for a larger but deterministic control latency.
320 *
321 * This requires setting the ControlTimesyncFreqHz config in
322 * MotorOutputConfigs. Additionally, when this is enabled, the
323 * UpdateFreqHz of this request should be set to 0 Hz.
324 *
325 * \param request Control object to request of the device
326 * \returns Status Code of the request, 0 is OK
327 */
329
330 /**
331 * \brief Request PID to target velocity with duty cycle feedforward.
332 *
333 * \details This control mode will set the motor's velocity setpoint
334 * to the velocity specified by the user. In addition, it will apply
335 * an additional voltage as an arbitrary feedforward value.
336 *
337 * - VelocityDutyCycle Parameters:
338 * - Velocity: Velocity to drive toward in rotations per second.
339 * - Acceleration: Acceleration to drive toward in rotations per second squared.
340 * This is typically used for motion profiles generated by the
341 * robot program.
342 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
343 * increases peak power by ~15%. Set to false to use trapezoidal
344 * commutation.
345 *
346 * FOC improves motor performance by leveraging torque (current)
347 * control. However, this may be inconvenient for applications that
348 * require specifying duty cycle or voltage. CTR-Electronics has
349 * developed a hybrid method that combines the performances gains of
350 * FOC while still allowing applications to provide duty cycle or
351 * voltage demand. This not to be confused with simple sinusoidal
352 * control or phase voltage control which lacks the performance
353 * gains.
354 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
355 * - Slot: Select which gains are applied by selecting the slot. Use the
356 * configuration api to set the gain values for the selected slot before
357 * enabling this feature. Slot must be within [0,2].
358 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
359 * is zero (or within deadband). Set to false to use
360 * the NeutralMode configuration setting (default).
361 * This flag exists to provide the fundamental
362 * behavior of this control when output is zero, which
363 * is to provide 0V to the motor.
364 * - LimitForwardMotion: Set to true to force forward limiting. This allows
365 * users to use other limit switch sensors connected to
366 * robot controller. This also allows use of active
367 * sensors that require external power.
368 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
369 * users to use other limit switch sensors connected to
370 * robot controller. This also allows use of active
371 * sensors that require external power.
372 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
373 * LimitForwardMotion and LimitReverseMotion parameters,
374 * instead allowing motion.
375 *
376 * This can be useful on mechanisms such as an
377 * intake/feeder, where a limit switch stops motion while
378 * intaking but should be ignored when feeding to a
379 * shooter.
380 *
381 * The hardware limit faults and Forward/ReverseLimit
382 * signals will still report the values of the limit
383 * switches regardless of this parameter.
384 * - UseTimesync: Set to true to delay applying this control request until a
385 * timesync boundary (requires Phoenix Pro and CANivore). This
386 * eliminates the impact of nondeterministic network delays in
387 * exchange for a larger but deterministic control latency.
388 *
389 * This requires setting the ControlTimesyncFreqHz config in
390 * MotorOutputConfigs. Additionally, when this is enabled, the
391 * UpdateFreqHz of this request should be set to 0 Hz.
392 *
393 * \param request Control object to request of the device
394 * \returns Status Code of the request, 0 is OK
395 */
397
398 /**
399 * \brief Request PID to target velocity with voltage feedforward.
400 *
401 * \details This control mode will set the motor's velocity setpoint
402 * to the velocity specified by the user. In addition, it will apply
403 * an additional voltage as an arbitrary feedforward value.
404 *
405 * - VelocityVoltage Parameters:
406 * - Velocity: Velocity to drive toward in rotations per second.
407 * - Acceleration: Acceleration to drive toward in rotations per second squared.
408 * This is typically used for motion profiles generated by the
409 * robot program.
410 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
411 * increases peak power by ~15%. Set to false to use trapezoidal
412 * commutation.
413 *
414 * FOC improves motor performance by leveraging torque (current)
415 * control. However, this may be inconvenient for applications that
416 * require specifying duty cycle or voltage. CTR-Electronics has
417 * developed a hybrid method that combines the performances gains of
418 * FOC while still allowing applications to provide duty cycle or
419 * voltage demand. This not to be confused with simple sinusoidal
420 * control or phase voltage control which lacks the performance
421 * gains.
422 * - FeedForward: Feedforward to apply in volts
423 * - Slot: Select which gains are applied by selecting the slot. Use the
424 * configuration api to set the gain values for the selected slot before
425 * enabling this feature. Slot must be within [0,2].
426 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
427 * is zero (or within deadband). Set to false to use
428 * the NeutralMode configuration setting (default).
429 * This flag exists to provide the fundamental
430 * behavior of this control when output is zero, which
431 * is to provide 0V to the motor.
432 * - LimitForwardMotion: Set to true to force forward limiting. This allows
433 * users to use other limit switch sensors connected to
434 * robot controller. This also allows use of active
435 * sensors that require external power.
436 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
437 * users to use other limit switch sensors connected to
438 * robot controller. This also allows use of active
439 * sensors that require external power.
440 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
441 * LimitForwardMotion and LimitReverseMotion parameters,
442 * instead allowing motion.
443 *
444 * This can be useful on mechanisms such as an
445 * intake/feeder, where a limit switch stops motion while
446 * intaking but should be ignored when feeding to a
447 * shooter.
448 *
449 * The hardware limit faults and Forward/ReverseLimit
450 * signals will still report the values of the limit
451 * switches regardless of this parameter.
452 * - UseTimesync: Set to true to delay applying this control request until a
453 * timesync boundary (requires Phoenix Pro and CANivore). This
454 * eliminates the impact of nondeterministic network delays in
455 * exchange for a larger but deterministic control latency.
456 *
457 * This requires setting the ControlTimesyncFreqHz config in
458 * MotorOutputConfigs. Additionally, when this is enabled, the
459 * UpdateFreqHz of this request should be set to 0 Hz.
460 *
461 * \param request Control object to request of the device
462 * \returns Status Code of the request, 0 is OK
463 */
465
466 /**
467 * \brief Requests Motion Magic® to target a final position using a
468 * motion profile. Users can optionally provide a duty cycle
469 * feedforward.
470 *
471 * \details Motion Magic® produces a motion profile in real-time while
472 * attempting to honor the Cruise Velocity, Acceleration, and
473 * (optional) Jerk specified via the Motion Magic® configuration
474 * values. This control mode does not use the Expo_kV or Expo_kA
475 * configs.
476 *
477 * Target position can be changed on-the-fly and Motion Magic® will do
478 * its best to adjust the profile. This control mode is duty cycle
479 * based, so relevant closed-loop gains will use fractional duty cycle
480 * for the numerator: +1.0 represents full forward output.
481 *
482 * - MotionMagicDutyCycle Parameters:
483 * - Position: Position to drive toward in rotations.
484 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
485 * increases peak power by ~15%. Set to false to use trapezoidal
486 * commutation.
487 *
488 * FOC improves motor performance by leveraging torque (current)
489 * control. However, this may be inconvenient for applications that
490 * require specifying duty cycle or voltage. CTR-Electronics has
491 * developed a hybrid method that combines the performances gains of
492 * FOC while still allowing applications to provide duty cycle or
493 * voltage demand. This not to be confused with simple sinusoidal
494 * control or phase voltage control which lacks the performance
495 * gains.
496 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
497 * - Slot: Select which gains are applied by selecting the slot. Use the
498 * configuration api to set the gain values for the selected slot before
499 * enabling this feature. Slot must be within [0,2].
500 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
501 * is zero (or within deadband). Set to false to use
502 * the NeutralMode configuration setting (default).
503 * This flag exists to provide the fundamental
504 * behavior of this control when output is zero, which
505 * is to provide 0V to the motor.
506 * - LimitForwardMotion: Set to true to force forward limiting. This allows
507 * users to use other limit switch sensors connected to
508 * robot controller. This also allows use of active
509 * sensors that require external power.
510 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
511 * users to use other limit switch sensors connected to
512 * robot controller. This also allows use of active
513 * sensors that require external power.
514 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
515 * LimitForwardMotion and LimitReverseMotion parameters,
516 * instead allowing motion.
517 *
518 * This can be useful on mechanisms such as an
519 * intake/feeder, where a limit switch stops motion while
520 * intaking but should be ignored when feeding to a
521 * shooter.
522 *
523 * The hardware limit faults and Forward/ReverseLimit
524 * signals will still report the values of the limit
525 * switches regardless of this parameter.
526 * - UseTimesync: Set to true to delay applying this control request until a
527 * timesync boundary (requires Phoenix Pro and CANivore). This
528 * eliminates the impact of nondeterministic network delays in
529 * exchange for a larger but deterministic control latency.
530 *
531 * This requires setting the ControlTimesyncFreqHz config in
532 * MotorOutputConfigs. Additionally, when this is enabled, the
533 * UpdateFreqHz of this request should be set to 0 Hz.
534 *
535 * \param request Control object to request of the device
536 * \returns Status Code of the request, 0 is OK
537 */
539
540 /**
541 * \brief Requests Motion Magic® to target a final position using a
542 * motion profile. Users can optionally provide a voltage
543 * feedforward.
544 *
545 * \details Motion Magic® produces a motion profile in real-time while
546 * attempting to honor the Cruise Velocity, Acceleration, and
547 * (optional) Jerk specified via the Motion Magic® configuration
548 * values. This control mode does not use the Expo_kV or Expo_kA
549 * configs.
550 *
551 * Target position can be changed on-the-fly and Motion Magic® will do
552 * its best to adjust the profile. This control mode is
553 * voltage-based, so relevant closed-loop gains will use Volts for the
554 * numerator.
555 *
556 * - MotionMagicVoltage Parameters:
557 * - Position: Position to drive toward in rotations.
558 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
559 * increases peak power by ~15%. Set to false to use trapezoidal
560 * commutation.
561 *
562 * FOC improves motor performance by leveraging torque (current)
563 * control. However, this may be inconvenient for applications that
564 * require specifying duty cycle or voltage. CTR-Electronics has
565 * developed a hybrid method that combines the performances gains of
566 * FOC while still allowing applications to provide duty cycle or
567 * voltage demand. This not to be confused with simple sinusoidal
568 * control or phase voltage control which lacks the performance
569 * gains.
570 * - FeedForward: Feedforward to apply in volts
571 * - Slot: Select which gains are applied by selecting the slot. Use the
572 * configuration api to set the gain values for the selected slot before
573 * enabling this feature. Slot must be within [0,2].
574 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
575 * is zero (or within deadband). Set to false to use
576 * the NeutralMode configuration setting (default).
577 * This flag exists to provide the fundamental
578 * behavior of this control when output is zero, which
579 * is to provide 0V to the motor.
580 * - LimitForwardMotion: Set to true to force forward limiting. This allows
581 * users to use other limit switch sensors connected to
582 * robot controller. This also allows use of active
583 * sensors that require external power.
584 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
585 * users to use other limit switch sensors connected to
586 * robot controller. This also allows use of active
587 * sensors that require external power.
588 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
589 * LimitForwardMotion and LimitReverseMotion parameters,
590 * instead allowing motion.
591 *
592 * This can be useful on mechanisms such as an
593 * intake/feeder, where a limit switch stops motion while
594 * intaking but should be ignored when feeding to a
595 * shooter.
596 *
597 * The hardware limit faults and Forward/ReverseLimit
598 * signals will still report the values of the limit
599 * switches regardless of this parameter.
600 * - UseTimesync: Set to true to delay applying this control request until a
601 * timesync boundary (requires Phoenix Pro and CANivore). This
602 * eliminates the impact of nondeterministic network delays in
603 * exchange for a larger but deterministic control latency.
604 *
605 * This requires setting the ControlTimesyncFreqHz config in
606 * MotorOutputConfigs. Additionally, when this is enabled, the
607 * UpdateFreqHz of this request should be set to 0 Hz.
608 *
609 * \param request Control object to request of the device
610 * \returns Status Code of the request, 0 is OK
611 */
613
614 /**
615 * \brief Requests Motion Magic® to target a final velocity using a
616 * motion profile. This allows smooth transitions between velocity
617 * set points. Users can optionally provide a duty cycle feedforward.
618 *
619 * \details Motion Magic® Velocity produces a motion profile in
620 * real-time while attempting to honor the specified Acceleration and
621 * (optional) Jerk. This control mode does not use the
622 * CruiseVelocity, Expo_kV, or Expo_kA configs.
623 *
624 * If the specified acceleration is zero, the Acceleration under
625 * Motion Magic® configuration parameter is used instead. This allows
626 * for runtime adjustment of acceleration for advanced users. Jerk is
627 * also specified in the Motion Magic® persistent configuration
628 * values. If Jerk is set to zero, Motion Magic® will produce a
629 * trapezoidal acceleration profile.
630 *
631 * Target velocity can also be changed on-the-fly and Motion Magic®
632 * will do its best to adjust the profile. This control mode is duty
633 * cycle based, so relevant closed-loop gains will use fractional duty
634 * cycle for the numerator: +1.0 represents full forward output.
635 *
636 * - MotionMagicVelocityDutyCycle Parameters:
637 * - Velocity: Target velocity to drive toward in rotations per second. This can
638 * be changed on-the fly.
639 * - Acceleration: This is the absolute Acceleration to use generating the
640 * profile. If this parameter is zero, the Acceleration
641 * persistent configuration parameter is used instead.
642 * Acceleration is in rotations per second squared. If nonzero,
643 * the signage does not matter as the absolute value is used.
644 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
645 * increases peak power by ~15%. Set to false to use trapezoidal
646 * commutation.
647 *
648 * FOC improves motor performance by leveraging torque (current)
649 * control. However, this may be inconvenient for applications that
650 * require specifying duty cycle or voltage. CTR-Electronics has
651 * developed a hybrid method that combines the performances gains of
652 * FOC while still allowing applications to provide duty cycle or
653 * voltage demand. This not to be confused with simple sinusoidal
654 * control or phase voltage control which lacks the performance
655 * gains.
656 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
657 * - Slot: Select which gains are applied by selecting the slot. Use the
658 * configuration api to set the gain values for the selected slot before
659 * enabling this feature. Slot must be within [0,2].
660 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
661 * is zero (or within deadband). Set to false to use
662 * the NeutralMode configuration setting (default).
663 * This flag exists to provide the fundamental
664 * behavior of this control when output is zero, which
665 * is to provide 0V to the motor.
666 * - LimitForwardMotion: Set to true to force forward limiting. This allows
667 * users to use other limit switch sensors connected to
668 * robot controller. This also allows use of active
669 * sensors that require external power.
670 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
671 * users to use other limit switch sensors connected to
672 * robot controller. This also allows use of active
673 * sensors that require external power.
674 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
675 * LimitForwardMotion and LimitReverseMotion parameters,
676 * instead allowing motion.
677 *
678 * This can be useful on mechanisms such as an
679 * intake/feeder, where a limit switch stops motion while
680 * intaking but should be ignored when feeding to a
681 * shooter.
682 *
683 * The hardware limit faults and Forward/ReverseLimit
684 * signals will still report the values of the limit
685 * switches regardless of this parameter.
686 * - UseTimesync: Set to true to delay applying this control request until a
687 * timesync boundary (requires Phoenix Pro and CANivore). This
688 * eliminates the impact of nondeterministic network delays in
689 * exchange for a larger but deterministic control latency.
690 *
691 * This requires setting the ControlTimesyncFreqHz config in
692 * MotorOutputConfigs. Additionally, when this is enabled, the
693 * UpdateFreqHz of this request should be set to 0 Hz.
694 *
695 * \param request Control object to request of the device
696 * \returns Status Code of the request, 0 is OK
697 */
699
700 /**
701 * \brief Requests Motion Magic® to target a final velocity using a
702 * motion profile. This allows smooth transitions between velocity
703 * set points. Users can optionally provide a voltage feedforward.
704 *
705 * \details Motion Magic® Velocity produces a motion profile in
706 * real-time while attempting to honor the specified Acceleration and
707 * (optional) Jerk. This control mode does not use the
708 * CruiseVelocity, Expo_kV, or Expo_kA configs.
709 *
710 * If the specified acceleration is zero, the Acceleration under
711 * Motion Magic® configuration parameter is used instead. This allows
712 * for runtime adjustment of acceleration for advanced users. Jerk is
713 * also specified in the Motion Magic® persistent configuration
714 * values. If Jerk is set to zero, Motion Magic® will produce a
715 * trapezoidal acceleration profile.
716 *
717 * Target velocity can also be changed on-the-fly and Motion Magic®
718 * will do its best to adjust the profile. This control mode is
719 * voltage-based, so relevant closed-loop gains will use Volts for the
720 * numerator.
721 *
722 * - MotionMagicVelocityVoltage Parameters:
723 * - Velocity: Target velocity to drive toward in rotations per second. This can
724 * be changed on-the fly.
725 * - Acceleration: This is the absolute Acceleration to use generating the
726 * profile. If this parameter is zero, the Acceleration
727 * persistent configuration parameter is used instead.
728 * Acceleration is in rotations per second squared. If nonzero,
729 * the signage does not matter as the absolute value is used.
730 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
731 * increases peak power by ~15%. Set to false to use trapezoidal
732 * commutation.
733 *
734 * FOC improves motor performance by leveraging torque (current)
735 * control. However, this may be inconvenient for applications that
736 * require specifying duty cycle or voltage. CTR-Electronics has
737 * developed a hybrid method that combines the performances gains of
738 * FOC while still allowing applications to provide duty cycle or
739 * voltage demand. This not to be confused with simple sinusoidal
740 * control or phase voltage control which lacks the performance
741 * gains.
742 * - FeedForward: Feedforward to apply in volts
743 * - Slot: Select which gains are applied by selecting the slot. Use the
744 * configuration api to set the gain values for the selected slot before
745 * enabling this feature. Slot must be within [0,2].
746 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
747 * is zero (or within deadband). Set to false to use
748 * the NeutralMode configuration setting (default).
749 * This flag exists to provide the fundamental
750 * behavior of this control when output is zero, which
751 * is to provide 0V to the motor.
752 * - LimitForwardMotion: Set to true to force forward limiting. This allows
753 * users to use other limit switch sensors connected to
754 * robot controller. This also allows use of active
755 * sensors that require external power.
756 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
757 * users to use other limit switch sensors connected to
758 * robot controller. This also allows use of active
759 * sensors that require external power.
760 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
761 * LimitForwardMotion and LimitReverseMotion parameters,
762 * instead allowing motion.
763 *
764 * This can be useful on mechanisms such as an
765 * intake/feeder, where a limit switch stops motion while
766 * intaking but should be ignored when feeding to a
767 * shooter.
768 *
769 * The hardware limit faults and Forward/ReverseLimit
770 * signals will still report the values of the limit
771 * switches regardless of this parameter.
772 * - UseTimesync: Set to true to delay applying this control request until a
773 * timesync boundary (requires Phoenix Pro and CANivore). This
774 * eliminates the impact of nondeterministic network delays in
775 * exchange for a larger but deterministic control latency.
776 *
777 * This requires setting the ControlTimesyncFreqHz config in
778 * MotorOutputConfigs. Additionally, when this is enabled, the
779 * UpdateFreqHz of this request should be set to 0 Hz.
780 *
781 * \param request Control object to request of the device
782 * \returns Status Code of the request, 0 is OK
783 */
785
786 /**
787 * \brief Requests Motion Magic® to target a final position using an
788 * exponential motion profile. Users can optionally provide a duty
789 * cycle feedforward.
790 *
791 * \details Motion Magic® Expo produces a motion profile in real-time
792 * while attempting to honor the Cruise Velocity (optional) and the
793 * mechanism kV and kA, specified via the Motion Magic® configuration
794 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
795 * configs are always in output units of Volts.
796 *
797 * Setting Cruise Velocity to 0 will allow the profile to run to the
798 * max possible velocity based on Expo_kV. This control mode does not
799 * use the Acceleration or Jerk configs.
800 *
801 * Target position can be changed on-the-fly and Motion Magic® will do
802 * its best to adjust the profile. This control mode is duty cycle
803 * based, so relevant closed-loop gains will use fractional duty cycle
804 * for the numerator: +1.0 represents full forward output.
805 *
806 * - MotionMagicExpoDutyCycle Parameters:
807 * - Position: Position to drive toward in rotations.
808 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
809 * increases peak power by ~15%. Set to false to use trapezoidal
810 * commutation.
811 *
812 * FOC improves motor performance by leveraging torque (current)
813 * control. However, this may be inconvenient for applications that
814 * require specifying duty cycle or voltage. CTR-Electronics has
815 * developed a hybrid method that combines the performances gains of
816 * FOC while still allowing applications to provide duty cycle or
817 * voltage demand. This not to be confused with simple sinusoidal
818 * control or phase voltage control which lacks the performance
819 * gains.
820 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
821 * - Slot: Select which gains are applied by selecting the slot. Use the
822 * configuration api to set the gain values for the selected slot before
823 * enabling this feature. Slot must be within [0,2].
824 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
825 * is zero (or within deadband). Set to false to use
826 * the NeutralMode configuration setting (default).
827 * This flag exists to provide the fundamental
828 * behavior of this control when output is zero, which
829 * is to provide 0V to the motor.
830 * - LimitForwardMotion: Set to true to force forward limiting. This allows
831 * users to use other limit switch sensors connected to
832 * robot controller. This also allows use of active
833 * sensors that require external power.
834 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
835 * users to use other limit switch sensors connected to
836 * robot controller. This also allows use of active
837 * sensors that require external power.
838 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
839 * LimitForwardMotion and LimitReverseMotion parameters,
840 * instead allowing motion.
841 *
842 * This can be useful on mechanisms such as an
843 * intake/feeder, where a limit switch stops motion while
844 * intaking but should be ignored when feeding to a
845 * shooter.
846 *
847 * The hardware limit faults and Forward/ReverseLimit
848 * signals will still report the values of the limit
849 * switches regardless of this parameter.
850 * - UseTimesync: Set to true to delay applying this control request until a
851 * timesync boundary (requires Phoenix Pro and CANivore). This
852 * eliminates the impact of nondeterministic network delays in
853 * exchange for a larger but deterministic control latency.
854 *
855 * This requires setting the ControlTimesyncFreqHz config in
856 * MotorOutputConfigs. Additionally, when this is enabled, the
857 * UpdateFreqHz of this request should be set to 0 Hz.
858 *
859 * \param request Control object to request of the device
860 * \returns Status Code of the request, 0 is OK
861 */
863
864 /**
865 * \brief Requests Motion Magic® to target a final position using an
866 * exponential motion profile. Users can optionally provide a voltage
867 * feedforward.
868 *
869 * \details Motion Magic® Expo produces a motion profile in real-time
870 * while attempting to honor the Cruise Velocity (optional) and the
871 * mechanism kV and kA, specified via the Motion Magic® configuration
872 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
873 * configs are always in output units of Volts.
874 *
875 * Setting Cruise Velocity to 0 will allow the profile to run to the
876 * max possible velocity based on Expo_kV. This control mode does not
877 * use the Acceleration or Jerk configs.
878 *
879 * Target position can be changed on-the-fly and Motion Magic® will do
880 * its best to adjust the profile. This control mode is
881 * voltage-based, so relevant closed-loop gains will use Volts for the
882 * numerator.
883 *
884 * - MotionMagicExpoVoltage Parameters:
885 * - Position: Position to drive toward in rotations.
886 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
887 * increases peak power by ~15%. Set to false to use trapezoidal
888 * commutation.
889 *
890 * FOC improves motor performance by leveraging torque (current)
891 * control. However, this may be inconvenient for applications that
892 * require specifying duty cycle or voltage. CTR-Electronics has
893 * developed a hybrid method that combines the performances gains of
894 * FOC while still allowing applications to provide duty cycle or
895 * voltage demand. This not to be confused with simple sinusoidal
896 * control or phase voltage control which lacks the performance
897 * gains.
898 * - FeedForward: Feedforward to apply in volts
899 * - Slot: Select which gains are applied by selecting the slot. Use the
900 * configuration api to set the gain values for the selected slot before
901 * enabling this feature. Slot must be within [0,2].
902 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
903 * is zero (or within deadband). Set to false to use
904 * the NeutralMode configuration setting (default).
905 * This flag exists to provide the fundamental
906 * behavior of this control when output is zero, which
907 * is to provide 0V to the motor.
908 * - LimitForwardMotion: Set to true to force forward limiting. This allows
909 * users to use other limit switch sensors connected to
910 * robot controller. This also allows use of active
911 * sensors that require external power.
912 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
913 * users to use other limit switch sensors connected to
914 * robot controller. This also allows use of active
915 * sensors that require external power.
916 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
917 * LimitForwardMotion and LimitReverseMotion parameters,
918 * instead allowing motion.
919 *
920 * This can be useful on mechanisms such as an
921 * intake/feeder, where a limit switch stops motion while
922 * intaking but should be ignored when feeding to a
923 * shooter.
924 *
925 * The hardware limit faults and Forward/ReverseLimit
926 * signals will still report the values of the limit
927 * switches regardless of this parameter.
928 * - UseTimesync: Set to true to delay applying this control request until a
929 * timesync boundary (requires Phoenix Pro and CANivore). This
930 * eliminates the impact of nondeterministic network delays in
931 * exchange for a larger but deterministic control latency.
932 *
933 * This requires setting the ControlTimesyncFreqHz config in
934 * MotorOutputConfigs. Additionally, when this is enabled, the
935 * UpdateFreqHz of this request should be set to 0 Hz.
936 *
937 * \param request Control object to request of the device
938 * \returns Status Code of the request, 0 is OK
939 */
941
942 /**
943 * \brief Requests Motion Magic® to target a final position using a
944 * motion profile. This dynamic request allows runtime changes to
945 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
946 * provide a duty cycle feedforward. This control requires use of a
947 * CANivore.
948 *
949 * \details Motion Magic® produces a motion profile in real-time while
950 * attempting to honor the specified Cruise Velocity, Acceleration,
951 * and (optional) Jerk. This control mode does not use the Expo_kV or
952 * Expo_kA configs.
953 *
954 * Target position can be changed on-the-fly and Motion Magic® will do
955 * its best to adjust the profile. This control mode is duty cycle
956 * based, so relevant closed-loop gains will use fractional duty cycle
957 * for the numerator: +1.0 represents full forward output.
958 *
959 * - DynamicMotionMagicDutyCycle Parameters:
960 * - Position: Position to drive toward in rotations.
961 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
962 * device will use the absolute value for profile generation.
963 * - Acceleration: Acceleration for profiling. The signage does not matter as
964 * the device will use the absolute value for profile generation
965 * - Jerk: Jerk for profiling. The signage does not matter as the device will
966 * use the absolute value for profile generation.
967 *
968 * Jerk is optional; if this is set to zero, then Motion Magic® will not
969 * apply a Jerk limit.
970 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
971 * increases peak power by ~15%. Set to false to use trapezoidal
972 * commutation.
973 *
974 * FOC improves motor performance by leveraging torque (current)
975 * control. However, this may be inconvenient for applications that
976 * require specifying duty cycle or voltage. CTR-Electronics has
977 * developed a hybrid method that combines the performances gains of
978 * FOC while still allowing applications to provide duty cycle or
979 * voltage demand. This not to be confused with simple sinusoidal
980 * control or phase voltage control which lacks the performance
981 * gains.
982 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
983 * - Slot: Select which gains are applied by selecting the slot. Use the
984 * configuration api to set the gain values for the selected slot before
985 * enabling this feature. Slot must be within [0,2].
986 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
987 * is zero (or within deadband). Set to false to use
988 * the NeutralMode configuration setting (default).
989 * This flag exists to provide the fundamental
990 * behavior of this control when output is zero, which
991 * is to provide 0V to the motor.
992 * - LimitForwardMotion: Set to true to force forward limiting. This allows
993 * users to use other limit switch sensors connected to
994 * robot controller. This also allows use of active
995 * sensors that require external power.
996 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
997 * users to use other limit switch sensors connected to
998 * robot controller. This also allows use of active
999 * sensors that require external power.
1000 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1001 * LimitForwardMotion and LimitReverseMotion parameters,
1002 * instead allowing motion.
1003 *
1004 * This can be useful on mechanisms such as an
1005 * intake/feeder, where a limit switch stops motion while
1006 * intaking but should be ignored when feeding to a
1007 * shooter.
1008 *
1009 * The hardware limit faults and Forward/ReverseLimit
1010 * signals will still report the values of the limit
1011 * switches regardless of this parameter.
1012 * - UseTimesync: Set to true to delay applying this control request until a
1013 * timesync boundary (requires Phoenix Pro and CANivore). This
1014 * eliminates the impact of nondeterministic network delays in
1015 * exchange for a larger but deterministic control latency.
1016 *
1017 * This requires setting the ControlTimesyncFreqHz config in
1018 * MotorOutputConfigs. Additionally, when this is enabled, the
1019 * UpdateFreqHz of this request should be set to 0 Hz.
1020 *
1021 * \param request Control object to request of the device
1022 * \returns Status Code of the request, 0 is OK
1023 */
1025
1026 /**
1027 * \brief Requests Motion Magic® to target a final position using a
1028 * motion profile. This dynamic request allows runtime changes to
1029 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
1030 * provide a voltage feedforward. This control requires use of a
1031 * CANivore.
1032 *
1033 * \details Motion Magic® produces a motion profile in real-time while
1034 * attempting to honor the specified Cruise Velocity, Acceleration,
1035 * and (optional) Jerk. This control mode does not use the Expo_kV or
1036 * Expo_kA configs.
1037 *
1038 * Target position can be changed on-the-fly and Motion Magic® will do
1039 * its best to adjust the profile. This control mode is
1040 * voltage-based, so relevant closed-loop gains will use Volts for the
1041 * numerator.
1042 *
1043 * - DynamicMotionMagicVoltage Parameters:
1044 * - Position: Position to drive toward in rotations.
1045 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
1046 * device will use the absolute value for profile generation.
1047 * - Acceleration: Acceleration for profiling. The signage does not matter as
1048 * the device will use the absolute value for profile generation.
1049 * - Jerk: Jerk for profiling. The signage does not matter as the device will
1050 * use the absolute value for profile generation.
1051 *
1052 * Jerk is optional; if this is set to zero, then Motion Magic® will not
1053 * apply a Jerk limit.
1054 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1055 * increases peak power by ~15%. Set to false to use trapezoidal
1056 * commutation.
1057 *
1058 * FOC improves motor performance by leveraging torque (current)
1059 * control. However, this may be inconvenient for applications that
1060 * require specifying duty cycle or voltage. CTR-Electronics has
1061 * developed a hybrid method that combines the performances gains of
1062 * FOC while still allowing applications to provide duty cycle or
1063 * voltage demand. This not to be confused with simple sinusoidal
1064 * control or phase voltage control which lacks the performance
1065 * gains.
1066 * - FeedForward: Feedforward to apply in volts
1067 * - Slot: Select which gains are applied by selecting the slot. Use the
1068 * configuration api to set the gain values for the selected slot before
1069 * enabling this feature. Slot must be within [0,2].
1070 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1071 * is zero (or within deadband). Set to false to use
1072 * the NeutralMode configuration setting (default).
1073 * This flag exists to provide the fundamental
1074 * behavior of this control when output is zero, which
1075 * is to provide 0V to the motor.
1076 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1077 * users to use other limit switch sensors connected to
1078 * robot controller. This also allows use of active
1079 * sensors that require external power.
1080 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1081 * users to use other limit switch sensors connected to
1082 * robot controller. This also allows use of active
1083 * sensors that require external power.
1084 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1085 * LimitForwardMotion and LimitReverseMotion parameters,
1086 * instead allowing motion.
1087 *
1088 * This can be useful on mechanisms such as an
1089 * intake/feeder, where a limit switch stops motion while
1090 * intaking but should be ignored when feeding to a
1091 * shooter.
1092 *
1093 * The hardware limit faults and Forward/ReverseLimit
1094 * signals will still report the values of the limit
1095 * switches regardless of this parameter.
1096 * - UseTimesync: Set to true to delay applying this control request until a
1097 * timesync boundary (requires Phoenix Pro and CANivore). This
1098 * eliminates the impact of nondeterministic network delays in
1099 * exchange for a larger but deterministic control latency.
1100 *
1101 * This requires setting the ControlTimesyncFreqHz config in
1102 * MotorOutputConfigs. Additionally, when this is enabled, the
1103 * UpdateFreqHz of this request should be set to 0 Hz.
1104 *
1105 * \param request Control object to request of the device
1106 * \returns Status Code of the request, 0 is OK
1107 */
1109
1110 /**
1111 * \brief Request a specified motor duty cycle with a differential
1112 * position closed-loop.
1113 *
1114 * \details This control mode will output a proportion of the supplied
1115 * voltage which is supplied by the user. It will also set the motor's
1116 * differential position setpoint to the specified position.
1117 *
1118 * - DifferentialDutyCycle Parameters:
1119 * - TargetOutput: Proportion of supply voltage to apply in fractional units
1120 * between -1 and +1
1121 * - DifferentialPosition: Differential position to drive towards in rotations
1122 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1123 * increases peak power by ~15%. Set to false to use trapezoidal
1124 * commutation.
1125 *
1126 * FOC improves motor performance by leveraging torque (current)
1127 * control. However, this may be inconvenient for applications that
1128 * require specifying duty cycle or voltage. CTR-Electronics has
1129 * developed a hybrid method that combines the performances gains of
1130 * FOC while still allowing applications to provide duty cycle or
1131 * voltage demand. This not to be confused with simple sinusoidal
1132 * control or phase voltage control which lacks the performance
1133 * gains.
1134 * - DifferentialSlot: Select which gains are applied to the differential
1135 * controller by selecting the slot. Use the configuration
1136 * api to set the gain values for the selected slot before
1137 * enabling this feature. Slot must be within [0,2].
1138 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1139 * is zero (or within deadband). Set to false to use
1140 * the NeutralMode configuration setting (default).
1141 * This flag exists to provide the fundamental
1142 * behavior of this control when output is zero, which
1143 * is to provide 0V to the motor.
1144 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1145 * users to use other limit switch sensors connected to
1146 * robot controller. This also allows use of active
1147 * sensors that require external power.
1148 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1149 * users to use other limit switch sensors connected to
1150 * robot controller. This also allows use of active
1151 * sensors that require external power.
1152 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1153 * LimitForwardMotion and LimitReverseMotion parameters,
1154 * instead allowing motion.
1155 *
1156 * This can be useful on mechanisms such as an
1157 * intake/feeder, where a limit switch stops motion while
1158 * intaking but should be ignored when feeding to a
1159 * shooter.
1160 *
1161 * The hardware limit faults and Forward/ReverseLimit
1162 * signals will still report the values of the limit
1163 * switches regardless of this parameter.
1164 * - UseTimesync: Set to true to delay applying this control request until a
1165 * timesync boundary (requires Phoenix Pro and CANivore). This
1166 * eliminates the impact of nondeterministic network delays in
1167 * exchange for a larger but deterministic control latency.
1168 *
1169 * This requires setting the ControlTimesyncFreqHz config in
1170 * MotorOutputConfigs. Additionally, when this is enabled, the
1171 * UpdateFreqHz of this request should be set to 0 Hz.
1172 *
1173 * \param request Control object to request of the device
1174 * \returns Status Code of the request, 0 is OK
1175 */
1177
1178 /**
1179 * \brief Request a specified voltage with a differential position
1180 * closed-loop.
1181 *
1182 * \details This control mode will attempt to apply the specified
1183 * voltage to the motor. If the supply voltage is below the requested
1184 * voltage, the motor controller will output the supply voltage. It
1185 * will also set the motor's differential position setpoint to the
1186 * specified position.
1187 *
1188 * - DifferentialVoltage Parameters:
1189 * - TargetOutput: Voltage to attempt to drive at
1190 * - DifferentialPosition: Differential position to drive towards in rotations
1191 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1192 * increases peak power by ~15%. Set to false to use trapezoidal
1193 * commutation.
1194 *
1195 * FOC improves motor performance by leveraging torque (current)
1196 * control. However, this may be inconvenient for applications that
1197 * require specifying duty cycle or voltage. CTR-Electronics has
1198 * developed a hybrid method that combines the performances gains of
1199 * FOC while still allowing applications to provide duty cycle or
1200 * voltage demand. This not to be confused with simple sinusoidal
1201 * control or phase voltage control which lacks the performance
1202 * gains.
1203 * - DifferentialSlot: Select which gains are applied to the differential
1204 * controller by selecting the slot. Use the configuration
1205 * api to set the gain values for the selected slot before
1206 * enabling this feature. Slot must be within [0,2].
1207 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1208 * is zero (or within deadband). Set to false to use
1209 * the NeutralMode configuration setting (default).
1210 * This flag exists to provide the fundamental
1211 * behavior of this control when output is zero, which
1212 * is to provide 0V to the motor.
1213 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1214 * users to use other limit switch sensors connected to
1215 * robot controller. This also allows use of active
1216 * sensors that require external power.
1217 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1218 * users to use other limit switch sensors connected to
1219 * robot controller. This also allows use of active
1220 * sensors that require external power.
1221 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1222 * LimitForwardMotion and LimitReverseMotion parameters,
1223 * instead allowing motion.
1224 *
1225 * This can be useful on mechanisms such as an
1226 * intake/feeder, where a limit switch stops motion while
1227 * intaking but should be ignored when feeding to a
1228 * shooter.
1229 *
1230 * The hardware limit faults and Forward/ReverseLimit
1231 * signals will still report the values of the limit
1232 * switches regardless of this parameter.
1233 * - UseTimesync: Set to true to delay applying this control request until a
1234 * timesync boundary (requires Phoenix Pro and CANivore). This
1235 * eliminates the impact of nondeterministic network delays in
1236 * exchange for a larger but deterministic control latency.
1237 *
1238 * This requires setting the ControlTimesyncFreqHz config in
1239 * MotorOutputConfigs. Additionally, when this is enabled, the
1240 * UpdateFreqHz of this request should be set to 0 Hz.
1241 *
1242 * \param request Control object to request of the device
1243 * \returns Status Code of the request, 0 is OK
1244 */
1246
1247 /**
1248 * \brief Request PID to target position with a differential position
1249 * setpoint.
1250 *
1251 * \details This control mode will set the motor's position setpoint
1252 * to the position specified by the user. It will also set the motor's
1253 * differential position setpoint to the specified position.
1254 *
1255 * - DifferentialPositionDutyCycle Parameters:
1256 * - TargetPosition: Average position to drive toward in rotations.
1257 * - DifferentialPosition: Differential position to drive toward in rotations.
1258 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1259 * increases peak power by ~15%. Set to false to use trapezoidal
1260 * commutation.
1261 *
1262 * FOC improves motor performance by leveraging torque (current)
1263 * control. However, this may be inconvenient for applications that
1264 * require specifying duty cycle or voltage. CTR-Electronics has
1265 * developed a hybrid method that combines the performances gains of
1266 * FOC while still allowing applications to provide duty cycle or
1267 * voltage demand. This not to be confused with simple sinusoidal
1268 * control or phase voltage control which lacks the performance
1269 * gains.
1270 * - TargetSlot: Select which gains are applied to the primary controller by
1271 * selecting the slot. Use the configuration api to set the gain
1272 * values for the selected slot before enabling this feature. Slot
1273 * must be within [0,2].
1274 * - DifferentialSlot: Select which gains are applied to the differential
1275 * controller by selecting the slot. Use the configuration
1276 * api to set the gain values for the selected slot before
1277 * enabling this feature. Slot must be within [0,2].
1278 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1279 * is zero (or within deadband). Set to false to use
1280 * the NeutralMode configuration setting (default).
1281 * This flag exists to provide the fundamental
1282 * behavior of this control when output is zero, which
1283 * is to provide 0V to the motor.
1284 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1285 * users to use other limit switch sensors connected to
1286 * robot controller. This also allows use of active
1287 * sensors that require external power.
1288 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1289 * users to use other limit switch sensors connected to
1290 * robot controller. This also allows use of active
1291 * sensors that require external power.
1292 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1293 * LimitForwardMotion and LimitReverseMotion parameters,
1294 * instead allowing motion.
1295 *
1296 * This can be useful on mechanisms such as an
1297 * intake/feeder, where a limit switch stops motion while
1298 * intaking but should be ignored when feeding to a
1299 * shooter.
1300 *
1301 * The hardware limit faults and Forward/ReverseLimit
1302 * signals will still report the values of the limit
1303 * switches regardless of this parameter.
1304 * - UseTimesync: Set to true to delay applying this control request until a
1305 * timesync boundary (requires Phoenix Pro and CANivore). This
1306 * eliminates the impact of nondeterministic network delays in
1307 * exchange for a larger but deterministic control latency.
1308 *
1309 * This requires setting the ControlTimesyncFreqHz config in
1310 * MotorOutputConfigs. Additionally, when this is enabled, the
1311 * UpdateFreqHz of this request should be set to 0 Hz.
1312 *
1313 * \param request Control object to request of the device
1314 * \returns Status Code of the request, 0 is OK
1315 */
1317
1318 /**
1319 * \brief Request PID to target position with a differential position
1320 * setpoint
1321 *
1322 * \details This control mode will set the motor's position setpoint
1323 * to the position specified by the user. It will also set the motor's
1324 * differential position setpoint to the specified position.
1325 *
1326 * - DifferentialPositionVoltage Parameters:
1327 * - TargetPosition: Average position to drive toward in rotations.
1328 * - DifferentialPosition: Differential position to drive toward in rotations.
1329 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1330 * increases peak power by ~15%. Set to false to use trapezoidal
1331 * commutation.
1332 *
1333 * FOC improves motor performance by leveraging torque (current)
1334 * control. However, this may be inconvenient for applications that
1335 * require specifying duty cycle or voltage. CTR-Electronics has
1336 * developed a hybrid method that combines the performances gains of
1337 * FOC while still allowing applications to provide duty cycle or
1338 * voltage demand. This not to be confused with simple sinusoidal
1339 * control or phase voltage control which lacks the performance
1340 * gains.
1341 * - TargetSlot: Select which gains are applied to the primary controller by
1342 * selecting the slot. Use the configuration api to set the gain
1343 * values for the selected slot before enabling this feature. Slot
1344 * must be within [0,2].
1345 * - DifferentialSlot: Select which gains are applied to the differential
1346 * controller by selecting the slot. Use the configuration
1347 * api to set the gain values for the selected slot before
1348 * enabling this feature. Slot must be within [0,2].
1349 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1350 * is zero (or within deadband). Set to false to use
1351 * the NeutralMode configuration setting (default).
1352 * This flag exists to provide the fundamental
1353 * behavior of this control when output is zero, which
1354 * is to provide 0V to the motor.
1355 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1356 * users to use other limit switch sensors connected to
1357 * robot controller. This also allows use of active
1358 * sensors that require external power.
1359 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1360 * users to use other limit switch sensors connected to
1361 * robot controller. This also allows use of active
1362 * sensors that require external power.
1363 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1364 * LimitForwardMotion and LimitReverseMotion parameters,
1365 * instead allowing motion.
1366 *
1367 * This can be useful on mechanisms such as an
1368 * intake/feeder, where a limit switch stops motion while
1369 * intaking but should be ignored when feeding to a
1370 * shooter.
1371 *
1372 * The hardware limit faults and Forward/ReverseLimit
1373 * signals will still report the values of the limit
1374 * switches regardless of this parameter.
1375 * - UseTimesync: Set to true to delay applying this control request until a
1376 * timesync boundary (requires Phoenix Pro and CANivore). This
1377 * eliminates the impact of nondeterministic network delays in
1378 * exchange for a larger but deterministic control latency.
1379 *
1380 * This requires setting the ControlTimesyncFreqHz config in
1381 * MotorOutputConfigs. Additionally, when this is enabled, the
1382 * UpdateFreqHz of this request should be set to 0 Hz.
1383 *
1384 * \param request Control object to request of the device
1385 * \returns Status Code of the request, 0 is OK
1386 */
1388
1389 /**
1390 * \brief Request PID to target velocity with a differential position
1391 * setpoint.
1392 *
1393 * \details This control mode will set the motor's velocity setpoint
1394 * to the velocity specified by the user. It will also set the motor's
1395 * differential position setpoint to the specified position.
1396 *
1397 * - DifferentialVelocityDutyCycle Parameters:
1398 * - TargetVelocity: Average velocity to drive toward in rotations per second.
1399 * - DifferentialPosition: Differential position to drive toward in rotations.
1400 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1401 * increases peak power by ~15%. Set to false to use trapezoidal
1402 * commutation.
1403 *
1404 * FOC improves motor performance by leveraging torque (current)
1405 * control. However, this may be inconvenient for applications that
1406 * require specifying duty cycle or voltage. CTR-Electronics has
1407 * developed a hybrid method that combines the performances gains of
1408 * FOC while still allowing applications to provide duty cycle or
1409 * voltage demand. This not to be confused with simple sinusoidal
1410 * control or phase voltage control which lacks the performance
1411 * gains.
1412 * - TargetSlot: Select which gains are applied to the primary controller by
1413 * selecting the slot. Use the configuration api to set the gain
1414 * values for the selected slot before enabling this feature. Slot
1415 * must be within [0,2].
1416 * - DifferentialSlot: Select which gains are applied to the differential
1417 * controller by selecting the slot. Use the configuration
1418 * api to set the gain values for the selected slot before
1419 * enabling this feature. Slot must be within [0,2].
1420 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1421 * is zero (or within deadband). Set to false to use
1422 * the NeutralMode configuration setting (default).
1423 * This flag exists to provide the fundamental
1424 * behavior of this control when output is zero, which
1425 * is to provide 0V to the motor.
1426 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1427 * users to use other limit switch sensors connected to
1428 * robot controller. This also allows use of active
1429 * sensors that require external power.
1430 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1431 * users to use other limit switch sensors connected to
1432 * robot controller. This also allows use of active
1433 * sensors that require external power.
1434 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1435 * LimitForwardMotion and LimitReverseMotion parameters,
1436 * instead allowing motion.
1437 *
1438 * This can be useful on mechanisms such as an
1439 * intake/feeder, where a limit switch stops motion while
1440 * intaking but should be ignored when feeding to a
1441 * shooter.
1442 *
1443 * The hardware limit faults and Forward/ReverseLimit
1444 * signals will still report the values of the limit
1445 * switches regardless of this parameter.
1446 * - UseTimesync: Set to true to delay applying this control request until a
1447 * timesync boundary (requires Phoenix Pro and CANivore). This
1448 * eliminates the impact of nondeterministic network delays in
1449 * exchange for a larger but deterministic control latency.
1450 *
1451 * This requires setting the ControlTimesyncFreqHz config in
1452 * MotorOutputConfigs. Additionally, when this is enabled, the
1453 * UpdateFreqHz of this request should be set to 0 Hz.
1454 *
1455 * \param request Control object to request of the device
1456 * \returns Status Code of the request, 0 is OK
1457 */
1459
1460 /**
1461 * \brief Request PID to target velocity with a differential position
1462 * setpoint.
1463 *
1464 * \details This control mode will set the motor's velocity setpoint
1465 * to the velocity specified by the user. It will also set the motor's
1466 * differential position setpoint to the specified position.
1467 *
1468 * - DifferentialVelocityVoltage Parameters:
1469 * - TargetVelocity: Average velocity to drive toward in rotations per second.
1470 * - DifferentialPosition: Differential position to drive toward in rotations.
1471 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1472 * increases peak power by ~15%. Set to false to use trapezoidal
1473 * commutation.
1474 *
1475 * FOC improves motor performance by leveraging torque (current)
1476 * control. However, this may be inconvenient for applications that
1477 * require specifying duty cycle or voltage. CTR-Electronics has
1478 * developed a hybrid method that combines the performances gains of
1479 * FOC while still allowing applications to provide duty cycle or
1480 * voltage demand. This not to be confused with simple sinusoidal
1481 * control or phase voltage control which lacks the performance
1482 * gains.
1483 * - TargetSlot: Select which gains are applied to the primary controller by
1484 * selecting the slot. Use the configuration api to set the gain
1485 * values for the selected slot before enabling this feature. Slot
1486 * must be within [0,2].
1487 * - DifferentialSlot: Select which gains are applied to the differential
1488 * controller by selecting the slot. Use the configuration
1489 * api to set the gain values for the selected slot before
1490 * enabling this feature. Slot must be within [0,2].
1491 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1492 * is zero (or within deadband). Set to false to use
1493 * the NeutralMode configuration setting (default).
1494 * This flag exists to provide the fundamental
1495 * behavior of this control when output is zero, which
1496 * is to provide 0V to the motor.
1497 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1498 * users to use other limit switch sensors connected to
1499 * robot controller. This also allows use of active
1500 * sensors that require external power.
1501 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1502 * users to use other limit switch sensors connected to
1503 * robot controller. This also allows use of active
1504 * sensors that require external power.
1505 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1506 * LimitForwardMotion and LimitReverseMotion parameters,
1507 * instead allowing motion.
1508 *
1509 * This can be useful on mechanisms such as an
1510 * intake/feeder, where a limit switch stops motion while
1511 * intaking but should be ignored when feeding to a
1512 * shooter.
1513 *
1514 * The hardware limit faults and Forward/ReverseLimit
1515 * signals will still report the values of the limit
1516 * switches regardless of this parameter.
1517 * - UseTimesync: Set to true to delay applying this control request until a
1518 * timesync boundary (requires Phoenix Pro and CANivore). This
1519 * eliminates the impact of nondeterministic network delays in
1520 * exchange for a larger but deterministic control latency.
1521 *
1522 * This requires setting the ControlTimesyncFreqHz config in
1523 * MotorOutputConfigs. Additionally, when this is enabled, the
1524 * UpdateFreqHz of this request should be set to 0 Hz.
1525 *
1526 * \param request Control object to request of the device
1527 * \returns Status Code of the request, 0 is OK
1528 */
1530
1531 /**
1532 * \brief Requests Motion Magic® to target a final position using a
1533 * motion profile, and PID to a differential position setpoint.
1534 *
1535 * \details Motion Magic® produces a motion profile in real-time while
1536 * attempting to honor the Cruise Velocity, Acceleration, and
1537 * (optional) Jerk specified via the Motion Magic® configuration
1538 * values. This control mode does not use the Expo_kV or Expo_kA
1539 * configs.
1540 *
1541 * Target position can be changed on-the-fly and Motion Magic® will do
1542 * its best to adjust the profile. This control mode is duty cycle
1543 * based, so relevant closed-loop gains will use fractional duty cycle
1544 * for the numerator: +1.0 represents full forward output.
1545 *
1546 * - DifferentialMotionMagicDutyCycle Parameters:
1547 * - TargetPosition: Average position to drive toward in rotations.
1548 * - DifferentialPosition: Differential position to drive toward in rotations.
1549 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1550 * increases peak power by ~15%. Set to false to use trapezoidal
1551 * commutation.
1552 *
1553 * FOC improves motor performance by leveraging torque (current)
1554 * control. However, this may be inconvenient for applications that
1555 * require specifying duty cycle or voltage. CTR-Electronics has
1556 * developed a hybrid method that combines the performances gains of
1557 * FOC while still allowing applications to provide duty cycle or
1558 * voltage demand. This not to be confused with simple sinusoidal
1559 * control or phase voltage control which lacks the performance
1560 * gains.
1561 * - TargetSlot: Select which gains are applied to the primary controller by
1562 * selecting the slot. Use the configuration api to set the gain
1563 * values for the selected slot before enabling this feature. Slot
1564 * must be within [0,2].
1565 * - DifferentialSlot: Select which gains are applied to the differential
1566 * controller by selecting the slot. Use the configuration
1567 * api to set the gain values for the selected slot before
1568 * enabling this feature. Slot must be within [0,2].
1569 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1570 * is zero (or within deadband). Set to false to use
1571 * the NeutralMode configuration setting (default).
1572 * This flag exists to provide the fundamental
1573 * behavior of this control when output is zero, which
1574 * is to provide 0V to the motor.
1575 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1576 * users to use other limit switch sensors connected to
1577 * robot controller. This also allows use of active
1578 * sensors that require external power.
1579 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1580 * users to use other limit switch sensors connected to
1581 * robot controller. This also allows use of active
1582 * sensors that require external power.
1583 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1584 * LimitForwardMotion and LimitReverseMotion parameters,
1585 * instead allowing motion.
1586 *
1587 * This can be useful on mechanisms such as an
1588 * intake/feeder, where a limit switch stops motion while
1589 * intaking but should be ignored when feeding to a
1590 * shooter.
1591 *
1592 * The hardware limit faults and Forward/ReverseLimit
1593 * signals will still report the values of the limit
1594 * switches regardless of this parameter.
1595 * - UseTimesync: Set to true to delay applying this control request until a
1596 * timesync boundary (requires Phoenix Pro and CANivore). This
1597 * eliminates the impact of nondeterministic network delays in
1598 * exchange for a larger but deterministic control latency.
1599 *
1600 * This requires setting the ControlTimesyncFreqHz config in
1601 * MotorOutputConfigs. Additionally, when this is enabled, the
1602 * UpdateFreqHz of this request should be set to 0 Hz.
1603 *
1604 * \param request Control object to request of the device
1605 * \returns Status Code of the request, 0 is OK
1606 */
1608
1609 /**
1610 * \brief Requests Motion Magic® to target a final position using a
1611 * motion profile, and PID to a differential position setpoint.
1612 *
1613 * \details Motion Magic® produces a motion profile in real-time while
1614 * attempting to honor the Cruise Velocity, Acceleration, and
1615 * (optional) Jerk specified via the Motion Magic® configuration
1616 * values. This control mode does not use the Expo_kV or Expo_kA
1617 * configs.
1618 *
1619 * Target position can be changed on-the-fly and Motion Magic® will do
1620 * its best to adjust the profile. This control mode is
1621 * voltage-based, so relevant closed-loop gains will use Volts for the
1622 * numerator.
1623 *
1624 * - DifferentialMotionMagicVoltage Parameters:
1625 * - TargetPosition: Average position to drive toward in rotations.
1626 * - DifferentialPosition: Differential position to drive toward in rotations.
1627 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1628 * increases peak power by ~15%. Set to false to use trapezoidal
1629 * commutation.
1630 *
1631 * FOC improves motor performance by leveraging torque (current)
1632 * control. However, this may be inconvenient for applications that
1633 * require specifying duty cycle or voltage. CTR-Electronics has
1634 * developed a hybrid method that combines the performances gains of
1635 * FOC while still allowing applications to provide duty cycle or
1636 * voltage demand. This not to be confused with simple sinusoidal
1637 * control or phase voltage control which lacks the performance
1638 * gains.
1639 * - TargetSlot: Select which gains are applied to the primary controller by
1640 * selecting the slot. Use the configuration api to set the gain
1641 * values for the selected slot before enabling this feature. Slot
1642 * must be within [0,2].
1643 * - DifferentialSlot: Select which gains are applied to the differential
1644 * controller by selecting the slot. Use the configuration
1645 * api to set the gain values for the selected slot before
1646 * enabling this feature. Slot must be within [0,2].
1647 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1648 * is zero (or within deadband). Set to false to use
1649 * the NeutralMode configuration setting (default).
1650 * This flag exists to provide the fundamental
1651 * behavior of this control when output is zero, which
1652 * is to provide 0V to the motor.
1653 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1654 * users to use other limit switch sensors connected to
1655 * robot controller. This also allows use of active
1656 * sensors that require external power.
1657 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1658 * users to use other limit switch sensors connected to
1659 * robot controller. This also allows use of active
1660 * sensors that require external power.
1661 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1662 * LimitForwardMotion and LimitReverseMotion parameters,
1663 * instead allowing motion.
1664 *
1665 * This can be useful on mechanisms such as an
1666 * intake/feeder, where a limit switch stops motion while
1667 * intaking but should be ignored when feeding to a
1668 * shooter.
1669 *
1670 * The hardware limit faults and Forward/ReverseLimit
1671 * signals will still report the values of the limit
1672 * switches regardless of this parameter.
1673 * - UseTimesync: Set to true to delay applying this control request until a
1674 * timesync boundary (requires Phoenix Pro and CANivore). This
1675 * eliminates the impact of nondeterministic network delays in
1676 * exchange for a larger but deterministic control latency.
1677 *
1678 * This requires setting the ControlTimesyncFreqHz config in
1679 * MotorOutputConfigs. Additionally, when this is enabled, the
1680 * UpdateFreqHz of this request should be set to 0 Hz.
1681 *
1682 * \param request Control object to request of the device
1683 * \returns Status Code of the request, 0 is OK
1684 */
1686
1687 /**
1688 * \brief Follow the motor output of another Talon.
1689 *
1690 * \details If Talon is in torque control, the torque is copied -
1691 * which will increase the total torque applied. If Talon is in
1692 * percent supply output control, the duty cycle is matched. Motor
1693 * direction either matches master's configured direction or opposes
1694 * it based on OpposeMasterDirection.
1695 *
1696 * - Follower Parameters:
1697 * - MasterID: Device ID of the master to follow.
1698 * - OpposeMasterDirection: Set to false for motor invert to match the master's
1699 * configured Invert - which is typical when master and
1700 * follower are mechanically linked and spin in the same
1701 * direction. Set to true for motor invert to oppose
1702 * the master's configured Invert - this is typical
1703 * where the the master and follower mechanically spin
1704 * in opposite directions.
1705 *
1706 * \param request Control object to request of the device
1707 * \returns Status Code of the request, 0 is OK
1708 */
1710
1711 /**
1712 * \brief Follow the motor output of another Talon while ignoring the
1713 * master's invert setting.
1714 *
1715 * \details If Talon is in torque control, the torque is copied -
1716 * which will increase the total torque applied. If Talon is in
1717 * percent supply output control, the duty cycle is matched. Motor
1718 * direction is strictly determined by the configured invert and not
1719 * the master. If you want motor direction to match or oppose the
1720 * master, use FollowerRequest instead.
1721 *
1722 * - StrictFollower Parameters:
1723 * - MasterID: Device ID of the master to follow.
1724 *
1725 * \param request Control object to request of the device
1726 * \returns Status Code of the request, 0 is OK
1727 */
1729
1730 /**
1731 * \brief Follow the differential motor output of another Talon.
1732 *
1733 * \details If Talon is in torque control, the torque is copied -
1734 * which will increase the total torque applied. If Talon is in
1735 * percent supply output control, the duty cycle is matched. Motor
1736 * direction either matches master's configured direction or opposes
1737 * it based on OpposeMasterDirection.
1738 *
1739 * - DifferentialFollower Parameters:
1740 * - MasterID: Device ID of the differential master to follow.
1741 * - OpposeMasterDirection: Set to false for motor invert to match the master's
1742 * configured Invert - which is typical when master and
1743 * follower are mechanically linked and spin in the same
1744 * direction. Set to true for motor invert to oppose
1745 * the master's configured Invert - this is typical
1746 * where the the master and follower mechanically spin
1747 * in opposite directions.
1748 *
1749 * \param request Control object to request of the device
1750 * \returns Status Code of the request, 0 is OK
1751 */
1753
1754 /**
1755 * \brief Follow the differential motor output of another Talon while
1756 * ignoring the master's invert setting.
1757 *
1758 * \details If Talon is in torque control, the torque is copied -
1759 * which will increase the total torque applied. If Talon is in
1760 * percent supply output control, the duty cycle is matched. Motor
1761 * direction is strictly determined by the configured invert and not
1762 * the master. If you want motor direction to match or oppose the
1763 * master, use FollowerRequest instead.
1764 *
1765 * - DifferentialStrictFollower Parameters:
1766 * - MasterID: Device ID of the differential master to follow.
1767 *
1768 * \param request Control object to request of the device
1769 * \returns Status Code of the request, 0 is OK
1770 */
1772
1773 /**
1774 * \brief Applies full neutral-brake by shorting motor leads together.
1775 *
1776 * - StaticBrake Parameters:
1777 * - UseTimesync: Set to true to delay applying this control request until a
1778 * timesync boundary (requires Phoenix Pro and CANivore). This
1779 * eliminates the impact of nondeterministic network delays in
1780 * exchange for a larger but deterministic control latency.
1781 *
1782 * This requires setting the ControlTimesyncFreqHz config in
1783 * MotorOutputConfigs. Additionally, when this is enabled, the
1784 * UpdateFreqHz of this request should be set to 0 Hz.
1785 *
1786 * \param request Control object to request of the device
1787 * \returns Status Code of the request, 0 is OK
1788 */
1790
1791 /**
1792 * \brief Request neutral output of actuator. The applied brake type
1793 * is determined by the NeutralMode configuration.
1794 *
1795 * - NeutralOut Parameters:
1796 * - UseTimesync: Set to true to delay applying this control request until a
1797 * timesync boundary (requires Phoenix Pro and CANivore). This
1798 * eliminates the impact of nondeterministic network delays in
1799 * exchange for a larger but deterministic control latency.
1800 *
1801 * This requires setting the ControlTimesyncFreqHz config in
1802 * MotorOutputConfigs. Additionally, when this is enabled, the
1803 * UpdateFreqHz of this request should be set to 0 Hz.
1804 *
1805 * \param request Control object to request of the device
1806 * \returns Status Code of the request, 0 is OK
1807 */
1809
1810 /**
1811 * \brief Request coast neutral output of actuator. The bridge is
1812 * disabled and the rotor is allowed to coast.
1813 *
1814 * - CoastOut Parameters:
1815 * - UseTimesync: Set to true to delay applying this control request until a
1816 * timesync boundary (requires Phoenix Pro and CANivore). This
1817 * eliminates the impact of nondeterministic network delays in
1818 * exchange for a larger but deterministic control latency.
1819 *
1820 * This requires setting the ControlTimesyncFreqHz config in
1821 * MotorOutputConfigs. Additionally, when this is enabled, the
1822 * UpdateFreqHz of this request should be set to 0 Hz.
1823 *
1824 * \param request Control object to request of the device
1825 * \returns Status Code of the request, 0 is OK
1826 */
1828
1829 /**
1830 * \brief Differential control with duty cycle average target and
1831 * position difference target.
1832 *
1833 * - Diff_DutyCycleOut_Position Parameters:
1834 * - AverageRequest: Average DutyCycleOut request of the mechanism.
1835 * - DifferentialRequest: Differential PositionDutyCycle request of the
1836 * mechanism.
1837 *
1838 * \param request Control object to request of the device
1839 * \returns Status Code of the request, 0 is OK
1840 */
1841 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Position &request) = 0;
1842
1843 /**
1844 * \brief Differential control with position average target and
1845 * position difference target using dutycycle control.
1846 *
1847 * - Diff_PositionDutyCycle_Position Parameters:
1848 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
1849 * - DifferentialRequest: Differential PositionDutyCycle request of the
1850 * mechanism.
1851 *
1852 * \param request Control object to request of the device
1853 * \returns Status Code of the request, 0 is OK
1854 */
1855 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Position &request) = 0;
1856
1857 /**
1858 * \brief Differential control with velocity average target and
1859 * position difference target using dutycycle control.
1860 *
1861 * - Diff_VelocityDutyCycle_Position Parameters:
1862 * - AverageRequest: Average VelocityDutyCYcle request of the mechanism.
1863 * - DifferentialRequest: Differential PositionDutyCycle request of the
1864 * mechanism.
1865 *
1866 * \param request Control object to request of the device
1867 * \returns Status Code of the request, 0 is OK
1868 */
1869 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Position &request) = 0;
1870
1871 /**
1872 * \brief Differential control with Motion Magic® average target and
1873 * position difference target using dutycycle control.
1874 *
1875 * - Diff_MotionMagicDutyCycle_Position Parameters:
1876 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
1877 * - DifferentialRequest: Differential PositionDutyCycle request of the
1878 * mechanism.
1879 *
1880 * \param request Control object to request of the device
1881 * \returns Status Code of the request, 0 is OK
1882 */
1883 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Position &request) = 0;
1884
1885 /**
1886 * \brief Differential control with duty cycle average target and
1887 * velocity difference target.
1888 *
1889 * - Diff_DutyCycleOut_Velocity Parameters:
1890 * - AverageRequest: Average DutyCycleOut request of the mechanism.
1891 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1892 * mechanism.
1893 *
1894 * \param request Control object to request of the device
1895 * \returns Status Code of the request, 0 is OK
1896 */
1897 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Velocity &request) = 0;
1898
1899 /**
1900 * \brief Differential control with position average target and
1901 * velocity difference target using dutycycle control.
1902 *
1903 * - Diff_PositionDutyCycle_Velocity Parameters:
1904 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
1905 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1906 * mechanism.
1907 *
1908 * \param request Control object to request of the device
1909 * \returns Status Code of the request, 0 is OK
1910 */
1911 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Velocity &request) = 0;
1912
1913 /**
1914 * \brief Differential control with velocity average target and
1915 * velocity difference target using dutycycle control.
1916 *
1917 * - Diff_VelocityDutyCycle_Velocity Parameters:
1918 * - AverageRequest: Average VelocityDutyCycle request of the mechanism.
1919 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1920 * mechanism.
1921 *
1922 * \param request Control object to request of the device
1923 * \returns Status Code of the request, 0 is OK
1924 */
1925 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Velocity &request) = 0;
1926
1927 /**
1928 * \brief Differential control with Motion Magic® average target and
1929 * velocity difference target using dutycycle control.
1930 *
1931 * - Diff_MotionMagicDutyCycle_Velocity Parameters:
1932 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
1933 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1934 * mechanism.
1935 *
1936 * \param request Control object to request of the device
1937 * \returns Status Code of the request, 0 is OK
1938 */
1939 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Velocity &request) = 0;
1940
1941 /**
1942 * \brief Differential control with voltage average target and
1943 * position difference target.
1944 *
1945 * - Diff_VoltageOut_Position Parameters:
1946 * - AverageRequest: Average VoltageOut request of the mechanism.
1947 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
1948 *
1949 * \param request Control object to request of the device
1950 * \returns Status Code of the request, 0 is OK
1951 */
1952 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Position &request) = 0;
1953
1954 /**
1955 * \brief Differential control with position average target and
1956 * position difference target using voltage control.
1957 *
1958 * - Diff_PositionVoltage_Position Parameters:
1959 * - AverageRequest: Average PositionVoltage request of the mechanism.
1960 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
1961 *
1962 * \param request Control object to request of the device
1963 * \returns Status Code of the request, 0 is OK
1964 */
1965 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Position &request) = 0;
1966
1967 /**
1968 * \brief Differential control with velocity average target and
1969 * position difference target using voltage control.
1970 *
1971 * - Diff_VelocityVoltage_Position Parameters:
1972 * - AverageRequest: Average VelocityVoltage request of the mechanism.
1973 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
1974 *
1975 * \param request Control object to request of the device
1976 * \returns Status Code of the request, 0 is OK
1977 */
1978 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Position &request) = 0;
1979
1980 /**
1981 * \brief Differential control with Motion Magic® average target and
1982 * position difference target using voltage control.
1983 *
1984 * - Diff_MotionMagicVoltage_Position Parameters:
1985 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
1986 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
1987 *
1988 * \param request Control object to request of the device
1989 * \returns Status Code of the request, 0 is OK
1990 */
1991 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Position &request) = 0;
1992
1993 /**
1994 * \brief Differential control with voltage average target and
1995 * velocity difference target.
1996 *
1997 * - Diff_VoltageOut_Velocity Parameters:
1998 * - AverageRequest: Average VoltageOut request of the mechanism.
1999 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2000 *
2001 * \param request Control object to request of the device
2002 * \returns Status Code of the request, 0 is OK
2003 */
2004 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Velocity &request) = 0;
2005
2006 /**
2007 * \brief Differential control with position average target and
2008 * velocity difference target using voltage control.
2009 *
2010 * - Diff_PositionVoltage_Velocity Parameters:
2011 * - AverageRequest: Average PositionVoltage request of the mechanism.
2012 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2013 *
2014 * \param request Control object to request of the device
2015 * \returns Status Code of the request, 0 is OK
2016 */
2017 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Velocity &request) = 0;
2018
2019 /**
2020 * \brief Differential control with velocity average target and
2021 * velocity difference target using voltage control.
2022 *
2023 * - Diff_VelocityVoltage_Velocity Parameters:
2024 * - AverageRequest: Average VelocityVoltage request of the mechanism.
2025 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2026 *
2027 * \param request Control object to request of the device
2028 * \returns Status Code of the request, 0 is OK
2029 */
2030 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Velocity &request) = 0;
2031
2032 /**
2033 * \brief Differential control with Motion Magic® average target and
2034 * velocity difference target using voltage control.
2035 *
2036 * - Diff_MotionMagicVoltage_Velocity Parameters:
2037 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
2038 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2039 *
2040 * \param request Control object to request of the device
2041 * \returns Status Code of the request, 0 is OK
2042 */
2043 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Velocity &request) = 0;
2044
2045 /**
2046 * \brief Control device with generic control request object. User must make
2047 * sure the specified object is castable to a valid control request,
2048 * otherwise this function will fail at run-time and return the NotSupported
2049 * StatusCode
2050 *
2051 * \param request Control object to request of the device
2052 * \returns Status Code of the request, 0 is OK
2053 */
2055
2056};
2057
2058}
2059}
2060}
2061}
2062
Request coast neutral output of actuator.
Definition CoastOut.hpp:27
Abstract Control Request class that other control requests extend for use.
Definition ControlRequest.hpp:29
Request a specified motor duty cycle with a differential position closed-loop.
Definition DifferentialDutyCycle.hpp:31
Follow the differential motor output of another Talon.
Definition DifferentialFollower.hpp:30
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicDutyCycle.hpp:35
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicVoltage.hpp:34
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionDutyCycle.hpp:29
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionVoltage.hpp:29
Follow the differential motor output of another Talon while ignoring the master's invert setting.
Definition DifferentialStrictFollower.hpp:32
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityDutyCycle.hpp:30
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityVoltage.hpp:30
Request a specified voltage with a differential position closed-loop.
Definition DifferentialVoltage.hpp:31
Request a specified motor duty cycle.
Definition DutyCycleOut.hpp:28
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicDutyCycle.hpp:42
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicVoltage.hpp:41
Follow the motor output of another Talon.
Definition Follower.hpp:30
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicDutyCycle.hpp:36
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoDutyCycle.hpp:39
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoVoltage.hpp:38
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityDutyCycle.hpp:43
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityVoltage.hpp:42
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicVoltage.hpp:35
Request neutral output of actuator.
Definition NeutralOut.hpp:27
Request PID to target position with duty cycle feedforward.
Definition PositionDutyCycle.hpp:31
Request PID to target position with voltage feedforward.
Definition PositionVoltage.hpp:31
Applies full neutral-brake by shorting motor leads together.
Definition StaticBrake.hpp:26
Follow the motor output of another Talon while ignoring the master's invert setting.
Definition StrictFollower.hpp:32
Request PID to target velocity with duty cycle feedforward.
Definition VelocityDutyCycle.hpp:31
Request PID to target velocity with voltage feedforward.
Definition VelocityVoltage.hpp:31
Request a specified voltage.
Definition VoltageOut.hpp:29
Contains all control functions available for devices that support Talon controls.
Definition HasTalonControls.hpp:69
virtual ctre::phoenix::StatusCode SetControl(const controls::Follower &request)=0
Follow the motor output of another Talon.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialVelocityVoltage &request)=0
Request PID to target velocity with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::NeutralOut &request)=0
Request neutral output of actuator.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Velocity &request)=0
Differential control with voltage average target and velocity difference target.
virtual ctre::phoenix::StatusCode SetControl(const controls::ControlRequest &request)=0
Control device with generic control request object.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Position &request)=0
Differential control with velocity average target and position difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Position &request)=0
Differential control with position average target and position difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicExpoDutyCycle &request)=0
Requests Motion Magic® to target a final position using an exponential motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::VelocityVoltage &request)=0
Request PID to target velocity with voltage feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialPositionDutyCycle &request)=0
Request PID to target position with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::DynamicMotionMagicVoltage &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVelocityDutyCycle &request)=0
Requests Motion Magic® to target a final velocity using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVelocityVoltage &request)=0
Requests Motion Magic® to target a final velocity using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::DynamicMotionMagicDutyCycle &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialStrictFollower &request)=0
Follow the differential motor output of another Talon while ignoring the master's invert setting.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Position &request)=0
Differential control with velocity average target and position difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::PositionVoltage &request)=0
Request PID to target position with voltage feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Velocity &request)=0
Differential control with velocity average target and velocity difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::DutyCycleOut &request)=0
Request a specified motor duty cycle.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialVoltage &request)=0
Request a specified voltage with a differential position closed-loop.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialMotionMagicVoltage &request)=0
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Velocity &request)=0
Differential control with position average target and velocity difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::VelocityDutyCycle &request)=0
Request PID to target velocity with duty cycle feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Position &request)=0
Differential control with voltage average target and position difference target.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialFollower &request)=0
Follow the differential motor output of another Talon.
virtual ctre::phoenix::StatusCode SetControl(const controls::StrictFollower &request)=0
Follow the motor output of another Talon while ignoring the master's invert setting.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Velocity &request)=0
Differential control with position average target and velocity difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicExpoVoltage &request)=0
Requests Motion Magic® to target a final position using an exponential motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Position &request)=0
Differential control with Motion Magic® average target and position difference target using dutycycle...
virtual ctre::phoenix::StatusCode SetControl(const controls::CoastOut &request)=0
Request coast neutral output of actuator.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicDutyCycle &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Velocity &request)=0
Differential control with Motion Magic® average target and velocity difference target using dutycycle...
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialVelocityDutyCycle &request)=0
Request PID to target velocity with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Velocity &request)=0
Differential control with Motion Magic® average target and velocity difference target using voltage c...
virtual ctre::phoenix::StatusCode SetControl(const controls::PositionDutyCycle &request)=0
Request PID to target position with duty cycle feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::VoltageOut &request)=0
Request a specified voltage.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Velocity &request)=0
Differential control with duty cycle average target and velocity difference target.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVoltage &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::StaticBrake &request)=0
Applies full neutral-brake by shorting motor leads together.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Position &request)=0
Differential control with position average target and position difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialPositionVoltage &request)=0
Request PID to target position with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialDutyCycle &request)=0
Request a specified motor duty cycle with a differential position closed-loop.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Position &request)=0
Differential control with Motion Magic® average target and position difference target using voltage c...
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialMotionMagicDutyCycle &request)=0
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Velocity &request)=0
Differential control with velocity average target and velocity difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Position &request)=0
Differential control with duty cycle average target and position difference target.
Status codes reported by APIs, including OK, warnings, and errors.
Definition StatusCodes.h:27
Definition StatusCodes.h:18