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
008package edu.wpi.first.wpilibj;
009
010/**
011 * GenericHID Interface
012 */
013public abstract class GenericHID {
014
015    /**
016     * Which hand the Human Interface Device is associated with.
017     */
018    public static class Hand {
019
020        /**
021         * The integer value representing this enumeration
022         */
023        public final int value;
024        static final int kLeft_val = 0;
025        static final int kRight_val = 1;
026        /**
027         * hand: left
028         */
029        public static final Hand kLeft = new Hand(kLeft_val);
030        /**
031         * hand: right
032         */
033        public static final Hand kRight = new Hand(kRight_val);
034
035        private Hand(int value) {
036            this.value = value;
037        }
038    }
039
040    /**
041     * Get the x position of the HID
042     * @return the x position of the HID
043     */
044    public final double getX() {
045        return getX(Hand.kRight);
046    }
047
048    /**
049     * Get the x position of HID
050     * @param hand which hand, left or right
051     * @return the x position
052     */
053    public abstract double getX(Hand hand);
054
055    /**
056     * Get the y position of the HID
057     * @return the y position
058     */
059    public final double getY() {
060        return getY(Hand.kRight);
061    }
062
063    /**
064     * Get the y position of the HID
065     * @param hand which hand, left or right
066     * @return the y position
067     */
068    public abstract double getY(Hand hand);
069
070    /**
071     * Get the z position of the HID
072     * @return the z position
073     */
074    public final double getZ() {
075        return getZ(Hand.kRight);
076    }
077
078    /**
079     * Get the z position of the HID
080     * @param hand which hand, left or right
081     * @return the z position
082     */
083    public abstract double getZ(Hand hand);
084
085    /**
086     * Get the twist value
087     * @return the twist value
088     */
089    public abstract double getTwist();
090
091    /**
092     * Get the throttle
093     * @return the throttle value
094     */
095    public abstract double getThrottle();
096
097    /**
098     * Get the raw axis
099     * @param which index of the axis
100     * @return the raw value of the selected axis
101     */
102    public abstract double getRawAxis(int which);
103
104    /**
105     * Is the trigger pressed
106     * @return true if pressed
107     */
108    public final boolean getTrigger() {
109        return getTrigger(Hand.kRight);
110    }
111
112    /**
113     * Is the trigger pressed
114     * @param hand which hand
115     * @return true if the trigger for the given hand is pressed
116     */
117    public abstract boolean getTrigger(Hand hand);
118
119    /**
120     * Is the top button pressed
121     * @return true if the top button is pressed
122     */
123    public final boolean getTop() {
124        return getTop(Hand.kRight);
125    }
126
127    /**
128     * Is the top button pressed
129     * @param hand which hand
130     * @return true if hte top button for the given hand is pressed
131     */
132    public abstract boolean getTop(Hand hand);
133
134    /**
135     * Is the bumper pressed
136     * @return true if the bumper is pressed
137     */
138    public final boolean getBumper() {
139        return getBumper(Hand.kRight);
140    }
141
142    /**
143     * Is the bumper pressed
144     * @param hand which hand
145     * @return true if hte bumper is pressed
146     */
147    public abstract boolean getBumper(Hand hand);
148
149    /**
150     * Is the given button pressed
151     * @param button which button number
152     * @return true if the button is pressed
153     */
154    public abstract boolean getRawButton(int button);
155
156    public abstract int getPOV(int pov);
157
158    public int getPOV() {
159        return getPOV(0);
160    }
161}