WPILibC++ 2024.3.2
frc::Relay Class Reference

Class for Spike style relay outputs. More...

#include <frc/Relay.h>

Inheritance diagram for frc::Relay:
frc::MotorSafety wpi::Sendable wpi::SendableHelper< Relay >

Public Types

enum  Value { kOff , kOn , kForward , kReverse }
 The state to drive a Relay to. More...
 
enum  Direction { kBothDirections , kForwardOnly , kReverseOnly }
 The Direction(s) that a relay is configured to operate in. More...
 

Public Member Functions

 Relay (int channel, Direction direction=kBothDirections)
 Relay constructor given a channel. More...
 
 ~Relay () override
 Free the resource associated with a relay. More...
 
 Relay (Relay &&)=default
 
Relayoperator= (Relay &&)=default
 
void Set (Value value)
 Set the relay state. More...
 
Value Get () const
 Get the Relay State. More...
 
int GetChannel () const
 
void StopMotor () override
 Called to stop the motor when the timeout expires. More...
 
std::string GetDescription () const override
 Returns a description to print when an error occurs. More...
 
void InitSendable (wpi::SendableBuilder &builder) override
 Initializes this Sendable object. More...
 
- Public Member Functions inherited from frc::MotorSafety
 MotorSafety ()
 
virtual ~MotorSafety ()
 
 MotorSafety (MotorSafety &&rhs)
 
MotorSafetyoperator= (MotorSafety &&rhs)
 
void Feed ()
 Feed the motor safety object. More...
 
void SetExpiration (units::second_t expirationTime)
 Set the expiration time for the corresponding motor safety object. More...
 
units::second_t GetExpiration () const
 Retrieve the timeout value for the corresponding motor safety object. More...
 
bool IsAlive () const
 Determine if the motor is still operating or has timed out. More...
 
void SetSafetyEnabled (bool enabled)
 Enable/disable motor safety for this device. More...
 
bool IsSafetyEnabled () const
 Return the state of the motor safety enabled flag. More...
 
void Check ()
 Check if this motor has exceeded its timeout. More...
 
virtual void StopMotor ()=0
 Called to stop the motor when the timeout expires. More...
 
virtual std::string GetDescription () const =0
 Returns a description to print when an error occurs. More...
 
- Public Member Functions inherited from wpi::Sendable
virtual ~Sendable ()=default
 
virtual void InitSendable (SendableBuilder &builder)=0
 Initializes this Sendable object. More...
 
- Public Member Functions inherited from wpi::SendableHelper< Relay >
 SendableHelper (const SendableHelper &rhs)=default
 
 SendableHelper (SendableHelper &&rhs)
 
SendableHelperoperator= (const SendableHelper &rhs)=default
 
SendableHelperoperator= (SendableHelper &&rhs)
 

Additional Inherited Members

- Static Public Member Functions inherited from frc::MotorSafety
static void CheckMotors ()
 Check the motors to see if any have timed out. More...
 
- Protected Member Functions inherited from wpi::SendableHelper< Relay >
 SendableHelper ()=default
 
 ~SendableHelper ()
 

Detailed Description

Class for Spike style relay outputs.

Relays are intended to be connected to spikes or similar relays. The relay channels controls a pair of pins that are either both off, one on, the other on, or both on. This translates into two spike outputs at 0v, one at 12v and one at 0v, one at 0v and the other at 12v, or two spike outputs at 12V. This allows off, full forward, or full reverse control of motors without variable speed. It also allows the two channels (forward and reverse) to be used independently for something that does not care about voltage polarity (like a solenoid).

Member Enumeration Documentation

◆ Direction

The Direction(s) that a relay is configured to operate in.

Enumerator
kBothDirections 

Both directions are valid.

kForwardOnly 

Only forward is valid.

kReverseOnly 

Only reverse is valid.

◆ Value

The state to drive a Relay to.

Enumerator
kOff 

Off.

kOn 

On.

kForward 

Forward.

kReverse 

Reverse.

Constructor & Destructor Documentation

◆ Relay() [1/2]

frc::Relay::Relay ( int  channel,
Direction  direction = kBothDirections 
)
explicit

Relay constructor given a channel.

This code initializes the relay and reserves all resources that need to be locked. Initially the relay is set to both lines at 0v.

Parameters
channelThe channel number (0-3).
directionThe direction that the Relay object will control.

◆ ~Relay()

frc::Relay::~Relay ( )
override

Free the resource associated with a relay.

The relay channels are set to free and the relay output is turned off.

◆ Relay() [2/2]

frc::Relay::Relay ( Relay &&  )
default

Member Function Documentation

◆ Get()

Value frc::Relay::Get ( ) const

Get the Relay State.

Gets the current state of the relay.

When set to kForwardOnly or kReverseOnly, value is returned as kOn/kOff not kForward/kReverse (per the recommendation in Set).

Returns
The current state of the relay as a Relay::Value

◆ GetChannel()

int frc::Relay::GetChannel ( ) const

◆ GetDescription()

std::string frc::Relay::GetDescription ( ) const
overridevirtual

Returns a description to print when an error occurs.

Returns
Description to print when an error occurs.

Implements frc::MotorSafety.

◆ InitSendable()

void frc::Relay::InitSendable ( wpi::SendableBuilder builder)
overridevirtual

Initializes this Sendable object.

Parameters
buildersendable builder

Implements wpi::Sendable.

◆ operator=()

Relay & frc::Relay::operator= ( Relay &&  )
default

◆ Set()

void frc::Relay::Set ( Value  value)

Set the relay state.

Valid values depend on which directions of the relay are controlled by the object.

When set to kBothDirections, the relay can be any of the four states: 0v-0v, 0v-12v, 12v-0v, 12v-12v

When set to kForwardOnly or kReverseOnly, you can specify the constant for the direction or you can simply specify kOff and kOn. Using only kOff and kOn is recommended.

Parameters
valueThe state to set the relay.

◆ StopMotor()

void frc::Relay::StopMotor ( )
overridevirtual

Called to stop the motor when the timeout expires.

Implements frc::MotorSafety.


The documentation for this class was generated from the following file: