CTRE Phoenix 6 C++ 26.0.0-beta-1
Loading...
Searching...
No Matches
ctre::phoenix6::StatusSignal< T > Class Template Reference

Represents a status signal with data of type T, and operations available to retrieve information about the signal. More...

#include <ctre/phoenix6/StatusSignal.hpp>

Inheritance diagram for ctre::phoenix6::StatusSignal< T >:
ctre::phoenix6::BaseStatusSignal

Public Member Functions

GetValue () const
 Gets the cached value from this status signal.
 
StatusSignal< T > & Refresh (bool ReportOnError=true)
 Refreshes the value of this status signal.
 
StatusSignal< T > & WaitForUpdate (units::time::second_t timeoutSec, bool ReportOnError=true)
 Waits up to timeoutSec to get the up-to-date status signal value.
 
bool IsNear (T target, T tolerance) const
 Checks whether the signal is near a target value within the given tolerance.
 
bool IsNear (T target, T tolerance) const
 Checks whether the signal is near a target value within the given tolerance.
 
SignalMeasurement< T > GetDataCopy () const
 Get a basic data-only container with a copy of the current signal data.
 
std::function< T()> AsSupplier ()
 Returns a lambda that calls Refresh and GetValue on this object.
 
std::string ToString () const
 
- Public Member Functions inherited from ctre::phoenix6::BaseStatusSignal
virtual ~BaseStatusSignal ()=0
 
std::string const & GetName () const
 Gets the name of this signal.
 
std::string const & GetUnits () const
 Gets the units for this signal.
 
double GetValueAsDouble () const
 Gets the value of this signal as a double.
 
AllTimestamps const & GetAllTimestamps () const
 Gets the timestamps of this signals.
 
Timestamp const & GetTimestamp () const
 Gets the most accurate timestamp available for this signal.
 
ctre::phoenix::StatusCode GetStatus () const
 Gets the error code from when we last received this signal.
 
bool HasUpdated ()
 Checks whether the signal has been updated since the last check.
 
ctre::phoenix::StatusCode SetUpdateFrequency (units::frequency::hertz_t frequencyHz, units::time::second_t timeoutSeconds=100_ms)
 Sets the rate at which the device will publish this signal.
 
units::frequency::hertz_t GetAppliedUpdateFrequency () const
 Gets the rate at which the device will publish this signal.
 

Friends

class hardware::ParentDevice
 
std::ostream & operator<< (std::ostream &os, StatusSignal< T > const &data)
 

Additional Inherited Members

- Static Public Member Functions inherited from ctre::phoenix6::BaseStatusSignal
template<typename U , typename U_PER_SEC >
requires units::traits::is_unit_t_v<U> && units::traits::is_unit_t_v<U_PER_SEC> && units::traits::is_convertible_unit_v< typename units::traits::unit_t_traits<U>::unit_type, units::compound_unit<typename units::traits::unit_t_traits<U_PER_SEC>::unit_type, units::seconds> >
static U GetLatencyCompensatedValue (StatusSignal< U > const &signal, StatusSignal< U_PER_SEC > const &signalSlope, units::time::second_t maxLatencySeconds=0.300_s)
 Performs latency compensation on signal using the signalSlope and signal's latency to determine the magnitude of compensation.
 
template<std::derived_from< BaseStatusSignal >... Signals>
static ctre::phoenix::StatusCode WaitForAll (units::time::second_t timeoutSeconds, Signals &... signals)
 Waits for new data on all provided signals up to timeout.
 
static ctre::phoenix::StatusCode WaitForAll (units::time::second_t timeoutSeconds, std::span< BaseStatusSignal *const > signals)
 Waits for new data on all provided signals up to timeout.
 
template<std::derived_from< BaseStatusSignal >... Signals>
static ctre::phoenix::StatusCode RefreshAll (Signals &... signals)
 Performs a non-blocking refresh on all provided signals.
 
static ctre::phoenix::StatusCode RefreshAll (std::span< BaseStatusSignal *const > signals)
 Performs a non-blocking refresh on all provided signals.
 
template<std::derived_from< BaseStatusSignal >... Signals>
static bool IsAllGood (Signals const &... signals)
 Checks if all signals have an OK error code.
 
static bool IsAllGood (std::span< BaseStatusSignal const *const > signals)
 Checks if all signals have an OK error code.
 
template<std::derived_from< BaseStatusSignal >... Signals>
static ctre::phoenix::StatusCode SetUpdateFrequencyForAll (units::frequency::hertz_t frequencyHz, Signals &... signals)
 Sets the update frequency of all specified status signals to the provided common frequency.
 
static ctre::phoenix::StatusCode SetUpdateFrequencyForAll (units::frequency::hertz_t frequencyHz, std::span< BaseStatusSignal *const > signals)
 Sets the update frequency of all specified status signals to the provided common frequency.
 
- Protected Member Functions inherited from ctre::phoenix6::BaseStatusSignal
 BaseStatusSignal (hardware::DeviceIdentifier deviceIdentifier, uint16_t spn, std::string signalName, std::function< void()> checkFirmVersFunction)
 
 BaseStatusSignal (hardware::DeviceIdentifier deviceIdentifier, uint16_t spn, std::string signalName, std::function< void()> checkFirmVersFunction, std::function< std::map< uint16_t, std::string >()> const &unitsGenerator)
 
 BaseStatusSignal (ctre::phoenix::StatusCode error)
 
void RefreshValue (bool waitForUpdate, units::time::second_t timeout, bool ReportOnError)
 
void UpdateUnits (uint16_t unitsKey)
 
- Static Protected Member Functions inherited from ctre::phoenix6::BaseStatusSignal
static std::string Status_GetUnits (uint32_t signal)
 
static ctre::phoenix::StatusCode Status_Get (BaseStatusSignal &signal, char const *network, bool bWaitForUpdate, double timeoutSeconds)
 
static ctre::phoenix::StatusCode Status_WaitForAll (std::span< BaseStatusSignal *const > signals, char const *network, double timeoutSeconds)
 
static ctre::phoenix::StatusCode Status_SetUpdateFrequency (char const *canbus, uint32_t deviceHash, uint16_t spn, double frequencyHz, double timeoutSeconds)
 
static ctre::phoenix::StatusCode Status_SetUpdateFrequencyForAll (std::span< BaseStatusSignal *const > signals, double frequencyHz, double timeoutSeconds)
 
static double Status_GetAppliedUpdateFrequency (char const *canbus, uint32_t deviceHash, uint16_t spn)
 
static ctre::phoenix::StatusCode WaitForAllImpl (char const *location, units::time::second_t timeoutSeconds, std::span< BaseStatusSignal *const > signals)
 
- Protected Attributes inherited from ctre::phoenix6::BaseStatusSignal
std::string units
 
double baseValue = 0
 
AllTimestamps timestamps {}
 
ctre::phoenix::StatusCode error = ctre::phoenix::StatusCode::SigNotUpdated
 

Detailed Description

template<typename T>
class ctre::phoenix6::StatusSignal< T >

Represents a status signal with data of type T, and operations available to retrieve information about the signal.

Member Function Documentation

◆ AsSupplier()

template<typename T >
std::function< T()> ctre::phoenix6::StatusSignal< T >::AsSupplier ( )
inline

Returns a lambda that calls Refresh and GetValue on this object.

This is useful for command-based programming.

Returns
std::function<T()> that calls Refresh and returns this signal's value.

◆ GetDataCopy()

template<typename T >
SignalMeasurement< T > ctre::phoenix6::StatusSignal< T >::GetDataCopy ( ) const
inline

Get a basic data-only container with a copy of the current signal data.

If looking for Phoenix 6 logging features, see the SignalLogger class instead.

Returns
Basic structure with all relevant information

◆ GetValue()

template<typename T >
T ctre::phoenix6::StatusSignal< T >::GetValue ( ) const
inline

Gets the cached value from this status signal.

Gets the cached value. To make sure the value is up-to-date call Refresh() or WaitForUpdate()

Returns
Cached value

◆ IsNear() [1/2]

template<typename T >
bool ctre::phoenix6::StatusSignal< T >::IsNear ( T target,
T tolerance ) const
inline

Checks whether the signal is near a target value within the given tolerance.

Parameters
targetThe target value of the signal
toleranceThe error tolerance between the target and measured values
Returns
Whether the signal is near the target value

◆ IsNear() [2/2]

template<typename T >
bool ctre::phoenix6::StatusSignal< T >::IsNear ( T target,
T tolerance ) const
inline

Checks whether the signal is near a target value within the given tolerance.

Parameters
targetThe target value of the signal
toleranceThe error tolerance between the target and measured values
Returns
Whether the signal is near the target value

◆ Refresh()

template<typename T >
StatusSignal< T > & ctre::phoenix6::StatusSignal< T >::Refresh ( bool ReportOnError = true)
inline

Refreshes the value of this status signal.

If the user application caches this StatusSignal object instead of periodically fetching it from the hardware device, this function must be called to fetch fresh data.

This performs a non-blocking refresh operation. If you want to wait until you receive the signal, call WaitForUpdate() instead.

Parameters
ReportOnErrorWhether to report any errors to the Driver Station/stderr.
Returns
Reference to itself

◆ ToString()

template<typename T >
std::string ctre::phoenix6::StatusSignal< T >::ToString ( ) const
inline

◆ WaitForUpdate()

template<typename T >
StatusSignal< T > & ctre::phoenix6::StatusSignal< T >::WaitForUpdate ( units::time::second_t timeoutSec,
bool ReportOnError = true )
inline

Waits up to timeoutSec to get the up-to-date status signal value.

This performs a blocking refresh operation. If you want to non-blocking refresh the signal, call Refresh() instead.

Parameters
timeoutSecMaximum time to wait for the signal to update
ReportOnErrorWhether to report any errors to the Driver Station/stderr.
Returns
Reference to itself

Friends And Related Symbol Documentation

◆ hardware::ParentDevice

template<typename T >
friend class hardware::ParentDevice
friend

◆ operator<<

template<typename T >
std::ostream & operator<< ( std::ostream & os,
StatusSignal< T > const & data )
friend

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