|
@@ -39,7 +39,7 @@
|
|
|
typedef enum
|
|
|
{
|
|
|
k_EPS5ReportIdState = 0x01,
|
|
|
- k_EPS5ReportIDOutput = 0x02,
|
|
|
+ k_EPS5ReportIDOutput = 0x02,
|
|
|
k_EPS5ReportIdBluetoothState = 0x31,
|
|
|
} EPS5ReportId;
|
|
|
|
|
@@ -87,22 +87,6 @@ typedef struct
|
|
|
/* There's more unknown data at the end, and a 32-bit CRC on Bluetooth */
|
|
|
} PS5StatePacket_t;
|
|
|
|
|
|
-typedef struct
|
|
|
-{
|
|
|
- Uint8 ucReportID;
|
|
|
- Uint8 ucHeader;
|
|
|
- Uint8 ucEnableBits;
|
|
|
- Uint8 ucRumbleRight;
|
|
|
- Uint8 ucRumbleLeft;
|
|
|
- Uint8 rgucUnknown[3];
|
|
|
- Uint8 ucUnknown;
|
|
|
- Uint8 ucMuteLED;
|
|
|
- Uint8 ucBits;
|
|
|
- Uint8 rgucForceFeedbackRight[11];
|
|
|
- Uint8 rgucForceFeedbackLeft[11];
|
|
|
- Uint8 rgucUnknown2[3];
|
|
|
- Uint8 rgucUnknown3[13];
|
|
|
-} PS5OutputReportPacket_t;
|
|
|
|
|
|
static void ReadFeatureReport(hid_device *dev, Uint8 report_id)
|
|
|
{
|
|
@@ -198,14 +182,16 @@ HIDAPI_DriverPS5_OpenJoystick(SDL_HIDAPI_Device *device, SDL_Joystick *joystick)
|
|
|
static int
|
|
|
HIDAPI_DriverPS5_RumbleJoystick(SDL_HIDAPI_Device *device, SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble)
|
|
|
{
|
|
|
- PS5OutputReportPacket_t OutputReport;
|
|
|
- SDL_memset( &OutputReport, 0, sizeof( OutputReport ) );
|
|
|
- OutputReport.ucReportID = k_EPS5ReportIDOutput;
|
|
|
- OutputReport.ucHeader = 0x7;
|
|
|
- OutputReport.ucRumbleLeft = high_frequency_rumble >> 8;
|
|
|
- OutputReport.ucRumbleRight = low_frequency_rumble >> 8;
|
|
|
-
|
|
|
- if (SDL_HIDAPI_SendRumble(device, &OutputReport, sizeof(OutputReport)) != sizeof(OutputReport)) {
|
|
|
+ Uint8 data[6];
|
|
|
+
|
|
|
+ /* This works over USB, not over Bluetooth */
|
|
|
+ SDL_zero(data);
|
|
|
+ data[0] = k_EPS5ReportIDOutput;
|
|
|
+ data[1] = 0x7; /* Magic value */
|
|
|
+ data[3] = (high_frequency_rumble >> 8);
|
|
|
+ data[4] = (low_frequency_rumble >> 8);
|
|
|
+
|
|
|
+ if (SDL_HIDAPI_SendRumble(device, data, sizeof(data)) != sizeof(data)) {
|
|
|
return SDL_SetError("Couldn't send rumble packet");
|
|
|
}
|
|
|
return 0;
|