|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
#include <dx_proxy_stream_device.h>
Classes | |
| class | chain |
| drives one of the device's own promoted values through an IOCTL More... | |
| class | monitor |
| the driver's clock monitor, mapped on demand and handed back at the end of the scope; a driver that does not keep one answers not_implemented and the monitor stays empty More... | |
| class | promoted |
| dx::proxy::stream::device::promoted with device::preference More... | |
Public Types | |
| typedef desc_t | desc_t |
| typedef shared::event | event_t |
| the driver signals this client through it: the engine's clock and every stream's data events | |
| typedef std::set< std::string > | keys |
| typedef promoted< uint32_t >::template preference< decltype(dx::proxy::device< preference_t >::preference)> | source_t |
| typedef stream_t | stream_t |
| enum class | type : ::DWORD { undefined = REG_NONE , uint32 = REG_DWORD , uint64 = REG_QWORD , string = REG_SZ , vendor = REG_BINARY } |
| 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={}) | |
| void | attach (channel_t **io[dx::stream::direction::directions][2], const std::vector< bool >(&channel_map)[2]) |
| catch (...) | |
| catch (...) | |
| void | conclude () noexcept override |
| conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there. Called only through try_conclude() - never call this directly from outside the class hierarchy. | |
| unsigned char | configuration () const |
| unsigned char | configuration (unsigned char configuration) |
| unsigned char | configurations () const |
| auto | count () const noexcept |
| void | ctl (uint32_t ioctl) const |
| void | ctl (unsigned int ioctl) const |
| registry & | erase (const char *subkey=nullptr) noexcept |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| notification exception handler | |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| notification exception handler | |
| virtual uint64_t | frame () const |
| virtual void | free () noexcept |
| template<typename value_t> | |
| value_t | get () const |
| template<typename value_t> | |
| bool | get (value_t &value) const |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (::CFStringRef key) const |
| ::CFTypeRef | get (::CFStringRef key) const |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (::CFStringRef key, ::CFTypeRef dflt) const noexcept |
| ::CFTypeRef | get (::CFStringRef key, ::CFTypeRef dflt) const noexcept |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (::CFStringRef key, value_t dflt) const noexcept |
| template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>> | |
| value_t | get (key_t key) const |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| ::CFTypeRef | get (key_t key) const |
| void | grouped (typename super::group_t &group) override |
| void | hw_clock (abstract::event *hw_clock, uint32_t iosize) override |
| registers this client's buffer switch event with the driver's clock domain | |
| virtual bool | hw_clock () const noexcept |
| template<typename rx_t> | |
| enable_if_ptr< rx_t > | ictl (uint32_t ioctl) const |
| template<typename rx_t> | |
| enable_if_scalar< rx_t > | ictl (uint32_t ioctl) const |
| template<typename rx_t> | |
| hide_if_scalar_or_ptr< rx_t > | ictl (uint32_t ioctl) const |
| member ioctl | |
| template<typename rx_t> | |
| size_t | ictl (uint32_t ioctl, rx_t &rx) const |
| template<typename rx_t> | |
| rx_t | ictl (unsigned int ioctl) const |
| Windows: member ioctl. | |
| template<typename rx_t> | |
| size_t | ictl (unsigned int ioctl, rx_t &rx) const |
| void | info (std::ostream &os) noexcept override |
| log object class information | |
| 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 (::HKEY root, ::REGSAM rights=KEY_ALL_ACCESS) |
| registry & | initialize (::REGSAM rights=KEY_ALL_ACCESS, ::HKEY root=HKEY_CURRENT_USER) |
| registry & | initialize (const std::string &key, ::HKEY root=HKEY_CURRENT_USER, ::REGSAM rights=KEY_ALL_ACCESS) |
| template<typename rx_t, typename tx_t> | |
| rx_t | ioctl (uint32_t ioctl, const tx_t &tx) const |
| template<typename rx_t, typename tx_t> | |
| size_t | ioctl (uint32_t ioctl, const tx_t &tx, rx_t &rx) const |
| size_t | ioctl (uint32_t ioctl, const void *tx=nullptr, size_t tx_size=0, void *rx=nullptr, size_t rx_size=0) const |
| template<typename rx_t, typename tx_t> | |
| rx_t | ioctl (unsigned int ioctl, const tx_t &tx) const |
| template<typename tx_t, typename rx_t> | |
| size_t | ioctl (unsigned int ioctl, const tx_t &tx, rx_t &rx) 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. | |
| template<typename tx_t, typename = hide_if_ptr<tx_t>> | |
| device & | octl (uint32_t ioctl, const tx_t &tx) |
| template<typename tx_t, typename = enable_if_ptr<tx_t>> | |
| device & | octl (uint32_t ioctl, const tx_t tx) |
| template<typename tx_t> | |
| 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 | |
| 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::CFMutableDictionaryRef () 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 pointer | |
| operator::io_registry_entry_t * () noexcept | |
| auto converter into io_object pointer | |
| virtual void | operator= (const desc_t &desc) |
| 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 |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| ::CFTypeRef | operator[] (key_t key) const |
| registry | parent () const |
| _device & | reset () |
| reference & | retain () |
| registry & | run () |
| device & | set (::CFStringRef key, ::CFTypeRef value) noexcept |
| template<typename value_t, typename = cf::enable_if_convertible<value_t>> | |
| device & | 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. | |
| template<typename key_t, typename = cf::enable_if_convertible<key_t>> | |
| device & | set (key_t key, ::CFTypeRef value) |
| template<typename key_t, typename value_t, typename = cf::enable_if_convertible<key_t>, typename = cf::enable_if_convertible<value_t>> | |
| device & | set (key_t key, value_t value) |
| registry & | set (::DWORD type, const void *value, size_t size) |
| 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 | |
| virtual std::string | string (uint8_t) const |
| 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 |
| ~_device () override | |
Static Public Member Functions | |
| template<typename value_t, typename self_t> | |
| static void | assign (const self_t &self, const value_t &value) |
| template<typename self_t> | |
| static registry | at (const self_t &self) |
| template<typename container_t, typename self_t> | |
| static container_t | children (const self_t &self) noexcept |
| template<typename desc_t> | |
| 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 | |
| template<typename value_t, typename self_t> | |
| static bool | fetch (const self_t &self, value_t &value) |
| template<typename self_t> | |
| static bool | nested (const self_t &self) noexcept |
| template<typename self_t> | |
| static void | purge (const self_t &self) noexcept |
| template<typename self_t> | |
| static size_t | size (const self_t &self) noexcept |
Public Attributes | |
| promoted< typename super::client_map, typename super::client_map::value_t > | clients {*this, ioctl::stream::clients} |
| dx::shared::lockfree::list< registration > | clock |
| the tick walks it without a lock | |
| promoted< uint32_t >::preference< decltype(super::preference)> | clocksource |
| dx::stream::clock::consumer | consumer |
| promoted< desc_t, typename desc_t::value_t > | desc {*this, ioctl::stream::desc} |
| dx::driver< decltype(id), preference_t > & | driver |
| dx::driver< decltype(id), preference_t > & | driver |
| abstract::event * | event |
| 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 { | |
| struct registration { | |
| dx::stream::clock::consumer consumer | |
| abstract::event * event | |
| volatile bool reset {} | |
| } | |
| dx::shared::lockfree::list< registration > clock | |
| the tick walks it without a lock More... | |
| uint32_t iosize | |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) More... | |
| std::mutex mutex | |
| the registrations' writers More... | |
| std::map< abstract::event *, std::unique_ptr< registration > > registrations | |
| } | hw |
| promoted< std::string > | icon {*this, ioctl::device::icon} |
| const std::string | id |
| const ::io_service_t | id |
| 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) | |
| chain< uint32_t > | iosize_server {*this, super::iosize, ioctl::stream::clock::iosize} |
| std::string | key |
| std::atomic< bool > | launched |
| std::atomic< bool > | launched |
| std::deque< std::function< void()> > | listen |
| dx::stream::device::monitor | monitor |
| std::mutex | mutex |
| the registrations' writers | |
| preference_t | preference |
| preference_t | 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) | |
| std::map< abstract::event *, std::unique_ptr< registration > > | registrations |
| std::list< promoted< uint32_t > > | safety_offset_server |
| per group: the kernel keeps the client margins of its streams | |
| dx::promoted< uint32_t > | samplerate |
| bool | schedule_erase {} |
| std::map< decltype(desc_t::stream::target.idx()), source_t > | sources |
| promoted< structdesc_t::stream * >::template preference< decltype(super::preference), uint32_t > | sync_reference |
| class dx::proxy::stream::_device::monitor * | this |
| 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 |
| void | grouped (typename super::group_t &group) override |
| virtual void | grouped (group_t &) |
| operator[](): a group just came into existence, a host wires its per-group transports here | |
| registry & | initialize (const std::string &key, ::REGSAM rights, ::HKEY root, const char *path=nullptr) |
| virtual void | launch () |
| launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy. | |
Protected Attributes | |
| bool | connected = false |
| std::list< promoted > | group_server |
| per-group chains, wired as each group comes into existence (grouped()) | |
| ::HANDLE | handle {invalid_t} |
| struct { | |
| cf::string bundle_id | |
| cf::string class_name | |
| } | kernel |
| class dx::service::device::promoted | pipe |
| server | pipe |
| io::port | port |
| ::HANDLE | process {::GetCurrentProcess()} |
Friends | |
| template<typename> | |
| class | dx::proxy::stream::group |
| the app wraps this bus's own group, so friendship has to name it, not just the device's group_t | |
|
inherited |
| typedef shared::event dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::event_t |
the driver signals this client through it: the engine's clock and every stream's data events
|
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 |
|
inline |
the driver's log mask follows the host's: –log-level reaches the kernel
|
inlineoverride |
|
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 |
|
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.
|
inlineoverridevirtualnoexcept |
conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there. Called only through try_conclude() - never call this directly from outside the class hierarchy.
Reimplemented from dx::proxy::device< preference_t >.
|
inline |
|
inline |
|
inline |
|
inlinenoexceptinherited |
|
inlinestaticinherited |
persisted software device: PnP keeps it enumerated after the creating handle closes
|
inlineinherited |
|
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
|
inlinenoexceptinherited |
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Reimplemented from dx::device<::io_service_t, preference_t >.
Reimplemented in dx::usb::device< preference_t >, dx::usb::device< dx::preference >, dx::usb::platform::device< preference_t >, dx::usb::platform::device< preference_t >, dx::usb::platform::device< dx::preference >, dx::usb::platform::device< preference_t >, and dx::usb::platform::device< preference_t >.
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Reimplemented from dx::device<::io_service_t, preference_t >.
Reimplemented in dx::usb::platform::device< preference_t >, and dx::usb::platform::device< preference_t >.
|
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
|
inlinevirtual |
|
inlinevirtualnoexceptinherited |
Reimplemented in dx::coreaudio::pod::stream< device_t, circular_t >, dx::pipe< rcv_t >, dx::pipe< dx::service::request< service::stream::data< desc > > >, dx::pipe< dx::service::request< service::stream::data< desc_t > > >, dx::pipe< dx::service::request< service::stream::data< typename device_t::desc_t > > >, dx::pipe< request >, dx::pipe< request_t >, dx::service::manager::promoted, dx::shared::memory< buffer_t >, dx::shared::memory< buffer_t >, dx::shared::memory< circular_t >, dx::shared::memory< circular_t >, dx::shared::memory< dx::circular >, dx::shared::memory< dx::stream::clock::monitor >, dx::shared::memory< dx::stream::clock::monitor >, dx::stream::shared::stream< device_t, circular_t, super_stream_t, event_t >, dx::stream::shared::stream< device_t, circular_t >, dx::stream::shared::stream< device_t, circular_t, super_stream_t, event_t >, dx::stream::shared::stream< device_t, dx::circular >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, dx::template server< request >, dx::template server< user_client, std::weak_ptr< device > >, and dx::usb::stream::pipe< device_t, circular_t, stream_t >.
|
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 |
like get<value_t>() but returns false for ERROR_FILE_NOT_FOUND, from either RegQueryValueExA or value_of() itself; any other failure throws.
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineoverride |
|
inlineoverrideprotectedinherited |
|
inlineprotectedvirtualinherited |
operator[](): a group just came into existence, a host wires its per-group transports here
|
inlineoverridevirtual |
registers this client's buffer switch event with the driver's clock domain
The driver owns the clock: it signals every registered client at that client's own iosize, so the engine's event has to be one the driver can signal. A device whose driver does not take the registration falls back to the engine's own software clock through not_implemented.
Reimplemented from dx::stream::device< dx::proxy::device< preference_t >, desc_t, stream_t, group_t >.
|
inlinevirtualnoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
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 |
|
inlineinherited |
Windows: 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.
the underlaying windows API is DeviceIoControl(). for detailed information see http://msdn.microsoft.com/en-us/library/aa363216(VS.85).aspx
| n/a | microsoft does not give information about what possible errors values are provided by its OS other than |
| ERROR_INSUFFICIENT_BUFFER | if the output buffer is too small to receive any data |
| rx_t | type of rx_t needs to be explicitly specified as it can't be deduced |
|
inlineinherited |
|
inlineoverridevirtualnoexcept |
log object class information
Reimplemented from dx::proxy::device< preference_t >.
|
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 |
|
inlineinherited |
|
inlineinherited |
|
inlineprotectedinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineprotectedvirtualinherited |
launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
|
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.
Reimplemented in dx::usb::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::usb::stream::_device< desc_t, dx::preference, pipe< device< desc_t, dx::preference, pipe, group > >, group< device< desc_t, dx::preference, pipe, group > > >, and dx::usb::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t > >, group_t< device< desc_t, preference_t, stream_t, group_t > > >.
|
inlinestaticnoexceptinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
the desc's stream: the registered one, else created, registered and launched
|
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 |
|
inlineexplicitinherited |
|
inlinenoexceptinherited |
|
inlinenoexceptinherited |
|
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
|
inlinevirtual |
|
inlinenoexceptinherited |
|
inlinevirtualinherited |
the device's own diagnostics, beyond dx::object::info
|
inlinevirtualinherited |
|
inlineinherited |
the stream's group, created on first use
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlinestaticnoexceptinherited |
|
inline |
|
inlineinherited |
|
inlineinherited |
|
inlinenoexceptinherited |
|
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 |
|
inlineinherited |
|
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
|
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
|
inlinevirtual |
|
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 |
|
inlineoverridevirtualinherited |
Reimplemented from dx::device<::io_service_t, preference_t >.
|
friend |
the app wraps this bus's own group, so friendship has to name it, not just the device's group_t
|
inherited |
| promoted<typename super::client_map, typename super::client_map::value_t> dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::clients {*this, ioctl::stream::clients} |
|
inherited |
the tick walks it without a lock
|
inherited |
|
protectedinherited |
|
inherited |
| promoted<desc_t, typename desc_t::value_t> dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::desc {*this, ioctl::stream::desc} |
|
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 |
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< dx::proxy::device< preference_t >, desc_t, stream_t, group_t >::hw |
| promoted<std::string> dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::icon {*this, ioctl::device::icon} |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
staging value for registration paths without their own iosize argument (macOS CF property bridge)
| chain<uint32_t> dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::iosize_server {*this, super::iosize, ioctl::stream::clock::iosize} |
| struct { ... } dx::service::device< preference_t >::kernel |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
the registrations' writers
|
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 |
| std::list<promoted<uint32_t> > dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::safety_offset_server |
per group: the kernel keeps the client margins of its streams
| dx::promoted<uint32_t> dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::samplerate |
|
inherited |
|
inherited |
source selectors by stream target: a stream with sources gets its own on first use
|
inherited |
| class dx::proxy::stream::_device::monitor* dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >::this |
|
inherited |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |