mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-20 22:16:49 +01:00
Phantom Nintendo Switch Pro Controller initialization problem
This commit is contained in:
parent
92742306a6
commit
5fc743c4fd
@ -44,6 +44,13 @@
|
|||||||
/* Define this to get log output for rumble logic */
|
/* Define this to get log output for rumble logic */
|
||||||
/*#define DEBUG_RUMBLE*/
|
/*#define DEBUG_RUMBLE*/
|
||||||
|
|
||||||
|
/* The initialization sequence doesn't appear to work correctly on Windows unless
|
||||||
|
the reads and writes are on the same thread.
|
||||||
|
|
||||||
|
... and now I can't reproduce this, so I'm leaving it in, but disabled for now.
|
||||||
|
*/
|
||||||
|
/*#define SWITCH_SYNCHRONOUS_WRITES*/
|
||||||
|
|
||||||
/* How often you can write rumble commands to the controller.
|
/* How often you can write rumble commands to the controller.
|
||||||
If you send commands more frequently than this, you can turn off the controller
|
If you send commands more frequently than this, you can turn off the controller
|
||||||
in Bluetooth mode, or the motors can miss the command in USB mode.
|
in Bluetooth mode, or the motors can miss the command in USB mode.
|
||||||
@ -316,11 +323,15 @@ static int ReadInput(SDL_DriverSwitch_Context *ctx)
|
|||||||
|
|
||||||
static int WriteOutput(SDL_DriverSwitch_Context *ctx, const Uint8 *data, int size)
|
static int WriteOutput(SDL_DriverSwitch_Context *ctx, const Uint8 *data, int size)
|
||||||
{
|
{
|
||||||
|
#ifdef SWITCH_SYNCHRONOUS_WRITES
|
||||||
|
return hid_write(ctx->device->dev, data, size);
|
||||||
|
#else
|
||||||
/* Use the rumble thread for general asynchronous writes */
|
/* Use the rumble thread for general asynchronous writes */
|
||||||
if (SDL_HIDAPI_LockRumble() < 0) {
|
if (SDL_HIDAPI_LockRumble() < 0) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return SDL_HIDAPI_SendRumbleAndUnlock(ctx->device, data, size);
|
return SDL_HIDAPI_SendRumbleAndUnlock(ctx->device, data, size);
|
||||||
|
#endif /* SWITCH_SYNCHRONOUS_WRITES */
|
||||||
}
|
}
|
||||||
|
|
||||||
static SwitchSubcommandInputPacket_t *ReadSubcommandReply(SDL_DriverSwitch_Context *ctx, ESwitchSubcommandIDs expectedID)
|
static SwitchSubcommandInputPacket_t *ReadSubcommandReply(SDL_DriverSwitch_Context *ctx, ESwitchSubcommandIDs expectedID)
|
||||||
@ -438,6 +449,7 @@ static SDL_bool WriteProprietary(SDL_DriverSwitch_Context *ctx, ESwitchProprieta
|
|||||||
return SDL_FALSE;
|
return SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SDL_zero(packet);
|
||||||
packet.ucPacketType = k_eSwitchOutputReportIDs_Proprietary;
|
packet.ucPacketType = k_eSwitchOutputReportIDs_Proprietary;
|
||||||
packet.ucProprietaryID = ucCommand;
|
packet.ucProprietaryID = ucCommand;
|
||||||
if (pBuf) {
|
if (pBuf) {
|
||||||
|
Loading…
Reference in New Issue
Block a user