TonguFX

class TonguFX<T : ControlRequest>(deviceId: Int, val controlRequest: T, val withOutput: T.(Double) -> T, canbus: CANBus = CANBus.roboRIO(), monguConfig: TalonFXConfig.() -> Unit = {}) : TalonFX, Mongu<TalonFXConfig>

Wrapper around TalonFX that implements Mongu configuration and control using a ControlRequest.

Type parameter T represents the specific subtype of ControlRequest used to send control commands.

Usage:

// Provide a control request and a function that produces a new request with the desired output.
val velocityVoltage = VelocityVoltage()
val motor = TonguFX(1, velocityVoltage, { out -> this.withVelocity(out) })

// Configure via DSL, then control the motor.
motor.configure {
pingu.p = 0.1
inverted = InvertedValue.Clockwise_Positive
}
motor.movePWM(0.5) // simple PWM control
motor.control(25) // send a ControlRequest with output 25
motor.stopMotor() // stops using configured stop behavior

Notes:

  • withOutput must return a new or modified instance of T that encodes the requested output. Implementations should avoid mutating a shared template in-place unless it is safe for concurrent use.

  • The provided controlRequest acts as a template; the concrete request sent is created by invoking controlRequest.withOutput(value).

  • Initialization resets position to 0.0 and applies the optional monguConfig block.

  • configure applies changes to the in-memory TalonFXConfig and immediately applies them to the hardware.

Parameters

deviceId

The CAN device id for the TalonFX.

controlRequest

A template control request instance used as the base for control operations.

withOutput

An extension function on the control request type that returns a new request with the given output value.

canbus

The CAN bus to use (default is roboRIO).

monguConfig

Optional DSL block to configure the motor's TalonFXConfig during initialization.

Constructors

Link copied to clipboard
constructor(deviceId: Int, controlRequest: T, withOutput: T.(Double) -> T, canbus: CANBus = CANBus.roboRIO(), monguConfig: TalonFXConfig.() -> Unit = {})

Creates a TonguFX motor controller.

Properties

Link copied to clipboard
val acceleration: StatusSignal<AngularAcceleration?>?
Link copied to clipboard
val ancillaryDeviceTemp: StatusSignal<Temperature?>?
Link copied to clipboard
override val appliedControl: ControlRequest?
Link copied to clipboard
val appliedRotorPolarity: StatusSignal<AppliedRotorPolarityValue?>?
Link copied to clipboard
val bridgeOutput: StatusSignal<BridgeOutputValue?>?
Link copied to clipboard
val closedLoopDerivativeOutput: StatusSignal<Double?>?
Link copied to clipboard
val closedLoopError: StatusSignal<Double?>?
Link copied to clipboard
val closedLoopFeedForward: StatusSignal<Double?>?
Link copied to clipboard
val closedLoopIntegratedOutput: StatusSignal<Double?>?
Link copied to clipboard
val closedLoopOutput: StatusSignal<Double?>?
Link copied to clipboard
Link copied to clipboard
val closedLoopReference: StatusSignal<Double?>?
Link copied to clipboard
val closedLoopReferenceSlope: StatusSignal<Double?>?
Link copied to clipboard
val closedLoopSlot: StatusSignal<Int?>?
Link copied to clipboard
open override var configuration: TalonFXConfig

The configuration for this TalonFX motor.

Link copied to clipboard
val configurator: TalonFXConfigurator?
Link copied to clipboard
val connectedMotor: StatusSignal<ConnectedMotorValue?>?
Link copied to clipboard
val controlMode: StatusSignal<ControlModeValue?>?
Link copied to clipboard
Link copied to clipboard
open val description: String?
Link copied to clipboard
val deviceEnable: StatusSignal<DeviceEnableValue?>?
Link copied to clipboard
override val deviceHash: Long
Link copied to clipboard
override val deviceID: Int
Link copied to clipboard
val deviceTemp: StatusSignal<Temperature?>?
Link copied to clipboard
val differentialAveragePosition: StatusSignal<Angle?>?
Link copied to clipboard
val differentialAverageVelocity: StatusSignal<AngularVelocity?>?
Link copied to clipboard
val differentialClosedLoopError: StatusSignal<Double?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val differentialClosedLoopSlot: StatusSignal<Int?>?
Link copied to clipboard
val differentialControlMode: StatusSignal<DifferentialControlModeValue?>?
Link copied to clipboard
val differentialDifferencePosition: StatusSignal<Angle?>?
Link copied to clipboard
val differentialDifferenceVelocity: StatusSignal<AngularVelocity?>?
Link copied to clipboard
val differentialOutput: StatusSignal<Double?>?
Link copied to clipboard

Convenience property that exposes the controller's current acceleration as a Double.

Link copied to clipboard

Convenience property that exposes the controller's current position as a Double.

Link copied to clipboard

Convenience property that exposes the controller's rotor velocity as a Double.

Link copied to clipboard

Convenience property that exposes the controller's current velocity as a Double.

Link copied to clipboard
val dutyCycle: StatusSignal<Double?>?
Link copied to clipboard
Link copied to clipboard
val fault_BootDuringEnable: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_BridgeBrownout: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_DeviceTemp: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_ForwardHardLimit: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_ForwardSoftLimit: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_FusedSensorOutOfSync: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_Hardware: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val fault_OverSupplyV: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_ProcTemp: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val fault_RemoteSensorReset: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_ReverseHardLimit: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_ReverseSoftLimit: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_StaticBrakeDisabled: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_StatorCurrLimit: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_SupplyCurrLimit: StatusSignal<Boolean?>?
Link copied to clipboard
val fault_Undervoltage: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
val fault_UnstableSupplyV: StatusSignal<Boolean?>?
Link copied to clipboard
val faultField: StatusSignal<Int?>?
Link copied to clipboard
val forwardLimit: StatusSignal<ForwardLimitValue?>?
Link copied to clipboard
Link copied to clipboard
override val isConnected: Boolean
Link copied to clipboard
val isProLicensed: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
val motionMagicAtTarget: StatusSignal<Boolean?>?
Link copied to clipboard
val motionMagicIsRunning: StatusSignal<Boolean?>?
Link copied to clipboard
val motorKT: StatusSignal<Per<TorqueUnit?, CurrentUnit?>?>?
Link copied to clipboard
val motorKV: StatusSignal<Per<AngularVelocityUnit?, VoltageUnit?>?>?
Link copied to clipboard
val motorOutputStatus: StatusSignal<MotorOutputStatusValue?>?
Link copied to clipboard
val motorStallCurrent: StatusSignal<Current?>?
Link copied to clipboard
val motorVoltage: StatusSignal<Voltage?>?
Link copied to clipboard
override val network: CANBus?
Link copied to clipboard

Retrieves the custom pingu property from the TalonFXConfig configuration.

Link copied to clipboard
val position: StatusSignal<Angle?>?
Link copied to clipboard
val processorTemp: StatusSignal<Temperature?>?
Link copied to clipboard
Link copied to clipboard
val reverseLimit: StatusSignal<ReverseLimitValue?>?
Link copied to clipboard
val robotEnable: StatusSignal<RobotEnableValue?>?
Link copied to clipboard
val rotorPosition: StatusSignal<Angle?>?
Link copied to clipboard
val rotorVelocity: StatusSignal<AngularVelocity?>?
Link copied to clipboard
val simState: TalonFXSimState?
Link copied to clipboard
val statorCurrent: StatusSignal<Current?>?
Link copied to clipboard
Link copied to clipboard
val stickyFault_BridgeBrownout: StatusSignal<Boolean?>?
Link copied to clipboard
val stickyFault_DeviceTemp: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val stickyFault_Hardware: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val stickyFault_OverSupplyV: StatusSignal<Boolean?>?
Link copied to clipboard
val stickyFault_ProcTemp: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val stickyFault_Undervoltage: StatusSignal<Boolean?>?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
val stickyFaultField: StatusSignal<Int?>?
Link copied to clipboard
val supplyCurrent: StatusSignal<Current?>?
Link copied to clipboard
val supplyVoltage: StatusSignal<Voltage?>?
Link copied to clipboard
val torqueCurrent: StatusSignal<Current?>?
Link copied to clipboard
val velocity: StatusSignal<AngularVelocity?>?
Link copied to clipboard
val version: StatusSignal<Int?>?
Link copied to clipboard
val versionBugfix: StatusSignal<Int?>?
Link copied to clipboard
val versionBuild: StatusSignal<Int?>?
Link copied to clipboard
val versionMajor: StatusSignal<Int?>?
Link copied to clipboard
val versionMinor: StatusSignal<Int?>?
Link copied to clipboard
val withOutput: T.(Double) -> T

Functions

Link copied to clipboard
fun clearStickyFault_BootDuringEnable(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_BridgeBrownout(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_DeviceTemp(): StatusCode?
fun clearStickyFault_DeviceTemp(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_ForwardHardLimit(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_ForwardSoftLimit(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_FusedSensorOutOfSync(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_Hardware(): StatusCode?
fun clearStickyFault_Hardware(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun clearStickyFault_OverSupplyV(): StatusCode?
fun clearStickyFault_OverSupplyV(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_ProcTemp(): StatusCode?
fun clearStickyFault_ProcTemp(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_RemoteSensorReset(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_ReverseHardLimit(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_ReverseSoftLimit(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_StaticBrakeDisabled(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_StatorCurrLimit(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_SupplyCurrLimit(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFault_Undervoltage(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
Link copied to clipboard
fun clearStickyFault_UnstableSupplyV(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun clearStickyFaults(): StatusCode?
fun clearStickyFaults(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
open fun close()
Link copied to clipboard
open override fun configure(block: TalonFXConfig.() -> Unit)

Configures the motor using a DSL-style configuration block.

Link copied to clipboard

Applies a set of sensible default values to this motor's TalonFXConfig and then invokes the provided block to allow callers to override or extend those defaults.

Link copied to clipboard
fun control(double: Double): StatusCode

Sets the motor control using a ControlRequest.

Link copied to clipboard
fun disable()
Link copied to clipboard
fun feed()
Link copied to clipboard
fun get(): Double
Link copied to clipboard
fun getAppliedControl(): ControlRequest?
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
fun getNetwork(): CANBus?
Link copied to clipboard
Link copied to clipboard
open fun initSendable(builder: SendableBuilder?)
Link copied to clipboard
operator fun invoke(control: ControlRequest): StatusCode

Invokes a control request on the TonguFX motor controller using operator call syntax.

Link copied to clipboard
fun isConnected(maxLatencySeconds: Double): Boolean
Link copied to clipboard
open override fun movePWM(value: Double)

Moves the motor using PWM control.

Link copied to clipboard
open operator override fun not()

Stops the motor when the logical not operator (!) is applied to this instance.

Link copied to clipboard
fun optimizeBusUtilization(): StatusCode?
fun optimizeBusUtilization(optimizedFreq: Frequency?): StatusCode?
fun optimizeBusUtilization(optimizedFreqHz: Double): StatusCode?
fun optimizeBusUtilization(optimizedFreq: Frequency?, timeoutSeconds: Double): StatusCode?
fun optimizeBusUtilization(optimizedFreqHz: Double, timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun resetPosition(position: Double = 0.0): StatusCode

Resets the position of the TonguFX motor to the specified value.

Link copied to clipboard
fun resetSignalFrequencies(): StatusCode?
fun resetSignalFrequencies(timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun set(speed: Double)
Link copied to clipboard
fun setControl(request: CoastOut?): StatusCode?
fun setControl(request: ControlRequest?): StatusCode?
fun setControl(request: DifferentialDutyCycle?): StatusCode?
fun setControl(request: DifferentialFollower?): StatusCode?
fun setControl(request: DifferentialMotionMagicDutyCycle?): StatusCode?
fun setControl(request: DifferentialMotionMagicExpoDutyCycle?): StatusCode?
fun setControl(request: DifferentialMotionMagicExpoVoltage?): StatusCode?
fun setControl(request: DifferentialMotionMagicVelocityDutyCycle?): StatusCode?
fun setControl(request: DifferentialMotionMagicVelocityVoltage?): StatusCode?
fun setControl(request: DifferentialMotionMagicVoltage?): StatusCode?
fun setControl(request: DifferentialPositionDutyCycle?): StatusCode?
fun setControl(request: DifferentialPositionVoltage?): StatusCode?
fun setControl(request: DifferentialStrictFollower?): StatusCode?
fun setControl(request: DifferentialVelocityDutyCycle?): StatusCode?
fun setControl(request: DifferentialVelocityVoltage?): StatusCode?
fun setControl(request: DifferentialVoltage?): StatusCode?
fun setControl(request: DutyCycleOut?): StatusCode?
fun setControl(request: DynamicMotionMagicDutyCycle?): StatusCode?
fun setControl(request: DynamicMotionMagicExpoDutyCycle?): StatusCode?
fun setControl(request: DynamicMotionMagicExpoVoltage?): StatusCode?
fun setControl(request: DynamicMotionMagicVoltage?): StatusCode?
fun setControl(request: Follower?): StatusCode?
fun setControl(request: MotionMagicDutyCycle?): StatusCode?
fun setControl(request: MotionMagicExpoDutyCycle?): StatusCode?
fun setControl(request: MotionMagicExpoVoltage?): StatusCode?
fun setControl(request: MotionMagicVelocityDutyCycle?): StatusCode?
fun setControl(request: MotionMagicVelocityVoltage?): StatusCode?
fun setControl(request: MotionMagicVoltage?): StatusCode?
fun setControl(request: NeutralOut?): StatusCode?
fun setControl(request: PositionDutyCycle?): StatusCode?
fun setControl(request: PositionVoltage?): StatusCode?
fun setControl(request: StaticBrake?): StatusCode?
fun setControl(request: StrictFollower?): StatusCode?
fun setControl(request: VelocityDutyCycle?): StatusCode?
fun setControl(request: VelocityVoltage?): StatusCode?
fun setControl(request: VoltageOut?): StatusCode?
fun setControl(request: Diff_DutyCycleOut_Open?): StatusCode?
fun setControl(request: Diff_DutyCycleOut_Position?): StatusCode?
fun setControl(request: Diff_DutyCycleOut_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicDutyCycle_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicDutyCycle_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicDutyCycle_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoDutyCycle_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoDutyCycle_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoDutyCycle_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoVoltage_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoVoltage_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoVoltage_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityDutyCycle_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityDutyCycle_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityDutyCycle_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityVoltage_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityVoltage_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityVoltage_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicVoltage_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicVoltage_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicVoltage_Velocity?): StatusCode?
fun setControl(request: Diff_PositionDutyCycle_Open?): StatusCode?
fun setControl(request: Diff_PositionDutyCycle_Position?): StatusCode?
fun setControl(request: Diff_PositionDutyCycle_Velocity?): StatusCode?
fun setControl(request: Diff_PositionVoltage_Open?): StatusCode?
fun setControl(request: Diff_PositionVoltage_Position?): StatusCode?
fun setControl(request: Diff_PositionVoltage_Velocity?): StatusCode?
fun setControl(request: Diff_VelocityDutyCycle_Open?): StatusCode?
fun setControl(request: Diff_VelocityDutyCycle_Position?): StatusCode?
fun setControl(request: Diff_VelocityDutyCycle_Velocity?): StatusCode?
fun setControl(request: Diff_VelocityVoltage_Open?): StatusCode?
fun setControl(request: Diff_VelocityVoltage_Position?): StatusCode?
fun setControl(request: Diff_VelocityVoltage_Velocity?): StatusCode?
fun setControl(request: Diff_VoltageOut_Open?): StatusCode?
fun setControl(request: Diff_VoltageOut_Position?): StatusCode?
fun setControl(request: Diff_VoltageOut_Velocity?): StatusCode?
fun setControl(request: DynamicMotionMagicExpoTorqueCurrentFOC?): StatusCode?
fun setControl(request: DynamicMotionMagicTorqueCurrentFOC?): StatusCode?
fun setControl(request: MotionMagicExpoTorqueCurrentFOC?): StatusCode?
fun setControl(request: MotionMagicTorqueCurrentFOC?): StatusCode?
fun setControl(request: MotionMagicVelocityTorqueCurrentFOC?): StatusCode?
fun setControl(request: PositionTorqueCurrentFOC?): StatusCode?
fun setControl(request: TorqueCurrentFOC?): StatusCode?
fun setControl(request: VelocityTorqueCurrentFOC?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoTorqueCurrentFOC_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoTorqueCurrentFOC_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicExpoTorqueCurrentFOC_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicTorqueCurrentFOC_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicTorqueCurrentFOC_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicTorqueCurrentFOC_Velocity?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityTorqueCurrentFOC_Open?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityTorqueCurrentFOC_Position?): StatusCode?
fun setControl(request: Diff_MotionMagicVelocityTorqueCurrentFOC_Velocity?): StatusCode?
fun setControl(request: Diff_PositionTorqueCurrentFOC_Open?): StatusCode?
fun setControl(request: Diff_PositionTorqueCurrentFOC_Position?): StatusCode?
fun setControl(request: Diff_PositionTorqueCurrentFOC_Velocity?): StatusCode?
fun setControl(request: Diff_TorqueCurrentFOC_Open?): StatusCode?
fun setControl(request: Diff_TorqueCurrentFOC_Position?): StatusCode?
fun setControl(request: Diff_TorqueCurrentFOC_Velocity?): StatusCode?
fun setControl(request: Diff_VelocityTorqueCurrentFOC_Open?): StatusCode?
fun setControl(request: Diff_VelocityTorqueCurrentFOC_Position?): StatusCode?
fun setControl(request: Diff_VelocityTorqueCurrentFOC_Velocity?): StatusCode?
fun setControl(request: MusicTone?): StatusCode?
Link copied to clipboard
fun setNeutralMode(neutralMode: NeutralModeValue?): StatusCode?
fun setNeutralMode(neutralMode: NeutralModeValue?, timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun setPosition(newValue: Angle?): StatusCode?
fun setPosition(newValue: Double): StatusCode?
fun setPosition(newValue: Angle?, timeoutSeconds: Double): StatusCode?
fun setPosition(newValue: Double, timeoutSeconds: Double): StatusCode?
Link copied to clipboard
fun setVoltage(volts: Double)
Link copied to clipboard
fun stopMotor()