@@ -0,0 +1,1612 @@
+package org.usfirst.frc.team2339.Barracuda.subsystems;%0A%0Aimport edu.wpi.first.wpilibj.MotorSafety;%0Aimport edu.wpi.first.wpilibj.MotorSafetyHelper;%0Aimport edu.wpi.first.wpilibj.SpeedController;%0A%0A/**%0A * Class to provide swerve drive control to one wheel.%0A * Wheel must have independent drive motor and steering motor.%0A * A steering encoder provides feedback on wheel angle.  %0A * @author emiller%0A *%0A */%0Apublic class SwerveWheelDrive implements MotorSafety %7B%0A%09%0A    protected MotorSafetyHelper m_safetyHelper;%0A    public static final double kDefaultExpirationTime = MotorSafety.DEFAULT_SAFETY_EXPIRATION;%0A%0A    protected SpeedController m_driveController;%0A    %0A    SwerveWheelDrive() %7B%0A    %09setupMotorSafety();%0A    %7D%0A%0A    private void setupMotorSafety() %7B%0A        m_safetyHelper = new MotorSafetyHelper(this);%0A        this.setExpiration(kDefaultExpirationTime);%0A        this.setSafetyEnabled(true);%0A    %7D%0A%0A%09@Override%0A%09public void setExpiration(double timeout) %7B%0A        m_safetyHelper.setExpiration(timeout);%0A%09%7D%0A%0A%09@Override%0A%09public double getExpiration() %7B%0A        return m_safetyHelper.getExpiration();%0A%09%7D%0A%0A%09@Override%0A%09public boolean isAlive() %7B%0A        return m_safetyHelper.isAlive();%0A%09%7D%0A%0A%09@Override%0A%09public void stopMotor() %7B%0A%09%09m_driveController.set(0.0);%0A        if (m_safetyHelper != null) m_safetyHelper.feed();%0A%09%7D%0A%0A%09@Override%0A%09public void setSafetyEnabled(boolean enabled) %7B%0A        m_safetyHelper.setSafetyEnabled(enabled);%0A%09%7D%0A%0A%09@Override%0A%09public boolean isSafetyEnabled() %7B%0A        return m_safetyHelper.isSafetyEnabled();%0A%09%7D%0A%0A%09@Override%0A%09public String getDescription() %7B%0A%09%09return %22Swerve wheel drive%22;%0A%09%7D%0A%0A%7D%0A

Create single wheel swerve drive subsystem.