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...
|
| virtual desc_t::configuration | align(const typename desc_t::configuration& value, const typename desc_t::configuration &) |
| | a configuration the device can run: every stream's index within its configurations, one past them the stream off - a bus device narrows it to what its bus carries, the streams value leaves as current has them standing
|
| 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
|
| virtual uint64_t | budget(const typename desc_t::configuration &) |
| | the periodic bus time the configuration takes, in ns - a bus device with a periodic budget states it
|
| 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
|
| 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
|
| 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
|
| group_t& | operator [](const typename _desc_t::stream::desc& stream) |
| | the stream's group, created on first use
|
| template<typename f_t> |
| void | setting(dx::stream::setting settingsetting, 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
|
| 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 |
template<typename _super_device_t, typename _desc_t, typename _stream_t, typename _group_t = void>
class dx::stream::device< _super_device_t, _desc_t, _stream_t, _group_t >
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.
template<typename _super_device_t, typename _desc_t, typename _stream_t, typename _group_t= void>
| virtual desc_t::configuration dx::stream::device<_super_device_t, _desc_t, _stream_t, _group_t>::align(const typename desc_t::configuration& value, const typename desc_t::configuration&) |
|
inlinevirtual |
a configuration the device can run: every stream's index within its configurations, one past them the stream off - a bus device narrows it to what its bus carries, the streams value leaves as current has them standing
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 > > >.
template<typename _super_device_t, typename _desc_t, typename _stream_t, typename _group_t= void>
the periodic bus time the configuration takes, in ns - a bus device with a periodic budget states it
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 > > >.
template<typename _super_device_t, typename _desc_t, typename _stream_t, typename _group_t= void>
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, super_device_t >, dx::proxy::stream::_device< desc_t, preference_t, stream_t< device< desc_t, preference_t, stream_t, group_t, super_device_t > >, group_t< device< desc_t, preference_t, stream_t, group_t, super_device_t > >, super_device_t >, dx::proxy::stream::_device< dx::stream::desc<>, dx::preference, stream< device< dx::stream::desc<>, dx::preference, stream, group, dx::proxy::device< dx::preference > > >, group< device< dx::stream::desc<>, dx::preference, stream, group, dx::proxy::device< dx::preference > > >, dx::proxy::device< dx::preference > >, 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 > > >.
template<typename _super_device_t, typename _desc_t, typename _stream_t, typename _group_t= void>
| std::shared_ptr<stream_t> dx::stream::device<_super_device_t, _desc_t, _stream_t, _group_t>::open(const typename _desc_t::stream::desc& desc, bool client= false) |
|
inline |
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
template<typename _super_device_t, typename _desc_t, typename _stream_t, typename _group_t= void>
| virtual std::pair<source_t &, bool> dx::stream::device<_super_device_t, _desc_t, _stream_t, _group_t>::source(const struct _desc_t::stream& stream) |
|
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 > > >.