co_usb
Loading...
Searching...
No Matches
raii.hpp
Go to the documentation of this file.
1#pragma once
2
5#include <boost/capy/io_result.hpp>
6#include <libusb-1.0/libusb.h>
7#include <memory>
8#include <type_traits>
9
10namespace co_usb
11{
12
13// Context wrapper is omitted from there since libusb_init requires pointer to pointer which you
14// cannot get from unique_ptr.
15// @see context.hpp
16
17// Device handle
18using dev_handle_deleter_t = std::decay_t<decltype(libusb_close)>;
19using unique_dev_handle = std::unique_ptr<libusb_device_handle, dev_handle_deleter_t>;
20
21boost::capy::io_result<unique_dev_handle> open(libusb_context *ctx,
22 device_triplet triplet) noexcept;
23boost::capy::io_result<unique_dev_handle> open(libusb_device *dev) noexcept;
24boost::capy::io_result<unique_dev_handle> open(device_ref dev) noexcept;
25
26// Transfer
27using transfer_deleter_t = std::decay_t<decltype(libusb_free_transfer)>;
28using unique_transfer = std::unique_ptr<libusb_transfer, transfer_deleter_t>;
29
30} // namespace co_usb
Definition context.hpp:14
std::unique_ptr< libusb_device_handle, dev_handle_deleter_t > unique_dev_handle
Definition raii.hpp:19
std::decay_t< decltype(libusb_free_transfer)> transfer_deleter_t
Definition raii.hpp:27
std::unique_ptr< libusb_transfer, transfer_deleter_t > unique_transfer
Definition raii.hpp:28
use_service
Definition context.hpp:17
boost::capy::io_result< unique_dev_handle > open(libusb_context *ctx, device_triplet triplet) noexcept
Definition raii.cpp:6
std::decay_t< decltype(libusb_close)> dev_handle_deleter_t
Definition raii.hpp:18
Wrapper for nullable libusb_device that increments ref count on ctor and decrements on dtor.
Definition device_ref.hpp:17
Aggregate struct to pass to functions requiring device information.
Definition device_triplet.hpp:14