Subversion Repositories Projects

Rev

Rev 130 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 130 Rev 140
Line 10... Line 10...
10
 **************************************************/
10
 **************************************************/
11
 
11
 
12
#include "riddim.h"
12
#include "riddim.h"
13
 
13
 
14
 
14
 
15
 
-
 
16
int state=STATEID_SCANNING;
15
int state=STATEID_SCANNING;
17
 
16
 
18
 
17
 
19
 
-
 
20
 
-
 
21
 
-
 
22
 
-
 
23
 
-
 
24
 
-
 
25
 
-
 
26
int x52_input_fd, num_of_axis=0, num_of_buttons=0;
-
 
27
char *button_trigger=NULL, name_of_joystick[80];
-
 
28
 
-
 
29
struct js_event x52_event_struct;
18
struct js_event x52_event_struct;
30
 
19
 
31
int engines_on=0;
20
int engines_on=0;
32
int old_engines_on=0;
21
int old_engines_on=0;
33
 
22
 
34
int *axis;
23
int *axis;
35
char *button;
24
char *button;
36
 
25
 
37
 
-
 
38
 
-
 
39
struct x52 *x52_output;
26
struct x52 *x52_output;
40
 
27
 
41
int selected_bt_device=0;
28
int selected_bt_device=0;
42
 
29
 
43
//int evdev_fd;
-
 
44
//int evdev_out_fd;
-
 
45
 
-
 
46
 
-
 
47
void write_display(int line,char* text)
30
void write_display(int line,char* text)
48
{
31
{
49
  if (x52_output) x52_settext(x52_output, line , text, strlen(text));
32
  if (x52_output) x52_settext(x52_output, line , text, strlen(text));
50
}
33
}
51
 
34
 
Line 133... Line 116...
133
        }
116
        }
134
    }
117
    }
135
 
118
 
136
  // todo reenable  bluetooth connection
119
  // todo reenable  bluetooth connection
137
 
120
 
138
 
-
 
139
  /*
-
 
140
  printf("\nInitializing X-52 input ..\n");
-
 
141
  if (connect_joy())
-
 
142
    {
-
 
143
      printf(".. done");//
-
 
144
      input=INPUT_JOYDEV;
-
 
145
    }
-
 
146
  else
-
 
147
    printf(".. ERROR ");//
-
 
148
  */
-
 
149
 
-
 
150
  if (input_evdev_name)
121
  if ((input_evdev_name))
151
    {
122
    {
152
      printf("\nInitializing evdev input (%s) ..\n",input_evdev_name);
123
      printf("\nInitializing evdev input (%s) ..\n",input_evdev_name);
153
     
124
     
154
      if (connect_evdev(input_evdev_name))
125
      if (connect_evdev(input_evdev_name))
155
        {
126
        {
Line 158... Line 129...
158
        }
129
        }
159
      else
130
      else
160
        printf(".. ERROR ");//
131
        printf(".. ERROR ");//
161
    }
132
    }
162
 
133
 
-
 
134
  if (input_joydev_name)
-
 
135
    {
-
 
136
      printf("\nInitializing joystick input from %s ..\n",input_joydev_name);
-
 
137
      if (connect_joy())
-
 
138
        {
-
 
139
          printf(".. done");//
-
 
140
          input=INPUT_JOYDEV;
-
 
141
        }
-
 
142
      else
-
 
143
        printf(".. ERROR ");//
-
 
144
    }
-
 
145
 
-
 
146
 
163
  printf("\nInitializing X-52 output ..");
147
  printf("\nInitializing X-52 output ..");
164
 
148
 
165
  x52_output = x52_init();
149
  x52_output = x52_init();
166
   
150
   
167
  clear_display();
151
  clear_display();
Line 215... Line 199...
215
      switch (input)
199
      switch (input)
216
        {
200
        {
217
 
201
 
218
         
202
         
219
        case INPUT_NONE:
203
        case INPUT_NONE:
220
          printf("starting input none\n");
204
          printf("processing input none\n");
221
          break;
205
          break;
222
 
206
 
223
        case INPUT_EVDEV:
207
        case INPUT_EVDEV:
224
          printf("input evdev\n");
208
          printf("processing input evdev\n");
225
 
-
 
226
         
-
 
227
          poll_evdev();
209
          poll_evdev();
228
         
210
         
229
          break;
211
          break;
230
 
212
 
231
        case INPUT_JOYDEV:
213
        case INPUT_JOYDEV:
232
          printf("input joydev\n");      
214
          printf("processing input joydev\n");   
233
          // poll values from input device
215
          // poll values from input device
234
         
216
         
235
          for (polls=0;polls<100;polls++) // FIXME - better Polling
217
          for (polls=0;polls<100;polls++) // FIXME - better Polling
236
            {
218
            {
237
              read(x52_input_fd, &x52_event_struct, sizeof(struct js_event));
219
              read(joy_input_fd, &x52_event_struct, sizeof(struct js_event));
238
             
220
             
239
             
221
             
240
              /* see what to do with the event */
222
              /* see what to do with the event */
241
              switch (x52_event_struct.type & ~JS_EVENT_INIT)
223
              switch (x52_event_struct.type & ~JS_EVENT_INIT)
242
                {
224
                {
Line 255... Line 237...
255
            else
237
            else
256
              {
238
              {
257
                if (button_trigger[x]<100)button_trigger[x]++;
239
                if (button_trigger[x]<100)button_trigger[x]++;
258
              }
240
              }
259
          break;
241
          break;
260
        }
242
        } // switch (input)
261
 
243
 
262
      printf("input done\n");    
244
      printf("input done\n");    
263
               
245
               
264
      switch(state)
246
      switch(state)
265
        {
247
        {
266
 
-
 
267
 
-
 
268
        case STATEID_SCANNING:
248
        case STATEID_SCANNING:
269
         
249
         
270
          state=STATEID_CONNECTING;
250
          state=STATEID_CONNECTING;
271
          /*
251
          /*
272
          ExternControl.Digital[0]=0;
252
          ExternControl.Digital[0]=0;
Line 314... Line 294...
314
       
294
       
315
        case STATEID_CONNECTING:
295
        case STATEID_CONNECTING:
316
         
296
         
317
 
297
 
318
          confirm_misses=0;
298
          confirm_misses=0;
319
          printf("connected:%d",connected);
-
 
-
 
299
 
320
            RxBuffer[1]=0;
300
          RxBuffer[1]=0;
321
          if (connected)
301
          if (connected)
322
 
302
 
323
 
303
 
324
            while (RxBuffer[1]!='t')
304
            while (RxBuffer[1]!='t')
325
            {
305
            {
Line 333... Line 313...
333
              //          ftime(&time_struct);
313
              //          ftime(&time_struct);
334
 
314
 
335
              printf("waiting for confirm frame ( confirmed:%d misses:%d )\n",complete_matches,complete_misses);
315
              printf("waiting for confirm frame ( confirmed:%d misses:%d )\n",complete_matches,complete_misses);
336
              RxBuffer[2]=0;
316
              RxBuffer[2]=0;
337
 
317
 
338
 
-
 
339
 
-
 
340
              //              r=0;
318
              //              r=0;
341
 
319
 
342
              // new
320
              // new
343
              /*
321
              /*
344
              if (button_trigger[12]>1)
322
              if (button_trigger[12]>1)
Line 358... Line 336...
358
          else
336
          else
359
            printf("not connected to mk\n");
337
            printf("not connected to mk\n");
360
 
338
 
361
          gettimeofday(&time_struct2,NULL);
339
          gettimeofday(&time_struct2,NULL);
362
 
340
 
363
          printf("last trip: %d",(int)(time_struct1.tv_usec-time_struct2.tv_usec));
341
          printf("last trip: %d\n",(int)(time_struct2.tv_usec-time_struct1.tv_usec));
364
          //      act_mode=button[24] | (button[25]<<1);
342
          //      act_mode=button[24] | (button[25]<<1);
365
 
343
 
366
 
344
 
367
 
345
 
368
          // Step converting axis data to nick/roll/gier/gas/..
346
          // Step converting axis data to nick/roll/gier/gas/..
369
 
347
 
370
          act_nick=evdev_rel_axis[rel_axis_nick]*nick_mul;
348
          //      act_nick=(evdev_rel_axis[rel_axis_nick]-128)*nick_mul;
-
 
349
 
-
 
350
 
-
 
351
 
-
 
352
 
-
 
353
          switch(input)
-
 
354
            {
-
 
355
            case INPUT_EVDEV:
-
 
356
 
-
 
357
              act_nick=(evdev_rel_axis[rel_axis_nick]-nick_add)*nick_mul;
371
          act_roll=evdev_rel_axis[rel_axis_roll]*roll_mul;
358
              act_roll=(evdev_rel_axis[rel_axis_roll]-nick_add)*roll_mul;
372
          act_gier=evdev_rel_axis[rel_axis_gier]*gier_mul;
359
              act_gier=(evdev_rel_axis[rel_axis_gier]-nick_add)*gier_mul;
373
          act_gas=evdev_rel_axis[rel_axis_gas]*gas_mul;
360
              act_gas=(evdev_rel_axis[rel_axis_gas]-nick_add)*gas_mul;
-
 
361
             
-
 
362
 
-
 
363
              break;
-
 
364
 
-
 
365
            case INPUT_JOYDEV:
-
 
366
              act_nick=(axis[rel_axis_nick])*nick_mul;
-
 
367
              act_roll=(axis[rel_axis_roll])*roll_mul;
-
 
368
              act_gier=(axis[rel_axis_gier])*gier_mul;
-
 
369
              act_gas=(axis[rel_axis_gas]*-1+33000)*gas_mul;
-
 
370
     
-
 
371
              break;
-
 
372
            }
-
 
373
 
-
 
374
          // act values clipping to usefull vals
-
 
375
          //      act_gas=0;
-
 
376
 
374
          act_gas=255;
377
          //      act_gas=255;
375
 
378
 
376
 
379
 
377
          /*
380
          /*
378
            switch (act_mode)
381
            switch (act_mode)
379
            {
382
            {
Line 424... Line 427...
424
          ExternControl.Nick=act_nick;  //(axis[1]>>8)*(-1)/2;
427
          ExternControl.Nick=act_nick;  //(axis[1]>>8)*(-1)/2;
425
          ExternControl.Roll=act_roll*(-1); //(axis[0]>>8)*(-1)/2;
428
          ExternControl.Roll=act_roll*(-1); //(axis[0]>>8)*(-1)/2;
426
          ExternControl.Gier=act_gier; // ************
429
          ExternControl.Gier=act_gier; // ************
427
          ExternControl.Gas=act_gas; // ************
430
          ExternControl.Gas=act_gas; // ************
428
         
431
         
429
          complete_matches++;
-
 
430
 
432
 
-
 
433
 
431
          printf("---+++act_mode %d , act_nick %d , act_roll %d , act_gier %d , act_gas %d",act_mode , act_nick  , act_roll  , act_gier , act_gas);
434
          printf("act_mode %d , act_nick %d , act_roll %d , act_gier %d , act_gas %d",act_mode , act_nick  , act_roll  , act_gier , act_gas);
432
 
435
 
433
          if (connected)
436
          if (connected)
434
            {
437
            {
-
 
438
              complete_matches++;
435
              printf("sending data\n");
439
              printf("sending data\n");
436
             
440
             
437
              SendOutData('b', 0, (unsigned char *)&ExternControl, sizeof(ExternControl));
441
              SendOutData('b', 0, (unsigned char *)&ExternControl, sizeof(ExternControl));
438
              gettimeofday(&time_struct1,NULL);
442
              gettimeofday(&time_struct1,NULL);
439
              printf("sent data\n");
443
              printf("sent data\n");
Line 463... Line 467...
463
        }
467
        }
464
     
468
     
465
      printf("\n");
469
      printf("\n");
466
      fflush(stdout);
470
      fflush(stdout);
467
      printf("loop fin ( confirmed:%d misses:%d | debug_sets:%d )\n",complete_matches,complete_misses,debug_sets);
471
      printf("loop fin ( confirmed:%d misses:%d | debug_sets:%d )\n",complete_matches,complete_misses,debug_sets);
-
 
472
      printf("------------------------------------------------------------------------\n");
468
               
473
               
469
    }
474
    }
470
 
475
 
471
 
476
 
472
  /******************** Cleanup **********************/
477
  /******************** Cleanup **********************/
473
  close(x52_input_fd);
478
  close(joy_input_fd);
474
  close(mk_socket);
479
  close(mk_socket);
475
 
480
 
476
  if (x52_output) x52_close(x52_output);
481
  if (x52_output) x52_close(x52_output);
477
  return 0;
482
  return 0;
478
}
483
}