18,6 → 18,14 |
|
#define MAX_BT_DEVICES 3 |
|
|
#define STATEID_SCANNING 0 |
#define STATEID_CONNECTING 1 |
|
#define BUTTON_SELECT 26 |
#define BUTTON_DOWN 28 |
#define BUTTON_UP 27 |
|
int bt_device_count=0; |
|
char names[MAX_BT_DEVICES][248]; |
27,13 → 35,34 |
unsigned char TxBuffer[150]; |
unsigned char _TxBuffer[150]; |
|
#define STATEID_SCANNING 0 |
#define STATEID_CONNECTING 1 |
int x52_input_fd, *axis=NULL, num_of_axis=0, num_of_buttons=0, x; |
char *button=NULL,*button_trigger=NULL, name_of_joystick[80]; |
|
struct js_event x52_event_struct; |
|
struct |
{ |
char val[4]; |
} MotortestParam; |
|
struct |
{ |
unsigned char Digital[2]; // (noch unbenutzt) |
unsigned char RemoteTasten; //(gab es schon für das virtuelle Display) |
signed char Nick; |
signed char Roll; |
signed char Gier; |
unsigned char Gas; //(es wird das Stick-Gas auf diesen Wert begrenzt; --> StickGas ist das Maximum) |
signed char Hight; //(Höhenregler) |
unsigned char free; // (unbenutzt) |
unsigned char Frame; // (Bestätigung) |
unsigned char Config; |
} ExternControl; |
|
|
|
int state=STATEID_SCANNING; |
|
#define BUTTON_SELECT 26 |
#define BUTTON_DOWN 27 |
#define BUTTON_UP 28 |
|
struct x52 *x52_output; |
|
81,11 → 110,7 |
close( sock ); |
} |
|
int x52_input_fd, *axis=NULL, num_of_axis=0, num_of_buttons=0, x; |
char *button=NULL,*button_trigger=NULL, name_of_joystick[80]; |
|
struct js_event x52_event_struct; |
|
void connect_joy() |
{ |
|
114,10 → 139,6 |
} |
|
|
struct |
{ |
char val[4]; |
} MotortestParam; |
|
|
void AddCRC(unsigned int wieviele) |
235,63 → 256,11 |
//int tmp=2; |
// connect_mk("00:0B:CE:01:6B:4F"); |
|
/* |
|
{ |
// send a message |
|
MotortestParam.val[0]=tmp; |
MotortestParam.val[1]=tmp; |
MotortestParam.val[2]=tmp; |
MotortestParam.val[3]=tmp; |
|
engines_on=1; |
|
|
else |
engines_on=0; |
|
if (engines_on!=old_engines_on) |
{ |
int c; |
|
if( 0 == status )for (c=0;c<10;c++) |
int c; |
for (c=0;c<2;c++) |
SendOutData('t', 0, &MotortestParam, sizeof(MotortestParam)); |
|
|
|
sleep(1); |
} |
*/ |
|
|
if( status < 0 ) perror("uh oh"); |
printf ("send status %d",status); |
// close(s); |
|
int i; |
/* |
|
MotortestParam.val[0]=2; |
MotortestParam.val[1]=2; |
MotortestParam.val[2]=2; |
MotortestParam.val[3]=2; |
|
|
|
|
while(1) |
{ |
initSerial("/dev/rfcomm0"); |
sleep(2); |
SendOutData('t', 0, &MotortestParam, sizeof(MotortestParam)); |
sleep(1); |
} |
*/ |
|
|
int i; |
|
printf("\nInitializing X-52 input ..\n"); |
connect_joy(); |
printf(".. done"); |
298,24 → 267,21 |
|
printf("\nInitializing X-52 output .."); |
|
x52_output = x52_init(); |
x52_output = x52_init(); |
|
clear_display(); |
|
clear_display(); |
write_display(0, "RIDDIM active"); |
|
write_display(0, "RIDDIM active"); |
if (x52_output) x52_setbri(x52_output, 1,128); |
if (x52_output) |
printf(" done \n"); |
else |
printf(" not found \n"); |
|
if (x52_output) x52_setbri(x52_output, 1,128); |
if (x52_output) |
printf(" done \n"); |
else |
printf(" not found \n"); |
|
|
|
printf("Scanning for Bluetooth Devices ..\n"); |
write_display(1,"Bluetooth Scan"); |
|
|
scan_bt(); |
printf(" done \n"); |
printf(" %d Devices found \n",bt_device_count); |
334,7 → 300,7 |
while( 1 ) |
{ |
int polls=0; |
for (polls=0;polls<1000;polls++) |
for (polls=0;polls<1000;polls++) // FIXME - better Polling |
{ |
read(x52_input_fd, &x52_event_struct, sizeof(struct js_event)); |
|
350,100 → 316,86 |
break; |
} |
} |
if (1) |
{ |
|
for( x=0 ; x<num_of_buttons ; ++x ) |
if( button[x]==0) |
button_trigger[x]=0; |
else |
{ |
if (button_trigger[x]<100)button_trigger[x]++; |
} |
|
} |
|
for( x=0 ; x<num_of_buttons ; ++x ) |
if( button[x]==0) |
button_trigger[x]=0; |
else |
{ |
if (button_trigger[x]<100)button_trigger[x]++; |
} |
|
|
|
switch(state) |
{ |
case STATEID_SCANNING: |
if (button_trigger[BUTTON_SELECT]==1) |
{ |
state=STATEID_CONNECTING; |
clear_display(); |
write_display(0,"connecting to"); |
write_display(1,names[selected_bt_device]); |
connect_mk(addrs[selected_bt_device]); |
write_display(0,"connected to"); |
} |
switch(state) |
{ |
case STATEID_SCANNING: |
if (button_trigger[BUTTON_SELECT]==1) |
{ |
state=STATEID_CONNECTING; |
clear_display(); |
write_display(0,"connecting to"); |
write_display(1,names[selected_bt_device]); |
connect_mk(addrs[selected_bt_device]); |
write_display(0,"connected to"); |
} |
|
if ((button_trigger[BUTTON_UP]+button_trigger[BUTTON_DOWN])==1) |
{ |
printf("-> sel_dev %d - %d\n",selected_bt_device,button_trigger[19]); |
if (button_trigger[BUTTON_DOWN]==1) |
if (selected_bt_device>0) selected_bt_device--; |
if (button_trigger[BUTTON_UP]==1) |
if (selected_bt_device<bt_device_count-1) selected_bt_device++; |
|
output_device_list() ; |
} |
break; |
case STATEID_CONNECTING: |
if ((button_trigger[BUTTON_UP]+button_trigger[BUTTON_DOWN])==1) |
{ |
printf("-> sel_dev %d - %d\n",selected_bt_device,button_trigger[19]); |
if (button_trigger[BUTTON_DOWN]==1) |
if (selected_bt_device>0) selected_bt_device--; |
if (button_trigger[BUTTON_UP]==1) |
if (selected_bt_device<bt_device_count-1) selected_bt_device++; |
|
output_device_list() ; |
} |
break; |
case STATEID_CONNECTING: |
|
|
_TxBuffer[0]=(axis[2]>>8)*(-1)+127; |
if (button[7]!=1)_TxBuffer[0] =0; |
_TxBuffer[0]=(axis[2]>>8)*(-1)+127; |
if (button[7]!=1)_TxBuffer[0] =0; |
|
_TxBuffer[1]=_TxBuffer[0]; |
_TxBuffer[2]=_TxBuffer[0]; |
_TxBuffer[3]=_TxBuffer[0]; |
|
SendOutData('t', 0, 4); |
|
_TxBuffer[1]=_TxBuffer[0]; |
_TxBuffer[2]=_TxBuffer[0]; |
_TxBuffer[3]=_TxBuffer[0]; |
|
SendOutData('t', 0, 4); |
|
|
sleep(0.05); |
|
sleep(0.05); |
|
|
int v=axis[6]/655+50; |
if (v!=v_old)if (x52_output) x52_setbri(x52_output, 0,v ); |
v_old=v; |
|
printf("v: %d \r",v); |
|
int v=axis[6]/655+50; |
if (v!=v_old)if (x52_output) x52_setbri(x52_output, 0,v ); |
v_old=v; |
|
printf("v: %d \r",v); |
|
|
for (i=0;i<num_of_axis;i++) |
printf("A%d: %d ", i,axis[i]>>8 ); |
for (i=0;i<num_of_axis;i++) |
printf("A%d: %d ", i,axis[i]>>8 ); |
|
for( x=0 ; x<num_of_buttons ; ++x ) |
|
printf("B%d: %d ", x, button[x] ); |
|
for( x=0 ; x<num_of_buttons ; ++x ) |
|
printf("B%d: %d ", x, button[x] ); |
|
break; |
} |
/* |
|
*/ |
printf("\r"); |
fflush(stdout); |
break; |
} |
|
printf("\r"); |
fflush(stdout); |
|
|
/* |
if( read( x52_input_fd, &x52_input_struct, JS_RETURN ) != JS_RETURN ) |
{ |
printf( "\nFailed to read from Joystick\n" ); |
} |
} |
|
|
if (x52_output) x52_setbri(x52_output, 1,x52_input_struct.y ); |
// if (x52_output) x52_setbri(x52_output, 2,x52_input_struct.x ); |
/******************** Cleanup **********************/ |
close(x52_input_fd); |
close(s); |
|
|
*/ |
} |
|
close(x52_input_fd); /* too bad we never get here */ |
|
if (x52_output) x52_close(x52_output); |
return 0; |
} |