1
0
mirror of https://github.com/cathery/sys-con.git synced 2024-07-05 10:48:46 +00:00

More usb event error checking

This commit is contained in:
cathery 2020-03-10 12:46:53 +03:00
parent 96aa0e05ac
commit d5edac6c1b
2 changed files with 13 additions and 7 deletions

View File

@ -32,12 +32,11 @@ namespace syscon::psc
switch (pscState) switch (pscState)
{ {
case PscPmState_ReadyAwaken: case PscPmState_ReadyAwaken:
WriteToLog("Switch is awake! Enabling usb events..."); WriteToLog("Enable usb events: 0x%x", usb::CreateUsbEvents());
usb::CreateUsbEvents();
break; break;
case PscPmState_ReadySleep: case PscPmState_ReadySleep:
case PscPmState_ReadyShutdown: case PscPmState_ReadyShutdown:
WriteToLog("Ready to sleep! Disabling usb events..."); WriteToLog("Destroy usb events");
usb::DestroyUsbEvents(); usb::DestroyUsbEvents();
break; break;
default: default:

View File

@ -168,7 +168,7 @@ namespace syscon::usb
return out_entries; return out_entries;
} }
Result CreateCatchAllAvailableEvent() inline Result CreateCatchAllAvailableEvent()
{ {
constexpr UsbHsInterfaceFilter filter { constexpr UsbHsInterfaceFilter filter {
.Flags = UsbHsInterfaceFilterFlags_bcdDevice_Min, .Flags = UsbHsInterfaceFilterFlags_bcdDevice_Min,
@ -177,7 +177,7 @@ namespace syscon::usb
return usbHsCreateInterfaceAvailableEvent(&g_usbCatchAllEvent, true, CatchAllEventIndex, &filter); return usbHsCreateInterfaceAvailableEvent(&g_usbCatchAllEvent, true, CatchAllEventIndex, &filter);
} }
Result CreateDualshock3AvailableEvent() inline Result CreateDualshock3AvailableEvent()
{ {
constexpr UsbHsInterfaceFilter filter { constexpr UsbHsInterfaceFilter filter {
.Flags = UsbHsInterfaceFilterFlags_idVendor | UsbHsInterfaceFilterFlags_idProduct, .Flags = UsbHsInterfaceFilterFlags_idVendor | UsbHsInterfaceFilterFlags_idProduct,
@ -187,7 +187,7 @@ namespace syscon::usb
return usbHsCreateInterfaceAvailableEvent(&g_usbDualshock3Event, true, Dualshock3EventIndex, &filter); return usbHsCreateInterfaceAvailableEvent(&g_usbDualshock3Event, true, Dualshock3EventIndex, &filter);
} }
Result CreateDualshock4AvailableEvent() inline Result CreateDualshock4AvailableEvent()
{ {
const UsbHsInterfaceFilter filter{ const UsbHsInterfaceFilter filter{
.Flags = UsbHsInterfaceFilterFlags_idVendor | UsbHsInterfaceFilterFlags_idProduct, .Flags = UsbHsInterfaceFilterFlags_idVendor | UsbHsInterfaceFilterFlags_idProduct,
@ -211,7 +211,7 @@ namespace syscon::usb
Result Enable() Result Enable()
{ {
CreateUsbEvents(); R_TRY(CreateUsbEvents());
is_usb_event_thread_running = true; is_usb_event_thread_running = true;
R_TRY(g_usb_event_thread.Start().GetValue()); R_TRY(g_usb_event_thread.Start().GetValue());
@ -245,9 +245,16 @@ namespace syscon::usb
Result CreateUsbEvents() Result CreateUsbEvents()
{ {
if (g_usbCatchAllEvent.revent != INVALID_HANDLE)
return 0x99;
R_TRY(CreateCatchAllAvailableEvent()); R_TRY(CreateCatchAllAvailableEvent());
R_TRY(CreateDualshock3AvailableEvent()); R_TRY(CreateDualshock3AvailableEvent());
R_TRY(CreateDualshock4AvailableEvent()); R_TRY(CreateDualshock4AvailableEvent());
/*
R_TRY(g_usb_event_thread.CancelSynchronization().GetValue());
R_TRY(g_ds3_event_thread.CancelSynchronization().GetValue());
R_TRY(g_ds4_event_thread.CancelSynchronization().GetValue());
*/
return 0; return 0;
} }