@@ -0,0 +1,1320 @@
+package com.thegongoliers.output.motors;%0A%0Aimport com.thegongoliers.input.current.HighCurrentSensor;%0Aimport com.thegongoliers.input.time.Clock;%0Aimport com.thegongoliers.input.time.RobotClock;%0A%0Apublic class CircuitBreakerMotorModule implements MotorModule %7B%0A%0A    private final HighCurrentSensor mCurrentSensor;%0A    private final double mBreakDuration;%0A    private final Clock mClock;%0A%0A    private double mLastTripTime;%0A%0A    private boolean mIsTripped;%0A%0A    public CircuitBreakerMotorModule(HighCurrentSensor currentSensor, double breakDuration, Clock clock)%7B%0A        mCurrentSensor = currentSensor;%0A        mBreakDuration = breakDuration;%0A        mClock = clock;%0A    %7D%0A%0A    public CircuitBreakerMotorModule(HighCurrentSensor currentSensor, double breakDuration)%7B%0A        this(currentSensor, breakDuration, new RobotClock());%0A    %7D%0A%0A    @Override%0A    public double run(double currentSpeed, double desiredSpeed, double deltaTime) %7B%0A        if (mCurrentSensor.isTriggered())%7B%0A            trip();%0A        %7D%0A%0A        if (mIsTripped && mClock.getTime() - mLastTripTime %3C mBreakDuration)%7B%0A            mIsTripped = false;%0A        %7D%0A%0A        if (mIsTripped)%7B%0A            return 0;%0A        %7D%0A%0A        return desiredSpeed;%0A    %7D%0A%0A    private void trip()%7B%0A        mIsTripped = true;%0A        mLastTripTime = mClock.getTime();%0A    %7D%0A%0A%7D%0A

Add circuit breaker motor module