ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / Examples / Linux / Testbenches / navdata_selection / Sources / UI / gamepad.h
1 #ifndef _GAMEPAD_H_
2 #define _GAMEPAD_H_
3
4 #include "UI/ui.h"
5
6 #define GAMEPAD_LOGICTECH_ID 0x046dc21a
7
8 typedef enum {
9   PAD_X,
10   PAD_Y
11 } PAD_AXIS;
12
13 typedef enum {
14   PAD_AG = 0,
15   PAD_AB,
16   PAD_AD,
17   PAD_AH,
18   PAD_L1,
19   PAD_R1,
20   PAD_L2,
21   PAD_R2,
22   PAD_SELECT,
23   PAD_START,
24   PAD_NUM_BUTTONS
25 } PAD_BUTTONS;
26
27
28
29
30 extern input_device_t gamepad;
31
32 C_RESULT open_gamepad(void);
33 C_RESULT update_gamepad(void);
34 C_RESULT close_gamepad(void);
35
36
37
38 #define GAMEPAD_PLAYSTATION3_ID 0x054C0268
39
40 typedef enum
41 {
42     PS3BTN_SELECT=0,
43     PS3BTN_L3,
44     PS3BTN_R3,
45     PS3BTN_START,
46     PS3BTN_UPARROW,
47     PS3BTN_RIGHTARROW,
48     PS3BTN_DOWNARROW,
49     PS3BTN_LEFTARROW,
50     PS3BTN_L2,
51     PS3BTN_R2,
52     PS3BTN_L1,
53     PS3BTN_R1,
54     PS3BTN_TRIANGLE,
55     PS3BTN_CIRCLE,
56     PS3BTN_CROSS,
57     PS3BTN_SQUARE,
58     PS3BTN_PS3
59 }PS3PAD_BUTTONS;
60
61 /* On Playstation3 Gamepad, buttons can return analogic values (though non-precise) */
62 typedef enum
63 {
64     PS3AXIS_STICK1_LR=0,
65     PS3AXIS_STICK1_UD,
66     PS3AXIS_STICK2_LR,
67     PS3AXIS_STICK2_UD,
68     PS3AXIS_UPARROW=8,
69     PS3AXIS_RIGHTARROW,
70     PS3AXIS_DOWNARROW,
71     PS3AXIS_LEFTARROW,
72     PS3AXIS_L2,
73     PS3AXIS_R2,
74     PS3AXIS_L1,
75     PS3AXIS_R1,
76     PS3AXIS_TRIANGLE,
77     PS3AXIS_CIRCLE,
78     PS3AXIS_CROSS,
79     PS3AXIS_SQUARE
80 }PS3PAD_AXIS;
81
82
83 extern input_device_t ps3pad;
84
85
86 C_RESULT open_ps3pad(void);
87 C_RESULT update_ps3pad(void);
88 C_RESULT close_ps3pad(void);
89
90
91
92
93
94
95 #define RADIO_GP_ID 0x061c0010
96
97 typedef enum _TYPE
98 {
99   TYPE_MIN      =  0,
100   TYPE_BUTTON   =  1,
101   TYPE_ANALOGIC =  2,
102   TYPE_MAX      =  3
103 } TYPE;
104
105 typedef enum _ANALOGIC_RADIO_COMMAND_GP
106 {
107   GP_ROLL  =  0,
108   GP_GAZ   =  1,
109   GP_PITCH =  2,
110   GP_PID   =  3,
111   GP_YAW   =  4,
112   GP_ANALOG_MAX   =  5,
113 } ANALOGIC_RADIO_COMMAND_GP;
114
115 #define  NUM_A_GP_MIN GP_ROLL
116 #define  NUM_A_GP_MAX GP_MAX
117
118 #define OFFSET_PITCH_GP 127
119 #define OFFSET_ROLL_GP  127
120 #define OFFSET_YAW_GP   127
121 #define OFFSET_GAZ_GP   198
122
123 #define NUM_PITCH_GP     -3
124 #define NUM_ROLL_GP       3
125 #define NUM_YAW_GP        3
126 #define NUM_GAZ_GP       -7
127
128 #define DEC_PITCH_GP      1
129 #define DEC_ROLL_GP       1
130 #define DEC_YAW_GP        1
131 #define DEC_GAZ_GP        2
132
133
134 typedef enum _BUTTON_RADIO_COMMAND_GP
135 {
136   GP_BOARD_LEFT      =   0, // switch above left joystick
137   GP_SIDE_RIGHT      =   1, // right corner switch
138   GP_IMPULSE         =   2, // Red button
139   GP_SIDE_LEFT_DOWN  =   3, // left corner switch, down position
140   GP_SIDE_LEFT_UP    =   4, // left corner switch, up position
141   GP_BUTTON_MAX             =   5
142 } BUTTON_RADIO_COMMAND_GP;
143
144 #define  NUM_B_GP_MIN GP_BOARD_LEFT
145 #define  NUM_B_GP_MAX GP_MAX
146 extern input_device_t radioGP;
147
148 C_RESULT open_radioGP(void);
149 C_RESULT update_radioGP(void);
150 C_RESULT close_radioGP(void);
151
152 #endif // _GAMEPAD_H_