|
dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
|
a USB device that streams: the stream device's settings wired to the class requests of the device (the rate to the endpoints stating the sampling frequency control, the clock source and the channel source to their units), its streams the pipes below More...
#include <dx_usb_stream_device.h>
Classes | |
| struct | [struct].adc |
Public Types | |
| typedef desc_t | desc_t |
| typedef event | event_t |
| typedef std::conditional_t< std::is_void_v< group_t >, dx::stream::group< device >, group_t > | 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< preference_t >::preference)> | source_t |
| typedef stream_t | stream_t |
| enum | type |
| the value types this store keeps - a scalar rides as REG_DWORD/REG_QWORD rather than as a byte copy, so a value written here reads like any other in the registry editor More... | |
Public Member Functions | |
| _device (decltype(super::driver)&driver, decltype(super::id)&id, const std::pair< std::string, std::string > &identity={}) | |
| 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) |
| registers a consumer with the device's clock: it is signalled every iosize samples of the clock's own advance. A bus whose driver owns the clock hands the registration on instead | |
| 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 |
| std::shared_ptr< stream_t > | open (const typename desc_t::stream::desc &desc) |
| the desc's stream: the registered one, else created, registered and launched | |
| 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 |
| the device's own diagnostics, beyond dx::object::info | |
| virtual device & | operator>> (std::ostream &) const |
| the device's own diagnostics, beyond dx::object::info | |
| group_t & | operator[] (const typename desc_t::stream::desc &stream) |
| the stream's group, created on first use | |
| ::CFTypeRef | operator[] (::CFStringRef key) const |
| ::CFTypeRef | operator[] (key_t key) const |
| registry | parent () const |
| registry | parent () const |
| os_result | rate (const struct desc_t::stream &stream, uint32_t &rate, bool set) noexcept |
| 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) |
| 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. | |
| 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 (::DWORD typetype, 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 | |
| std::pair< typename super::source_t &, bool > | source (const struct desc_t::stream &stream) override |
| a stream's source selector is the selector unit's input pin, read/written/read back; its class request wraps the preference's own server | |
| os_result | status () const noexcept |
| template<size_t size = 0x100> | |
| 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 requestrequest< data_t > &requestrequest) |
| 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. 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 | |
| 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 | adc |
| uint16_t | bcdADC {} |
| 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::map< decltype(desc_t::stream::group), group_t > | 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 | |
| struct dx::stream::device:: { ... } | hw |
| promoted< std::string >::preference< decltype(super::preference)> | icon |
| const ::io_service_t | id |
| const ::io_service_t | id |
| interface | |
| return | interface == end()? nullptr: &static_cast<const usb::interface&>(*interface) |
| class const dx::usb::interface & | interface {return interface.bInterfaceNumber== index |
| promoted< uint32_t >::preference< decltype(super::preference)> | iosize |
| 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) | |
| uint32_t | rated {} |
| promoted< uint32_t >::preference< decltype(super::preference)> | samplerate |
| bool | schedule_erase |
| 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 |
| 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_t &) |
| operator[](): a group just came into existence, a host wires its per-group transports here | |
| void | grouped (typename super::group_t &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()) | |
| ::HANDLE | handle |
| struct dx::service::device:: { ... } | 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 dx::usb::platform::device:: { ... } | winusb |
a USB device that streams: the stream device's settings wired to the class requests of the device (the rate to the endpoints stating the sampling frequency control, the clock source and the channel source to their units), its streams the pipes below
|
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 |
the value types this store keeps - a scalar rides as REG_DWORD/REG_QWORD rather than as a byte copy, so a value written here reads like any other in the registry editor
|
inline |
|
inlinestaticinherited |
|
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
|
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 |
|
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 |
|
inlineoverridevirtualnoexceptinherited |
ends every group's session before the device's resources go; the start counts stay with their holders
Reimplemented from dx::object.
|
inlineinherited |
|
inlineoverridevirtualinherited |
the interface tree across a configuration change: dropped ahead of it, enumerated again once the device carries the new configuration
Reimplemented from dx::usb::platform::device< dx::preference >.
|
inlineinherited |
|
inlinevirtual |
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 |
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Reimplemented from dx::device<::io_service_t, dx::preference >.
|
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 |
registers a consumer with the device's clock: it is signalled every iosize samples of the clock's own advance. A bus whose driver owns the clock hands the registration on instead
|
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
|
inlineoverridevirtualnoexcept |
log object class information
Reimplemented from dx::stream::device< usb::device< preference_t >, desc_t, stream_t, group_t >.
|
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 |
|
inlineoverridevirtual |
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 |
the desc's stream: the registered one, else created, registered and launched
|
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 |
the device's own diagnostics, beyond dx::object::info
|
inlinevirtualinherited |
the device's own diagnostics, beyond dx::object::info
|
inlineinherited |
the stream's group, created on first use
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinestaticnoexceptinherited |
|
inlinenoexcept |
the sampling frequency request to a stream's endpoint over the interface owning it, in the stream's alternate setting - the endpoint exists there alone: sets the rate, or reads it
|
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
|
inlineoverridevirtual |
a stream's source selector is the selector unit's input pin, read/written/read back; its class request wraps the preference's own server
Reimplemented from dx::stream::device< usb::device< preference_t >, desc_t, stream_t, group_t >.
|
inlinenoexceptinherited |
|
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 |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlineoverridevirtualinherited |
Reimplemented from dx::device<::io_service_t, dx::preference >.
| struct dx::usb::stream::_device::[struct].adc dx::usb::stream::_device< desc_t, preference_t, stream_t, group_t >::adc |
| uint16_t dx::usb::stream::_device< desc_t, preference_t, stream_t, group_t >::bcdADC {} |
| std::atomic<int64_t> dx::usb::stream::_device< desc_t, preference_t, stream_t, group_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
|
inherited |
|
inherited |
indicate WinUSB matched against single interface of composite device;
|
protectedinherited |
|
protectedinherited |
the selected configuration's complete descriptor, wTotalLength bytes
|
inherited |
|
inherited |
|
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())
|
protectedinherited |
|
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< preference_t >, desc_t, stream_t, group_t >::hw |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
| 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)
| uint32_t dx::usb::stream::_device< desc_t, preference_t, stream_t, group_t >::rated {} |
the streams whose endpoints take the sampling frequency control, a bit each (usb::audio::rated)
|
inherited |
|
protected |
|
inherited |
|
inherited |
source selectors by stream target: a stream with sources gets its own on first use
|
inherited |
|
inherited |
|
inherited |
| struct { ... } dx::usb::platform::device< dx::preference >::winusb |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |