co_usb
Loading...
Searching...
No Matches
co_usb::transfer Namespace Reference

Namespaces

namespace  detail
 

Classes

struct  bulk_complete_io
 Prefills the transfer sequence as bulk transfers and provides complete I/O operations. More...
 
struct  bulk_partial_io
 Prefills the transfer sequence as bulk transfers and provides partial I/O operations. More...
 
struct  bulk_stream_complete_io
 Prefills the transfer sequence as bulk stream transfers and provides complete I/O operations. More...
 
struct  bulk_stream_partial_io
 Prefills the transfer sequence as bulk stream transfers and provides partial I/O operations. More...
 
struct  control_complete_io
 Prefills the transfer sequence as control transfers and provides complete I/O operations. More...
 
struct  control_partial_io
 Prefills the transfer sequence as control transfers and provides partial I/O operations. More...
 
struct  endpoint
 USB endpoint aggregate templated on its direction. More...
 
struct  interrupt_complete_io
 Prefills the transfer sequence as interrupt transfers and provides complete I/O operations. More...
 
struct  interrupt_partial_io
 Prefills the transfer sequence as interrupt transfers and provides partial I/O operations. More...
 
struct  isochronous_complete_io
 Prefills the transfer sequence as isochronous transfers and provides complete I/O operations. More...
 
struct  isochronous_partial_io
 Prefills the transfer sequence as isochronous transfers and provides partial I/O operations. More...
 
struct  resource
 RAII wrapper over a transfer allocation. More...
 
struct  sequence_view
 View of a certain transfer sequence. Provides a uniform range interface. More...
 
struct  transfer_status_category_t
 

Typedefs

template<detail::TransferSequence TSeq>
using control_sink = control_complete_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::control_complete_io.
 
template<detail::TransferSequence TSeq>
using control_source = control_complete_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::control_complete_io.
 
template<detail::TransferSequence TSeq>
using bulk_sink = bulk_complete_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::bulk_complete_io.
 
template<detail::TransferSequence TSeq>
using bulk_source = bulk_complete_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::bulk_complete_io.
 
template<detail::TransferSequence TSeq>
using interrupt_sink = interrupt_complete_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::interrupt_complete_io.
 
template<detail::TransferSequence TSeq>
using interrupt_source = interrupt_complete_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::interrupt_complete_io.
 
template<detail::TransferSequence TSeq>
using isochronous_sink = isochronous_complete_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::isochronous_complete_io.
 
template<detail::TransferSequence TSeq>
using isochronous_source = isochronous_complete_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::isochronous_complete_io.
 
template<detail::TransferSequence TSeq>
using bulk_stream_sink = bulk_stream_complete_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::bulk_stream_complete_io.
 
template<detail::TransferSequence TSeq>
using bulk_stream_source = bulk_stream_complete_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::bulk_stream_complete_io.
 
template<detail::TransferSequence TSeq>
using control_out = control_partial_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::control_partial_io.
 
template<detail::TransferSequence TSeq>
using control_in = control_partial_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::control_partial_io.
 
template<detail::TransferSequence TSeq>
using bulk_out = bulk_partial_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::bulk_partial_io.
 
template<detail::TransferSequence TSeq>
using bulk_in = bulk_partial_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::bulk_partial_io.
 
template<detail::TransferSequence TSeq>
using interrupt_out = interrupt_partial_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::interrupt_partial_io.
 
template<detail::TransferSequence TSeq>
using interrupt_in = interrupt_partial_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::interrupt_partial_io.
 
template<detail::TransferSequence TSeq>
using isochronous_out = isochronous_partial_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::isochronous_partial_io.
 
template<detail::TransferSequence TSeq>
using isochronous_in = isochronous_partial_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::isochronous_partial_io.
 
template<detail::TransferSequence TSeq>
using bulk_stream_out = bulk_stream_partial_io< TSeq, endpoint_direction::out >
 Write specialization of co_usb::transfer::bulk_stream_partial_io.
 
template<detail::TransferSequence TSeq>
using bulk_stream_in = bulk_stream_partial_io< TSeq, endpoint_direction::in >
 Read specialization of co_usb::transfer::bulk_stream_partial_io.
 

Enumerations

enum class  endpoint_direction { endpoint_direction::out = 0x00 , endpoint_direction::in = 0x80 , endpoint_direction::any = 0xFF }
 Direction of an endpoint. More...
 
enum class  status {
  status::completed = LIBUSB_TRANSFER_COMPLETED , status::error = LIBUSB_TRANSFER_ERROR , status::timed_out = LIBUSB_TRANSFER_TIMED_OUT , status::cancelled = LIBUSB_TRANSFER_CANCELLED ,
  status::stall = LIBUSB_TRANSFER_STALL , status::no_device = LIBUSB_TRANSFER_NO_DEVICE , status::overflow = LIBUSB_TRANSFER_OVERFLOW
}
 Status codes for transfers. More...
 

Functions

auto ep_out (uint8_t ep_addr, co_usb::detail::DeviceHandleSource auto const &devh_src) -> endpoint< endpoint_direction::out >
 
auto ep_in (uint8_t ep_addr, co_usb::detail::DeviceHandleSource auto const &devh_src) -> endpoint< endpoint_direction::in >
 
auto ep_any (uint8_t ep_addr, co_usb::detail::DeviceHandleSource auto const &devh_src) -> endpoint< endpoint_direction::any >
 
template<detail::TransferSequence TSeq>
constexpr auto cancel_transfer (TSeq const &tfer_seq)
 Cancels transfers from a sequence.
 
template<detail::TransferSequence TSeq, endpoint_direction EpDirection>
constexpr auto prefill_control (TSeq const &tfer_seq, endpoint< EpDirection > ep, std::chrono::milliseconds timeout_ms=std::chrono::milliseconds{0})
 Prefills transfer sequence as control transfers.
 
template<detail::TransferSequence TSeq, endpoint_direction EpDirection>
constexpr auto prefill_bulk (TSeq const &tfer_seq, endpoint< EpDirection > ep, std::chrono::milliseconds timeout_ms=std::chrono::milliseconds{0})
 Prefills transfer sequence as bulk transfers.
 
template<detail::TransferSequence TSeq, endpoint_direction EpDirection>
constexpr auto prefill_interrupt (TSeq const &tfer_seq, endpoint< EpDirection > ep, std::chrono::milliseconds timeout_ms=std::chrono::milliseconds{0})
 Prefills transfer sequence as interrupt transfers.
 
template<detail::TransferSequence TSeq, endpoint_direction EpDirection>
constexpr auto prefill_isochronous (TSeq const &tfer_seq, endpoint< EpDirection > ep, int iso_packets, std::chrono::milliseconds timeout_ms=std::chrono::milliseconds{0})
 Prefills transfer sequence as isochronous transfers.
 
template<detail::TransferSequence TSeq, endpoint_direction EpDirection>
constexpr auto prefill_bulk_stream (TSeq const &tfer_seq, endpoint< EpDirection > ep, uint32_t stream_id, std::chrono::milliseconds timeout_ms=std::chrono::milliseconds{0})
 Prefills transfer sequence as bulk stream transfers.
 
template<class Seq >
 sequence_view (Seq &) -> sequence_view< Seq >
 
const std::error_category & transfer_status_category ()
 
std::error_code make_transfer_status (status e) noexcept
 
std::error_code make_transfer_status (libusb_transfer_status e) noexcept
 

Function Documentation

◆ ep_any()

auto co_usb::transfer::ep_any ( uint8_t  ep_addr,
co_usb::detail::DeviceHandleSource auto const &  devh_src 
) -> endpoint<endpoint_direction::any>
inline

◆ ep_in()

auto co_usb::transfer::ep_in ( uint8_t  ep_addr,
co_usb::detail::DeviceHandleSource auto const &  devh_src 
) -> endpoint<endpoint_direction::in>
inline

◆ ep_out()

auto co_usb::transfer::ep_out ( uint8_t  ep_addr,
co_usb::detail::DeviceHandleSource auto const &  devh_src 
) -> endpoint<endpoint_direction::out>
inline

◆ make_transfer_status() [1/2]

std::error_code co_usb::transfer::make_transfer_status ( libusb_transfer_status  e)
inlinenoexcept

◆ make_transfer_status() [2/2]

std::error_code co_usb::transfer::make_transfer_status ( status  e)
inlinenoexcept

◆ sequence_view()

template<class Seq >
co_usb::transfer::sequence_view ( Seq &  ) -> sequence_view< Seq >

◆ transfer_status_category()

const std::error_category & co_usb::transfer::transfer_status_category ( )
inline