Class CANSparkMaxLowLevel

  • All Implemented Interfaces:
    edu.wpi.first.wpilibj.motorcontrol.MotorController, edu.wpi.first.wpilibj.SpeedController, java.lang.AutoCloseable
    Direct Known Subclasses:
    CANSparkMax

    public abstract class CANSparkMaxLowLevel
    extends java.lang.Object
    implements edu.wpi.first.wpilibj.SpeedController, edu.wpi.first.wpilibj.motorcontrol.MotorController, java.lang.AutoCloseable
    • Field Detail

      • kAPIMajorVersion

        public static final int kAPIMajorVersion
      • kAPIMinorVersion

        public static final int kAPIMinorVersion
      • kAPIBuildVersion

        public static final int kAPIBuildVersion
      • kAPIVersion

        public static final int kAPIVersion
      • sparkMaxHandle

        protected final long sparkMaxHandle
      • isClosed

        protected final java.util.concurrent.atomic.AtomicBoolean isClosed
    • Method Detail

      • close

        public void close()
        Closes the SPARK MAX Controller
        Specified by:
        close in interface java.lang.AutoCloseable
      • getFirmwareVersion

        public int getFirmwareVersion()
        Get the firmware version of the SPARK MAX.
        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 java.lang.String getFirmwareString()
        Get the firmware version of the SPARK MAX as a string.
        Returns:
        std::string Human readable firmware version string
      • getSerialNumber

        public byte[] getSerialNumber()
        Get the unique serial number of the SPARK MAX. 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 MAX.
        Returns:
        int device ID
      • getInitialMotorType

        @Deprecated(forRemoval=true)
        public CANSparkMaxLowLevel.MotorType getInitialMotorType()
        Deprecated, for removal: This API element is subject to removal in a future version.
        Use getMotorType() instead
        Get the motor type setting for the SPARK MAX
        Returns:
        MotorType Motor type setting
      • getMotorType

        public CANSparkMaxLowLevel.MotorType getMotorType()
        Get the motor type setting for the SPARK MAX
        Returns:
        MotorType Motor type setting
      • setPeriodicFramePeriod

        public REVLibError setPeriodicFramePeriod​(CANSparkMaxLowLevel.PeriodicFrame frame,
                                                  int periodMs)
        Set the rate of transmission for periodic frames from the SPARK MAX

        Each motor controller sends back three status frames with different data at set rates. Use this function to change the default rates.

        Defaults: Status0 - 10ms Status1 - 20ms Status2 - 50ms

        This value is not stored in the FLASH after calling burnFlash() and is reset on powerup.

        Refer to the SPARK MAX reference manual on details for how and when to configure this parameter.

        Parameters:
        frame - Which type of periodic frame to change the period of
        periodMs - The rate the controller sends the frame to the controller.
        Returns:
        REVLibError.kOk if successful
      • enableExternalUSBControl

        public static void enableExternalUSBControl​(boolean enable)
        Allow external controllers to recieve control commands over USB. For example, a configuration where the heartbeat (and enable/disable) is sent by the main controller, but control frames are sent by other CAN devices over USB.

        This is global for all controllers on the same bus.

        This does not disable sending control frames from this device. To prevent conflicts, do not enable this feature and also send Set() for SetReference() from the controllers you wish to control.

        Parameters:
        enable - Enable or disable external control
      • getSafeFloat

        public float getSafeFloat​(float f)
      • restoreFactoryDefaults

        public REVLibError restoreFactoryDefaults()
        Restore motor controller parameters to factory default until the next controller reboot
        Returns:
        REVLibError.kOk if successful
      • restoreFactoryDefaults

        public REVLibError restoreFactoryDefaults​(boolean persist)
        Restore motor controller parameters to factory default
        Parameters:
        persist - If true, burn the flash with the factory default parameters
        Returns:
        REVLibError.kOk if successful
      • throwIfClosed

        protected void throwIfClosed()