|
dxd - dynax driver framework 3.0.2
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::set<std::string> | keys |
| typedef promoted<uint32_t>::template preference<decltype(super_device_t::preference)> | source_t |
| typedef stream_t | stream_t |
| typedef usb::device<preference_t> | 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 | |
| _device(decltype(super::driver)& driver, decltype(super::id)& id, const std::pair<std::string, std::string>& identity= {}) | |
| 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 |
| std::shared_ptr<stream_t> | 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 | |
| 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 | |
| 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 << | |
| group_t& | 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 [](::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) |
| 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 |
| template<size_t size> | |
| 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 language language=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 | 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_t> | 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 == 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::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 | |
| 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 |
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 |
|
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
|
inline |
|
inlineoverridevirtual |
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< preference_t >, desc_t, stream_t, group_t >.
|
inlinestaticinherited |
|
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
|
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 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
|
inlineoverridevirtual |
the periodic bus time the configuration takes, in ns: to hold against budget(), what the bus offers
Reimplemented from dx::stream::device< usb::device< preference_t >, desc_t, stream_t, group_t >.
|
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
|
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 |
|
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.
|
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 |
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
|
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 |
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 |
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 |
|
inlineinherited |
|
inlinestaticnoexceptinherited |
|
inlinenoexcept |
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
|
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 |
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 |
|
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{} |
|
inherited |
the driver's values mirrored here that listen: each reads itself back where it stands initialized
| 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 |
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<preference_t>, desc_t, stream_t, group_t>::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)
| 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 |