From c28ea6b6179a4b82c79f9da1e54f3be4e6947226 Mon Sep 17 00:00:00 2001 From: xiphon Date: Thu, 18 Oct 2018 04:37:30 +0000 Subject: [PATCH] device: fixed Ledger Nano S device selection --- src/device/device_io_hid.cpp | 6 +++--- src/device/device_io_hid.hpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/device/device_io_hid.cpp b/src/device/device_io_hid.cpp index 562aca8b8..0296914e1 100644 --- a/src/device/device_io_hid.cpp +++ b/src/device/device_io_hid.cpp @@ -72,7 +72,7 @@ namespace hw { this->connect(p->vid, p->pid, p->interface_number, p->usage_page, p->interface_OR_page); } - void device_io_hid::connect(unsigned int vid, unsigned int pid, unsigned int interface_number, unsigned int usage_page, bool interface_OR_page ) { + void device_io_hid::connect(unsigned int vid, unsigned int pid, int interface_number, unsigned short usage_page, bool interface_OR_page ) { hid_device_info *hwdev_info, *hwdev_info_list; hid_device *hwdev; @@ -83,8 +83,8 @@ namespace hw { hwdev = NULL; hwdev_info = hwdev_info_list; while (hwdev_info) { - if ((interface_OR_page && ((usage_page == 0xffa0) || (interface_number == 0))) || - ((usage_page == 0xffa0) && (interface_number == 0)) ) { + if ((interface_OR_page && ((hwdev_info->usage_page == usage_page) || (hwdev_info->interface_number == interface_number))) || + ((hwdev_info->usage_page == usage_page) && (hwdev_info->interface_number == interface_number))) { MDEBUG("HID Device found: " << safe_hid_path(hwdev_info)); hwdev = hid_open_path(hwdev_info->path); break; diff --git a/src/device/device_io_hid.hpp b/src/device/device_io_hid.hpp index 6fd15a1d1..ffd3f534f 100644 --- a/src/device/device_io_hid.hpp +++ b/src/device/device_io_hid.hpp @@ -52,8 +52,8 @@ namespace hw { struct hid_conn_params { unsigned int vid; unsigned int pid; - unsigned int interface_number; - unsigned int usage_page; + int interface_number; + unsigned short usage_page; bool interface_OR_page ; }; @@ -100,7 +100,7 @@ namespace hw { void init(); void connect(void *params); - void connect(unsigned int vid, unsigned int pid, unsigned int interface_number, unsigned int usage_page, bool interface_OR_page ); + void connect(unsigned int vid, unsigned int pid, int interface_number, unsigned short usage_page, bool interface_OR_page ); bool connected() const; int exchange(unsigned char *command, unsigned int cmd_len, unsigned char *response, unsigned int max_resp_len); void disconnect();