CTRE_Phoenix 5.20.2
ctre::phoenix::led::CANdle Class Reference

#include <CANdle.h>

Public Member Functions

 CANdle (int deviceId, std::string const &canbus="")
 
double GetBusVoltage ()
 
double Get5VRailVoltage ()
 
double GetCurrent ()
 
double GetTemperature ()
 
double GetVBatModulation ()
 
ctre::phoenix::ErrorCode Animate (Animation &animation)
 
ctre::phoenix::ErrorCode Animate (BaseStandardAnimation &animation)
 
ctre::phoenix::ErrorCode Animate (BaseTwoSizeAnimation &animation)
 
ctre::phoenix::ErrorCode SetLEDs (int r, int g, int b, int w=0, int startIdx=0, int count=512)
 
ErrorCode ModulateVBatOutput (double dutyCyclePrcnt)
 
ErrorCode ConfigLOSBehavior (bool disableWhenLOS, int timeoutMs=0)
 
ErrorCode ConfigLEDType (LEDStripType type, int timeoutMs=0)
 
ErrorCode ConfigBrightnessScalar (double brightness, int timeoutMs=0)
 
ErrorCode ConfigStatusLedState (bool disableWhenRunning, int timeoutMs=0)
 
ErrorCode ConfigVBatOutput (VBatOutputMode mode, int timeoutMs=0)
 
double ConfigGetParameter (ParamEnum param, int ordinal, int timeoutMs=0)
 
ErrorCode ConfigSetParameter (ParamEnum param, double value, int subValue=0, int ordinal=0, int timeoutMs=0)
 
int ConfigGetCustomParam (int paramIndex, int timeoutMs=0)
 
ErrorCode ConfigSetCustomParam (int paramIndex, int value, int timeoutMs=0)
 
ErrorCode ConfigFactoryDefault (int timeoutMs=50)
 
ErrorCode GetFaults (CANdleFaults &toFill)
 
ErrorCode GetStickyFaults (CANdleStickyFaults &toFill)
 
ErrorCode ClearStickyFaults (int timeoutMs=0)
 
bool HasResetOccurred ()
 
ErrorCode SetStatusFramePeriod (CANdleStatusFrame frame, int periodMs, int timeoutMs=0)
 
int GetStatusFramePeriod (CANdleStatusFrame frame, int timeoutMs=0)
 
ErrorCode SetControlFramePeriod (CANdleControlFrame frame, int periodMs)
 
ErrorCode ConfigAllSettings (CANdleConfiguration allConfigs, int timeoutMs=50)
 
void GetAllConfigs (CANdleConfiguration allConfigs, int timeoutMs=50)
 
ErrorCode GetLastError ()
 

Detailed Description

CTRE CANdle

Device for controlling LEDs from the CAN bus.


// Example usage of a CANdle
CANdle candle{0}; // creates a new CANdle with ID 0

CANdleConfiguration config;
config.stripType = LEDStripType::RGB; // set the strip type to RGB
config.brightnessScalar = 0.5; // dim the LEDs to half brightness
candle.ConfigAllSettings(config);

candle.SetLEDs(255, 255, 255); // set the CANdle LEDs to white

// create a rainbow animation:
// - max brightness
// - half speed
// - 64 LEDs
RainbowAnimation rainbowAnim{1, 0.5, 64};
candle.Animate(rainbowAnim);

ErrorCode error = candle.GetLastError(); // gets the last error generated by the CANdle
CANdleFaults faults;
ErrorCode faultsError = candle.GetFaults(faults); // fills faults with the current CANdle faults; returns the last error generated

Constructor & Destructor Documentation

◆ CANdle()

ctre::phoenix::led::CANdle::CANdle ( int  deviceId,
std::string const &  canbus = "" 
)

Constructor for a CANdle Device

Parameters
deviceIdThe Device ID of the CANdle
canbusName of the CANbus; can be a SocketCAN interface (on Linux), or a CANivore device name or serial number

Member Function Documentation

◆ Animate()

ctre::phoenix::ErrorCode ctre::phoenix::led::CANdle::Animate ( Animation animation)

Animates the CANdle with the passed-in animation If the animation changes after calling this function, it must be passed into animate again for the changes to take effect

Parameters
animationThe animation that CANdle will run
Returns
ErrorCode generated by function. OK indicates no error.

◆ ClearStickyFaults()

ErrorCode ctre::phoenix::led::CANdle::ClearStickyFaults ( int  timeoutMs = 0)

Clears the sticky faults.

Parameters
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigAllSettings()

ErrorCode ctre::phoenix::led::CANdle::ConfigAllSettings ( CANdleConfiguration  allConfigs,
int  timeoutMs = 50 
)

Configures all persistent settings.

Parameters
allConfigsObject with all of the persistant settings
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigBrightnessScalar()

ErrorCode ctre::phoenix::led::CANdle::ConfigBrightnessScalar ( double  brightness,
int  timeoutMs = 0 
)

Configures the brightness scalar to be applied to every LED output. This value is bounded to [0, 1].

Setting this to 1 will allow the LEDs to function at max brightness. Setting this to 0.5 will scale all values to half their applied value. Setting this to 0 will turn off the LEDs.

Forcing the LEDs off this way may be useful in certain testing circumstances but is generally not necessary. Self-test (Tuner) may be used to verify what the effective scalar is in case user forgot to restore the scalar to a non-zero value.

Parameters
brightnessValue from [0, 1] that will scale the LED output.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigFactoryDefault()

ErrorCode ctre::phoenix::led::CANdle::ConfigFactoryDefault ( int  timeoutMs = 50)

Configures all persistent settings to defaults.

Parameters
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigGetCustomParam()

int ctre::phoenix::led::CANdle::ConfigGetCustomParam ( int  paramIndex,
int  timeoutMs = 0 
)

Gets the value of a custom parameter. This is for arbitrary use.

Sometimes it is necessary to save calibration/duty cycle/output information in the device. Particularly if the device is part of a subsystem that can be replaced.

Parameters
paramIndexIndex of custom parameter. [0-1]
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Value of the custom param.

◆ ConfigGetParameter()

double ctre::phoenix::led::CANdle::ConfigGetParameter ( ParamEnum  param,
int  ordinal,
int  timeoutMs = 0 
)

Gets a parameter. Generally this is not used. This can be utilized in

  • Using new features without updating API installation.
  • Errata workarounds to circumvent API implementation.
  • Allows for rapid testing / unit testing of firmware.
Parameters
paramParameter enumeration.
ordinalOrdinal of parameter.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Value of parameter.

◆ ConfigLEDType()

ErrorCode ctre::phoenix::led::CANdle::ConfigLEDType ( LEDStripType  type,
int  timeoutMs = 0 
)

Configures the type of LED the CANdle controls

Parameters
typeThe type of the LEDs the CANdle controls
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
ErrorCode generated by function. OK indicates no error.

◆ ConfigLOSBehavior()

ErrorCode ctre::phoenix::led::CANdle::ConfigLOSBehavior ( bool  disableWhenLOS,
int  timeoutMs = 0 
)

Configures what the CANdle should do if it loses communications to the Controller

Parameters
disableWhenLOSSet to true to disable the LEDs on Loss of Signal.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
ErrorCode generated by function. OK indicates no error.

◆ ConfigSetCustomParam()

ErrorCode ctre::phoenix::led::CANdle::ConfigSetCustomParam ( int  paramIndex,
int  value,
int  timeoutMs = 0 
)

Sets the value of a custom parameter. This is for arbitrary use.

Sometimes it is necessary to save calibration/duty cycle/output information in the device. Particularly if the device is part of a subsystem that can be replaced.

Parameters
newValueValue for custom parameter.
paramIndexIndex of custom parameter. [0-1]
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigSetParameter()

ErrorCode ctre::phoenix::led::CANdle::ConfigSetParameter ( ParamEnum  param,
double  value,
int  subValue = 0,
int  ordinal = 0,
int  timeoutMs = 0 
)

Sets a parameter. Generally this is not used. This can be utilized in

  • Using new features without updating API installation.
  • Errata workarounds to circumvent API implementation.
  • Allows for rapid testing / unit testing of firmware.
Parameters
paramParameter enumeration.
valueValue of parameter.
subValueSubvalue for parameter. Maximum value of 255.
ordinalOrdinal of parameter.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigStatusLedState()

ErrorCode ctre::phoenix::led::CANdle::ConfigStatusLedState ( bool  disableWhenRunning,
int  timeoutMs = 0 
)

Configures how the status led will behave when the CANdle is actively controlling LEDs If the CANdle is LOS or not actively commanded a value, it will always turn on its status LED.

Parameters
disableWhenRunningDisables the status LED when the CANdle is running
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ ConfigVBatOutput()

ErrorCode ctre::phoenix::led::CANdle::ConfigVBatOutput ( VBatOutputMode  mode,
int  timeoutMs = 0 
)

Configures how the VBat Output will behave

Parameters
modeVBat Output Behavior
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

◆ Get5VRailVoltage()

double ctre::phoenix::led::CANdle::Get5VRailVoltage ( )

Gets the Voltage of the 5V line as measured by CANdle

Returns
Voltage of the 5V line

◆ GetAllConfigs()

void ctre::phoenix::led::CANdle::GetAllConfigs ( CANdleConfiguration  allConfigs,
int  timeoutMs = 50 
)

Gets all persistant settings.

Parameters
allConfigsObject with all of the persistant settings
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.

◆ GetBusVoltage()

double ctre::phoenix::led::CANdle::GetBusVoltage ( )

Gets the Voltage of VBat as measured by CANdle

Returns
Voltage of VBat

◆ GetCurrent()

double ctre::phoenix::led::CANdle::GetCurrent ( )

Gets the low-side current as measured by CANdle

Returns
Current in Amps

◆ GetFaults()

ErrorCode ctre::phoenix::led::CANdle::GetFaults ( CANdleFaults toFill)

Gets the CANdle fault status

Parameters
toFillContainer for fault statuses.
Returns
Error Code generated by function. OK indicates no error.

◆ GetLastError()

ErrorCode ctre::phoenix::led::CANdle::GetLastError ( )

Call GetLastError() generated by this object. Not all functions return an error code but can potentially report errors.

This function can be used to retrieve those error codes.

Returns
The last ErrorCode generated.

◆ GetStatusFramePeriod()

int ctre::phoenix::led::CANdle::GetStatusFramePeriod ( CANdleStatusFrame  frame,
int  timeoutMs = 0 
)

Gets the period of the given status frame.

Parameters
frameFrame to get the period of.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Period of the given status frame.

◆ GetStickyFaults()

ErrorCode ctre::phoenix::led::CANdle::GetStickyFaults ( CANdleStickyFaults toFill)

Gets the CANdle sticky fault status

Parameters
toFillContainer for sticky fault statuses.
Returns
Error Code generated by function. OK indicates no error.

◆ GetTemperature()

double ctre::phoenix::led::CANdle::GetTemperature ( )

Gets the temperature of the CANdle in Celcius

Returns
Temperature in Celcius

◆ GetVBatModulation()

double ctre::phoenix::led::CANdle::GetVBatModulation ( )

Gets the applied vbat modulation in percent. If the CANdle is configured to always enable VBat, this returns 1 If the CANdle is confgigured to always disable VBat, this returns 0 Otherwise it returns the last set Modulation as a value [0, 1]

Returns
VBat Output Modulation

◆ HasResetOccurred()

bool ctre::phoenix::led::CANdle::HasResetOccurred ( )

Returns true if the device has reset since last call.

Returns
Has a Device Reset Occurred?

◆ ModulateVBatOutput()

ErrorCode ctre::phoenix::led::CANdle::ModulateVBatOutput ( double  dutyCyclePrcnt)

Modulates the VBat output to the specified duty cycle percentage This function will only do something if the CANdle's VBatOutput is configured to Modulated

Parameters
dutyCyclePrcntThe duty cycle of the output modulation [0, 1]
Returns
ErrorCode generated by function. OK indicates no error.

◆ SetControlFramePeriod()

ErrorCode ctre::phoenix::led::CANdle::SetControlFramePeriod ( CANdleControlFrame  frame,
int  periodMs 
)

Sets the period of the given control frame.

Parameters
frameFrame whose period is to be changed.
periodMsPeriod in ms for the given frame.
Returns
Error Code generated by function. 0 indicates no error.

◆ SetLEDs()

ctre::phoenix::ErrorCode ctre::phoenix::led::CANdle::SetLEDs ( int  r,
int  g,
int  b,
int  w = 0,
int  startIdx = 0,
int  count = 512 
)

Sets a block of LEDs to the specified color

Parameters
rThe amount of Red to set, range is [0, 255]
gThe amount of Green to set, range is [0, 255]
bThe amount of Blue to set, range is [0, 255]
wThe amount of White to set, range is [0, 255]. This only applies for LED strips with white in them.
startIdxWhere to start setting the LEDs
countThe number of LEDs to apply this to
Returns
ErrorCode generated by function. OK indicates no error.

◆ SetStatusFramePeriod()

ErrorCode ctre::phoenix::led::CANdle::SetStatusFramePeriod ( CANdleStatusFrame  frame,
int  periodMs,
int  timeoutMs = 0 
)

Sets the period of the given status frame.

Parameters
frameFrame whose period is to be changed.
periodMsPeriod in ms for the given frame.
timeoutMsTimeout value in ms. If nonzero, function will wait for config success and report an error if it times out. If zero, no blocking or checking is performed.
Returns
Error Code generated by function. 0 indicates no error.

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