43template <endpo
int_direction Direction = endpo
int_direction::any>
struct endpoint
53 template <co_usb::detail::DeviceHandleSource DevSourceTy>
70 template <co_usb::detail::DeviceHandleSource DevSourceTy>
81 template <co_usb::detail::DeviceHandleSource DevSourceTy>
87 if (ep & LIBUSB_ENDPOINT_IN)
89 throw std::invalid_argument{
"Cannot use IN endpoint for OUT"};
94 if (!(ep & LIBUSB_ENDPOINT_IN))
96 throw std::invalid_argument{
"Cannot use OUT endpoint for IN"};
108 auto devh () const noexcept -> libusb_device_handle *
123 template <endpo
int_direction ToDirection>
124 std::optional<endpoint<ToDirection>>
as () const noexcept
129 if (m_ep & LIBUSB_ENDPOINT_IN)
137 if (m_ep & LIBUSB_ENDPOINT_IN)
146 endpoint (uint8_t ep, libusb_device_handle *
devh) noexcept : m_devh(
devh), m_ep(ep)
151 libusb_device_handle *m_devh;
A type which can provide a co_usb::detail::DeviceHandlePointer.
Definition device_handle_source.hpp:42
endpoint_direction
Direction of an endpoint.
Definition endpoint.hpp:22
auto device_handle_of(Ty &&devh) -> libusb_device_handle *
Obtains a libusb_device_handle * from a co_usb::detail::DeviceHandlePointer.
Definition device_handle_source.hpp:57
Definition complete_io.hpp:18
auto ep_any(uint8_t ep_addr, co_usb::detail::DeviceHandleSource auto const &devh_src) -> endpoint< endpoint_direction::any >
Definition endpoint.hpp:167
auto ep_out(uint8_t ep_addr, co_usb::detail::DeviceHandleSource auto const &devh_src) -> endpoint< endpoint_direction::out >
Definition endpoint.hpp:155
auto ep_in(uint8_t ep_addr, co_usb::detail::DeviceHandleSource auto const &devh_src) -> endpoint< endpoint_direction::in >
Definition endpoint.hpp:161
USB endpoint aggregate templated on its direction.
Definition endpoint.hpp:44
static endpoint< Direction > make_unsafe(uint8_t ep, DevSourceTy const &devh) noexcept
Definition endpoint.hpp:71
uint8_t addr() const noexcept
Definition endpoint.hpp:102
auto devh() const noexcept -> libusb_device_handle *requires(Direction !=endpoint_direction::any)
Definition endpoint.hpp:108
static endpoint< Direction > make_throwing(uint8_t ep, DevSourceTy const &devh)
Creates an endpoint or throws if the address doesn't match expected direction.
Definition endpoint.hpp:82
static endpoint< Direction > make_safe(uint8_t ep, DevSourceTy const &dev_source) noexcept
Makes an endpoint and completes address to proper value.
Definition endpoint.hpp:54
std::optional< endpoint< ToDirection > > as() const noexcept
Cast an any endpoint to a concrete direction.
Definition endpoint.hpp:124