@@ -88,7 +88,7 @@ static void Read()
int err = libusb_interrupt_transfer (s_handle, s_endpoint_in, s_controller_payload_swap,
sizeof (s_controller_payload_swap), &payload_size, 16 );
if (err)
ERROR_LOG (SERIALINTERFACE, " adapter libusb read failed: err=%s " , libusb_error_name (err));
ERROR_LOG_FMT (SERIALINTERFACE, " adapter libusb read failed: err={} " , libusb_error_name (err));
{
std::lock_guard<std::mutex> lk (s_mutex);
@@ -111,12 +111,17 @@ static void Write()
if (!s_adapter_thread_running.IsSet ())
return ;
u8 payload[5 ] = {0x11 , s_controller_rumble[0 ], s_controller_rumble[1 ], s_controller_rumble[2 ],
s_controller_rumble[3 ]};
int err =
u8 payload[5 ] = {
0x11 ,
s_controller_rumble[0 ],
s_controller_rumble[1 ],
s_controller_rumble[2 ],
s_controller_rumble[3 ],
};
const int err =
libusb_interrupt_transfer (s_handle, s_endpoint_out, payload, sizeof (payload), &size, 16 );
if (err)
ERROR_LOG (SERIALINTERFACE, " adapter libusb write failed: err=%s " , libusb_error_name (err));
if (err != 0 )
ERROR_LOG_FMT (SERIALINTERFACE, " adapter libusb write failed: err={} " , libusb_error_name (err));
}
}
@@ -149,7 +154,7 @@ static int HotplugCallback(libusb_context* ctx, libusb_device* dev, libusb_hotpl
static void ScanThreadFunc ()
{
Common::SetCurrentThreadName (" GC Adapter Scanning Thread" );
NOTICE_LOG (SERIALINTERFACE, " GC Adapter scanning thread started" );
NOTICE_LOG_FMT (SERIALINTERFACE, " GC Adapter scanning thread started" );
#if defined(LIBUSB_API_VERSION) && LIBUSB_API_VERSION >= 0x01000102
#ifndef __FreeBSD__
@@ -165,7 +170,7 @@ static void ScanThreadFunc()
nullptr , &s_hotplug_handle) != LIBUSB_SUCCESS)
s_libusb_hotplug_enabled = false ;
if (s_libusb_hotplug_enabled)
NOTICE_LOG (SERIALINTERFACE, " Using libUSB hotplug detection" );
NOTICE_LOG_FMT (SERIALINTERFACE, " Using libUSB hotplug detection" );
}
#endif
@@ -182,10 +187,10 @@ static void ScanThreadFunc()
else
Common::SleepCurrentThread (500 );
}
NOTICE_LOG (SERIALINTERFACE, " GC Adapter scanning thread stopped" );
NOTICE_LOG_FMT (SERIALINTERFACE, " GC Adapter scanning thread stopped" );
}
void SetAdapterCallback (std::function<void (void )> func)
void SetAdapterCallback (std::function<void ()> func)
{
s_detect_callback = func;
}
@@ -257,10 +262,10 @@ static bool CheckDeviceAccess(libusb_device* device)
{
libusb_device_descriptor desc;
int ret = libusb_get_device_descriptor (device, &desc);
if (ret)
if (ret != 0 )
{
// could not acquire the descriptor, no point in trying to use it.
ERROR_LOG (SERIALINTERFACE, " libusb_get_device_descriptor failed with error: %d " , ret);
ERROR_LOG_FMT (SERIALINTERFACE, " libusb_get_device_descriptor failed with error: {} " , ret);
return false ;
}
@@ -270,25 +275,26 @@ static bool CheckDeviceAccess(libusb_device* device)
return false ;
}
NOTICE_LOG (SERIALINTERFACE, " Found GC Adapter with Vendor: %X Product: %X Devnum: %d " ,
desc.idVendor , desc.idProduct , 1 );
NOTICE_LOG_FMT (SERIALINTERFACE, " Found GC Adapter with Vendor: {:X} Product: {:X} Devnum: {} " ,
desc.idVendor , desc.idProduct , 1 );
// In case of failure, capture the libusb error code into the adapter status
Common::ScopeGuard status_guard ([&ret] { s_status = ret; });
u8 bus = libusb_get_bus_number (device);
u8 port = libusb_get_device_address (device);
const u8 bus = libusb_get_bus_number (device);
const u8 port = libusb_get_device_address (device);
ret = libusb_open (device, &s_handle);
if (ret == LIBUSB_ERROR_ACCESS)
{
ERROR_LOG (SERIALINTERFACE,
" Dolphin does not have access to this device: Bus %03d Device %03d: ID %04X:%04X." ,
bus, port, desc.idVendor , desc.idProduct );
ERROR_LOG_FMT (
SERIALINTERFACE,
" Dolphin does not have access to this device: Bus {:03d} Device {:03d}: ID {:04X}:{:04X}." ,
bus, port, desc.idVendor , desc.idProduct );
return false ;
}
if (ret)
if (ret != 0 )
{
ERROR_LOG (SERIALINTERFACE, " libusb_open failed to open device with error = %d " , ret);
ERROR_LOG_FMT (SERIALINTERFACE, " libusb_open failed to open device with error = {} " , ret);
return false ;
}
@@ -297,14 +303,14 @@ static bool CheckDeviceAccess(libusb_device* device)
{
ret = libusb_detach_kernel_driver (s_handle, 0 );
if (ret != 0 && ret != LIBUSB_ERROR_NOT_SUPPORTED)
ERROR_LOG (SERIALINTERFACE, " libusb_detach_kernel_driver failed with error: %d " , ret);
ERROR_LOG_FMT (SERIALINTERFACE, " libusb_detach_kernel_driver failed with error: {} " , ret);
}
// This call makes Nyko-brand (and perhaps other) adapters work.
// However it returns LIBUSB_ERROR_PIPE with Mayflash adapters.
const int transfer = libusb_control_transfer (s_handle, 0x21 , 11 , 0x0001 , 0 , nullptr , 0 , 1000 );
if (transfer < 0 )
WARN_LOG (SERIALINTERFACE, " libusb_control_transfer failed with error: %d " , transfer);
WARN_LOG_FMT (SERIALINTERFACE, " libusb_control_transfer failed with error: {} " , transfer);
// this split is needed so that we don't avoid claiming the interface when
// detaching the kernel driver is successful
@@ -316,9 +322,9 @@ static bool CheckDeviceAccess(libusb_device* device)
}
ret = libusb_claim_interface (s_handle, 0 );
if (ret)
if (ret != 0 )
{
ERROR_LOG (SERIALINTERFACE, " libusb_claim_interface failed with error: %d " , ret);
ERROR_LOG_FMT (SERIALINTERFACE, " libusb_claim_interface failed with error: {} " , ret);
libusb_close (s_handle);
s_handle = nullptr ;
return false ;
@@ -404,7 +410,7 @@ static void Reset()
}
if (s_detect_callback != nullptr )
s_detect_callback ();
NOTICE_LOG (SERIALINTERFACE, " GC Adapter detached" );
NOTICE_LOG_FMT (SERIALINTERFACE, " GC Adapter detached" );
}
GCPadStatus Input (int chan)
@@ -430,8 +436,8 @@ GCPadStatus Input(int chan)
controller_payload_copy[0 ] != LIBUSB_DT_HID)
{
// This can occur for a few frames on initialization.
ERROR_LOG (SERIALINTERFACE, " error reading payload (size: %d , type: % 02x)" , payload_size,
controller_payload_copy[0 ]);
ERROR_LOG_FMT (SERIALINTERFACE, " error reading payload (size: {} , type: {: 02x} )" , payload_size,
controller_payload_copy[0 ]);
}
else
{
@@ -440,8 +446,8 @@ GCPadStatus Input(int chan)
if (type != ControllerTypes::CONTROLLER_NONE &&
s_controller_type[chan] == ControllerTypes::CONTROLLER_NONE)
{
NOTICE_LOG (SERIALINTERFACE, " New device connected to Port %d of Type: % 02x" , chan + 1 ,
controller_payload_copy[1 + (9 * chan)]);
NOTICE_LOG_FMT (SERIALINTERFACE, " New device connected to Port {} of Type: {: 02x} " , chan + 1 ,
controller_payload_copy[1 + (9 * chan)]);
get_origin = true ;
}
@@ -545,7 +551,7 @@ static void ResetRumbleLockNeeded()
int size = 0 ;
libusb_interrupt_transfer (s_handle, s_endpoint_out, rumble, sizeof (rumble), &size, 16 );
INFO_LOG (SERIALINTERFACE, " Rumble state reset" );
INFO_LOG_FMT (SERIALINTERFACE, " Rumble state reset" );
}
void Output (int chan, u8 rumble_command)