Class StatusSignalCollection
Class to manage bulk refreshing device status signals.
public class StatusSignalCollection
- Inheritance
-
StatusSignalCollection
- Inherited Members
Constructors
StatusSignalCollection(params IEnumerable<BaseStatusSignal>)
Creates a new collection of status signals, optionally adding the provided signals to the collection.
public StatusSignalCollection(params IEnumerable<BaseStatusSignal> signals)
Parameters
signalsIEnumerable<BaseStatusSignal>Signals to add
Fields
_signals
Signals stored by this collection
protected readonly List<BaseStatusSignal> _signals
Field Value
Methods
AddSignals(params IEnumerable<BaseStatusSignal>)
Adds the provided signals to the collection.
public void AddSignals(params IEnumerable<BaseStatusSignal> signals)
Parameters
signalsIEnumerable<BaseStatusSignal>Signals to add
IsAllGood()
Checks if all signals have an OK error code.
public bool IsAllGood()
Returns
- bool
true if all signals are good, false otherwise
RefreshAll()
Performs a non-blocking refresh on all signals.
This provides a performance improvement over separately calling Refresh(bool) on each signal.public StatusCode RefreshAll()
Returns
- StatusCode
An InvalidParamValue if this signal collection is empty, InvalidNetwork if signals are on different CAN bus networks, OK if all signals are OK,
Any other signal represents the StatusCode of the first failed signal. Call Status on each signal to determine which ones failed.
SetUpdateFrequencyForAll(double)
Sets the update frequency of all status signals to the provided common frequency.
A frequency of 0 Hz will turn off the signal. Otherwise, the minimum supported signal frequency is 4 Hz, and the maximum is 1000 Hz. If other StatusSignals in the same status frame have been set to an update frequency, the fastest requested update frequency will be applied to each frame. This will wait up to 0.100 seconds (100ms) for each signal.public StatusCode SetUpdateFrequencyForAll(double frequencyHz)
Parameters
frequencyHzdoubleRate to publish the signal in Hz
Returns
- StatusCode
Status code of the first failed update frequency call, or OK if all succeeded
WaitForAll(double)
Waits for new data on all signals up to timeout. This API is typically used with CANivore Bus signals as they will be synced using the CANivore Timesync feature and arrive simultaneously.Signals on a roboRIO bus cannot be synced and may require a significantly longer blocking call to receive all signals.
Note that CANivore Timesync requires Phoenix Pro. This can also be used with a timeout of zero to refresh many signals at once, which is faster than calling Refresh(bool) on every signal. This is equivalent to calling RefreshAll(). If a signal arrives multiple times while waiting, such as when *not* using CANivore Timesync, the newest signal data is fetched. Additionally, if this function times out, the newest signal data is fetched for all signals (when possible). We recommend checking the individual status codes using Status when this happens.public StatusCode WaitForAll(double timeoutSeconds)
Parameters
timeoutSecondsdoubleMaximum time to wait for new data in seconds. Pass Zero to refresh all signals without blocking.
Returns
- StatusCode
An InvalidParamValue if this signal collection is empty, InvalidNetwork if signals are on different CAN bus networks, RxTimeout if it took longer than timeoutSeconds to receive all signals, MultiSignalNotSupported if using a network that does not support more than one signal, OK if all signals arrived within timeoutSeconds and they are all OK,
Any other signal represents the StatusCode of the first failed signal. Call Status on each signal to determine which ones failed.