28
28
#define JOYSTICK_SIMULATOR_MINIMUM -32767
29
29
#define JOYSTICK_SIMULATOR_MAXIMUM 32767
30
30
31
+ #define JOYSTICK_INCLUDE_X_AXIS B00000001
32
+ #define JOYSTICK_INCLUDE_Y_AXIS B00000010
33
+ #define JOYSTICK_INCLUDE_Z_AXIS B00000100
34
+ #define JOYSTICK_INCLUDE_RX_AXIS B00001000
35
+ #define JOYSTICK_INCLUDE_RY_AXIS B00010000
36
+ #define JOYSTICK_INCLUDE_RZ_AXIS B00100000
37
+
38
+ #define JOYSTICK_INCLUDE_RUDDER B00000001
39
+ #define JOYSTICK_INCLUDE_THROTTLE B00000010
40
+ #define JOYSTICK_INCLUDE_ACCELERATOR B00000100
41
+ #define JOYSTICK_INCLUDE_BRAKE B00001000
42
+ #define JOYSTICK_INCLUDE_STEERING B00010000
43
+
31
44
Joystick_::Joystick_ (
32
45
uint8_t hidReportId,
33
46
uint8_t buttonCount,
@@ -50,18 +63,20 @@ Joystick_::Joystick_(
50
63
// Save Joystick Settings
51
64
_buttonCount = buttonCount;
52
65
_hatSwitchCount = hatSwitchCount;
53
- _includeXAxis = includeXAxis;
54
- _includeYAxis = includeYAxis;
55
- _includeZAxis = includeZAxis;
56
- _includeRxAxis = includeRxAxis;
57
- _includeRyAxis = includeRyAxis;
58
- _includeRzAxis = includeRzAxis;
59
- _includeRudder = includeRudder;
60
- _includeThrottle = includeThrottle;
61
- _includeAccelerator = includeAccelerator;
62
- _includeBrake = includeBrake;
63
- _includeSteering = includeSteering;
64
-
66
+ _includeAxisFlags = 0 ;
67
+ _includeAxisFlags |= (includeXAxis ? JOYSTICK_INCLUDE_X_AXIS : 0 );
68
+ _includeAxisFlags |= (includeYAxis ? JOYSTICK_INCLUDE_Y_AXIS : 0 );
69
+ _includeAxisFlags |= (includeZAxis ? JOYSTICK_INCLUDE_Z_AXIS : 0 );
70
+ _includeAxisFlags |= (includeRxAxis ? JOYSTICK_INCLUDE_RX_AXIS : 0 );
71
+ _includeAxisFlags |= (includeRyAxis ? JOYSTICK_INCLUDE_RY_AXIS : 0 );
72
+ _includeAxisFlags |= (includeRzAxis ? JOYSTICK_INCLUDE_RZ_AXIS : 0 );
73
+ _includeSimulatorFlags = 0 ;
74
+ _includeSimulatorFlags |= (includeRudder ? JOYSTICK_INCLUDE_RUDDER : 0 );
75
+ _includeSimulatorFlags |= (includeThrottle ? JOYSTICK_INCLUDE_THROTTLE : 0 );
76
+ _includeSimulatorFlags |= (includeAccelerator ? JOYSTICK_INCLUDE_ACCELERATOR : 0 );
77
+ _includeSimulatorFlags |= (includeBrake ? JOYSTICK_INCLUDE_BRAKE : 0 );
78
+ _includeSimulatorFlags |= (includeSteering ? JOYSTICK_INCLUDE_STEERING : 0 );
79
+
65
80
// Build Joystick HID Report Description
66
81
67
82
// Button Calculations
@@ -73,12 +88,12 @@ Joystick_::Joystick_(
73
88
}
74
89
75
90
// Axis Calculations
76
- uint8_t axisCount = (_includeXAxis == true )
77
- + (_includeYAxis == true )
78
- + (_includeZAxis == true )
79
- + (_includeRxAxis == true )
80
- + (_includeRyAxis == true )
81
- + (_includeRzAxis == true );
91
+ uint8_t axisCount = (includeXAxis == true )
92
+ + (includeYAxis == true )
93
+ + (includeZAxis == true )
94
+ + (includeRxAxis == true )
95
+ + (includeRyAxis == true )
96
+ + (includeRzAxis == true );
82
97
83
98
uint8_t simulationCount = (includeRudder == true )
84
99
+ (includeThrottle == true )
@@ -299,37 +314,37 @@ Joystick_::Joystick_(
299
314
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xA1 ;
300
315
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00 ;
301
316
302
- if (_includeXAxis == true ) {
317
+ if (includeXAxis == true ) {
303
318
// USAGE (X)
304
319
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
305
320
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x30 ;
306
321
}
307
322
308
- if (_includeYAxis == true ) {
323
+ if (includeYAxis == true ) {
309
324
// USAGE (Y)
310
325
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
311
326
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x31 ;
312
327
}
313
328
314
- if (_includeZAxis == true ) {
329
+ if (includeZAxis == true ) {
315
330
// USAGE (Z)
316
331
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
317
332
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x32 ;
318
333
}
319
334
320
- if (_includeRxAxis == true ) {
335
+ if (includeRxAxis == true ) {
321
336
// USAGE (Rx)
322
337
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
323
338
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x33 ;
324
339
}
325
340
326
- if (_includeRyAxis == true ) {
341
+ if (includeRyAxis == true ) {
327
342
// USAGE (Ry)
328
343
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
329
344
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x34 ;
330
345
}
331
346
332
- if (_includeRzAxis == true ) {
347
+ if (includeRzAxis == true ) {
333
348
// USAGE (Rz)
334
349
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
335
350
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x35 ;
@@ -372,31 +387,31 @@ Joystick_::Joystick_(
372
387
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xA1 ;
373
388
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00 ;
374
389
375
- if (_includeRudder == true ) {
390
+ if (includeRudder == true ) {
376
391
// USAGE (Rudder)
377
392
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
378
393
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xBA ;
379
394
}
380
395
381
- if (_includeThrottle == true ) {
396
+ if (includeThrottle == true ) {
382
397
// USAGE (Throttle)
383
398
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
384
399
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xBB ;
385
400
}
386
401
387
- if (_includeAccelerator == true ) {
402
+ if (includeAccelerator == true ) {
388
403
// USAGE (Accelerator)
389
404
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
390
405
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xC4 ;
391
406
}
392
407
393
- if (_includeBrake == true ) {
408
+ if (includeBrake == true ) {
394
409
// USAGE (Brake)
395
410
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
396
411
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xC5 ;
397
412
}
398
413
399
- if (_includeSteering == true ) {
414
+ if (includeSteering == true ) {
400
415
// USAGE (Steering)
401
416
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09 ;
402
417
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xC8 ;
@@ -654,19 +669,19 @@ void Joystick_::sendState()
654
669
} // Hat Switches
655
670
656
671
// Set Axis Values
657
- index += buildAndSetAxisValue (_includeXAxis , _xAxis, _xAxisMinimum, _xAxisMaximum, &(data[index]));
658
- index += buildAndSetAxisValue (_includeYAxis , _yAxis, _yAxisMinimum, _yAxisMaximum, &(data[index]));
659
- index += buildAndSetAxisValue (_includeZAxis , _zAxis, _zAxisMinimum, _zAxisMaximum, &(data[index]));
660
- index += buildAndSetAxisValue (_includeRxAxis , _xAxisRotation, _rxAxisMinimum, _rxAxisMaximum, &(data[index]));
661
- index += buildAndSetAxisValue (_includeRyAxis , _yAxisRotation, _ryAxisMinimum, _ryAxisMaximum, &(data[index]));
662
- index += buildAndSetAxisValue (_includeRzAxis , _zAxisRotation, _rzAxisMinimum, _rzAxisMaximum, &(data[index]));
672
+ index += buildAndSetAxisValue (_includeAxisFlags & JOYSTICK_INCLUDE_X_AXIS , _xAxis, _xAxisMinimum, _xAxisMaximum, &(data[index]));
673
+ index += buildAndSetAxisValue (_includeAxisFlags & JOYSTICK_INCLUDE_Y_AXIS , _yAxis, _yAxisMinimum, _yAxisMaximum, &(data[index]));
674
+ index += buildAndSetAxisValue (_includeAxisFlags & JOYSTICK_INCLUDE_Z_AXIS , _zAxis, _zAxisMinimum, _zAxisMaximum, &(data[index]));
675
+ index += buildAndSetAxisValue (_includeAxisFlags & JOYSTICK_INCLUDE_RX_AXIS , _xAxisRotation, _rxAxisMinimum, _rxAxisMaximum, &(data[index]));
676
+ index += buildAndSetAxisValue (_includeAxisFlags & JOYSTICK_INCLUDE_RY_AXIS , _yAxisRotation, _ryAxisMinimum, _ryAxisMaximum, &(data[index]));
677
+ index += buildAndSetAxisValue (_includeAxisFlags & JOYSTICK_INCLUDE_RZ_AXIS , _zAxisRotation, _rzAxisMinimum, _rzAxisMaximum, &(data[index]));
663
678
664
679
// Set Simulation Values
665
- index += buildAndSetSimulationValue (_includeRudder , _rudder, _rudderMinimum, _rudderMaximum, &(data[index]));
666
- index += buildAndSetSimulationValue (_includeThrottle , _throttle, _throttleMinimum, _throttleMaximum, &(data[index]));
667
- index += buildAndSetSimulationValue (_includeAccelerator , _accelerator, _acceleratorMinimum, _acceleratorMaximum, &(data[index]));
668
- index += buildAndSetSimulationValue (_includeBrake , _brake, _brakeMinimum, _brakeMaximum, &(data[index]));
669
- index += buildAndSetSimulationValue (_includeSteering , _steering, _steeringMinimum, _steeringMaximum, &(data[index]));
680
+ index += buildAndSetSimulationValue (_includeSimulatorFlags & JOYSTICK_INCLUDE_RUDDER , _rudder, _rudderMinimum, _rudderMaximum, &(data[index]));
681
+ index += buildAndSetSimulationValue (_includeSimulatorFlags & JOYSTICK_INCLUDE_THROTTLE , _throttle, _throttleMinimum, _throttleMaximum, &(data[index]));
682
+ index += buildAndSetSimulationValue (_includeSimulatorFlags & JOYSTICK_INCLUDE_ACCELERATOR , _accelerator, _acceleratorMinimum, _acceleratorMaximum, &(data[index]));
683
+ index += buildAndSetSimulationValue (_includeSimulatorFlags & JOYSTICK_INCLUDE_BRAKE , _brake, _brakeMinimum, _brakeMaximum, &(data[index]));
684
+ index += buildAndSetSimulationValue (_includeSimulatorFlags & JOYSTICK_INCLUDE_STEERING , _steering, _steeringMinimum, _steeringMaximum, &(data[index]));
670
685
671
686
DynamicHID ().SendReport (_hidReportId, data, _hidReportSize);
672
687
}
0 commit comments