30 #if defined(HAVE_HIDAPI) 32 #include <boost/optional/optional.hpp> 33 #include <hidapi/hidapi.h> 53 struct hid_conn_params {
57 unsigned short usage_page;
61 class device_io_hid: device_io {
67 unsigned short channel;
69 unsigned int packet_size;
74 hid_device *usb_device;
76 void io_hid_log(
int read,
unsigned char*
buf,
int buf_len);
79 void io_hid_open(
int vid,
int pid,
int mode);
80 void io_hid_close (
void);
82 unsigned int wrapCommand(
const unsigned char *command,
size_t command_len,
unsigned char *out,
size_t out_len);
83 unsigned int unwrapReponse(
const unsigned char *data,
size_t data_len,
unsigned char *out,
size_t out_len);
85 hid_device_info *find_device(hid_device_info *devices_list, boost::optional<int> interface_number, boost::optional<unsigned short> usage_page);
88 bool hid_verbose =
false;
90 static const unsigned short DEFAULT_CHANNEL = 0x0001;
91 static const unsigned char DEFAULT_TAG = 0x01;
92 static const unsigned int DEFAULT_PACKET_SIZE = 64;
93 static const unsigned int DEFAULT_TIMEOUT = 120000;
95 device_io_hid(
unsigned short channel,
unsigned char tag,
unsigned int packet_zize,
unsigned int timeout);
100 void connect(
void *params);
101 void connect(
const std::vector<hid_conn_params> &conn);
102 hid_device *connect(
unsigned int vid,
unsigned int pid, boost::optional<int> interface_number, boost::optional<unsigned short> usage_page);
103 bool connected()
const;
104 int exchange(
unsigned char *command,
unsigned int cmd_len,
unsigned char *
response,
unsigned int max_resp_len,
bool user_input);
111 #endif //#if defined(HAVE_HIDAPI)
epee::misc_utils::struct_init< response_t > response