@@ -0,0 +1,1189 @@
+package com.edinarobotics.zephyr.autonomous;%0A%0Aimport com.edinarobotics.utils.autonomous.AutonomousStep;%0Aimport com.edinarobotics.zephyr.Zephyr;%0A%0A/**%0A * An autonomous step that sets the position of the shooter's piston.%0A */%0Apublic class ShooterPistonControlStep extends AutonomousStep%7B%0A    private boolean ballLoaderUp;%0A    private Zephyr robot;%0A    %0A    /**%0A     * Constructs a new SetDriveSpeedStep that sets the position of the piston%0A     * to the given position.%0A     * @param ballLoaderUp Whether or not the piston should be moved to the 'up'%0A     * position. %7B@code true%7D moves the piston up, %7B@code false%7D moves down.%0A     * @param robot The %7B@link Zephyr%7D object to use to set the piston state.%0A     */%0A    public ShooterPistonControlStep(boolean ballLoaderUp, Zephyr robot)%7B%0A        this.ballLoaderUp = ballLoaderUp;%0A        this.robot = robot;%0A    %7D %0A    %0A    /**%0A     * Sets the piston state.%0A     */%0A    public void start()%7B%0A        robot.ballLoaderUp = ballLoaderUp;%0A        robot.mechanismSet();%0A    %7D%0A    %0A    /**%0A     * Always returns %7B@code true%7D. This step is always done.%0A     * @return %7B@code true%7D%0A     */%0A    public boolean isFinished()%7B%0A        return true;%0A    %7D%0A%7D%0A

Add ShooterPistonControlStep to control the shooter piston in autonomous.