|
dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
|
the platform half of a pipe: the transfers over the interface's endpoint and their completions - an isochronous one queues its result for the group's poll, since a completion counts and never schedules More...
#include <dx_usb_platform_pipe.h>
Classes | |
| struct | isoc |
| what an isochronous pipe needs beside its requests: the micro frames a packet is spread over and the registered buffer they are served from More... | |
Public Types | |
| typedef _device_t | device_t |
| typedef _device_t | device_t |
| enum class | type : uint8_t { control =::kUSBControl , isoc = ::kUSBIsoc , bulk = ::kUSBBulk , irq = ::kUSBInterrupt , control =::UsbdPipeTypeControl , isoc = ::UsbdPipeTypeIsochronous , bulk = ::UsbdPipeTypeBulk , irq = ::UsbdPipeTypeInterrupt } |
| enum class | type : unsigned char { control =::kUSBControl , isoc = ::kUSBIsoc , bulk = ::kUSBBulk , irq = ::kUSBInterrupt , control =::UsbdPipeTypeControl , isoc = ::UsbdPipeTypeIsochronous , bulk = ::UsbdPipeTypeBulk , irq = ::UsbdPipeTypeInterrupt } |
| the transfer type of this pipe, as its endpoint declared it More... | |
Public Member Functions | |
| pipe & | abort () |
| pipe & | abort () |
| virtual void | callback () |
| pipe & | clear () |
| pipe & | clear (bool force=false) |
| void | conclude () noexcept |
| void | conclude () noexcept |
| pipe & | drain (std::chrono::milliseconds timeout=std::chrono::milliseconds(250)) noexcept |
| waits for already-submitted requests to complete on their own, without cancelling them | |
| pipe & | drain (std::chrono::milliseconds timeout=std::chrono::milliseconds(250)) noexcept |
| waits for already-submitted requests to complete on their own, without cancelling them; consumes the isoc completions itself when no completion thread does - its caller then holds the device lock the group's tick would need, so nobody else polls | |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| notification exception handler | |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| notification exception handler | |
| uint64_t | frame (int64_t *timestamp=nullptr) |
| current bus frame number; timestamp: dx::timestamp() of the readout | |
| virtual void | free () noexcept |
| virtual void | info (std::ostream &os) noexcept |
| log object class information | |
| super & | initialize (bool signalled=false) override |
| super & | initialize (const std::string &name, bool signalled=false) override |
| pipe & | max_frame_size (uint32_t frame_size) |
| pipe & | max_frame_size (unsigned int frame_size) |
| operator const os_event () const noexcept | |
| operator os_event () noexcept | |
| operator::HANDLE () const noexcept | |
| template<typename data_t> | |
| pipe & | operator<< (const data_t &data) |
| template<typename data_t> | |
| pipe & | operator>> (data_t &data) |
| bool | outstanding () const noexcept |
| bool | outstanding () const noexcept |
| pipe (device_t &device, const endpoint &endpoint) | |
| the runloop queues every isoc completion for poll() | |
| pipe (device_t &device, const endpoint &endpoint) | |
| completion: the pipe's own thread delivers the completions via received()/transmitted(); a pipe of a streaming group (desc.group) leaves them to its group's tick (poll()) | |
| bool | poll (usb::isoc::result &result) |
| pulls the oldest outstanding isoc request's result once it has completed | |
| bool | poll (usb::isoc::result &result) noexcept |
| pulls the oldest completed isoc request's result | |
| pipe & | read (void *data, size_t &size) |
| synchronous USB read request | |
| pipe & | read (void *data, size_t size) |
| synchronous USB read request | |
| virtual pipe & | receive (void *data, size_t size) |
| asynchronous USB read request | |
| pipe & | receive (void *data, size_t size) |
| asynchronous USB read request | |
| virtual pipe & | receive (void *data, uint64_t &sequence, ::IOUSBIsocFrame *frame, int32_t frames=1) |
| asynchronous USB isoc read request | |
| pipe & | receive (void *data, uint64_t &sequence, ::USBD_ISO_PACKET_DESCRIPTOR *frame, unsigned int frames=1) |
| asynchronous USB isoc read request WinUSB limitation no microframe support only multiple of max package size requests allowed, even if only submiting a single package https://docs.microsoft.com/en-us/windows/win32/api/winusb/nf-winusb-winusb_readisochpipe is wrong! | |
| super & | reset (uint64_t=0) override |
| super & | signal (uint64_t=1) override |
| uint64_t | signalled () const |
| uint64_t | signalled () const |
| os_result | status () const noexcept |
| os_result | status () const noexcept |
| template<typename data_t> | |
| data_t | submit (const control &control) const |
| control request to pipe | |
| template<typename data_t> | |
| data_t | submit (const control &control) const |
| control request to pipe | |
| template<typename data_t> | |
| pipe & | submit (const request< data_t > &request) const |
| standard request to pipe | |
| template<typename data_t> | |
| pipe & | submit (const request< data_t > &request) const |
| standard request to pipe | |
| virtual pipe & | transmit (const void *data, size_t &size) |
| asynchronous USB write request | |
| pipe & | transmit (const void *data, size_t size) |
| asynchronous USB write request | |
| virtual pipe & | transmit (const void *data, uint64_t &sequence, ::IOUSBIsocFrame *frame, int32_t frames=1) |
| asynchronous USB isoc write request | |
| pipe & | transmit (const void *data, uint64_t &sequence, ::USBD_ISO_PACKET_DESCRIPTOR *frame, unsigned int frames=1) |
| asynchronous USB isoc write request | |
| bool | try_conclude () noexcept |
| atomically conclude()s if currently launched; returns whether this call did it | |
| bool | try_conclude () noexcept |
| atomically conclude()s if currently launched; returns whether this call did it | |
| bool | try_launch () |
| atomically launch()es if not already launched; returns whether this call did it. A launch() that throws is concluded before the exception leaves: the object never claims a launch it did not finish | |
| bool | try_launch () |
| atomically launch()es if not already launched; returns whether this call did it. A launch() that throws is concluded before the exception leaves: the object never claims a launch it did not finish | |
| super & | wait (bool reset=false) override |
| template<typename rep_t, typename period_t> | |
| bool | wait (const std::chrono::duration< rep_t, period_t > &timeout, bool reset=false) |
| template<typename rep_t, typename period_t> | |
| bool | wait (const std::chrono::duration< rep_t, period_t > &timeout, bool reset=false) |
| pipe & | write (const void *data, size_t size) |
| synchronous USB write request | |
| pipe & | write (const void *data, size_t size) |
| synchronous USB write request | |
| ~pipe () noexcept override | |
Static Public Member Functions | |
| static void | wait (::HANDLE handle, int64_t timeout=0) |
Public Attributes | |
| interface_t & | interface |
| std::atomic< bool > | launched {} |
| std::atomic< bool > | launched {} |
| promoted< uint32_t > | start |
| promoted< uint32_t > | start |
| promoted< bool > | started |
| promoted< bool > | started |
| enum dx::usb::platform::pipe::type | type |
Static Public Attributes | |
| static constexpr auto | max {usb::isoc::max_requests} |
| static constexpr auto | scope = kernel |
Protected Member Functions | |
| virtual void | launch () |
| launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy. | |
| virtual void | received (os_result, size_t) |
| virtual async callbacks | |
| virtual void | received (os_result, size_t) |
| virtual async callbacks | |
| virtual void | received (os_result, size_t, int64_t, usb::isoc::frame *) |
| virtual void | received (os_result, size_t, int64_t, usb::isoc::frame *) |
| virtual void | transmitted (os_result, size_t) |
| virtual void | transmitted (os_result, size_t) |
| virtual void | transmitted (os_result, size_t, int64_t, usb::isoc::frame *) |
| virtual void | transmitted (os_result, size_t, int64_t, usb::isoc::frame *) |
| ~pipe () override | |
Protected Attributes | |
| struct dx::usb::platform::pipe:: { ... } | address |
| uint8_t | address {} |
| usb::isoc::result | completed [max] |
| isoc completions in callback order, filled by the runloop, drained by poll() | |
| _device_t & | device |
| _device_t & | device |
| std::function< void()> | flush_hook |
| std::function< void()> | flush_hook |
| std::function< void()> | halt_hook |
| std::function< void()> | halt_hook |
| ::HANDLE | handle {invalid_t} |
| uint8_t | idx = 0 |
| struct dx::usb::platform::pipe:: { ... } | isoc |
| struct dx::usb::platform::pipe::isoc | isoc |
| ::HANDLE | process {::GetCurrentProcess()} |
| std::function< void()> | run_hook |
| std::function< void()> | run_hook |
| volatile unsigned int | rx = 0 |
| volatile unsigned int | tx = 0 |
| struct dx::usb::platform::pipe:: { ... } | winusb |
the platform half of a pipe: the transfers over the interface's endpoint and their completions - an isochronous one queues its result for the group's poll, since a completion counts and never schedules
the platform half of a pipe: up to max outstanding overlapped requests over WinUSB, their completions taken in submission order - the order the controller serves a pipe in
|
inherited |
|
inherited |
|
strong |
|
strong |
|
inlineoverrideprotected |
|
inline |
the runloop queues every isoc completion for poll()
async IO thread control (required for Windows compatibility)
|
inline |
completion: the pipe's own thread delivers the completions via received()/transmitted(); a pipe of a streaming group (desc.group) leaves them to its group's tick (poll())
async IO thread control
joins the completion thread once this pipe's last start/stop reference is gone
|
inlineoverridenoexcept |
|
inline |
|
inline |
The default implementation is based on event<user> which is signalled when triggered via callback() from kernel. This is to achieve compatibility with Windows events. Its probably more adequate to overwrite callback() and do the work here if feasible.
|
inline |
|
inline |
|
inlinevirtualnoexceptinherited |
Reimplemented from dx::object.
Reimplemented in dx::usb::pipe< device_t >.
|
inlinevirtualnoexceptinherited |
Reimplemented from dx::object.
Reimplemented in dx::usb::pipe< device_t >.
|
inlinenoexcept |
waits for already-submitted requests to complete on their own, without cancelling them
|
inlinenoexcept |
waits for already-submitted requests to complete on their own, without cancelling them; consumes the isoc completions itself when no completion thread does - its caller then holds the device lock the group's tick would need, so nobody else polls
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Implements dx::object.
Reimplemented in dx::stream::pin< device_t, _circular_t >, and dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Implements dx::object.
Reimplemented in dx::stream::pin< device_t, _circular_t >, and dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inline |
current bus frame number; timestamp: dx::timestamp() of the readout
|
inlinevirtualnoexceptinherited |
Reimplemented in dx::coreaudio::pod::stream< device_t, circular_t >, dx::pipe< rcv_t >, dx::pipe< dx::service::request< service::stream::data< desc > > >, dx::pipe< dx::service::request< service::stream::data< desc_t > > >, dx::pipe< dx::service::request< service::stream::data< typename device_t::desc_t > > >, dx::pipe< request >, dx::pipe< request_t >, dx::service::manager::promoted, dx::shared::memory< buffer_t >, dx::shared::memory< buffer_t >, dx::shared::memory< circular_t >, dx::shared::memory< circular_t >, dx::shared::memory< dx::circular >, dx::shared::memory< dx::stream::clock::monitor >, dx::shared::memory< dx::stream::clock::monitor >, dx::stream::shared::stream< device_t, circular_t, super_stream_t, event_t >, dx::stream::shared::stream< device_t, circular_t >, dx::stream::shared::stream< device_t, circular_t, super_stream_t, event_t >, dx::stream::shared::stream< device_t, dx::circular >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, dx::template server< request >, dx::template server< user_client, std::weak_ptr< device > >, and dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inlinevirtualnoexceptinherited |
log object class information
Reimplemented in dx::asio::client::_device< desc_t, preference_t, stream_t, group_t >, dx::asio::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::asio::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::asio::client::driver< device_t, devices >, dx::asio::service::device< super_device_t >, dx::coreaudio::_device< desc_t, preference_t, stream_t, group_t >, dx::coreaudio::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t, _hosted > >, group_t< device< desc_t, preference_t, stream_t, group_t, _hosted > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > >, group< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, stream< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > >, coreaudio::group< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > > >, dx::coreaudio::_device< dx::virtuel::stream::desc, cf::preference, stream< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > >, group< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > > >, dx::coreaudio::driver< device_t >, dx::coreaudio::pod::device< desc_t, preference_t, stream_t, group_t >, dx::coreaudio::stream::device< desc_t, preference_t, stream_t, group_t >, dx::coremidi::_device< desc_t, preference_t, stream_t >, dx::coremidi::_device< desc, cf::preference, stream< device< desc, cf::preference, stream > > >, dx::coremidi::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t > > >, dx::coremidi::driver< device_t >, dx::device< id_t, preference_t >, dx::device< dx::guid, preference >, dx::device< std::string, dx::preference >, dx::device< std::string, preference >, dx::device< std::string, preference_t >, dx::device<::AudioObjectID, cf::preference >, dx::device<::io_service_t, dx::preference >, dx::device<::io_service_t, preference_t >, dx::device<::MIDIDeviceRef, cf::preference >, dx::device<>, dx::driver< device_id_t, preference_t >, dx::driver< decltype(_device_t::id), decltype(_device_t::preference)>, dx::driver< decltype(device<>::id), decltype(device<>::preference)>, dx::driver< decltype(id), cf::preference >, dx::driver< decltype(id), dx::preference >, dx::driver< decltype(id), preference >, dx::driver< device_id_t, decltype(device_t::preference)>, dx::map::driver< _device_t, holder_t >, dx::map::driver< device<> >, dx::map::driver< device_t >, dx::map::driver< device_t, dx::apartment< device_t > >, dx::midi::services::_device< desc, preference, stream< device< desc, preference, stream > > >, dx::midi::services::driver< device_t >, dx::proxy::device< preference_t >, dx::proxy::device< preference_t >, dx::proxy::device< dx::preference >, dx::proxy::device<>, dx::proxy::driver< device_t >, dx::proxy::driver< device_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::proxy::stream::_device< dx::stream::desc<>, dx::preference, stream< device< dx::stream::desc<>, dx::preference, stream, group > >, group< device< dx::stream::desc<>, dx::preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t, group_t >, dx::service::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::service::client::driver< device_t >, dx::service::device< preference_t >, dx::service::device< preference_t >, dx::service::device< dx::preference >, dx::service::device< super_device_t >, dx::service::device< super_device_t >, dx::stream::device< dx::device< dx::guid, preference >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::stream::device< dx::device< dx::guid, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device< std::string, dx::preference >, desc, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, dx::stream::device< dx::device< std::string, preference >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::stream::device< dx::device< std::string, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, dx::stream::stream< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > >, group< device< dx::virtuel::stream::desc, cf::preference, dx::stream::stream, group, false > > >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, stream< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > >, coreaudio::group< device< dx::virtuel::stream::desc, cf::preference, stream, coreaudio::group, false > > >, dx::stream::device< dx::device<::AudioObjectID, cf::preference >, dx::virtuel::stream::desc, stream< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > >, group< device< dx::virtuel::stream::desc, cf::preference, stream, group, _hosted > > >, dx::stream::device< dx::device<::AudioObjectID, preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::device<::MIDIDeviceRef, cf::preference >, desc, stream< device< desc, cf::preference, stream > > >, dx::stream::device< dx::device<::MIDIDeviceRef, preference_t >, desc_t, stream_t >, dx::stream::device< dx::proxy::device< dx::preference >, dx::stream::desc<>, stream< device< dx::stream::desc<>, dx::preference, stream, group > >, group< device< dx::stream::desc<>, dx::preference, stream, group > > >, dx::stream::device< dx::proxy::device< preference_t >, desc_t, stream_t, group_t >, dx::stream::device< dx::stream::control< dx::device< std::string, preference > >, desc, stream< device< desc, preference, stream > > >, dx::stream::device< dx::stream::control< dx::device< std::string, preference > >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::stream::device< usb::device< dx::preference >, desc_t, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >, dx::stream::device< usb::device< preference_t >, desc_t, stream_t, group_t >, dx::stream::driver< dx::map::driver< device<> > >, dx::stream::driver< dx::map::driver< device_t > >, dx::stream::driver< map::driver< device_t > >, dx::stream::pin< device_t, _circular_t >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, dx::usb::device< preference_t >, dx::usb::device< dx::preference >, dx::usb::pipe< device_t >, dx::usb::pipe< device_t >, dx::usb::platform::device< preference_t >, dx::usb::platform::device< dx::preference >, dx::usb::platform::device< preference_t >, dx::usb::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >, dx::usb::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::usb::stream::pipe< device_t, circular_t, stream_t >, dx::virtuel::driver< device_t >, dx::virtuel::driver< device<> >, dx::virtuel::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::virtuel::stream::_device< desc, dx::preference, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, dx::virtuel::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::wasapi::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, and dx::wasapi::client::driver< device_t >.
Reimplemented from dx::abstract::event.
|
inlineprotectedvirtualinherited |
launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
Reimplemented in dx::asio::client::driver< device_t, devices >, dx::asio::service::device< super_device_t >, dx::coreaudio::driver< device_t >, dx::coremidi::driver< device_t >, dx::map::driver< _device_t, holder_t >, dx::map::driver< device<> >, dx::map::driver< device_t >, dx::map::driver< device_t, dx::apartment< device_t > >, dx::midi::services::driver< device_t >, dx::proxy::driver< device_t >, dx::proxy::driver< device_t >, dx::service::app, dx::service::client::_device< desc_t, preference_t, stream_t, group_t >, dx::service::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::service::client::driver< device_t >, dx::service::device< preference_t >, dx::service::device< dx::preference >, dx::service::device< super_device_t >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, dx::usb::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >, dx::usb::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >, dx::virtuel::driver< device_t >, dx::virtuel::driver< device<> >, and dx::wasapi::client::driver< device_t >.
|
inline |
|
inline |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inline |
|
inline |
|
inlinenoexcept |
asynchronous requests in flight
|
inlinenoexcept |
asynchronous requests in flight
|
inline |
pulls the oldest outstanding isoc request's result once it has completed
|
inlinenoexcept |
pulls the oldest completed isoc request's result
|
inline |
synchronous USB read request
|
inline |
synchronous USB read request
|
inlinevirtual |
asynchronous USB read request
|
inline |
asynchronous USB read request
|
inlinevirtual |
asynchronous USB isoc read request
|
inline |
asynchronous USB isoc read request WinUSB limitation no microframe support only multiple of max package size requests allowed, even if only submiting a single package https://docs.microsoft.com/en-us/windows/win32/api/winusb/nf-winusb-winusb_readisochpipe is wrong!
|
inlineprotectedvirtual |
virtual async callbacks
Reimplemented in dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inlineprotectedvirtual |
virtual async callbacks
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
Implements dx::abstract::event.
Implements dx::abstract::event.
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
control request to pipe
|
inline |
control request to pipe
|
inline |
standard request to pipe
|
inline |
standard request to pipe
|
inlinevirtual |
asynchronous USB write request
|
inline |
asynchronous USB write request
|
inlinevirtual |
asynchronous USB isoc write request
|
inline |
asynchronous USB isoc write request
|
inlineprotectedvirtual |
Reimplemented in dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
|
inlineprotectedvirtual |
|
inlinenoexceptinherited |
atomically conclude()s if currently launched; returns whether this call did it
|
inlinenoexceptinherited |
atomically conclude()s if currently launched; returns whether this call did it
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
wait with duration timeout returns true: signalled false: timed out
|
inlineinherited |
wait with duration timeout returns true: signalled false: timed out
|
inline |
synchronous USB write request
|
inline |
synchronous USB write request
| struct { ... } dx::usb::platform::pipe< device_t, interface_t >::address |
|
protected |
|
protected |
isoc completions in callback order, filled by the runloop, drained by poll()
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
| interface_t & dx::usb::platform::pipe< device_t, interface_t >::interface |
| struct { ... } dx::usb::platform::pipe< device_t, interface_t >::isoc |
|
protected |
|
inherited |
|
inherited |
|
staticconstexpr |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protected |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
protected |
| enum dx::usb::platform::pipe::type dx::usb::platform::pipe< device_t, interface_t >::type |
| struct { ... } dx::usb::platform::pipe< device_t, interface_t >::winusb |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |