#pragma once typedef void(*usbhotplug_callback)(bool isleft, void* userdata); class IUsb { public: virtual ~IUsb() {} virtual bool open() = 0; virtual void set_usbhotplug_callback(usbhotplug_callback callback=0,void* userdata=0)=0; virtual bool close() = 0; virtual bool is_open() = 0; virtual bool is_connected() = 0; virtual void set_timeout(int timeout) = 0; virtual int read_bulk(void* data, int len) = 0; virtual int write_bulk(void* data, int len) = 0; virtual int read_int(void* data, int len) = 0; virtual int control_msg(int rtype, int req, int value, int index, int len, void* data) = 0; };