blob: 0a8da65ca2a436084285dfc428004c6532c9f6af [file] [log] [blame]
jerrymf1579332013-02-07 01:56:28 +00001/*----------------------------------------------------------------------------*/
2/* Copyright (c) FIRST 2011. All Rights Reserved. */
3/* Open Source Software - may be modified and shared by FRC teams. The code */
4/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */
5/*----------------------------------------------------------------------------*/
6
7#ifndef __KINECT_STICK_H__
8#define __KINECT_STICK_H__
9
10#include "ErrorBase.h"
11#include "GenericHID.h"
12
13/**
14 * Handles input from the Joystick data sent by the FRC Kinect Server
15 * when used with a Kinect device connected to the Driver Station.
16 * Each time a value is requested the most recent value is returned.
17 * Default gestures embedded in the FRC Kinect Server are described
18 * in the document Getting Started with Microsoft Kinect for FRC.
19 */
20class KinectStick : public GenericHID, public ErrorBase
21{
22public:
23 explicit KinectStick(int id);
24 virtual float GetX(JoystickHand hand = kRightHand);
25 virtual float GetY(JoystickHand hand = kRightHand);
26 virtual float GetZ();
27 virtual float GetTwist();
28 virtual float GetThrottle();
29 virtual float GetRawAxis(UINT32 axis);
30
31 virtual bool GetTrigger(JoystickHand hand = kRightHand);
32 virtual bool GetTop(JoystickHand hand = kRightHand);
33 virtual bool GetBumper(JoystickHand hand = kRightHand);
34 virtual bool GetRawButton(UINT32 button);
35
36private:
37 void GetData();
38 float ConvertRawToFloat(INT8 charValue);
39
40 typedef union
41 {
42 struct
43 {
44 UINT8 size;
45 UINT8 id;
46 struct
47 {
48 unsigned char axis[6];
49 unsigned short buttons;
50 } rawSticks[2];
51 } formatted;
52 char data[18];
53 } KinectStickData;
54
55 int m_id;
56 static UINT32 _recentPacketNumber;
57 static KinectStickData _sticks;
58};
59
60#endif
61