Class SparkLowLevel

java.lang.Object
com.revrobotics.NativeResourceCleaner
com.revrobotics.spark.SparkLowLevel
All Implemented Interfaces:
REVDevice, MotorController, AutoCloseable
Direct Known Subclasses:
SparkBase

public abstract class SparkLowLevel extends NativeResourceCleaner implements MotorController, REVDevice, AutoCloseable
  • Field Details

    • kAPIMajorVersion

      public static final int kAPIMajorVersion
    • kAPIMinorVersion

      public static final int kAPIMinorVersion
    • kAPIBuildVersion

      public static final int kAPIBuildVersion
    • kAPIVersion

      public static final int kAPIVersion
    • sparkHandle

      protected final long sparkHandle
    • isClosed

      protected final AtomicBoolean isClosed
    • motorType

      protected final SparkLowLevel.MotorType motorType
    • expectedSparkModel

      protected final SparkLowLevel.SparkModel expectedSparkModel
  • Method Details

    • close

      public void close()
      Closes the SPARK Controller
      Specified by:
      close in interface AutoCloseable
    • getCleanAction

      protected NativeResourceCleaner.OnClean getCleanAction()
      Description copied from class: NativeResourceCleaner
      Note: it is important that no reference to 'this' is taken in the implementation.
      Specified by:
      getCleanAction in class NativeResourceCleaner
      Returns:
      an action to run on clean
    • getFirmwareVersion

      public int getFirmwareVersion()
      Get the firmware version of the SPARK.
      Returns:
      uint32_t Firmware version integer. Value is represented as 4 bytes, Major.Minor.Build H.Build L
    • setControlFramePeriodMs

      public void setControlFramePeriodMs(int periodMs)
      Set the control frame send period for the native CAN Send thread.
      Parameters:
      periodMs - The send period in milliseconds between 1ms and 100ms or set to 0 to disable periodic sends. Note this is not updated until the next call to Set() or SetReference().
    • getFirmwareString

      public String getFirmwareString()
      Get the firmware version of the SPARK as a string.
      Returns:
      std::string Human readable firmware version string
    • getSerialNumber

      public byte[] getSerialNumber()
      Get the unique serial number of the SPARK. Not currently available.
      Returns:
      byte[] Vector of bytes representig the unique serial number
    • getDeviceId

      public int getDeviceId()
      Get the configured Device ID of the SPARK.
      Returns:
      int device ID
    • getMotorType

      public SparkLowLevel.MotorType getMotorType()
      Get the motor type setting for the SPARK
      Returns:
      MotorType Motor type setting
    • setPeriodicFrameTimeout

      public void setPeriodicFrameTimeout(int timeoutMs)
      Set the amount of time to wait for a periodic status frame before returning a timeout error. This timeout will apply to all periodic status frames for the SPARK motor controller.

      To prevent invalid timeout errors, the minimum timeout for a given periodic status is 2.1 times its period. To use the minimum timeout for all status frames, set timeoutMs to 0.

      The default timeout is 500ms.

      Parameters:
      timeoutMs - The timeout in milliseconds
    • getPeriodicStatus0

      public @Nullable SparkLowLevel.PeriodicStatus0 getPeriodicStatus0()
      Returns:
      periodic status 0, or null if it's not found
    • getPeriodicStatus1

      public @Nullable SparkLowLevel.PeriodicStatus1 getPeriodicStatus1()
      Returns:
      periodic status 1, or null if it's not found
    • getPeriodicStatus2

      public @Nullable SparkLowLevel.PeriodicStatus2 getPeriodicStatus2()
      Returns:
      periodic status 2, or null if it's not found
    • getPeriodicStatus3

      public @Nullable SparkLowLevel.PeriodicStatus3 getPeriodicStatus3()
      Returns:
      periodic status 3, or null if it's not found
    • getPeriodicStatus4

      public @Nullable SparkLowLevel.PeriodicStatus4 getPeriodicStatus4()
      Returns:
      periodic status 4, or null if it's not found
    • getPeriodicStatus5

      public @Nullable SparkLowLevel.PeriodicStatus5 getPeriodicStatus5()
      Returns:
      periodic status 5, or null if it's not found
    • getPeriodicStatus6

      public @Nullable SparkLowLevel.PeriodicStatus6 getPeriodicStatus6()
      Returns:
      periodic status 6, or null if it's not found
    • getPeriodicStatus7

      public @Nullable SparkLowLevel.PeriodicStatus7 getPeriodicStatus7()
      Returns:
      periodic status 7, or null if it's not found
    • getPeriodicStatus8

      public @Nullable SparkLowLevel.PeriodicStatus8 getPeriodicStatus8()
      Returns:
      periodic status 8, or null if it's not found
    • getPeriodicStatus9

      public @Nullable SparkLowLevel.PeriodicStatus9 getPeriodicStatus9()
      Returns:
      periodic status 9, or null if it's not found
    • setCANMaxRetries

      public void setCANMaxRetries(int numRetries)
      Set the maximum number of times to retry an RTR CAN frame. This applies to calls such as SetParameter* and GetParameter* where a request is made to the SPARK motor controller and a response is expected. Anytime sending the request or receiving the response fails, it will retry the request a number of times, no more than the value set by this method. If an attempt succeeds, it will immediately return. The minimum number of retries is 0, where only a single attempt will be made and will return regardless of success or failure.

      The default maximum is 5 retries.

      Parameters:
      numRetries - The maximum number of retries
    • getSafeFloat

      public float getSafeFloat(float f)
    • createSimFaultManager

      public void createSimFaultManager()
      Create the sim gui Fault Manager for this Spark Device
    • throwIfClosed

      protected void throwIfClosed()