|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
ASIO client streaming device interface class. More...
#include <dx_asio_client_device.h>
Classes | |
| class | asio |
| the SDK driver this device is, opened off a list of its own: its id holds however the registry moves More... | |
Public Types | |
| typedef desc_t | desc_t |
| typedef event | event_t |
| typedef promoted< uint32_t >::template preference< decltype(dx::device< dx::guid, preference_t >::preference)> | source_t |
Public Member Functions | |
| _device (decltype(super::driver)&driver, decltype(super::id)&id) | |
| the ASIO stream device class constructor | |
| template<typename channel_t> | |
| void | attach (channel_t **io[dx::stream::direction::directions][2], const std::vector< bool >(&)[2]) |
| 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. | |
| void | exception (const dx::exception &exception, bool filtered=false) const noexcept override |
| notification exception handler | |
| virtual uint64_t | frame () const |
| virtual bool | hw_clock () const noexcept |
| virtual void | hw_clock (abstract::event *hw_clock, uint32_t iosize) |
| void | info (std::ostream &os) noexcept override |
| log object class information | |
| virtual device & | operator>> (std::ostream &) const |
| group_t & | operator[] (const typename desc_t::stream::desc &stream) |
| the stream's group, created on first use | |
| _device & | reset () |
| 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 | |
| std::string | string (uint8_t) |
| 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 | |
| void | wake () override |
| ~_device () override | |
Public Attributes | |
| promoted< typename super::client_map > | clients |
| dx::shared::guard< std::map< abstract::event *, dx::stream::clock::consumer > > | clock |
| event -> its own iosize and sample counter | |
| promoted< uint32_t >::preference< decltype(super::preference)> | clocksource |
| promoted< desc_t >::template preference< preference_t, typename desc_t::value_t > | desc {this->preference} |
| dx::driver< decltype(id), preference_t > & | driver |
| 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 { | |
| dx::shared::guard< std::map< abstract::event *, dx::stream::clock::consumer > > clock | |
| event -> its own iosize and sample counter More... | |
| uint32_t iosize | |
| staging value for registration paths without their own iosize argument (macOS CF property bridge) More... | |
| } | hw |
| promoted< std::string >::preference< decltype(super::preference)> | icon |
| const id_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) | |
| std::atomic< bool > | launched {} |
| dx::stream::device::monitor | monitor |
| preference_t | preference {driver.preference[puuid]} |
| std::string | puid |
| persistent UID - system unique - could change with location | |
| std::string | puuid |
| persistent universal UID - universally unique ID (i.e. serial number) | |
| 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 | |
| long | asioMessage (long selector, long value, void *message, double *opt) noexcept override |
| void | bufferSwitch (long doubleBufferIndex, ::ASIOBool) noexcept override |
| the ASIO host's processing place: this device's groups tick right here, on the driver's own callback, on the half it names | |
| ::ASIOTime * | bufferSwitchTimeInfo (::ASIOTime *params, long doubleBufferIndex, ::ASIOBool directProcess) noexcept override |
| virtual void | grouped (group_t &) |
| operator[](): a group just came into existence, a host wires its per-group transports here | |
| 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. | |
| operator::ASIOCallbacks * () | |
| void | sampleRateDidChange (::ASIOSampleRate sRate) noexcept override |
Protected Attributes | |
| long | half {} |
| decltype(super::samplerate) ::chain | samplerate_server |
| the driver runs the rate the app sets, aligned to what it can | |
| class dx::asio::client::_device::asio * | this |
| uint32_t | thunk_idx {} |
Friends | |
| template<typename> | |
| class | client::group |
| the app wraps this bus's own group, so friendship has to name it, not just the device's group_t | |
ASIO client streaming device interface class.
| In | case of an error returned by the underlaying API the device class throws a dx::exception. |
|
inherited |
|
inherited |
|
inherited |
|
inline |
the ASIO stream device class constructor
< both directions run off the ASIO driver's one clock
|
inlineoverride |
|
inlineoverrideprotectedvirtualnoexcept |
Implements dx::asio::client::callbacks.
|
inline |
|
inlineoverrideprotectedvirtualnoexcept |
the ASIO host's processing place: this device's groups tick right here, on the driver's own callback, on the half it names
Implements dx::asio::client::callbacks.
|
inlineoverrideprotectedvirtualnoexcept |
Implements dx::asio::client::callbacks.
|
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::object.
|
inlineoverridevirtualnoexcept |
notification exception handler
Implements dx::object.
|
inlinevirtual |
|
inlineprotectedvirtualinherited |
operator[](): a group just came into existence, a host wires its per-group transports here
|
inlinevirtualnoexceptinherited |
|
inlinevirtualinherited |
|
inlineoverridevirtualnoexcept |
log object class information
Reimplemented from dx::object.
|
inlineprotectedvirtualinherited |
launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
Reimplemented in dx::asio::client::driver< device_t, devices >, dx::asio::service::device< super_device_t >, dx::coreaudio::driver< device_t >, dx::coremidi::driver< device_t >, dx::map::driver< _device_t, holder_t >, dx::map::driver< device<> >, dx::map::driver< device_t >, dx::map::driver< device_t, dx::apartment< device_t > >, dx::midi::services::driver< device_t >, dx::proxy::driver< device_t >, dx::proxy::driver< device_t >, dx::service::app, 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 > > >, 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 > > >, dx::service::client::driver< device_t >, dx::service::device< preference_t >, dx::service::device< dx::preference >, dx::service::device< super_device_t >, dx::stream::stream< device_t, dx::circular, usb::pipe< device_t > >, 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::driver< device_t >, dx::virtuel::driver< device<> >, and dx::wasapi::client::driver< device_t >.
|
inlineprotected |
|
inlinevirtualinherited |
|
inlineinherited |
the stream's group, created on first use
|
inline |
|
inlineoverrideprotectedvirtualnoexcept |
Implements dx::asio::client::callbacks.
|
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
|
inline |
|
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
|
inlineoverridevirtualinherited |
Reimplemented from dx::device< id_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
| promoted<typename super::client_map> dx::asio::client::_device< desc_t, preference_t, stream_t, group_t >::clients |
|
inherited |
event -> its own iosize and sample counter
|
inherited |
| promoted<desc_t>::template preference<preference_t, typename desc_t::value_t> dx::asio::client::_device< desc_t, preference_t, stream_t, group_t >::desc {this->preference} |
|
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
|
protected |
the half of the driver's double buffers at io[..][0]: attach() starts with 0, bufferSwitch names the one the host works
|
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::device< dx::guid, preference_t >, desc_t, stream_t, group_t >::hw |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
staging value for registration paths without their own iosize argument (macOS CF property bridge)
|
inherited |
|
inherited |
|
inherited |
|
inherited |
persistent UID - system unique - could change with location
|
inherited |
persistent universal UID - universally unique ID (i.e. serial number)
|
inherited |
|
protected |
the driver runs the rate the app sets, aligned to what it can
|
inherited |
source selectors by stream target: a stream with sources gets its own on first use
|
inherited |
|
protected |
|
protected |
|
inherited |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |