Address lioncash feedback: Log formatting, extern const PadButtonArray, little touch ups
This commit is contained in:
		
							parent
							
								
									6e1639c7b0
								
							
						
					
					
						commit
						e69d715e3d
					
				@ -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;
 | 
				
			||||||
 | 
				
			|||||||
@ -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,
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user