co_usb
Loading...
Searching...
No Matches
Wrapper utilities

Some type-safe wrappers and utilities. More...

Concepts

concept  co_usb::detail::DeviceHandlePointer
 A type which can provide libusb_device_handle *.
 
concept  co_usb::detail::DeviceHandleSource
 A type which can provide a co_usb::detail::DeviceHandlePointer.
 
concept  co_usb::detail::ErrorProtocol
 Result protocol for signaling error via error code or full completion.
 

Classes

struct  co_usb::detail::as_exception_t
 Exception error protocol. More...
 
struct  co_usb::detail::as_optional_t
 Error protocol signaling error into a given error code reference and returning an optional. More...
 
struct  co_usb::device_handle
 RAII wrapper around libusb_device_handle*. More...
 
struct  co_usb::device_ref
 Wrapper for nullable libusb_device that increments ref count on ctor and decrements on dtor. More...
 
struct  co_usb::driver_guard
 RAII wrapper for detaching and reattaching kernel driver. More...
 
struct  co_usb::interface
 RAII wrapper for an interface. More...
 

Functions

template<DeviceHandlePointer Ty>
auto co_usb::detail::device_handle_of (Ty &&devh) -> libusb_device_handle *
 Obtains a libusb_device_handle * from a co_usb::detail::DeviceHandlePointer.
 
template<detail::ErrorProtocol< device_handle > ErrTy>
auto co_usb::open_device (boost::capy::executor_ref exec, device_triplet triplet, ErrTy &&errp) -> typename ErrTy::template return_type< device_handle >
 Opens a device by triplet and returns a device_handle or reports an error per error protocol implementation.
 
auto co_usb::open_device (boost::capy::executor_ref exec, device_triplet triplet)
 Opens a device from a device_ref and returns a device_handle or throws an error.
 
template<detail::ErrorProtocol< device_handle > ErrTy>
auto co_usb::open_device (device_ref dev_ref, ErrTy &&errp) -> typename ErrTy::template return_type< device_handle >
 Opens a device from a device_ref and returns a device_handle or reports an error per error protocol implementation.
 
auto co_usb::open_device (device_ref dev_ref)
 Opens a device from a device_ref and returns a device_handle or throws an error.
 
template<detail::ErrorProtocol< driver_guard > ErrTy>
auto co_usb::detach_driver (detail::DeviceHandleSource auto const &devh_src, int interface_num, ErrTy &&errp=as_exception()) -> typename ErrTy::template return_type< driver_guard >
 Detaches the kernel driver and returns a driver_guard or reports an error per error protocol implementation.
 
auto co_usb::detach_driver (detail::DeviceHandleSource auto const &devh_src, int interface_num) -> driver_guard
 Detaches the kernel driver and returns a driver_guard or throws an error.
 
template<detail::ErrorProtocol< interface > ErrTy>
auto co_usb::claim_interface (detail::DeviceHandleSource auto const &devh_src, int interface_num, ErrTy &&errp=as_exception()) -> typename ErrTy::template return_type< interface >
 Claims the interface and returns a interface or reports an error per error protocol implementation.
 
auto co_usb::claim_interface (detail::DeviceHandleSource auto const &devh_src, int interface_num) -> interface
 Claims the interface and returns a interface or throws an error.
 

Detailed Description

Some type-safe wrappers and utilities.

Function Documentation

◆ claim_interface() [1/2]

auto co_usb::claim_interface ( detail::DeviceHandleSource auto const &  devh_src,
int  interface_num 
) -> interface
inline

Claims the interface and returns a interface or throws an error.

Exceptions
std::system_erroron operation failure.

◆ claim_interface() [2/2]

template<detail::ErrorProtocol< interface > ErrTy>
auto co_usb::claim_interface ( detail::DeviceHandleSource auto const &  devh_src,
int  interface_num,
ErrTy &&  errp = as_exception() 
) -> typename ErrTy::template return_type<interface>

Claims the interface and returns a interface or reports an error per error protocol implementation.

Template Parameters
ErrorTydetail::ErrorProtocol

◆ detach_driver() [1/2]

auto co_usb::detach_driver ( detail::DeviceHandleSource auto const &  devh_src,
int  interface_num 
) -> driver_guard
inline

Detaches the kernel driver and returns a driver_guard or throws an error.

Exceptions
std::system_erroron operation failure.

◆ detach_driver() [2/2]

template<detail::ErrorProtocol< driver_guard > ErrTy>
auto co_usb::detach_driver ( detail::DeviceHandleSource auto const &  devh_src,
int  interface_num,
ErrTy &&  errp = as_exception() 
) -> typename ErrTy::template return_type<driver_guard>

Detaches the kernel driver and returns a driver_guard or reports an error per error protocol implementation.

Template Parameters
ErrorTydetail::ErrorProtocol

◆ device_handle_of()

template<DeviceHandlePointer Ty>
auto co_usb::detail::device_handle_of ( Ty &&  devh_src) -> libusb_device_handle *

Obtains a libusb_device_handle * from a co_usb::detail::DeviceHandlePointer.

Obtains a libusb_device_handle * from a co_usb::detail::DeviceHandleSource.

Template Parameters
Tytype which models DeviceHandlePointer
Parameters
devhinstance of type Ty

Depending on the exact nature of the type will either return the object itself or call get.

Template Parameters
Tytype which models DeviceHandleSource
Parameters
devhinstance of type Ty

Depending on the exact nature of the type will either return the result of device_handle_of call on the object itself or on the result of get.

◆ open_device() [1/4]

auto co_usb::open_device ( boost::capy::executor_ref  exec,
device_triplet  triplet 
)
inline

Opens a device from a device_ref and returns a device_handle or throws an error.

Exceptions
std::system_erroron operation failure.

◆ open_device() [2/4]

template<detail::ErrorProtocol< device_handle > ErrTy>
auto co_usb::open_device ( boost::capy::executor_ref  exec,
device_triplet  triplet,
ErrTy &&  errp 
) -> typename ErrTy::template return_type<device_handle>

Opens a device by triplet and returns a device_handle or reports an error per error protocol implementation.

Template Parameters
ErrorTydetail::ErrorProtocol

◆ open_device() [3/4]

auto co_usb::open_device ( device_ref  dev_ref)
inline

Opens a device from a device_ref and returns a device_handle or throws an error.

Exceptions
std::system_erroron operation failure.

◆ open_device() [4/4]

template<detail::ErrorProtocol< device_handle > ErrTy>
auto co_usb::open_device ( device_ref  dev_ref,
ErrTy &&  errp 
) -> typename ErrTy::template return_type<device_handle>

Opens a device from a device_ref and returns a device_handle or reports an error per error protocol implementation.

Template Parameters
ErrorTydetail::ErrorProtocol