1
0
Fork 0
forked from suyu/suyu

Address lioncash feedback: Log formatting, extern const PadButtonArray, little touch ups

This commit is contained in:
Ameer 2020-07-03 11:52:07 -04:00
parent 6e1639c7b0
commit e69d715e3d
3 changed files with 32 additions and 24 deletions

View file

@ -9,6 +9,14 @@
namespace GCAdapter { namespace GCAdapter {
/// Used to loop through and assign button in poller
constexpr std::array<PadButton, 12> PadButtonArray{
PadButton::PAD_BUTTON_LEFT, PadButton::PAD_BUTTON_RIGHT, PadButton::PAD_BUTTON_DOWN,
PadButton::PAD_BUTTON_UP, PadButton::PAD_TRIGGER_Z, PadButton::PAD_TRIGGER_R,
PadButton::PAD_TRIGGER_L, PadButton::PAD_BUTTON_A, PadButton::PAD_BUTTON_B,
PadButton::PAD_BUTTON_X, PadButton::PAD_BUTTON_Y, PadButton::PAD_BUTTON_START,
};
Adapter::Adapter() { Adapter::Adapter() {
if (usb_adapter_handle != nullptr) { if (usb_adapter_handle != nullptr) {
return; return;
@ -32,27 +40,31 @@ GCPadStatus Adapter::GetPadStatus(int port, const std::array<u8, 37>& adapter_pa
adapter_controllers_status[port] = type; adapter_controllers_status[port] = type;
constexpr std::array<PadButton, 8> b1_buttons{ static constexpr std::array<PadButton, 8> b1_buttons{
PadButton::PAD_BUTTON_A, PadButton::PAD_BUTTON_B, PadButton::PAD_BUTTON_X, PadButton::PAD_BUTTON_A, PadButton::PAD_BUTTON_B, PadButton::PAD_BUTTON_X,
PadButton::PAD_BUTTON_Y, PadButton::PAD_BUTTON_LEFT, PadButton::PAD_BUTTON_RIGHT, PadButton::PAD_BUTTON_Y, PadButton::PAD_BUTTON_LEFT, PadButton::PAD_BUTTON_RIGHT,
PadButton::PAD_BUTTON_DOWN, PadButton::PAD_BUTTON_UP}; PadButton::PAD_BUTTON_DOWN, PadButton::PAD_BUTTON_UP,
};
constexpr std::array<PadButton, 4> b2_buttons{ static constexpr std::array<PadButton, 4> b2_buttons{
PadButton::PAD_BUTTON_START, PadButton::PAD_TRIGGER_Z, PadButton::PAD_TRIGGER_R, PadButton::PAD_BUTTON_START,
PadButton::PAD_TRIGGER_L}; PadButton::PAD_TRIGGER_Z,
PadButton::PAD_TRIGGER_R,
PadButton::PAD_TRIGGER_L,
};
if (adapter_controllers_status[port] != ControllerTypes::None) { if (adapter_controllers_status[port] != ControllerTypes::None) {
const u8 b1 = adapter_payload[1 + (9 * port) + 1]; const u8 b1 = adapter_payload[1 + (9 * port) + 1];
const u8 b2 = adapter_payload[1 + (9 * port) + 2]; const u8 b2 = adapter_payload[1 + (9 * port) + 2];
for (std::size_t i = 0; i < b1_buttons.size(); ++i) { for (std::size_t i = 0; i < b1_buttons.size(); ++i) {
if (b1 & (1 << i)) { if ((b1 & (1U << i)) != 0) {
pad.button |= static_cast<u16>(b1_buttons[i]); pad.button |= static_cast<u16>(b1_buttons[i]);
} }
} }
for (std::size_t j = 0; j < b2_buttons.size(); ++j) { for (std::size_t j = 0; j < b2_buttons.size(); ++j) {
if (b2 & (1 << j)) { if ((b2 & (1U << j)) != 0) {
pad.button |= static_cast<u16>(b2_buttons[j]); pad.button |= static_cast<u16>(b2_buttons[j]);
} }
} }
@ -107,7 +119,7 @@ void Adapter::Read() {
if (payload_size_copy != sizeof(adapter_payload_copy) || if (payload_size_copy != sizeof(adapter_payload_copy) ||
adapter_payload_copy[0] != LIBUSB_DT_HID) { adapter_payload_copy[0] != LIBUSB_DT_HID) {
LOG_ERROR(Input, "error reading payload (size: %d, type: %02x)", payload_size_copy, LOG_ERROR(Input, "error reading payload (size: {}, type: {:02x})", payload_size_copy,
adapter_payload_copy[0]); adapter_payload_copy[0]);
adapter_thread_running = false; // error reading from adapter, stop reading. adapter_thread_running = false; // error reading from adapter, stop reading.
break; break;
@ -220,7 +232,7 @@ bool Adapter::CheckDeviceAccess(libusb_device* device) {
const int get_descriptor_error = libusb_get_device_descriptor(device, &desc); const int get_descriptor_error = libusb_get_device_descriptor(device, &desc);
if (get_descriptor_error) { if (get_descriptor_error) {
// could not acquire the descriptor, no point in trying to use it. // could not acquire the descriptor, no point in trying to use it.
LOG_ERROR(Input, "libusb_get_device_descriptor failed with error: %d", LOG_ERROR(Input, "libusb_get_device_descriptor failed with error: {}",
get_descriptor_error); get_descriptor_error);
return false; return false;
} }
@ -232,12 +244,12 @@ bool Adapter::CheckDeviceAccess(libusb_device* device) {
const int open_error = libusb_open(device, &usb_adapter_handle); const int open_error = libusb_open(device, &usb_adapter_handle);
if (open_error == LIBUSB_ERROR_ACCESS) { if (open_error == LIBUSB_ERROR_ACCESS) {
LOG_ERROR(Input, "Yuzu can not gain access to this device: ID %04X:%04X.", desc.idVendor, LOG_ERROR(Input, "Yuzu can not gain access to this device: ID {:04X}:{:04X}.",
desc.idProduct); desc.idVendor, desc.idProduct);
return false; return false;
} }
if (open_error) { if (open_error) {
LOG_ERROR(Input, "libusb_open failed to open device with error = %d", open_error); LOG_ERROR(Input, "libusb_open failed to open device with error = {}", open_error);
return false; return false;
} }
@ -245,7 +257,7 @@ bool Adapter::CheckDeviceAccess(libusb_device* device) {
if (kernel_driver_error == 1) { if (kernel_driver_error == 1) {
kernel_driver_error = libusb_detach_kernel_driver(usb_adapter_handle, 0); kernel_driver_error = libusb_detach_kernel_driver(usb_adapter_handle, 0);
if (kernel_driver_error != 0 && kernel_driver_error != LIBUSB_ERROR_NOT_SUPPORTED) { if (kernel_driver_error != 0 && kernel_driver_error != LIBUSB_ERROR_NOT_SUPPORTED) {
LOG_ERROR(Input, "libusb_detach_kernel_driver failed with error = %d", LOG_ERROR(Input, "libusb_detach_kernel_driver failed with error = {}",
kernel_driver_error); kernel_driver_error);
} }
} }
@ -258,7 +270,7 @@ bool Adapter::CheckDeviceAccess(libusb_device* device) {
const int interface_claim_error = libusb_claim_interface(usb_adapter_handle, 0); const int interface_claim_error = libusb_claim_interface(usb_adapter_handle, 0);
if (interface_claim_error) { if (interface_claim_error) {
LOG_ERROR(Input, "libusb_claim_interface failed with error = %d", interface_claim_error); LOG_ERROR(Input, "libusb_claim_interface failed with error = {}", interface_claim_error);
libusb_close(usb_adapter_handle); libusb_close(usb_adapter_handle);
usb_adapter_handle = nullptr; usb_adapter_handle = nullptr;
return false; return false;

View file

@ -36,12 +36,7 @@ enum class PadButton {
PAD_STICK = 0x2000, PAD_STICK = 0x2000,
}; };
/// Used to loop through the and assign button in poller extern const std::array<PadButton, 12> PadButtonArray;
static constexpr std::array<PadButton, 12> PadButtonArray{
PadButton::PAD_BUTTON_LEFT, PadButton::PAD_BUTTON_RIGHT, PadButton::PAD_BUTTON_DOWN,
PadButton::PAD_BUTTON_UP, PadButton::PAD_TRIGGER_Z, PadButton::PAD_TRIGGER_R,
PadButton::PAD_TRIGGER_L, PadButton::PAD_BUTTON_A, PadButton::PAD_BUTTON_B,
PadButton::PAD_BUTTON_X, PadButton::PAD_BUTTON_Y, PadButton::PAD_BUTTON_START};
enum class PadAxes : u8 { enum class PadAxes : u8 {
StickX, StickX,

View file

@ -14,7 +14,7 @@ namespace InputCommon {
class GCButton final : public Input::ButtonDevice { class GCButton final : public Input::ButtonDevice {
public: public:
explicit GCButton(int port_, int button_, int axis_, GCAdapter::Adapter* adapter) explicit GCButton(int port_, int button_, GCAdapter::Adapter* adapter)
: port(port_), button(button_), gcadapter(adapter) {} : port(port_), button(button_), gcadapter(adapter) {}
~GCButton() override; ~GCButton() override;
@ -45,7 +45,9 @@ public:
bool GetStatus() const override { bool GetStatus() const override {
const float axis_value = (gcadapter->GetPadState()[port].axes.at(axis) - 128.0f) / 128.0f; const float axis_value = (gcadapter->GetPadState()[port].axes.at(axis) - 128.0f) / 128.0f;
if (trigger_if_greater) { if (trigger_if_greater) {
return axis_value > threshold; // TODO(ameerj) : Fix threshold. // TODO: Might be worthwile to set a slider for the trigger threshold. It is currently
// always set to 0.5 in configure_input_player.cpp ZL/ZR HandleClick
return axis_value > threshold;
} }
return axis_value < -threshold; return axis_value < -threshold;
} }
@ -71,8 +73,7 @@ std::unique_ptr<Input::ButtonDevice> GCButtonFactory::Create(const Common::Param
// button is not an axis/stick button // button is not an axis/stick button
if (button_id != PAD_STICK_ID) { if (button_id != PAD_STICK_ID) {
std::unique_ptr<GCButton> button = auto button = std::make_unique<GCButton>(port, button_id, adapter.get());
std::make_unique<GCButton>(port, button_id, params.Get("axis", 0), adapter.get());
return std::move(button); return std::move(button);
} }