package com.team254.frc2015;

import com.team254.frc2015.subsystems.*;
import com.team254.lib.util.CheesyCompressor;
import com.team254.lib.util.CheesySolenoid;
import com.team254.lib.util.CheesySpeedController;
import com.team254.lib.util.gyro.GyroThread;
import edu.wpi.first.wpilibj.*;

public class HardwareAdaptor {
    // Motors
    static CheesySpeedController kLeftDriveMotor = new CheesySpeedController(
            new VictorSP(Constants.kLeftDriveMotorPWM), new int[]{
            Constants.kLeftDriveMotor1PDP,
            Constants.kLeftDriveMotor2PDP});
    static CheesySpeedController kRightDriveMotor = new CheesySpeedController(
            new VictorSP(Constants.kRightDriveMotorPWM), new int[]{
            Constants.kRightDriveMotor2PDP,
            Constants.kRightDriveMotor2PDP});
    public static CheesySpeedController kTopCarriageMotor = new CheesySpeedController(
            new SpeedController[]{
                    new VictorSP(Constants.kTopCarriageMotor1PWM),
                    new VictorSP(Constants.kTopCarriageMotor2PWM)}, new int[]{
            Constants.kTopCarriageMotor1PDP,
            Constants.kTopCarriageMotor2PDP});
    public static CheesySpeedController kBottomCarriageMotor = new CheesySpeedController(
            new SpeedController[]{
                    new VictorSP(Constants.kBottomCarriageMotor1PWM),
                    new VictorSP(Constants.kBottomCarriageMotor2PWM)},
            new int[]{Constants.kBottomCarriageMotor1PDP,
                    Constants.kBottomCarriageMotor2PDP});
    static CheesySpeedController kLeftIntakeMotor = new CheesySpeedController(
            new VictorSP(Constants.kLeftIntakeMotorPWM),
            Constants.kLeftIntakeMotorPDP);
    static CheesySpeedController kRightIntakeMotor = new CheesySpeedController(
            new VictorSP(Constants.kRightIntakeMotorPWM),
            Constants.kRightIntakeMotorPDP);
    static CheesySpeedController kLeftPeacockMotor = new CheesySpeedController(
            new VictorSP(Constants.kLeftPeacockMotorPWM),
            Constants.kLeftPeacockMotorPDP);
    static CheesySpeedController kRightPeacockMotor = new CheesySpeedController(
            new VictorSP(Constants.kRightPeacockMotorPWM),
            Constants.kRightPeacockMotorPDP);

    // DIO
    static Encoder kLeftDriveEncoder = new Encoder(
            Constants.kLeftDriveEncoderDIOA, Constants.kLeftDriveEncoderDIOB);
    static Encoder kRightDriveEncoder = new Encoder(
            Constants.kRightDriveEncoderDIOA, Constants.kRightDriveEncoderDIOB);
    static Encoder kBottomCarriageEncoder = new Encoder(
            Constants.kBottomCarriageEncoderDIOA,
            Constants.kBottomCarriageEncoderDIOB, true);
    static Encoder kTopCarriageEncoder = new Encoder(
            Constants.kTopCarriageEncoderDIOA,
            Constants.kTopCarriageEncoderDIOB);
    static DigitalInput kBottomCarriageHome = new DigitalInput(
            Constants.kBottomCarriageHomeDIO);
    static DigitalInput kTopCarriageHome = new DigitalInput(
            Constants.kTopCarriageHomeDIO);

    // Solenoids
    static CheesySolenoid kBottomCarriageBrakeSolenoid = new CheesySolenoid(
            Constants.kBottomCarriageBrakeSolenoidPort);
    static CheesySolenoid kTopCarriageBrakeSolenoid = new CheesySolenoid(
            Constants.kTopCarriageBrakeSolenoidPort);
    static CheesySolenoid kTopCarriagePivotSolenoid = new CheesySolenoid(
            Constants.kTopCarriagePivotSolenoidPort);
    static CheesySolenoid kTopCarriageGrabberCloseSolenoid = new CheesySolenoid(
            Constants.kTopCarriageGrabberCloseSolenoidPort);
    static CheesySolenoid kTopCarriageGrabberOpenSolenoid = new CheesySolenoid(
            Constants.kTopCarriageGrabberOpenSolenoidPort);
    static CheesySolenoid kBottomCarriagePusherSolenoid = new CheesySolenoid(
            Constants.kBottomCarriagePusherSolenoidPort);
    static CheesySolenoid kBottomCarriageFlapperSolenoid = new CheesySolenoid(
            Constants.kBottomCarriageFlapperSolenoidPort);
    static CheesySolenoid kIntakeSolenoid = new CheesySolenoid(
            Constants.kIntakeSolenoidPort);
    static CheesySolenoid kCoopSolenoid = new CheesySolenoid(
            Constants.kCoopSolenoidPort);
    static CheesySolenoid kPinballWizardSolenoid = new CheesySolenoid(
            Constants.kPinballWizardSolenoidPort);
    static CheesySolenoid kPeacockSolenoid = new CheesySolenoid(
            Constants.kPeacockSolenoidPort);

    // Sensors
    public static GyroThread kGyroThread = new GyroThread();
    public static AnalogInput kBreakbeamTopCarriage = new AnalogInput(0);
    public static AnalogInput kBreakbeamIntake = new AnalogInput(4);

    // Subsystems
    public static Drive kDrive = new Drive("drive", kLeftDriveMotor,
            kRightDriveMotor, kLeftDriveEncoder, kRightDriveEncoder,
            kGyroThread);
    public static TopCarriage kTopCarriage = new TopCarriage("top_carriage",
            kTopCarriageMotor, kTopCarriageBrakeSolenoid, kTopCarriageEncoder,
            kTopCarriageHome, kTopCarriagePivotSolenoid,
            kTopCarriageGrabberOpenSolenoid, kTopCarriageGrabberCloseSolenoid, kBreakbeamTopCarriage);
    public static BottomCarriage kBottomCarriage = new BottomCarriage(
            "bottom_carriage", kBottomCarriageMotor,
            kBottomCarriageBrakeSolenoid, kBottomCarriageEncoder,
            kBottomCarriageHome, kBottomCarriagePusherSolenoid,
            kBottomCarriageFlapperSolenoid);
    public static Intake kIntake = new Intake("intake", kIntakeSolenoid, kCoopSolenoid, kPinballWizardSolenoid,
            kLeftIntakeMotor, kRightIntakeMotor, kBreakbeamIntake);
    public static AirPeacock kAirPeacock = new AirPeacock(kPeacockSolenoid);
    public static MotorPeacock kMotorPeacock = new MotorPeacock(kLeftPeacockMotor, kRightPeacockMotor);
    public static PowerDistributionPanel kPDP = new PowerDistributionPanel();

    // Compressor
    public static Relay kCompressorRelay = new Relay(Constants.kCompressorRelayPort);
    public static DigitalInput kCompressorSwitch = new DigitalInput(Constants.kPressureSwitchDIO);
    public static CheesyCompressor kCompressor = new CheesyCompressor(kCompressorRelay, kCompressorSwitch);

    // Interface
    public static Joystick kLeftStick = new Joystick(0);
    public static Joystick kRightStick = new Joystick(1);
    public static Joystick kButtonBoard = new Joystick(2);

    static {
        kBottomCarriageMotor.setInverted(true);
        kLeftIntakeMotor.setInverted(true);
    }
}

@@ -4633,17 +4633,17 @@
 ogInput(
-0
+5
 );%0A    p

Change port of top sensor