This is the latest WPILib src, VisionSample2013, cRIO image, ... pulled down from firstforge.wpi.edu.
There might be risks in using the top of tree rather than an official release, but the commit messages do mention fixes for some deadlocks and race conditions.
git-svn-id: https://robotics.mvla.net/svn/frc971/2013/trunk/src@4066 f308d9b7-e957-4cde-b6ac-9a88185e7312
diff --git a/azaleasource/WPILibCProgramming/trunk/WPILib/KinectStick.h b/azaleasource/WPILibCProgramming/trunk/WPILib/KinectStick.h
new file mode 100644
index 0000000..0a8da65
--- /dev/null
+++ b/azaleasource/WPILibCProgramming/trunk/WPILib/KinectStick.h
@@ -0,0 +1,61 @@
+/*----------------------------------------------------------------------------*/
+/* Copyright (c) FIRST 2011. All Rights Reserved. */
+/* Open Source Software - may be modified and shared by FRC teams. The code */
+/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
+/*----------------------------------------------------------------------------*/
+
+#ifndef __KINECT_STICK_H__
+#define __KINECT_STICK_H__
+
+#include "ErrorBase.h"
+#include "GenericHID.h"
+
+/**
+ * Handles input from the Joystick data sent by the FRC Kinect Server
+ * when used with a Kinect device connected to the Driver Station.
+ * Each time a value is requested the most recent value is returned.
+ * Default gestures embedded in the FRC Kinect Server are described
+ * in the document Getting Started with Microsoft Kinect for FRC.
+ */
+class KinectStick : public GenericHID, public ErrorBase
+{
+public:
+ explicit KinectStick(int id);
+ virtual float GetX(JoystickHand hand = kRightHand);
+ virtual float GetY(JoystickHand hand = kRightHand);
+ virtual float GetZ();
+ virtual float GetTwist();
+ virtual float GetThrottle();
+ virtual float GetRawAxis(UINT32 axis);
+
+ virtual bool GetTrigger(JoystickHand hand = kRightHand);
+ virtual bool GetTop(JoystickHand hand = kRightHand);
+ virtual bool GetBumper(JoystickHand hand = kRightHand);
+ virtual bool GetRawButton(UINT32 button);
+
+private:
+ void GetData();
+ float ConvertRawToFloat(INT8 charValue);
+
+ typedef union
+ {
+ struct
+ {
+ UINT8 size;
+ UINT8 id;
+ struct
+ {
+ unsigned char axis[6];
+ unsigned short buttons;
+ } rawSticks[2];
+ } formatted;
+ char data[18];
+ } KinectStickData;
+
+ int m_id;
+ static UINT32 _recentPacketNumber;
+ static KinectStickData _sticks;
+};
+
+#endif
+