blob: 95cbd23e09562a83e5f47ebb01d867734fd3b56c [file] [log] [blame]
// 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_