|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
< the app's consumer group (dx::stream::engine::group) wraps this bus's own More...
#include <dx_usb_stream_device.h>
Public Types | |
| typedef desc_t | desc_t |
| typedef event | event_t |
| typedef std::conditional_t< std::is_void_v< group< device< desc_t, dx::preference, pipe, group > > >, dx::stream::group< device >, group< device< desc_t, dx::preference, pipe, group > > > | group_t |
| bus devices driving their groups' tick pass their own group type | |
| typedef std::set< std::string > | keys |
| typedef promoted< uint32_t >::template preference< decltype(usb::device< dx::preference >::preference)> | source_t |
| typedef pipe< device< desc_t, dx::preference, pipe, group > > | stream_t |
| enum | type |
Public Member Functions | |
| usb::interface & | at (uint8_t number) |
| void | attach (channel_t **io[dx::stream::direction::directions][2], const std::vector< bool >(&channel_map)[2]) |
| catch (...) | |
| catch (...) | |
| device & | clear () |
| device & | close (bool force=false) noexcept |
| void | conclude () noexcept override |
| ends every group's session before the device's resources go; the start counts stay with their holders | |
| uint8_t | configuration () const |
| uint8_t | configuration (uint8_t configuration) override |
| uint8_t | configurations () const |
| virtual void | configure () |
| auto | count () const noexcept |
| auto | count () const noexcept |
| void | ctl (uint32_t ioctl) const |
| class | end () |
| registry & | erase (const char *subkey=nullptr) noexcept |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| notification exception handler | |
| uint64_t | frame (int64_t *timestamp=nullptr) const |
| current bus frame number; timestamp: dx::timestamp() of the readout | |
| virtual void | free () noexcept |
| value_t | get () const |
| value_t | get (::CFStringRef key) const |
| ::CFTypeRef | get (::CFStringRef key) const |
| ::CFTypeRef | get (::CFStringRef key) const |
| value_t | get (::CFStringRef key, ::CFTypeRef dflt) const noexcept |
| ::CFTypeRef | get (::CFStringRef key, ::CFTypeRef dflt) const noexcept |
| ::CFTypeRef | get (::CFStringRef key, ::CFTypeRef dflt) const noexcept |
| value_t | get (::CFStringRef key, value_t dflt) const noexcept |
| value_t | get (::CFStringRef key, value_t dflt) const noexcept |
| value_t | get (key_t key) const |
| ::CFTypeRef | get (key_t key) const |
| ::CFTypeRef | get (key_t key) const |
| bool | get (value_t &value) const |
| virtual bool | hw_clock () const noexcept |
| virtual void | hw_clock (abstract::event *hw_clock, uint32_t iosize) |
| hide_if_scalar_or_ptr< rx_t > | ictl (uint32_t ioctl) const |
| member ioctl | |
| size_t | ictl (unsigned int ioctl, rx_t &rx) const |
| void | info (std::ostream &os) noexcept override |
| log object class information | |
| registry & | initialize (::HKEY root, ::REGSAM rights=KEY_ALL_ACCESS) |
| registry & | initialize (::REGSAM rights=KEY_ALL_ACCESS, ::HKEY root=HKEY_CURRENT_USER) |
| void | initialize (const char *name, ::DWORD access=GENERIC_READ|GENERIC_WRITE, ::DWORD share=FILE_SHARE_READ|FILE_SHARE_WRITE) |
| (re-)initialization the underlaying windows API is CreateFile(). for detailed information see http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx | |
| registry & | initialize (const std::string &key, ::HKEY root=HKEY_CURRENT_USER, ::REGSAM rights=KEY_ALL_ACCESS) |
| size_t | ioctl (uint32_t ioctl, const tx_t &tx, rx_t &rx) const |
| rx_t | ioctl (unsigned int ioctl, const tx_t &tx) const |
| void | launch () override |
| launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy. | |
| device & | octl (uint32_t ioctl, const tx_t &tx) |
| void | octl (unsigned int ioctl, const tx_t &tx) const |
| device & | open () |
| opens the USB device for exclusice access | |
| operator const ::io_registry_entry_t & () const noexcept | |
| auto converter into const io_object | |
| operator const ::io_registry_entry_t & () const noexcept | |
| auto converter into const io_object | |
| operator const ::io_registry_entry_t & () const noexcept | |
| auto converter into const io_object | |
| operator const os_event () const noexcept | |
| operator const std::string & () const noexcept | |
| identifying device string, mirroring macOS' io::registry conversion | |
| operator os_event () noexcept | |
| operator uint64_t () const | |
| operator uint64_t () const | |
| ::IOUSBDeviceInterface650 * | operator-> () const |
| operator::CFMutableDictionaryRef () const | |
| operator::CFMutableDictionaryRef () const | |
| operator::CFStringRef () const | |
| operator::CFStringRef () const | |
| operator::HANDLE () const noexcept | |
| operator::HKEY () const noexcept | |
| operator::io_registry_entry_t & () noexcept | |
| auto converter into io_object | |
| operator::io_registry_entry_t & () noexcept | |
| auto converter into io_object | |
| operator::io_registry_entry_t & () noexcept | |
| auto converter into io_object | |
| operator::io_registry_entry_t * () noexcept | |
| auto converter into io_object pointer | |
| operator::io_registry_entry_t * () noexcept | |
| auto converter into io_object pointer | |
| operator::io_registry_entry_t * () noexcept | |
| auto converter into io_object pointer | |
| operator::IOUSBDeviceInterface650 ** () const | |
| bool | operator== (::io_registry_entry_t io_object) const noexcept |
| bool | operator== (::io_registry_entry_t io_object) const noexcept |
| virtual device & | operator>> (std::ostream &) const |
| virtual device & | operator>> (std::ostream &) const |
| ::CFTypeRef | operator[] (::CFStringRef key) const |
| group< device< desc_t, dx::preference, pipe, group > > & | operator[] (const typename desc_t::stream::desc &stream) |
| the stream's group, created on first use | |
| ::CFTypeRef | operator[] (key_t key) const |
| registry | parent () const |
| registry | parent () const |
| device & | reenumerate () |
| device & | reset () |
| reference & | retain () |
| reference & | retain () |
| registry & | run () |
| registry & | set (::CFStringRef key, ::CFTypeRef value) |
| registry & | set (::CFStringRef key, ::CFTypeRef value) |
| registry & | set (::CFStringRef key, value_t value) |
| registry & | set (::CFStringRef key, value_t value) |
| device & | set (::CFTypeRef properties) |
| Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device. | |
| registry & | set (::CFTypeRef properties) |
| Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device. | |
| registry & | set (::DWORD type, const void *value, size_t size) |
| registry & | set (key_t key, ::CFTypeRef value) |
| registry & | set (key_t key, ::CFTypeRef value) |
| registry & | set (key_t key, value_t value) |
| registry & | set (key_t key, value_t value) |
| size_t | size () const noexcept |
| virtual void | sleep () |
| notify system will sleep stub | |
| virtual void | sleep () |
| notify system will sleep stub | |
| virtual std::pair< source_t &, bool > | source (const struct desc_t::stream &stream) |
| the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources | |
| os_result | status () const noexcept |
| std::string | string (uint8_t idx, enum language language=language::standard) |
| std::string | string (uint8_t idx, enum language language=language::standard) |
| std::string | string (uint8_t) const |
| std::string | string (unsigned char idx, enum language language=language::standard) const |
| device & | submit (const request< data_t > &request) |
| standard device 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 | |
| type | type () const noexcept |
| void | wake () override |
Static Public Member Functions | |
| static void | assign (const self_t &self, const value_t &value) |
| static registry | at (const self_t &self) |
| static container_t | children (const self_t &self) noexcept |
| static void | create (const char *product_id, const ::GUID &guid, const std::string &id, const desc_t &desc) |
| persisted software device: PnP keeps it enumerated after the creating handle closes | |
| static void | destroy (const char *product_id, const ::GUID &guid, const std::string &id) |
| re-acquires the persisted device and binds it to the closing handle; PnP keeps the removed device's node as a phantom, uninstalled here | |
| static bool | fetch (const self_t &self, value_t &value) |
| static std::pair< std::string, std::string > | identity (::io_service_t id) |
| the device class constructor | |
| static bool | nested (const self_t &self) noexcept |
| static void | purge (const self_t &self) noexcept |
| static size_t | size (const self_t &self) noexcept |
Public Attributes | |
| struct { | |
| union { | |
| struct { | |
| struct { | |
| struct { | |
| uint8_t id | |
| } selector | |
| struct { | |
| uint8_t id | |
| } source | |
| } clock | |
| } v2 | |
| } | |
| uint8_t interface | |
| the AudioControl interface: class requests to units address it More... | |
| } | adc |
| uint16_t | bcdADC |
| cf::string | bundle_id |
| struct { | |
| struct { | |
| uint8_t id | |
| } selector | |
| struct { | |
| uint8_t id | |
| } source | |
| } | clock |
| std::atomic< int64_t > | clock_locked |
| dx::timestamp() from which the device's clock is locked to the sample rate last set (desc::clock::lock_delay): the transport charges its pipes no earlier, a session live across the change is re-charged then | |
| promoted< uint32_t >::preference< decltype(super::preference)> | clocksource |
| bool | composite |
| indicate WinUSB matched against single interface of composite device; | |
| dx::driver< decltype(id), dx::preference > & | driver |
| dx::driver< decltype(id), dx::preference > & | driver |
| std::weak_ptr< dx::circular > | feedback |
| the line count an out slot carries per frame - produced by an implicit feedback in pipe, consumed by the asynchronous out pipe | |
| std::map< decltype(desc_t::stream::group), group< device< desc_t, dx::preference, pipe, group > > > | group |
| streaming groups by desc::stream::group id: every stream of this device is registered with its group - behind the settings its groups listen to, so they go first | |
| ::WINUSB_INTERFACE_HANDLE | handle |
| struct { | |
| dx::shared::guard< std::map< abstract::event *, dx::stream::clock::consumer > > clock | |
| event -> its own iosize and sample counter More... | |
| uint32_t iosize | |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) More... | |
| } | hw |
| promoted< std::string >::preference< decltype(super::preference)> | icon |
| uint8_t | id |
| uint8_t | interface |
| the AudioControl interface: class requests to units address it | |
| promoted< uint32_t >::preference< decltype(super::preference)> | iosize |
| uint32_t | iosize |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) | |
| std::string | key |
| std::atomic< bool > | launched |
| std::atomic< bool > | launched |
| std::deque< std::function< void()> > | listen |
| dx::stream::device::monitor | monitor |
| dx::preference | preference |
| dx::preference | preference |
| std::string | puid |
| persistent UID - system unique - could change with location | |
| std::string | puid |
| persistent UID - system unique - could change with location | |
| std::string | puuid |
| persistent universal UID - universally unique ID (i.e. serial number) | |
| std::string | puuid |
| persistent universal UID - universally unique ID (i.e. serial number) | |
| promoted< uint32_t >::preference< decltype(super::preference)> | samplerate |
| bool | schedule_erase |
| struct { | |
| uint8_t id | |
| } | selector |
| struct { | |
| uint8_t id | |
| } | source |
| std::map< decltype(desc_t::stream::target.idx()), source_t > | sources |
| enum speed | speed |
| promoted< structdesc_t::stream * >::template preference< decltype(super::preference), uint32_t > | sync_reference |
| struct { | |
| struct { | |
| struct { | |
| uint8_t id | |
| } selector | |
| struct { | |
| uint8_t id | |
| } source | |
| } clock | |
| } | v2 |
| dx::stream::device::monitor | version |
Static Public Attributes | |
| static constexpr bool | hosted |
| the transport's settings belong to another process' device: a hosted device mirrors them through its chains, it keeps no store of them | |
Protected Types | |
| typedef service::request< service::stream::data< typename super_device_t::desc_t > > | request |
| typedef pipe< request >::template server< user_client, std::weak_ptr< device > > | server |
| pipe::server connecting user_clients The pipe holds a std::weak_ptr<device> as a temporary by the pipe::server::args variadic tuple to create shared device references for the user_client. At time of device construction there is not yet a std::shared_ptr<device>, therefore the pipe::server::args weak_ptr assignment happens at service::device::launch(). | |
Protected Member Functions | |
| std::string | canonical (const std::string &name) const |
| virtual void | grouped (group< device< desc_t, dx::preference, pipe, group > > &) |
| operator[](): a group just came into existence, a host wires its per-group transports here | |
| void | grouped (typename super::group< device< desc_t, dx::preference, pipe, group > > &group) override |
| void | initialize (::IOCFPlugInInterface **cf_interface, ::CFUUIDRef uuid) |
| registry & | initialize (const std::string &key, ::REGSAM rights, ::HKEY root, const char *path=nullptr) |
Protected Attributes | |
| bool | connected |
| std::unique_ptr< uint8_t[]> | descriptors |
| the selected configuration's complete descriptor, wTotalLength bytes | |
| std::list< promoted > | group_server |
| per-group chains, wired as each group comes into existence (grouped()) | |
| struct { | |
| cf::string bundle_id | |
| cf::string class_name | |
| } | kernel |
| std::atomic< int > | opened |
| class dx::service::device::promoted | pipe |
| server | pipe |
| io::port | port |
| ::HANDLE | process |
| decltype(super::samplerate) ::chain | samplerate_server |
| struct { | |
| ::WINUSB_INTERFACE_HANDLE handle | |
| } | winusb |
< the app's consumer group (dx::stream::engine::group) wraps this bus's own
|
inherited |
|
inherited |
|
inherited |
bus devices driving their groups' tick pass their own group type
|
inherited |
|
protectedinherited |
|
protectedinherited |
pipe::server connecting user_clients The pipe holds a std::weak_ptr<device> as a temporary by the pipe::server::args variadic tuple to create shared device references for the user_client. At time of device construction there is not yet a std::shared_ptr<device>, therefore the pipe::server::args weak_ptr assignment happens at service::device::launch().
|
inherited |
|
inherited |
|
stronginherited |
|
inlinestaticinherited |
|
inlinestaticinherited |
dx::key_value_tree<registry> contract: resolves self's parent chain into one real key/value position, then delegates below - the only place a registry[k1][k2]..[kN] chain becomes real subkeys/values.
|
inlineinherited |
the interface of that number - a list position is no interface number: a device may number them sparsely, and one whose exclusive owner refused it never entered the list
|
inlineinherited |
|
inlineprotectedinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinestaticnoexceptinherited |
self's own child names as any string container, yielding an empty one when the key is absent or inaccessible. Stays a static, not a dx::key_value_tree-style operator container_t(): registry is a dependent base of key_value_tree<registry> (inherited via the tree_t template parameter), and key_value_tree's own operator value_t() becomes entirely unreachable once a dependent base declares a same-shaped operator container_t() template of its own.
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlineoverridenoexceptinherited |
ends every group's session before the device's resources go; the start counts stay with their holders
|
inlineinherited |
|
inlineoverrideinherited |
|
inlineinherited |
|
inlinevirtualinherited |
a desc without streams takes them from the configuration's audio class descriptors
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinestaticinherited |
persisted software device: PnP keeps it enumerated after the creating handle closes
|
inlineinherited |
|
inlinestaticinherited |
re-acquires the persisted device and binds it to the closing handle; PnP keeps the removed device's node as a phantom, uninstalled here
|
inherited |
|
inlinenoexceptinherited |
|
inlineoverridenoexceptinherited |
notification exception handler
|
inlinestaticinherited |
a value that serializes itself into a tree node recurses through its own named children; only what has no such serialization reaches the flat position below, where a struct would become one opaque REG_BINARY of its layout
|
inlineinherited |
current bus frame number; timestamp: dx::timestamp() of the readout
|
inlinevirtualnoexceptinherited |
|
inlineinherited |
stays a named method: base and derived conversion function templates are simultaneous overload candidates, so an operator value_t() here would compete with dx::key_value_tree's own.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
like get<value_t>() but returns false for ERROR_FILE_NOT_FOUND, from either RegQueryValueExA or value_of() itself; any other failure throws.
|
inlineprotectedvirtualinherited |
operator[](): a group just came into existence, a host wires its per-group transports here
|
inlineoverrideprotectedinherited |
|
inlinevirtualnoexceptinherited |
|
inlinevirtualinherited |
|
inlineinherited |
member ioctl
this member retreives data from the device by providing an IOCTL code. the template argument defines the type of data to be retreived. this member is intended as a convinient way to retreive only small amounts of data since there is an intermediate stack copy involved in returning the data.
|
inlineinherited |
|
inlinestaticinherited |
the device class constructor
| kIOReturn | NoMemory means that the system couldn't allocate the class defined in the drivers plist, or nub which ever its trying connecting to |
the registry holds the device's string descriptors before anyone opens it: vendor, product and serial name the device, the path locates it; without a serial the path stands for both
|
inlineoverridevirtualnoexceptinherited |
log object class information
Reimplemented from 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 > > >.
|
inlineinherited |
|
inlineprotectedinherited |
|
inlineinherited |
|
inlineinherited |
(re-)initialization the underlaying windows API is CreateFile(). for detailed information see http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx
| n/a | microsoft does not give information about what possible errors values are provided by its OS |
|
inlineinherited |
|
inlineprotectedinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineoverridevirtualinherited |
launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
Reimplemented from dx::object.
|
inlinestaticnoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
opens the USB device for exclusice access
|
inlinenoexceptinherited |
auto converter into const io_object
|
inlinenoexceptinherited |
auto converter into const io_object
|
inlinenoexceptinherited |
auto converter into const io_object
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
identifying device string, mirroring macOS' io::registry conversion
|
inlinenoexceptinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlineinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlineexplicitinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
auto converter into io_object
|
inlinenoexceptinherited |
auto converter into io_object
|
inlinenoexceptinherited |
auto converter into io_object
|
inlinenoexceptinherited |
auto converter into io_object pointer
|
inlinenoexceptinherited |
auto converter into io_object pointer
|
inlinenoexceptinherited |
auto converter into io_object pointer
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinevirtualinherited |
|
inlinevirtualinherited |
|
inlineinherited |
|
inlineinherited |
the stream's group, created on first use
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinestaticnoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device.
|
inlineinherited |
Setting properties in a registry entry is not generally supported, it is more common to support setting of properties of the connection based property setting of dx::device.
|
inlineinherited |
a sibling thread/process may delete the containing key between value_of()'s create and the set - retry recreates the whole chain in that case
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
subkey+value count, 0 if the key doesn't exist (key_of()'s non-throwing overload - an ordinary, expected outcome here, not a genuine error).
|
inlinestaticnoexceptinherited |
|
inlinevirtualinherited |
notify system will sleep stub
|
inlinevirtualinherited |
notify system will sleep stub
|
inlinevirtualinherited |
the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources
|
inlinenoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
standard device request
|
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
|
inlinenoexceptinherited |
|
inlineoverrideinherited |
| struct { ... } dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >::adc |
|
inherited |
|
inherited |
| struct { ... } dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >::clock |
|
inherited |
dx::timestamp() from which the device's clock is locked to the sample rate last set (desc::clock::lock_delay): the transport charges its pipes no earlier, a session live across the change is re-charged then
|
inherited |
|
inherited |
indicate WinUSB matched against single interface of composite device;
|
protectedinherited |
|
protectedinherited |
the selected configuration's complete descriptor, wTotalLength bytes
|
inherited |
|
inherited |
|
inherited |
the line count an out slot carries per frame - produced by an implicit feedback in pipe, consumed by the asynchronous out pipe
|
inherited |
streaming groups by desc::stream::group id: every stream of this device is registered with its group - behind the settings its groups listen to, so they go first
|
protectedinherited |
per-group chains, wired as each group comes into existence (grouped())
|
inherited |
|
staticconstexprinherited |
the transport's settings belong to another process' device: a hosted device mirrors them through its chains, it keeps no store of them
| struct { ... } 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 > > >::hw |
|
inherited |
|
inherited |
|
inherited |
the AudioControl interface: class requests to units address it
|
inherited |
|
inherited |
staging value for registration paths without their own iosize argument (macOS CF property bridge)
| struct { ... } dx::service::device< dx::preference >::kernel |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
|
inherited |
|
protectedinherited |
|
inherited |
persistent UID - system unique - could change with location
|
inherited |
persistent UID - system unique - could change with location
|
inherited |
persistent universal UID - universally unique ID (i.e. serial number)
|
inherited |
persistent universal UID - universally unique ID (i.e. serial number)
|
inherited |
|
protectedinherited |
|
inherited |
| struct { ... } dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >::selector |
| struct { ... } dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >::source |
|
inherited |
source selectors by stream target: a stream with sources gets its own on first use
|
inherited |
|
inherited |
| struct { ... } dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >::v2 |
|
inherited |
| struct { ... } dx::usb::platform::device< dx::preference >::winusb |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |