001    /*----------------------------------------------------------------------------*/
002    /* Copyright (c) FIRST 2008-2012. All Rights Reserved.                        */
003    /* Open Source Software - may be modified and shared by FRC teams. The code   */
004    /* must be accompanied by the FIRST BSD license file in the root directory of */
005    /* the project.                                                               */
006    /*----------------------------------------------------------------------------*/
007    
008    package edu.wpi.first.wpilibj;
009    
010    /**
011     * This interface allows for PIDController to automatically read from this
012     * object
013     * @author dtjones
014     */
015    public interface PIDSource {
016    
017        /**
018         * A description for the type of output value to provide to a PIDController
019         */
020        public static class PIDSourceParameter {
021            public final int value;
022            static final int kDistance_val = 0;
023            static final int kRate_val = 1;
024            static final int kAngle_val = 2;
025            public static final PIDSourceParameter kDistance = new PIDSourceParameter(kDistance_val);
026            public static final PIDSourceParameter kRate = new PIDSourceParameter(kRate_val);
027            public static final PIDSourceParameter kAngle = new PIDSourceParameter(kAngle_val);
028    
029            private PIDSourceParameter(int value) {
030                this.value = value;
031            }
032        }
033        
034        /**
035         * Get the result to use in PIDController
036         * @return the result to use in PIDController
037         */
038        public double pidGet();
039    }