mirror of
https://github.com/cathery/sys-con.git
synced 2025-03-13 16:19:09 +00:00
Merge pull request #1 from italobechepeche/feature/hori-ps4-tatacon-support
Feature/hori ps4 tatacon support
This commit is contained in:
commit
d5479d1b80
@ -15,6 +15,7 @@ enum VendorIDs : uint16_t
|
||||
{
|
||||
VENDOR_MICROSOFT = 0x45e,
|
||||
VENDOR_SONY = 0x54c,
|
||||
VENDOR_HORI = 0xf0d,
|
||||
};
|
||||
|
||||
enum ProductIDs : uint16_t
|
||||
@ -29,6 +30,8 @@ enum ProductIDs : uint16_t
|
||||
PRODUCT_DUALSHOCK3 = 0x268,
|
||||
PRODUCT_DUALSHOCK4_1X = 0x5c4,
|
||||
PRODUCT_DUALSHOCK4_2X = 0x9cc,
|
||||
|
||||
PRODUCT_HORI_PS4_TATACON = 0xc9,
|
||||
};
|
||||
|
||||
enum ControllerSupport : uint8_t
|
||||
|
@ -82,6 +82,16 @@ Result CreateDualshock4AvailableEvent(Event &out)
|
||||
return rc;
|
||||
}
|
||||
|
||||
Result CreateHoriPs4TataconAvailableEvent(Event &out)
|
||||
{
|
||||
g_filter = {};
|
||||
g_filter.Flags = UsbHsInterfaceFilterFlags_idVendor | UsbHsInterfaceFilterFlags_idProduct;
|
||||
g_filter.idVendor = VENDOR_HORI;
|
||||
g_filter.idProduct = PRODUCT_HORI_PS4_TATACON;
|
||||
Result rc = usbHsCreateInterfaceAvailableEvent(&out, true, DS4EVENT_INDEX, &g_filter);
|
||||
return rc;
|
||||
}
|
||||
|
||||
Result CreateAllAvailableEvent(Event &out)
|
||||
{
|
||||
g_filter = {};
|
||||
@ -121,18 +131,22 @@ Result QueryVendorProduct(UsbHsInterface *interfaces, size_t interfaces_size, s3
|
||||
Event catchAllEvent;
|
||||
Event ds3Event;
|
||||
Event ds4Event;
|
||||
Event horiPs4TataconEvent;
|
||||
|
||||
Result inline OpenEvents()
|
||||
{
|
||||
Result rc = CreateAllAvailableEvent(catchAllEvent);
|
||||
if (R_FAILED(rc))
|
||||
return 3;
|
||||
return 4;
|
||||
rc = CreateDualshck3AvailableEvent(ds3Event);
|
||||
if (R_FAILED(rc))
|
||||
return 1;
|
||||
rc = CreateDualshock4AvailableEvent(ds4Event);
|
||||
if (R_FAILED(rc))
|
||||
return 2;
|
||||
rc = CreateHoriPs4TataconAvailableEvent(horiPs4TataconEvent);
|
||||
if (R_FAILED(rc))
|
||||
return 3;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -141,7 +155,9 @@ void inline CloseEvents()
|
||||
{
|
||||
usbHsDestroyInterfaceAvailableEvent(&ds3Event, DS3EVENT_INDEX);
|
||||
usbHsDestroyInterfaceAvailableEvent(&ds4Event, DS4EVENT_INDEX);
|
||||
usbHsDestroyInterfaceAvailableEvent(&horiPs4TataconEvent, DS4EVENT_INDEX);
|
||||
usbHsDestroyInterfaceAvailableEvent(&catchAllEvent, ALLEVENT_INDEX);
|
||||
|
||||
}
|
||||
|
||||
struct PSCLoopBuffer
|
||||
@ -222,6 +238,12 @@ void CheckForInterfaces()
|
||||
controllerPtr = std::make_unique<Dualshock4Controller>(std::make_unique<SwitchUSBDevice>(interfaces, total_entries));
|
||||
WriteToLog("Registered DS4 controller");
|
||||
}
|
||||
else if (R_SUCCEEDED(QueryVendorProduct(interfaces, sizeof(interfaces), &total_entries, VENDOR_HORI, PRODUCT_HORI_PS4_TATACON)))
|
||||
{
|
||||
controllerPtr = std::make_unique<Dualshock4Controller>(std::make_unique<SwitchUSBDevice>(interfaces, total_entries));
|
||||
WriteToLog("Registered HORI PS4 Tatacon controller");
|
||||
}
|
||||
|
||||
CallInitHandler(controllerPtr);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user