|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
#include <dx_usb_device.h>
Public Types | |
| typedef device<> | device_t |
| typedef device<> | device_t |
| enum | type |
Public Member Functions | |
| pipe & | abort () |
| virtual void | callback () |
| catch (const std::out_of_range &exception) | |
| pipe & | clear (bool force=false) |
| void | conclude () noexcept override |
| conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there. Called only through try_conclude() - never call this directly from outside the class hierarchy. | |
| pipe & | drain (std::chrono::milliseconds timeout=std::chrono::milliseconds(250)) noexcept |
| waits for already-submitted requests to complete on their own, without cancelling them | |
| 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 |
| void | info (std::ostream &os) noexcept override |
| 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) |
| operator const os_event () const noexcept | |
| operator os_event () noexcept | |
| operator::HANDLE () const noexcept | |
| template<typename data_t> | |
| pipe & | operator<< (const data_t &data) |
| synchronous USB write request | |
| template<typename data_t> | |
| pipe & | operator>> (data_t &data) |
| synchronous USB read request | |
| bool | outstanding () const noexcept |
| pipe (device_t &device, const usb::endpoint &endpoint) | |
| 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 | |
| virtual pipe & | receive (void *data, size_t size) |
| asynchronous USB read request | |
| 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 |
| 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 | |
| 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 | |
| bool | try_launch () |
| atomically launch()es if not already launched; returns whether this call did it | |
| 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 () override | |
Static Public Member Functions | |
| static unsigned int | micro_frames (const device_t &device, uint8_t bInterval) |
| an endpoint's requests per frame: its interval at high speed, one below | |
| static void | wait (::HANDLE handle, int64_t timeout=0) |
Public Attributes | |
| const usb::endpoint::attributes & | attributes {reinterpret_cast<const struct usb::endpoint::attributes&>(bmAttributes)} |
| std::deque< union audio::descriptor::endpoint > | audio |
| uint8_t | bRefresh {} |
| audio class endpoint: 2^bRefresh frames between two feedback values | |
| uint8_t | bSynchAddress {} |
| audio class endpoint: the isoc sync endpoint pacing this one, 0: none | |
| class buffer { | |
| } | buffer |
| ::WINUSB_INTERFACE_HANDLE | handle |
| interface & | interface |
| std::atomic< bool > | launched |
| std::atomic< bool > | launched |
| unsigned int | micro_frames |
| promoted< uint32_t > | start |
| promoted< uint32_t > | start |
| promoted< bool > | started |
| promoted< bool > | started |
Static Public Attributes | |
| static constexpr auto | max |
| 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 | transmitted (os_result, size_t) |
Protected Attributes | |
| struct { | |
| } | address |
| usb::isoc::result | completed [max] |
| isoc completions in callback order, filled by the runloop, drained by poll() | |
| device<> & | device |
| device<> & | device |
| std::function< void()> | flush_hook |
| std::function< void()> | flush_hook |
| std::function< void()> | halt_hook |
| std::function< void()> | halt_hook |
| uint8_t | idx |
| struct { | |
| class buffer { | |
| } buffer | |
| unsigned int micro_frames = 0 | |
| } | isoc |
| ::HANDLE | process {::GetCurrentProcess()} |
| std::function< void()> | run_hook |
| std::function< void()> | run_hook |
| volatile unsigned int | rx |
| volatile unsigned int | tx |
| struct { | |
| ::WINUSB_INTERFACE_HANDLE handle | |
| } | winusb |
|
inherited |
|
inherited |
|
stronginherited |
|
inline |
|
inlineoverride |
|
inlineinherited |
|
inlinevirtualinherited |
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 |
|
inlineinherited |
|
inlineoverridevirtualnoexcept |
conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there. Called only through try_conclude() - never call this directly from outside the class hierarchy.
Reimplemented from dx::stream::control< stream::object< device<> > >.
|
inlinenoexceptinherited |
waits for already-submitted requests to complete on their own, without cancelling them
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Implements dx::object.
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Implements dx::object.
|
inlineinherited |
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 >.
|
inlineoverridevirtualnoexcept |
log object class information
< Bit D7 indicates a requirement for wMaxPacketSize packets.; D7: MaxPacketsOnly
< D1..0: Pitch Control; D3..2: Data Overrun Control; D5..4: Data Underrun Control; D7..6: Reserved. Must be set to 0.
< Indicates the units used for the wLockDelay field: 0: Undefined; 1: Milliseconds; 2: Decoded PCM samples; 3..255: Reserved
< Indicates the time it takes this endpoint to reliably lock its internal clock recovery circuitry. Units used depend on the value of the bLockDelayUnits field.
< Number of Embedded MIDI Jacks: n.
< ID of the n-th Embedded Jack that is associated with this endpoint.
Reimplemented from dx::stream::control< stream::object< device<> > >.
Reimplemented in dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
inlineoverridevirtualinherited |
Reimplemented from dx::abstract::event.
|
inlineoverridevirtualinherited |
|
inlineprotectedvirtualinherited |
launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
|
inline |
|
inlinestatic |
an endpoint's requests per frame: its interval at high speed, one below
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inline |
synchronous USB write request
|
inline |
synchronous USB read request
|
inlinenoexceptinherited |
asynchronous requests in flight
|
inlinenoexceptinherited |
pulls the oldest completed isoc request's result
|
inlineinherited |
synchronous USB read request
|
inlinevirtualinherited |
asynchronous USB read request
|
inlineprotectedvirtualinherited |
virtual async callbacks
Implements dx::abstract::event.
Implements dx::abstract::event.
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlineinherited |
standard request to pipe
|
inlinevirtualinherited |
asynchronous USB write request
|
inlineprotectedvirtualinherited |
|
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 |
atomically launch()es if not already launched; returns whether this call did it
|
inlineinherited |
atomically launch()es if not already launched; returns whether this call did it
|
inlineinherited |
wait with duration timeout returns true: signalled false: timed out
|
inlineinherited |
wait with duration timeout returns true: signalled false: timed out
|
inlineinherited |
synchronous USB write request
| struct { ... } dx::usb::platform::pipe< device<>, interface >::address |
| const usb::endpoint::attributes& dx::usb::pipe< device_t >::attributes {reinterpret_cast<const struct usb::endpoint::attributes&>(bmAttributes)} |
|
inherited |
|
inherited |
audio class endpoint: 2^bRefresh frames between two feedback values
|
inherited |
audio class endpoint: the isoc sync endpoint pacing this one, 0: none
| class { ... } ::buffer dx::usb::platform::pipe< device<>, interface >::buffer |
|
protectedinherited |
isoc completions in callback order, filled by the runloop, drained by poll()
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
|
protectedinherited |
|
inherited |
| struct { ... } dx::usb::platform::pipe< device<>, interface >::isoc |
|
inherited |
|
inherited |
|
staticconstexprinherited |
|
inherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
| struct { ... } dx::usb::platform::pipe< device<>, interface >::winusb |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |