8 #include "DriverStation.h"
9 #include "NetworkCommunication/UsageReporting.h"
10 #include "WPIErrors.h"
13 const uint32_t Joystick::kDefaultXAxis;
14 const uint32_t Joystick::kDefaultYAxis;
15 const uint32_t Joystick::kDefaultZAxis;
16 const uint32_t Joystick::kDefaultTwistAxis;
17 const uint32_t Joystick::kDefaultThrottleAxis;
18 const uint32_t Joystick::kDefaultTriggerButton;
19 const uint32_t Joystick::kDefaultTopButton;
20 static Joystick *joysticks[DriverStation::kJoystickPorts];
21 static bool joySticksInitialized =
false;
35 InitJoystick(kNumAxisTypes, kNumButtonTypes);
37 m_axes[kXAxis] = kDefaultXAxis;
38 m_axes[kYAxis] = kDefaultYAxis;
39 m_axes[kZAxis] = kDefaultZAxis;
40 m_axes[kTwistAxis] = kDefaultTwistAxis;
41 m_axes[kThrottleAxis] = kDefaultThrottleAxis;
43 m_buttons[kTriggerButton] = kDefaultTriggerButton;
44 m_buttons[kTopButton] = kDefaultTopButton;
46 nUsageReporting::report(nUsageReporting::kResourceType_Joystick, port);
65 InitJoystick(numAxisTypes, numButtonTypes);
68 void Joystick::InitJoystick(uint32_t numAxisTypes, uint32_t numButtonTypes)
70 if ( !joySticksInitialized )
72 for (
unsigned i = 0; i < DriverStation::kJoystickPorts; i++)
74 joySticksInitialized =
true;
76 joysticks[m_port - 1] =
this;
79 m_axes =
new uint32_t[numAxisTypes];
80 m_buttons =
new uint32_t[numButtonTypes];
83 Joystick * Joystick::GetStickForPort(uint32_t port)
85 Joystick *stick = joysticks[port - 1];
89 joysticks[port - 1] = stick;
169 case kXAxis:
return this->
GetX();
170 case kYAxis:
return this->
GetY();
171 case kZAxis:
return this->
GetZ();
172 case kTwistAxis:
return this->
GetTwist();
175 wpi_setWPIError(BadJoystickAxis);
243 case kTopButton:
return GetTop();
268 m_axes[axis] = channel;
278 return sqrt(pow(
GetX(),2) + pow(
GetY(),2) );
virtual float GetAxis(AxisType axis)
virtual float GetX(JoystickHand hand=kRightHand)
virtual bool GetTrigger(JoystickHand hand=kRightHand)
virtual bool GetTop(JoystickHand hand=kRightHand)
void SetAxisChannel(AxisType axis, uint32_t channel)
virtual bool GetButton(ButtonType button)
uint32_t GetAxisChannel(AxisType axis)
bool GetRawButton(uint32_t button)
virtual float GetDirectionDegrees()
virtual float GetY(JoystickHand hand=kRightHand)
virtual float GetMagnitude()
static DriverStation * GetInstance()
virtual float GetThrottle()
virtual float GetDirectionRadians()
short GetStickButtons(uint32_t stick)
float GetStickAxis(uint32_t stick, uint32_t axis)
virtual bool GetBumper(JoystickHand hand=kRightHand)
float GetRawAxis(uint32_t axis)