ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / Examples / Win32 / sdk_demo / Sources / UI / gamepad.h
1 /********************************************************************
2  *
3  *  Parts of the DirectX code are from a tutorial by Microsoft
4  *      which can be found in the Microsoft DirectX SDK June 2010.
5  *  Copyright (c) Microsoft Corporation. All rights reserved.
6  *
7  *  
8  *  The rest of the code is COPYRIGHT PARROT 2010
9  *
10  ********************************************************************
11  *       PARROT - A.R.Drone SDK Windows Client Example
12  *-----------------------------------------------------------------*/
13 /**
14  * @file gamepad.h 
15  * @brief Header file for the DirectInput gamepad management system.
16  *
17  * @author Stephane Piskorski <stephane.piskorski.ext@parrot.fr>
18  * @date   Sept, 8. 2010
19  *
20  *******************************************************************/
21
22
23
24 #ifndef _GAMEPAD_H_
25 #define _GAMEPAD_H_
26
27 #include "UI/ui.h"
28
29 #define GAMEPAD_LOGICTECH_ID 0x046dc21a
30
31 typedef enum {
32   PAD_X,
33   PAD_Y
34 } PAD_AXIS;
35
36 typedef enum {
37   PAD_AG = 0,
38   PAD_AB,
39   PAD_AD,
40   PAD_AH,
41   PAD_L1,
42   PAD_R1,
43   PAD_L2,
44   PAD_R2,
45   PAD_SELECT,
46   PAD_START,
47   PAD_NUM_BUTTONS
48 } PAD_BUTTONS;
49
50 extern input_device_t dx_gamepad;
51 extern input_device_t dx_keyboard;
52
53 /*
54 C_RESULT open_gamepad(void);
55 C_RESULT update_gamepad(void);
56 C_RESULT close_gamepad(void);
57 */
58 #define RADIO_GP_ID 0x061c0010
59
60 typedef enum _TYPE
61 {
62   TYPE_MIN      =  0,
63   TYPE_BUTTON   =  1,
64   TYPE_ANALOGIC =  2,
65   TYPE_MAX      =  3
66 } TYPE;
67
68 typedef enum _ANALOGIC_RADIO_COMMAND_GP
69 {
70   GP_ROLL  =  0,
71   GP_GAZ   =  1,
72   GP_PITCH =  2,
73   GP_PID   =  3,
74   GP_YAW   =  4,
75   GP_ANALOG_MAX   =  5,
76 } ANALOGIC_RADIO_COMMAND_GP;
77
78 #define  NUM_A_GP_MIN GP_ROLL
79 #define  NUM_A_GP_MAX GP_MAX
80
81 #define OFFSET_PITCH_GP 127
82 #define OFFSET_ROLL_GP  127
83 #define OFFSET_YAW_GP   127
84 #define OFFSET_GAZ_GP   198
85
86 #define NUM_PITCH_GP     -3
87 #define NUM_ROLL_GP       3
88 #define NUM_YAW_GP        3
89 #define NUM_GAZ_GP       -7
90
91 #define DEC_PITCH_GP      1
92 #define DEC_ROLL_GP       1
93 #define DEC_YAW_GP        1
94 #define DEC_GAZ_GP        2
95
96
97 typedef enum _BUTTON_RADIO_COMMAND_GP
98 {
99   GP_BOARD_LEFT      =   0, // switch above left joystick
100   GP_SIDE_RIGHT      =   1, // right corner switch
101   GP_IMPULSE         =   2, // Red button
102   GP_SIDE_LEFT_DOWN  =   3, // left corner switch, down position
103   GP_SIDE_LEFT_UP    =   4, // left corner switch, up position
104   GP_BUTTON_MAX             =   5
105 } BUTTON_RADIO_COMMAND_GP;
106
107 #define  NUM_B_GP_MIN GP_BOARD_LEFT
108 #define  NUM_B_GP_MAX GP_MAX
109 extern input_device_t radioGP;
110
111
112 C_RESULT open_dx_gamepad(void);
113 C_RESULT update_dx_gamepad(void);
114 C_RESULT close_dx_gamepad(void);
115
116 C_RESULT open_dx_keyboard(void);
117 C_RESULT update_dx_keyboard(void);
118 C_RESULT close_dx_keyboard(void);
119
120
121 #endif // _GAMEPAD_H_