28template <detail::TransferSequence TSeq>
constexpr auto cancel_transfer (TSeq
const &tfer_seq)
34 libusb_cancel_transfer(tfer);
46template <detail::TransferSequence TSeq, endpo
int_direction EpDirection>
48 std::chrono::milliseconds timeout_ms = std::chrono::milliseconds{0})
52 "OUT control transfers must have an endpoint address of 0x00");
54 "IN control transfers must have an endpoint address of 0x80");
59 libusb_fill_control_transfer(tfer, ep.
devh(),
nullptr,
nullptr,
nullptr,
70template <detail::TransferSequence TSeq, endpo
int_direction EpDirection>
72 std::chrono::milliseconds timeout_ms = std::chrono::milliseconds{0})
78 libusb_fill_bulk_transfer(tfer, ep.
devh(), ep.
addr(),
nullptr, 0,
nullptr,
nullptr,
89template <detail::TransferSequence TSeq, endpo
int_direction EpDirection>
92 std::chrono::milliseconds timeout_ms = std::chrono::milliseconds{0})
98 libusb_fill_interrupt_transfer(tfer, ep.
devh(), ep.
addr(),
nullptr, 0,
nullptr,
nullptr,
112template <detail::TransferSequence TSeq, endpo
int_direction EpDirection>
115 std::chrono::milliseconds timeout_ms = std::chrono::milliseconds{0})
121 libusb_fill_iso_transfer(tfer, ep.
devh(), ep.
addr(),
nullptr, 0, iso_packets,
nullptr,
122 nullptr, timeout_ms.count());
134template <detail::TransferSequence TSeq, endpo
int_direction EpDirection>
137 std::chrono::milliseconds timeout_ms = std::chrono::milliseconds{0})
143 libusb_fill_bulk_stream_transfer(tfer, ep.
devh(), ep.
addr(), stream_id,
nullptr, 0,
nullptr,
144 nullptr, timeout_ms.count());
#define COUSB_ASSERT(...)
Definition assert.hpp:21
USB endpoint aggregate templated on its direction.
constexpr auto transfer_of(Ty const &tfer_res) -> libusb_transfer *
Uniform accessor for obtaining a libusb_transfer * from a co_usb::transfer::detail::TransferResource.
Definition transfer_sequence.hpp:41
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.
Definition operations.hpp:136
constexpr auto cancel_transfer(TSeq const &tfer_seq)
Cancels transfers from a sequence.
Definition operations.hpp:28
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.
Definition operations.hpp:91
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.
Definition operations.hpp:71
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.
Definition operations.hpp:114
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.
Definition operations.hpp:47
Iterator helpers for processing transfer sequences.
constexpr struct co_usb::transfer::detail::@1 transfer_end
constexpr struct co_usb::transfer::detail::@0 transfer_begin
Definition complete_io.hpp:18
USB endpoint aggregate templated on its direction.
Definition endpoint.hpp:44
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
Transfer resource and transfer sequence concepts.