|
dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
|
a streaming device: its desc, the settings the desc defaults, the streams of that desc grouped by dx::stream::group and the clock those groups run on. Every bus device derives from this one and supplies what its transport does differently - the settings' servers (a rate written to the hardware), the group's tick, the streams' rings. The settings themselves are promoted preferences here, so a wish survives the device and is asked of the transport once the device is there. More...
#include <dx_stream_device.h>
Classes | |
| struct | [struct].hw |
| class | monitor |
| the device's performance counters in shared memory, so a second process (the test app's clock monitor) reads what the streaming session measures; every fetch initializes an unused buffer More... | |
| class | pause |
| RAII: pauses every one of this device's groups (remembered count, force-stopped) across a streams structure mutation, restarts all on destruction. More... | |
| struct | property |
| the preference keys of this device's settings, named once - the store's layout is these words, and a host's own property names never reach the store More... | |
Public Types | |
| typedef _desc_t | desc_t |
| typedef event | event_t |
| typedef std::conditional_t< std::is_void_v< _group_t >, dx::stream::group< device >, _group_t > | group_t |
| bus devices driving their groups' tick pass their own group type | |
| typedef promoted< uint32_t >::template preference< decltype(super_device_t::preference)> | source_t |
| typedef _stream_t | stream_t |
Public Member Functions | |
| template<typename channel_t> | |
| void | attach (channel_t **io[dx::stream::direction::directions][2], const std::vector< bool >(&channel_map)[2]) |
| void | conclude () noexcept override |
| ends every group's session before the device's resources go; the start counts stay with their holders | |
| device (decltype(super::driver)&driver, const decltype(super::id)&id, const desc_t &desc, const std::pair< std::string, std::string > &identity={}) | |
| device (decltype(super::driver)&driver, const decltype(super::id)&id, decltype(super::preference)&&preferencepreference, const desc_t &desc, const std::pair< std::string, std::string > &identity={}) | |
| device (decltype(super::driver)&driver, const decltype(super::id)&id, desc_t &&desc, const std::pair< std::string, std::string > &identity={}) | |
| a desc temporary moves into the desc base, and wins over control's forwarding constructor, which binds an rvalue just as well | |
| 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 | |
| void | info (std::ostream &os) noexcept override |
| 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 | |
| group_t & | operator[] (const typename _desc_t::stream::desc &stream) |
| the stream's group, created on first use | |
| 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 | |
| void | wake () override |
Public Attributes | |
| promoted< uint32_t >::preference< decltype(super::preference)> | clocksource |
| 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 | hw |
| promoted< std::string >::preference< decltype(super::preference)> | icon {this->preference} |
| promoted< uint32_t >::preference< decltype(super::preference)> | iosize |
| dx::stream::device::monitor | monitor |
| promoted< uint32_t >::preference< decltype(super::preference)> | samplerate |
| std::map< decltype(_desc_t::stream::target.idx()), source_t > | sources |
| promoted< structdesc_t::stream * >::template preference< decltype(super::preference), uint32_t > | sync_reference |
| dx::stream::device::monitor | version |
Static Public Attributes | |
| static constexpr bool | hosted {} |
| the transport's settings belong to another process' device: a hosted device mirrors them through its chains, it keeps no store of them | |
Protected Member Functions | |
| virtual void | grouped (group_t &) |
| operator[](): a group just came into existence, a host wires its per-group transports here | |
a streaming device: its desc, the settings the desc defaults, the streams of that desc grouped by dx::stream::group and the clock those groups run on. Every bus device derives from this one and supplies what its transport does differently - the settings' servers (a rate written to the hardware), the group's tick, the streams' rings. The settings themselves are promoted preferences here, so a wish survives the device and is asked of the transport once the device is there.
| typedef _desc_t dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::desc_t |
| typedef event dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::event_t |
| typedef std::conditional_t<std::is_void_v<_group_t>, dx::stream::group<device>, _group_t> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::group_t |
bus devices driving their groups' tick pass their own group type
| typedef promoted<uint32_t>::template preference<decltype(super_device_t::preference)> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::source_t |
| typedef _stream_t dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::stream_t |
|
inline |
|
inline |
a desc temporary moves into the desc base, and wins over control's forwarding constructor, which binds an rvalue just as well
|
inline |
|
inline |
|
inlineoverridenoexcept |
ends every group's session before the device's resources go; the start counts stay with their holders
Reimplemented in dx::virtuel::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::virtuel::stream::_device< desc, dx::preference, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, and dx::virtuel::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 > > >.
|
inlineprotectedvirtual |
operator[](): a group just came into existence, a host wires its per-group transports here
|
inlinevirtualnoexcept |
|
inlinevirtual |
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
Reimplemented in dx::coreaudio::pod::device< desc_t, preference_t, stream_t, group_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::proxy::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 > > >, dx::proxy::stream::_device< dx::stream::desc<>, dx::preference, stream< device< dx::stream::desc<>, dx::preference, stream, group > >, group< device< dx::stream::desc<>, dx::preference, stream, group > > >, dx::service::client::_device< desc_t, preference_t, stream_t, group_t >, dx::service::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, and dx::service::client::_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 > > >.
|
inlineoverridenoexcept |
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 > > >, 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 > > >, dx::virtuel::stream::_device< desc_t, preference_t, stream_t, group_t >, dx::virtuel::stream::_device< desc, dx::preference, dx::stream::shared::stream< device< desc, dx::preference, dx::stream::shared::stream, group > >, group< device< desc, dx::preference, dx::stream::shared::stream, group > > >, dx::virtuel::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 > > >, and dx::wasapi::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >.
|
inline |
the desc's stream: the registered one, else created, registered and launched
|
inline |
the stream's group, created on first use
|
inlinevirtual |
the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources
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 > > >.
|
inlineoverride |
| promoted<uint32_t>::preference<decltype(super::preference)> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::clocksource |
| std::map<decltype(_desc_t::stream::group), group_t> dx::stream::device< super_device_t, _desc_t, _stream_t, _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
|
staticconstexpr |
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::[struct].hw dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::hw |
| promoted<std::string>::preference<decltype(super::preference)> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::icon {this->preference} |
| promoted<uint32_t>::preference<decltype(super::preference)> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::iosize |
| dx::stream::device::monitor dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::monitor |
| promoted<uint32_t>::preference<decltype(super::preference)> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::samplerate |
| std::map<decltype(_desc_t::stream::target.idx()), source_t> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::sources |
source selectors by stream target: a stream with sources gets its own on first use
| promoted<structdesc_t::stream*>::template preference<decltype(super::preference), uint32_t> dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::sync_reference |
| dx::stream::device::monitor dx::stream::device< super_device_t, _desc_t, _stream_t, _group_t >::version |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |