Subversion Repositories shark

Rev

Rev 1334 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1331 giacomo 1
 
2
/*
3
 * Project: S.Ha.R.K.
4
 *
5
 * Coordinators: Giorgio Buttazzo <giorgio@sssup.it>
6
 *
7
 * Authors     : Paolo Gai <pj@hartik.sssup.it>
8
 * (see authors.txt for full list of hartik's authors)
9
 *
10
 * ReTiS Lab (Scuola Superiore S.Anna - Pisa - Italy)
11
 *
12
 * http://www.sssup.it
13
 * http://retis.sssup.it
14
 * http://shark.sssup.it
15
 */
16
 
17
/*
18
 * Copyright (C) 2000 Paolo Gai
19
 *
20
 * This program is free software; you can redistribute it and/or modify
21
 * it under the terms of the GNU General Public License as published by
22
 * the Free Software Foundation; either version 2 of the License, or
23
 * (at your option) any later version.
24
 *
25
 * This program is distributed in the hope that it will be useful,
26
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28
 * GNU General Public License for more details.
29
 *
30
 * You should have received a copy of the GNU General Public License
31
 * along with this program; if not, write to the Free Software
32
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
33
 *
34
 */
35
 
36
#include "chimera.h"
37
 
38
/* Manual step increment */
39
#define INC_LEG         2
40
 
41
unsigned char   active_leg;
42
 
43
void pad(KEY_EVT *k)
44
{
45
        switch (k->scan) {
46
                case KEY_Z:
47
                        //sem_wait(&mx_status);
48
                        status.power ^= 1;
49
                        //sem_post(&mx_status);
50
                        break;
51
 
52
                case KEY_Q:
53
                        //sem_wait(&mx_status);
1334 giacomo 54
                        status.cfg[active_leg].pwm ^= 0x1;
1331 giacomo 55
                        //sem_post(&mx_status);
56
                        break;
57
                case KEY_W:
58
                        //sem_wait(&mx_status);
1334 giacomo 59
                        status.cfg[active_leg].pwm ^= 0x2;
1331 giacomo 60
                        //sem_post(&mx_status);
61
                        break;
62
                case KEY_E:
63
                        //sem_wait(&mx_status);
1334 giacomo 64
                        status.cfg[active_leg].pwm ^= 0x4;
1331 giacomo 65
                        //sem_post(&mx_status);
66
                        break;
67
 
68
                case KEY_U:
69
                        //sem_wait(&mx_status);
70
                        status.leg[active_leg].x += INC_LEG;
71
                        if (status.leg[active_leg].x > POS_X_MAX) status.leg[active_leg].x = POS_X_MAX;
72
                        //sem_post(&mx_status);
73
                        break;
74
                case KEY_J:
75
                        //sem_wait(&mx_status);
76
                        status.leg[active_leg].x -= INC_LEG;
77
                        if (status.leg[active_leg].x < POS_X_MIN) status.leg[active_leg].x = POS_X_MIN;
78
                        //sem_post(&mx_status);
79
                        break;
80
                case KEY_I:
81
                        //sem_wait(&mx_status);
82
                        status.leg[active_leg].y += INC_LEG;
83
                        if (status.leg[active_leg].y > POS_Y_MAX) status.leg[active_leg].y = POS_Y_MAX;
84
                        //sem_post(&mx_status);
85
                        break;
86
                case KEY_K:
87
                        //sem_wait(&mx_status);
88
                        status.leg[active_leg].y -= INC_LEG;
89
                        if (status.leg[active_leg].y < POS_Y_MIN) status.leg[active_leg].y = POS_Y_MIN;
90
                        //sem_post(&mx_status);
91
                        break;
92
                case KEY_O:
93
                        //sem_wait(&mx_status);
94
                        status.leg[active_leg].z += INC_LEG;
95
                        if (status.leg[active_leg].z > POS_Z_MAX) status.leg[active_leg].z = POS_Z_MAX;
96
                        //sem_post(&mx_status);
97
                        break;
98
                case KEY_L:
99
                        //sem_wait(&mx_status);
100
                        status.leg[active_leg].z -= INC_LEG;
101
                        if (status.leg[active_leg].z < POS_Z_MIN) status.leg[active_leg].z = POS_Z_MIN;
102
                        //sem_post(&mx_status);
103
                        break;
104
 
105
                case KEY_1:
106
                        active_leg = 0;
107
                        break;
108
                case KEY_2:
109
                        active_leg = 1;
110
                        break;
111
                case KEY_3:
112
                        active_leg = 2;
113
                        break;
114
                case KEY_4:
115
                        active_leg = 3;
116
                        break;
117
                case KEY_5:
118
                        active_leg = 4;
119
                        break;
120
                case KEY_6:
1335 giacomo 121
                        active_leg = 5;
122
                        //calibrate_step(100000);
1331 giacomo 123
                        break;
1332 giacomo 124
/*
125
                case KEY_C:
126
                        calibrate_init();
127
                        break;
128
 
129
                case KEY_A:
1333 giacomo 130
                        calibrate_step(-108000);
1332 giacomo 131
                        break;
132
                case KEY_S:
1333 giacomo 133
                        calibrate_step(-3600);
1332 giacomo 134
                        break;
135
                case KEY_D:
1333 giacomo 136
                        calibrate_step(-60);
1332 giacomo 137
                        break;
138
                case KEY_F:
1333 giacomo 139
                        calibrate_step(+60);
1332 giacomo 140
                        break;
141
                case KEY_G:
1333 giacomo 142
                        calibrate_step(+3600);
1332 giacomo 143
                        break;
144
                case KEY_H:
1333 giacomo 145
                        calibrate_step(+108000);
1332 giacomo 146
                        break;
147
*/
1331 giacomo 148
        }
149
}
150
 
151
void init_key()
152
{
153
        KEY_EVT k;
154
 
155
        /* Leg Selector */
156
        k.flag = 0;
157
        k.scan = KEY_1;
158
        k.ascii = '1';
159
        keyb_hook(k,pad);
160
 
161
        k.flag = 0;
162
        k.scan = KEY_2;
163
        k.ascii = '2';
164
        keyb_hook(k,pad);
165
 
166
        k.flag = 0;
167
        k.scan = KEY_3;
168
        k.ascii = '3';
169
        keyb_hook(k,pad);
170
 
171
        k.flag = 0;
172
        k.scan = KEY_4;
173
        k.ascii = '4';
174
        keyb_hook(k,pad);
175
 
176
        k.flag = 0;
177
        k.scan = KEY_5;
178
        k.ascii = '5';
179
        keyb_hook(k,pad);
180
 
181
        k.flag = 0;
182
        k.scan = KEY_6;
183
        k.ascii = '6';
184
        keyb_hook(k,pad);
185
 
186
        /* Leg Position */
187
        k.flag = 0;
188
        k.scan = KEY_J;
189
        k.ascii = 'j';
190
        keyb_hook(k,pad);
191
 
192
        k.flag = 0;
193
        k.scan = KEY_K;
194
        k.ascii = 'k';
195
        keyb_hook(k,pad);
196
 
197
        k.flag = 0;
198
        k.scan = KEY_L;
199
        k.ascii = 'l';
200
        keyb_hook(k,pad);
201
 
202
        k.flag = 0;
203
        k.scan = KEY_U;
204
        k.ascii = 'u';
205
        keyb_hook(k,pad);
206
 
207
        k.flag = 0;
208
        k.scan = KEY_I;
209
        k.ascii = 'i';
210
        keyb_hook(k,pad);
211
 
212
        k.flag = 0;
213
        k.scan = KEY_O;
214
        k.ascii = 'o';
215
        keyb_hook(k,pad);
216
 
217
        k.flag = 0;
218
        k.scan = KEY_Q;
1332 giacomo 219
        k.ascii = 'q';
1331 giacomo 220
        keyb_hook(k,pad);
221
 
222
        k.flag = 0;
223
        k.scan = KEY_W;
1332 giacomo 224
        k.ascii = 'w';
1331 giacomo 225
        keyb_hook(k,pad);
226
 
227
        k.flag = 0;
228
        k.scan = KEY_E;
1332 giacomo 229
        k.ascii = 'e';
1331 giacomo 230
        keyb_hook(k,pad);
231
 
232
        k.flag = 0;
233
        k.scan = KEY_Z;
1332 giacomo 234
        k.ascii = 'z';
1331 giacomo 235
        keyb_hook(k,pad);
1332 giacomo 236
 
237
 
238
        k.flag = 0;
239
        k.scan = KEY_C;
240
        k.ascii = 'c';
241
        keyb_hook(k,pad);
242
 
243
        k.flag = 0;
244
        k.scan = KEY_A;
245
        k.ascii = 'a';
246
        keyb_hook(k,pad);
247
 
248
        k.flag = 0;
249
        k.scan = KEY_S;
250
        k.ascii = 's';
251
        keyb_hook(k,pad);
252
 
253
        k.flag = 0;
254
        k.scan = KEY_D;
255
        k.ascii = 'd';
256
        keyb_hook(k,pad);
257
 
258
        k.flag = 0;
259
        k.scan = KEY_F;
260
        k.ascii = 'f';
261
        keyb_hook(k,pad);
262
 
263
        k.flag = 0;
264
        k.scan = KEY_G;
265
        k.ascii = 'g';
266
        keyb_hook(k,pad);
267
 
268
        k.flag = 0;
269
        k.scan = KEY_H;
270
        k.ascii = 'h';
271
        keyb_hook(k,pad);
272
 
1331 giacomo 273
}