30#ifndef VRPN_HUMANINTERFACE_H
31#define VRPN_HUMANINTERFACE_H
63#if defined(VRPN_USE_HID)
80 vrpn_uint16 vendor = 0,
82 vrpn_uint16 product = 0,
105 const char *device_path,
109 vrpn_uint16 vendor = 0,
111 vrpn_uint16 product = 0);
116 virtual bool connected()
const;
121 virtual void update();
125 virtual bool reconnect();
130 vrpn_uint16 vendor()
const;
135 vrpn_uint16 product()
const;
140 int interface_number()
const;
156 void send_data(
size_t bytes,
const vrpn_uint8 *buffer);
160 void send_feature_report(
size_t bytes,
const vrpn_uint8 *buffer);
165 int get_feature_report(
size_t bytes, vrpn_uint8 *buffer);
198 void print_error(
const char *function,
const char *msg,
199 bool askHIDAPI =
true)
const;
201 void print_hidapi_error(
const char *function)
const;
226 return (device.
vendor == vendor) && (device.
product == product);
230 vrpn_uint16 product, vendor;
246 const wchar_t *devNum;
285 return delegate->accept(device) && (found++ == target);
294 size_t target, found;
312 bool p = first->accept(device);
313 bool q = second->accept(device);
342 bool p = first->accept(device);
343 bool q = second->accept(device);
A unique-ownership smart pointer, with the ability to transfer ownership, but only explicitly (aka,...
virtual ~vrpn_HidAcceptor()
virtual bool accept(const vrpn_HIDDEVINFO &device)=0
Always accepts the first device passed. Pointless by itself except for testing.
bool accept(const vrpn_HIDDEVINFO &)
Accepts only devices meeting two criteria. NOT SHORT-CIRCUIT. Another demonstration of acceptor compo...
vrpn_HidBooleanAndAcceptor(vrpn_HidAcceptor *p, vrpn_HidAcceptor *q)
virtual ~vrpn_HidBooleanAndAcceptor()
bool accept(const vrpn_HIDDEVINFO &device)
Accepts devices meeting at least one of two criteria. NOT SHORT-CIRCUIT. Another demonstration of acc...
vrpn_HidBooleanOrAcceptor(vrpn_HidAcceptor *p, vrpn_HidAcceptor *q)
bool accept(const vrpn_HIDDEVINFO &device)
virtual ~vrpn_HidBooleanOrAcceptor()
Accepts any device with a particular interface number. Best in conjunction with vrpn_HidBooleanAndAcc...
bool accept(const vrpn_HIDDEVINFO &device)
vrpn_HidInterfaceNumberAcceptor(int iface)
vrpn_uint16 m_product_sought
What product we want.
vrpn_HidAcceptor * m_acceptor
This is the HidAcceptor we use when reconnecting.
virtual void on_data_received(size_t bytes, vrpn_uint8 *buffer)=0
Derived class reimplements this callback.
vrpn_uint16 m_vendor_sought
What vendor we want.
Accepts the Nth device matching a given acceptor.
vrpn_HidNthMatchAcceptor(size_t index, vrpn_HidAcceptor *acceptor)
virtual ~vrpn_HidNthMatchAcceptor()
bool accept(const vrpn_HIDDEVINFO &device)
Accepts any device with the given vendor and product IDs.
vrpn_HidProductAcceptor(vrpn_uint16 vendorId, vrpn_uint16 productId)
bool accept(const vrpn_HIDDEVINFO &device)
Accepts any device with a particular serial number.
vrpn_HidSerialNumberAcceptor(const wchar_t *serial)
bool accept(const vrpn_HIDDEVINFO &device)
wchar_t * manufacturer_string
struct hid_device_ hid_device