switch2: Simplify init data array

This commit is contained in:
Vicki Pfau
2025-10-14 16:32:49 -07:00
committed by Sam Lantinga
parent 427f838f58
commit 061ce935df

View File

@@ -344,42 +344,39 @@ static bool HIDAPI_DriverSwitch2_InitUSB(SDL_HIDAPI_Device *device)
} }
ctx->interface_claimed = true; ctx->interface_claimed = true;
const struct { const Uint8 *init_sequence[] = {
Uint8 size; (Uint8[]) { // Unknown purpose
const Uint8 *data;
} init_sequence[] = {
{ 8, (Uint8[]) { // Unknown purpose
0x7, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x7, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0,
}}, },
{ 8, (Uint8[]) { // Unknown purpose (Uint8[]) { // Unknown purpose
0x16, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x16, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0,
}}, },
{ 12, (Uint8[]) { // Set feature output bit mask (Uint8[]) { // Set feature output bit mask
0x0c, 0x91, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00 0x0c, 0x91, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00
}}, },
{ 8, (Uint8[]) { // Unknown purpose (Uint8[]) { // Unknown purpose
0x11, 0x91, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0, 0x11, 0x91, 0x0, 0x3, 0x0, 0x0, 0x0, 0x0,
}}, },
{ 28, (Uint8[]) { // Set rumble data? (Uint8[]) { // Set rumble data?
0x0a, 0x91, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00, 0x0a, 0x91, 0x00, 0x08, 0x00, 0x14, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x35, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0xff, 0x35, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x00
}}, },
{ 12, (Uint8[]) { // Enable feature output bits (Uint8[]) { // Enable feature output bits
0x0c, 0x91, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00 0x0c, 0x91, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00
}}, },
{ 8, (Uint8[]) { // Unknown purpose (Uint8[]) { // Unknown purpose
0x10, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x10, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0,
}}, },
{ 8, (Uint8[]) { // Enable rumble (Uint8[]) { // Enable rumble
0x01, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x01, 0x91, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0,
}}, },
{ 16, (Uint8[]) { // Start output (Uint8[]) { // Start output
0x03, 0x91, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00, 0x03, 0x91, 0x00, 0x0d, 0x00, 0x08, 0x00, 0x00,
0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
}}, },
{ 0, NULL }, // Sentinel NULL, // Sentinel
}; };
unsigned char flash_read_command[] = { unsigned char flash_read_command[] = {
0x02, 0x91, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x02, 0x91, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00,
@@ -458,8 +455,8 @@ static bool HIDAPI_DriverSwitch2_InitUSB(SDL_HIDAPI_Device *device)
} }
} }
for (int i = 0; init_sequence[i].size; i++) { for (int i = 0; init_sequence[i]; i++) {
res = SendBulkData(ctx, init_sequence[i].data, init_sequence[i].size); res = SendBulkData(ctx, init_sequence[i], init_sequence[i][5] + 8);
if (res < 0) { if (res < 0) {
return SDL_SetError("Couldn't send initialization data: %d\n", res); return SDL_SetError("Couldn't send initialization data: %d\n", res);
} }