Skip to content

Commit

Permalink
Note the Google Stadia controller doesn't support rumble over Bluetooth
Browse files Browse the repository at this point in the history
(cherry picked from commit 50575ed)
  • Loading branch information
slouken committed Feb 8, 2023
1 parent 71fb4e3 commit 3fb9118
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion src/joystick/hidapi/SDL_hidapi_stadia.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,15 @@ static SDL_bool HIDAPI_DriverStadia_InitDevice(SDL_HIDAPI_Device *device)
}
device->context = ctx;

/* Check whether this is connected via USB or Bluetooth */
{
Uint8 rumble_packet[] = { 0x05, 0x00, 0x00, 0x00, 0x00 };

if (SDL_hid_write(device->dev, rumble_packet, sizeof(rumble_packet)) < 0) {
device->is_bluetooth = SDL_TRUE;
}
}

device->type = SDL_CONTROLLER_TYPE_GOOGLE_STADIA;
HIDAPI_SetDeviceName(device, "Google Stadia Controller");

Expand Down Expand Up @@ -112,6 +121,10 @@ static int HIDAPI_DriverStadia_RumbleJoystick(SDL_HIDAPI_Device *device, SDL_Joy
{
Uint8 rumble_packet[] = { 0x05, 0x00, 0x00, 0x00, 0x00 };

if (device->is_bluetooth) {
return SDL_Unsupported();
}

rumble_packet[1] = (low_frequency_rumble & 0xFF);
rumble_packet[2] = (low_frequency_rumble >> 8);
rumble_packet[3] = (high_frequency_rumble & 0xFF);
Expand All @@ -130,7 +143,12 @@ static int HIDAPI_DriverStadia_RumbleJoystickTriggers(SDL_HIDAPI_Device *device,

static Uint32 HIDAPI_DriverStadia_GetJoystickCapabilities(SDL_HIDAPI_Device *device, SDL_Joystick *joystick)
{
return SDL_JOYCAP_RUMBLE;
Uint32 caps = 0;

if (!device->is_bluetooth) {
caps |= SDL_JOYCAP_RUMBLE;
}
return caps;
}

static int HIDAPI_DriverStadia_SetJoystickLED(SDL_HIDAPI_Device *device, SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue)
Expand Down

0 comments on commit 3fb9118

Please sign in to comment.