Skip to content

Commit 1a2f619

Browse files
committed
Use 0-65535 instead of -32767 - 32767 for analog ranges
1 parent e800604 commit 1a2f619

File tree

2 files changed

+185
-183
lines changed

2 files changed

+185
-183
lines changed

src/Joystick.cpp

Lines changed: 40 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
#if defined(_USING_DYNAMIC_HID)
2424

2525
#define JOYSTICK_REPORT_ID_INDEX 7
26-
#define JOYSTICK_AXIS_MINIMUM -32767
27-
#define JOYSTICK_AXIS_MAXIMUM 32767
28-
#define JOYSTICK_SIMULATOR_MINIMUM -32767
29-
#define JOYSTICK_SIMULATOR_MAXIMUM 32767
26+
#define JOYSTICK_AXIS_MINIMUM 0
27+
#define JOYSTICK_AXIS_MAXIMUM 65535
28+
#define JOYSTICK_SIMULATOR_MINIMUM 0
29+
#define JOYSTICK_SIMULATOR_MAXIMUM 65535
3030

3131
#define JOYSTICK_INCLUDE_X_AXIS B00000001
3232
#define JOYSTICK_INCLUDE_Y_AXIS B00000010
@@ -293,15 +293,16 @@ Joystick_::Joystick_(
293293
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x09;
294294
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x01;
295295

296-
// LOGICAL_MINIMUM (-32767)
297-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x16;
298-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x01;
299-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x80;
296+
// LOGICAL_MINIMUM (0)
297+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x15;
298+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00;
300299

301-
// LOGICAL_MAXIMUM (+32767)
302-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x26;
303-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xFF;
304-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x7F;
300+
// LOGICAL_MAXIMUM (65535)
301+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x27;
302+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0XFF;
303+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0XFF;
304+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00;
305+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00;
305306

306307
// REPORT_SIZE (16)
307308
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x75;
@@ -366,15 +367,16 @@ Joystick_::Joystick_(
366367
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x05;
367368
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x02;
368369

369-
// LOGICAL_MINIMUM (-32767)
370-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x16;
371-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x01;
372-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x80;
370+
// LOGICAL_MINIMUM (0)
371+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x15;
372+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00;
373373

374-
// LOGICAL_MAXIMUM (+32767)
375-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x26;
376-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0xFF;
377-
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x7F;
374+
// LOGICAL_MAXIMUM (65535)
375+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x27;
376+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0XFF;
377+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0XFF;
378+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00;
379+
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x00;
378380

379381
// REPORT_SIZE (16)
380382
tempHidReportDescriptor[hidReportDescriptorSize++] = 0x75;
@@ -517,79 +519,79 @@ void Joystick_::releaseButton(uint8_t button)
517519
if (_autoSendState) sendState();
518520
}
519521

520-
void Joystick_::setXAxis(int16_t value)
522+
void Joystick_::setXAxis(uint16_t value)
521523
{
522524
_xAxis = value;
523525
if (_autoSendState) sendState();
524526
}
525-
void Joystick_::setYAxis(int16_t value)
527+
void Joystick_::setYAxis(uint16_t value)
526528
{
527529
_yAxis = value;
528530
if (_autoSendState) sendState();
529531
}
530-
void Joystick_::setZAxis(int16_t value)
532+
void Joystick_::setZAxis(uint16_t value)
531533
{
532534
_zAxis = value;
533535
if (_autoSendState) sendState();
534536
}
535537

536-
void Joystick_::setRxAxis(int16_t value)
538+
void Joystick_::setRxAxis(uint16_t value)
537539
{
538540
_xAxisRotation = value;
539541
if (_autoSendState) sendState();
540542
}
541-
void Joystick_::setRyAxis(int16_t value)
543+
void Joystick_::setRyAxis(uint16_t value)
542544
{
543545
_yAxisRotation = value;
544546
if (_autoSendState) sendState();
545547
}
546-
void Joystick_::setRzAxis(int16_t value)
548+
void Joystick_::setRzAxis(uint16_t value)
547549
{
548550
_zAxisRotation = value;
549551
if (_autoSendState) sendState();
550552
}
551553

552-
void Joystick_::setRudder(int16_t value)
554+
void Joystick_::setRudder(uint16_t value)
553555
{
554556
_rudder = value;
555557
if (_autoSendState) sendState();
556558
}
557-
void Joystick_::setThrottle(int16_t value)
559+
void Joystick_::setThrottle(uint16_t value)
558560
{
559561
_throttle = value;
560562
if (_autoSendState) sendState();
561563
}
562-
void Joystick_::setAccelerator(int16_t value)
564+
void Joystick_::setAccelerator(uint16_t value)
563565
{
564566
_accelerator = value;
565567
if (_autoSendState) sendState();
566568
}
567-
void Joystick_::setBrake(int16_t value)
569+
void Joystick_::setBrake(uint16_t value)
568570
{
569571
_brake = value;
570572
if (_autoSendState) sendState();
571573
}
572-
void Joystick_::setSteering(int16_t value)
574+
void Joystick_::setSteering(uint16_t value)
573575
{
574576
_steering = value;
575577
if (_autoSendState) sendState();
576578
}
577579

578-
void Joystick_::setHatSwitch(int8_t hatSwitchIndex, int16_t value)
580+
void Joystick_::setHatSwitch(int8_t hatSwitchIndex, uint16_t value)
579581
{
580582
if (hatSwitchIndex >= _hatSwitchCount) return;
581583

582584
_hatSwitchValues[hatSwitchIndex] = value;
583585
if (_autoSendState) sendState();
584586
}
585587

586-
int Joystick_::buildAndSet16BitValue(bool includeValue, int16_t value, int16_t valueMinimum, int16_t valueMaximum, int16_t actualMinimum, int16_t actualMaximum, uint8_t dataLocation[])
588+
int Joystick_::buildAndSet16BitValue(bool includeValue, uint16_t value, uint16_t valueMinimum, uint16_t valueMaximum, uint16_t actualMinimum, uint16_t actualMaximum, uint8_t dataLocation[])
587589
{
588-
int16_t convertedValue;
590+
uint16_t convertedValue;
589591
uint8_t highByte;
590592
uint8_t lowByte;
591-
int16_t realMinimum = min(valueMinimum, valueMaximum);
592-
int16_t realMaximum = max(valueMinimum, valueMaximum);
593+
uint16_t realMinimum = min(valueMinimum, valueMaximum);
594+
uint16_t realMaximum = max(valueMinimum, valueMaximum);
593595

594596
if (includeValue == false) return 0;
595597

@@ -616,12 +618,12 @@ int Joystick_::buildAndSet16BitValue(bool includeValue, int16_t value, int16_t v
616618
return 2;
617619
}
618620

619-
int Joystick_::buildAndSetAxisValue(bool includeAxis, int16_t axisValue, int16_t axisMinimum, int16_t axisMaximum, uint8_t dataLocation[])
621+
int Joystick_::buildAndSetAxisValue(bool includeAxis, uint16_t axisValue, uint16_t axisMinimum, uint16_t axisMaximum, uint8_t dataLocation[])
620622
{
621623
return buildAndSet16BitValue(includeAxis, axisValue, axisMinimum, axisMaximum, JOYSTICK_AXIS_MINIMUM, JOYSTICK_AXIS_MAXIMUM, dataLocation);
622624
}
623625

624-
int Joystick_::buildAndSetSimulationValue(bool includeValue, int16_t value, int16_t valueMinimum, int16_t valueMaximum, uint8_t dataLocation[])
626+
int Joystick_::buildAndSetSimulationValue(bool includeValue, uint16_t value, uint16_t valueMinimum, uint16_t valueMaximum, uint8_t dataLocation[])
625627
{
626628
return buildAndSet16BitValue(includeValue, value, valueMinimum, valueMaximum, JOYSTICK_SIMULATOR_MINIMUM, JOYSTICK_SIMULATOR_MAXIMUM, dataLocation);
627629
}

0 commit comments

Comments
 (0)