.. _Faults:

Faults
======

"Faults" are status indicators on CTRE CAN Devices that indicate a certain behavior or event has occurred.  Faults do not directly affect the behavior of a device, rather they indicate the device's current status and highlight potential issues.

Faults are stored in two fashions.  There are “live” faults that are reported in real-time, and “sticky” faults which assert persistently and stay asserted until they are manually cleared (like trouble codes in a vehicle).

.. note:: Sticky Faults can be cleared in Tuner and via API.

.. note:: Faults and Sticky Faults can be polled using Tuner-Self-test Snapshot or via API.

.. tip:: Motor Controllers have a sticky fault to detect if device reset during robot-enable.  This is useful for detecting breaker events.

Polling Faults in the API
--------------------------------------

LabVIEW
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The GET STATUS VI can be used to retrieve sticky flags, and clear them.

.. image:: img/lv-faults.png

C++/Java
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The APIs getFaults() and getStickyFaults() can be used to check the latest received faults.  
clearStickyFaults() can be used to clear all sticky fault flags.

.. _Faults-pcm:

PCM Faults
--------------------------------------
Below is the list of common PCM Faults and Resolutions.

.. image:: img/faults-pcm.png