src/main/java/com/kennedyrobotics/hardware/motors/ctre/IMotorControllerEnhanced.java
package com.kennedyrobotics.hardware.motors.ctre;

import com.ctre.phoenix.ErrorCode;
import com.ctre.phoenix.motorcontrol.StatusFrameEnhanced;

/**
 * The {@link IMotorControllerEnhanced} contains methods present in @{@link com.ctre.phoenix.motorcontrol.can.BaseTalon}
 * not present in the {@link com.ctre.phoenix.motorcontrol.IMotorController} interface.
 */
public interface IMotorControllerEnhanced extends com.ctre.phoenix.motorcontrol.IMotorControllerEnhanced, IBaseMotorController {

    /**
     * Sets the period of the given status frame.
     * <p>
     * User ensure CAN Bus utilization is not high.
     * <p>
     * This setting is not persistent and is lost when device is reset.
     * If this is a concern, calling application can use hasResetOccurred()
     * to determine if the status frame needs to be reconfigured.
     *
     * @param frame    Frame whose period is to be changed.
     * @param periodMs Period in ms for the given frame.
     * @return Error Code generated by function. 0 indicates no error.
     */
    public ErrorCode setStatusFramePeriod(StatusFrameEnhanced frame, int periodMs);

}