|
dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
|
the bus's device as a product composes it: the _device above with this bus's pipes and its own ticking group More...
#include <dx_usb_stream_device.h>
Public Types | |
| typedef desc_t | desc_t |
| typedef event | event_t |
| typedef std::set<std::string> | keys |
| typedef promoted<uint32_t>::template preference<decltype(super_device_t::preference)> | source_t |
| typedef pipe<device<desc_t, dx::preference, pipe, group>> | stream_t |
| typedef usb::device<dx::preference> | super_device_t |
| the device this streaming device sits on: its own operations of a name this class takes for itself (a USB device's configuration()) are reached through it | |
| 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 | |
| desc_t::configuration | align(const typename desc_t::configuration& value, const typename desc_t::configuration& current) override |
| the configuration the device's bus carries: its USB configuration, per stream what the rate and the periodic budget leave (usb::align) - the rate as it stands, never asked from inside its own server | |
| usb::interface& | at(const usb::endpoint& endpoint) |
| the interface one of whose settings carries the endpoint: an endpoint address belongs to one interface of a configuration | |
| usb::interface& | at(uint8_t number) |
| void | attach(void** io[dx::stream::direction::directions][2], const std::vector<bool>(& channel_map)[2], const dx::stream::format(& format)[2]) |
| the consumer's planar channel buffers in the format each direction's buffers carry | |
| uint64_t | budget() const |
| the periodic bus time a (micro) frame offers the device's isochronous endpoints, in ns: 90% of a full speed frame, 80% of a high speed micro frame, no bound above | |
| uint64_t | budget(const typename desc_t::configuration& value) override |
| the periodic bus time the configuration takes, in ns: to hold against budget(), what the bus offers | |
| 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() |
| a desc without streams takes them from the configuration's audio class descriptors | |
| 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 |
| 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. | |
| rx_t* | map(uint32_t typetype) const |
| maps the memory the given type names into this client | |
| 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 | |
| std::shared_ptr<pipe<device<desc_t, dx::preference, pipe, group>>> | open(const typename desc_t::stream::desc& desc, bool client= false) |
| the desc's stream: the registered one, else created, registered and launched - a host's client takes a data driven stream alone, its ring has one writer and one reader | |
| 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 | |
| const struct desc_t::stream::config& | operator ()(const struct desc_t::stream& stream) |
| the stream configuration the device runs the stream in: the stream is one of the desc's | |
| ::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 its operator << | |
| virtual device& | operator >>(std::ostream &) const |
| the device's own diagnostics, beyond its operator << | |
| virtual device& | operator >>(std::ostream &) const |
| the device's own diagnostics, beyond its operator << | |
| ::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 | |
| usb::interface* | operator [](const usb::endpoint& endpoint) |
| the interface one of whose settings carries the endpoint, nullptr where none of this device node does | |
| ::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) |
| void | setting(dx::stream::setting setting, uint32_t index, f_t&& f) |
| the setting a host keeps for its clients handed to f as its promoted: the transport settings the sync reference's group's, the source the one of the stream whose target index is index | |
| size_t | size() const noexcept |
| virtual void | sleep() |
| notify system will sleep stub | |
| 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 |
| void | string(uint8_t idx, char(& string)[size], enum language language=language::standard) |
| the string descriptor of the index as UTF-8 into string, as the kernel reads it | |
| void | string(uint8_t idx, char(& string)[size], enum language language=language::standard) |
| the string descriptor of the index as UTF-8 into string, as the kernel reads it | |
| std::string | string(uint8_t idx, enum languagelanguage languagelanguage=language::standard) |
| std::string | string(uint8_t) 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_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 | |
| 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 |
| const device& | unmap(uint32_t typetype, rx_t* rx) const |
| 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 dx::usb::stream::_device:: { ... } | adc |
| uint16_t | bcdADC |
| dx::listen<std::function<void()>> | broadcast |
| the driver's values mirrored here that listen: each reads itself back where it stands initialized | |
| 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 |
| promoted<typenamedesc_t::configuration>::template preference<decltype(super::preference)> | configuration |
| the device's configuration: per stream the stream configuration it runs, the richest by default - a bus device narrows it to what its bus carries (align()), and it stands while a group is started | |
| dx::driver<decltype(id), dx::preference>& | driver |
| dx::driver<decltype(id), dx::preference>& | driver |
| dx::driver<decltype(id), dx::preference>& | driver |
| std::map<decltype(desc_t::stream::group), group<device<desc_t, dx::preference, pipe, group>>> | group |
| struct dx::stream::device:: { ... } | hw |
| promoted<std::string>::preference<decltype(super::preference)> | icon |
| const ::io_service_t | id |
| const ::io_service_t | id |
| const std::string | id |
| interface | |
| return | interface |
| class const dx::usb::interface& | interface |
| promoted<uint32_t>::preference<decltype(super::preference)> | iosize |
| std::string | key |
| std::atomic<bool> | launched |
| std::atomic<bool> | launched |
| std::atomic<bool> | launched |
| std::deque<std::function<void()>> | listen |
| event | listener |
| this client's listener on the driver's values: every change it signals reads them back | |
| dx::stream::device::monitor | monitor |
| dx::preference | preference |
| 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 | 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) | |
| 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 auto | device_class |
| the IOProviderClass a USB bus enumerates | |
| 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 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 | |
| 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 | 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 | |
| ::HANDLE | handle |
| struct dx::registry::device:: { ... } | kernel |
| std::atomic<int> | opened |
| io::port | port |
| ::HANDLE | process |
| decltype(super::samplerate) ::chain | samplerate_server |
| struct dx::usb::platform::device:: { ... } | winusb |
the bus's device as a product composes it: the _device above with this bus's pipes and its own ticking group
< the app's consumer group (dx::stream::engine::group) wraps this bus's own
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
the device this streaming device sits on: its own operations of a name this class takes for itself (a USB device's configuration()) are reached through it
|
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
|
inlineoverridevirtualinherited |
the configuration the device's bus carries: its USB configuration, per stream what the rate and the periodic budget leave (usb::align) - the rate as it stands, never asked from inside its own server
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 > > >.
|
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 one of whose settings carries the endpoint: an endpoint address belongs to one interface of a configuration
|
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 |
the consumer's planar channel buffers in the format each direction's buffers carry
|
inlineinherited |
the periodic bus time a (micro) frame offers the device's isochronous endpoints, in ns: 90% of a full speed frame, 80% of a high speed micro frame, no bound above
|
inlineoverridevirtualinherited |
the periodic bus time the configuration takes, in ns: to hold against budget(), what the bus offers
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 > > >.
|
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 |
the interface tree across a configuration change: dropped ahead of it, enumerated again once the device carries the new configuration
|
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
|
inlineprotectedvirtualinherited |
operator[](): a group just came into existence, a host wires its per-group transports here
|
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
|
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.
|
inlineinherited |
maps the memory the given type names into this client
DriverKit maps into the dext, never into its client: what a WDM driver hands back as a pointer is fetched here, with the type the driver answers in IOUserClient::CopyClientMemoryForType().
|
inlinestaticnoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
opens the USB device for exclusice access
|
inlineinherited |
the desc's stream: the registered one, else created, registered and launched - a host's client takes a data driven stream alone, its ring has one writer and one reader
|
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 |
the stream configuration the device runs the stream in: the stream is one of the desc's
|
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 its operator <<
|
inlinevirtualinherited |
the device's own diagnostics, beyond its operator <<
|
inlinevirtualinherited |
the device's own diagnostics, beyond its operator <<
|
inlineinherited |
|
inlineinherited |
the stream's group, created on first use
|
inlineinherited |
the interface one of whose settings carries the endpoint, nullptr where none of this device node does
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinestaticnoexceptinherited |
|
inlinenoexceptinherited |
the sampling frequency request to a stream's endpoint over the interface owning it, in the alternate setting its session's charge selected - 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 |
|
inlineinherited |
the setting a host keeps for its clients handed to f as its promoted: the transport settings the sync reference's group's, the source the one of the stream whose target index is index
|
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 |
notify system will sleep stub
|
inlineoverridevirtualinherited |
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< dx::preference >, desc_t, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >.
|
inlinenoexceptinherited |
|
inlineinherited |
the string descriptor of the index as UTF-8 into string, as the kernel reads it
|
inlineinherited |
the string descriptor of the index as UTF-8 into string, as the kernel reads it
|
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
|
inlinenoexceptinherited |
atomically conclude()s if currently launched; returns whether this call did it
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlineinherited |
|
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 |
the driver's values mirrored here that listen: each reads itself back where it stands initialized
|
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 |
the device's configuration: per stream the stream configuration it runs, the richest by default - a bus device narrows it to what its bus carries (align()), and it stands while a group is started
|
protectedinherited |
|
protectedinherited |
the selected configuration's complete descriptor, wTotalLength bytes
|
staticconstexprinherited |
the IOProviderClass a USB bus enumerates
|
inherited |
|
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 |
|
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 |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
| struct { ... } dx::registry::device<dx::preference>::kernel |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
this client's listener on the driver's values: every change it signals reads them back
|
inherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
|
inherited |
persistent UID - system unique - could change with location
|
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 |
persistent universal UID - universally unique ID (i.e. serial number)
|
inherited |
the streams whose endpoints take the sampling frequency control, a bit each (usb::audio::rated)
|
inherited |
|
protectedinherited |
|
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 |