blob: e605b5a3f63079cb7b087a014864b2e2f91ea7fa [file] [log] [blame]
brians343bc112013-02-10 01:53:46 +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();
Brian Silverman68749472014-01-05 14:50:00 -080029 virtual float GetRawAxis(uint32_t axis);
brians343bc112013-02-10 01:53:46 +000030
31 virtual bool GetTrigger(JoystickHand hand = kRightHand);
32 virtual bool GetTop(JoystickHand hand = kRightHand);
33 virtual bool GetBumper(JoystickHand hand = kRightHand);
Brian Silverman68749472014-01-05 14:50:00 -080034 virtual bool GetRawButton(uint32_t button);
brians343bc112013-02-10 01:53:46 +000035
36private:
37 void GetData();
Brian Silverman68749472014-01-05 14:50:00 -080038 float ConvertRawToFloat(int8_t charValue);
brians343bc112013-02-10 01:53:46 +000039
40 typedef union
41 {
42 struct
43 {
Brian Silverman68749472014-01-05 14:50:00 -080044 uint8_t size;
45 uint8_t id;
brians343bc112013-02-10 01:53:46 +000046 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;
Brian Silverman68749472014-01-05 14:50:00 -080056 static uint32_t _recentPacketNumber;
brians343bc112013-02-10 01:53:46 +000057 static KinectStickData _sticks;
58};
59
60#endif
61