Constrain the reported controller number by the max gamepad count
This commit is contained in:
parent
9ad56cdd8e
commit
54e1556c40
1 changed files with 25 additions and 6 deletions
|
|
@ -15,6 +15,9 @@ static PLT_THREAD inputSendThread;
|
||||||
static float absCurrentPosX;
|
static float absCurrentPosX;
|
||||||
static float absCurrentPosY;
|
static float absCurrentPosY;
|
||||||
|
|
||||||
|
// Limited by number of bits in activeGamepadMask
|
||||||
|
#define MAX_GAMEPADS 16
|
||||||
|
|
||||||
#define CLAMP(val, min, max) (((val) < (min)) ? (min) : (((val) > (max)) ? (max) : (val)))
|
#define CLAMP(val, min, max) (((val) < (min)) ? (min) : (((val) > (max)) ? (max) : (val)))
|
||||||
|
|
||||||
#define MAX_INPUT_PACKET_SIZE 128
|
#define MAX_INPUT_PACKET_SIZE 128
|
||||||
|
|
@ -938,6 +941,16 @@ static int sendControllerEventInternal(short controllerNumber, short activeGamep
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GFE only supports a maximum of 4 controllers
|
||||||
|
if (!IS_SUNSHINE()) {
|
||||||
|
controllerNumber %= 4;
|
||||||
|
activeGamepadMask &= 0xF;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Sunshine supports up to 16 (max number of bits in activeGamepadMask)
|
||||||
|
controllerNumber %= MAX_GAMEPADS;
|
||||||
|
}
|
||||||
|
|
||||||
holder = allocatePacketHolder(0);
|
holder = allocatePacketHolder(0);
|
||||||
if (holder == NULL) {
|
if (holder == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -971,12 +984,6 @@ static int sendControllerEventInternal(short controllerNumber, short activeGamep
|
||||||
holder->packet.multiController.header.magic = LE32(MULTI_CONTROLLER_MAGIC);
|
holder->packet.multiController.header.magic = LE32(MULTI_CONTROLLER_MAGIC);
|
||||||
}
|
}
|
||||||
|
|
||||||
// GFE only supports a maximum of 4 controllers
|
|
||||||
if (!IS_SUNSHINE()) {
|
|
||||||
controllerNumber %= 4;
|
|
||||||
activeGamepadMask &= 0xF;
|
|
||||||
}
|
|
||||||
|
|
||||||
holder->packet.multiController.headerB = LE16(MC_HEADER_B);
|
holder->packet.multiController.headerB = LE16(MC_HEADER_B);
|
||||||
holder->packet.multiController.controllerNumber = LE16(controllerNumber);
|
holder->packet.multiController.controllerNumber = LE16(controllerNumber);
|
||||||
holder->packet.multiController.activeGamepadMask = LE16(activeGamepadMask);
|
holder->packet.multiController.activeGamepadMask = LE16(activeGamepadMask);
|
||||||
|
|
@ -1245,6 +1252,9 @@ int LiSendControllerArrivalEvent(uint8_t controllerNumber, uint16_t activeGamepa
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sunshine supports up to 16 controllers
|
||||||
|
controllerNumber %= MAX_GAMEPADS;
|
||||||
|
|
||||||
// The arrival event is only supported by Sunshine
|
// The arrival event is only supported by Sunshine
|
||||||
if (IS_SUNSHINE()) {
|
if (IS_SUNSHINE()) {
|
||||||
holder = allocatePacketHolder(0);
|
holder = allocatePacketHolder(0);
|
||||||
|
|
@ -1285,6 +1295,9 @@ int LiSendControllerTouchEvent(uint8_t controllerNumber, uint8_t eventType, uint
|
||||||
return LI_ERR_UNSUPPORTED;
|
return LI_ERR_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sunshine supports up to 16 controllers
|
||||||
|
controllerNumber %= MAX_GAMEPADS;
|
||||||
|
|
||||||
holder = allocatePacketHolder(0);
|
holder = allocatePacketHolder(0);
|
||||||
if (holder == NULL) {
|
if (holder == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -1323,6 +1336,9 @@ int LiSendControllerMotionEvent(uint8_t controllerNumber, uint8_t motionType, fl
|
||||||
return LI_ERR_UNSUPPORTED;
|
return LI_ERR_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sunshine supports up to 16 controllers
|
||||||
|
controllerNumber %= MAX_GAMEPADS;
|
||||||
|
|
||||||
holder = allocatePacketHolder(0);
|
holder = allocatePacketHolder(0);
|
||||||
if (holder == NULL) {
|
if (holder == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
@ -1359,6 +1375,9 @@ int LiSendControllerBatteryEvent(uint8_t controllerNumber, uint8_t batteryState,
|
||||||
return LI_ERR_UNSUPPORTED;
|
return LI_ERR_UNSUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sunshine supports up to 16 controllers
|
||||||
|
controllerNumber %= MAX_GAMEPADS;
|
||||||
|
|
||||||
holder = allocatePacketHolder(0);
|
holder = allocatePacketHolder(0);
|
||||||
if (holder == NULL) {
|
if (holder == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue