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 * GenericHID Interface
012 */
013 public 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 }