diff options
author | Ameer <aj662@drexel.edu> | 2020-07-01 18:52:50 +0200 |
---|---|---|
committer | Ameer <aj662@drexel.edu> | 2020-07-01 18:52:50 +0200 |
commit | 34a590e50966341cec5f1874410931decbce284f (patch) | |
tree | 34fa09874826a5ef21fcb495e0a4cde783592fda /src/input_common/gcadapter | |
parent | Address feedback regarding increments, const vars, and general cleanup (diff) | |
download | yuzu-34a590e50966341cec5f1874410931decbce284f.tar yuzu-34a590e50966341cec5f1874410931decbce284f.tar.gz yuzu-34a590e50966341cec5f1874410931decbce284f.tar.bz2 yuzu-34a590e50966341cec5f1874410931decbce284f.tar.lz yuzu-34a590e50966341cec5f1874410931decbce284f.tar.xz yuzu-34a590e50966341cec5f1874410931decbce284f.tar.zst yuzu-34a590e50966341cec5f1874410931decbce284f.zip |
Diffstat (limited to 'src/input_common/gcadapter')
-rw-r--r-- | src/input_common/gcadapter/gc_adapter.cpp | 8 | ||||
-rw-r--r-- | src/input_common/gcadapter/gc_adapter.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/input_common/gcadapter/gc_adapter.cpp b/src/input_common/gcadapter/gc_adapter.cpp index b98b85441..1ddb9cdb4 100644 --- a/src/input_common/gcadapter/gc_adapter.cpp +++ b/src/input_common/gcadapter/gc_adapter.cpp @@ -97,6 +97,7 @@ void Adapter::Read() { libusb_interrupt_transfer(usb_adapter_handle, input_endpoint, adapter_payload.data(), sizeof(adapter_payload), &payload_size_in, 16); payload_size_copy = 0; + // this mutex might be redundant? { std::lock_guard<std::mutex> lk(s_mutex); std::copy(std::begin(adapter_payload), std::end(adapter_payload), @@ -265,10 +266,17 @@ void Adapter::GetGCEndpoint(libusb_device* device) { const libusb_endpoint_descriptor* endpoint = &interface->endpoint[e]; if (endpoint->bEndpointAddress & LIBUSB_ENDPOINT_IN) { input_endpoint = endpoint->bEndpointAddress; + } else { + output_endpoint = endpoint->bEndpointAddress; } } } } + // This transfer seems to be responsible for clearing the state of the adapter + // Used to clear the "busy" state of when the device is unexpectedly unplugged + unsigned char clear_payload = 0x13; + libusb_interrupt_transfer(usb_adapter_handle, output_endpoint, &clear_payload, + sizeof(clear_payload), nullptr, 16); adapter_thread_running = true; current_status = ADAPTER_DETECTED; diff --git a/src/input_common/gcadapter/gc_adapter.h b/src/input_common/gcadapter/gc_adapter.h index 91aa9622b..4a8e2644c 100644 --- a/src/input_common/gcadapter/gc_adapter.h +++ b/src/input_common/gcadapter/gc_adapter.h @@ -152,6 +152,7 @@ private: libusb_context* libusb_ctx; u8 input_endpoint = 0; + u8 output_endpoint = 0; bool configuring = false; |