FlightGear next
js_demo.cxx
Go to the documentation of this file.
1
2#include <config.h>
3
4#include <chrono>
5#include <thread>
6
7#include "FlightGear_js.h"
8
9
10#define Z 8
11
12int main ( int, char ** )
13{
14 jsJoystick *js[Z] ;
15 float *ax[Z] ;
16 int i, j, t, useful[Z];
17
18 jsInit();
19
20 for ( i = 0; i < Z; i++ )
21 js[i] = new jsJoystick ( i ) ;
22
23 printf ( "Joystick test program.\n" ) ;
24 printf ( "~~~~~~~~~~~~~~~~~~~~~~\n" ) ;
25
26 t = 0;
27 for ( i = 0; i < Z; i++ )
28 { useful[i] = ! ( js[i]->notWorking () );
29 if ( useful[i] ) {
30 t++;
31 printf ( "Joystick %i: \"%s\"\n", i, js[i]->getName() ) ;
32 } else printf ( "Joystick %i not detected\n", i ) ;
33 }
34 if ( t == 0 ) exit ( 1 ) ;
35
36 for ( i = 0; i < Z; i++ )
37 if ( useful[i] )
38 ax[i] = new float [ js[i]->getNumAxes () ] ;
39
40 for ( i = 0 ; i < Z ; i++ )
41 if ( useful[i] )
42 printf ( "+--------------------JS.%d----------------------", i ) ;
43
44 printf ( "+\n" ) ;
45
46 for ( i = 0 ; i < Z ; i++ )
47 if ( useful[i] )
48 {
49 if ( js[i]->notWorking () )
50 printf ( "| ~~~ Not Detected ~~~ " ) ;
51 else
52 {
53 printf ( "| Btns " ) ;
54
55 for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
56 printf ( "Ax:%1d ", j ) ;
57
58 for ( ; j < 8 ; j++ )
59 printf ( " " ) ;
60 }
61 }
62
63 printf ( "|\n" ) ;
64
65 for ( i = 0 ; i < Z ; i++ )
66 if ( useful[i] )
67 printf ( "+----------------------------------------------" ) ;
68
69 printf ( "+\n" ) ;
70
71 while (1)
72 {
73 for ( i = 0 ; i < Z ; i++ )
74 if ( useful[i] )
75 {
76 if ( js[i]->notWorking () )
77 printf ( "| . . . . . . . . . . . " ) ;
78 else
79 {
80 int b ;
81
82 js[i]->read ( &b, ax[i] ) ;
83
84 printf ( "| %04x ", b ) ;
85
86 for ( j = 0 ; j < js[i]->getNumAxes () ; j++ )
87 printf ( "%+.1f ", ax[i][j] ) ;
88
89 for ( ; j < 8 ; j++ )
90 printf ( " . " ) ;
91 }
92 }
93
94 printf ( "|\r" ) ;
95 fflush ( stdout ) ;
96
97 /* give other processes a chance */
98 {
99 using namespace std::chrono_literals;
100 std::this_thread::sleep_for(std::chrono::milliseconds(1ms));
101 }
102 }
103
104 return 0;
105}
#define i(x)
int main()
#define Z
Definition js_demo.cxx:10