| // Copyright 2022 The ChromiumOS Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef LIBEC_LIBUSB_WRAPPER_H_ |
| #define LIBEC_LIBUSB_WRAPPER_H_ |
| |
| #include <libusb-1.0/libusb.h> |
| |
| namespace ec { |
| |
| class LibusbWrapper { |
| public: |
| virtual ~LibusbWrapper() = default; |
| |
| virtual int init(libusb_context** ctx) { return ::libusb_init(ctx); } |
| virtual void exit(libusb_context* ctx) { ::libusb_exit(ctx); } |
| virtual ssize_t get_device_list(libusb_context* ctx, libusb_device*** list) { |
| return ::libusb_get_device_list(ctx, list); |
| } |
| virtual int get_device_descriptor(libusb_device* dev, |
| struct libusb_device_descriptor* desc) { |
| return ::libusb_get_device_descriptor(dev, desc); |
| } |
| virtual void free_device_list(libusb_device** list, int unref_devices) { |
| ::libusb_free_device_list(list, unref_devices); |
| } |
| virtual int open(libusb_device* dev, libusb_device_handle** dev_handle) { |
| return ::libusb_open(dev, dev_handle); |
| } |
| virtual void close(libusb_device_handle* dev_handle) { |
| ::libusb_close(dev_handle); |
| } |
| virtual libusb_device* get_device(libusb_device_handle* dev_handle) { |
| return ::libusb_get_device(dev_handle); |
| } |
| virtual int get_active_config_descriptor( |
| libusb_device* dev, struct libusb_config_descriptor** config) { |
| return ::libusb_get_active_config_descriptor(dev, config); |
| } |
| virtual void free_config_descriptor(struct libusb_config_descriptor* config) { |
| ::libusb_free_config_descriptor(config); |
| } |
| virtual int claim_interface(libusb_device_handle* dev_handle, |
| int interface_number) { |
| return ::libusb_claim_interface(dev_handle, interface_number); |
| } |
| virtual int release_interface(libusb_device_handle* dev_handle, |
| int interface_number) { |
| return ::libusb_release_interface(dev_handle, interface_number); |
| } |
| }; |
| |
| } // namespace ec |
| |
| #endif // LIBEC_LIBUSB_WRAPPER_H_ |