7 #include "KinectStick.h"
9 #include "DriverStation.h"
11 #include "NetworkCommunication/FRCComm.h"
12 #include "NetworkCommunication/UsageReporting.h"
14 #include "WPIErrors.h"
16 uint32_t KinectStick::_recentPacketNumber = 0;
17 KinectStick::KinectStickData KinectStick::_sticks;
19 #define kJoystickBundleID kFRC_NetworkCommunication_DynamicType_Kinect_Joystick
20 #define kTriggerMask 1
30 if (
id != 1 &&
id != 2)
32 wpi_setWPIErrorWithContext(ParameterOutOfRange,
"KinectStick ID must be 1 or 2");
37 nUsageReporting::report(nUsageReporting::kResourceType_KinectStick,
id);
83 return GetRawAxis(Joystick::kDefaultTwistAxis);
94 return GetRawAxis(Joystick::kDefaultThrottleAxis);
108 float value = ConvertRawToFloat(_sticks.formatted.rawSticks[m_id - 1].axis[axis-1]);
160 return (_sticks.formatted.rawSticks[m_id - 1].buttons & (1 << button)) != 0;
166 void KinectStick::GetData()
169 if (_recentPacketNumber != packetNumber)
171 _recentPacketNumber = packetNumber;
172 int retVal = getDynamicControlData(kJoystickBundleID, _sticks.data,
sizeof(_sticks.data), 5);
175 wpi_assert(_sticks.formatted.size ==
sizeof(_sticks.data) - 1);
184 float KinectStick::ConvertRawToFloat(int8_t value)
189 result = ((float) value) / 128.0;
191 result = ((float) value) / 127.0;
193 wpi_assert(result <= 1.0 && result >= -1.0);
197 else if (result < -1.0)
virtual float GetY(JoystickHand hand=kRightHand)
virtual float GetRawAxis(uint32_t axis)
virtual bool GetBumper(JoystickHand hand=kRightHand)
uint32_t GetPacketNumber()
virtual bool GetTop(JoystickHand hand=kRightHand)
virtual bool StatusIsFatal() const
Check if the current error code represents a fatal error.
static DriverStation * GetInstance()
virtual bool GetRawButton(uint32_t button)
virtual bool GetTrigger(JoystickHand hand=kRightHand)
virtual float GetX(JoystickHand hand=kRightHand)
virtual float GetThrottle()