|
dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
|
Windows MIDI Services client device. More...
#include <dx_midi_services_device.h>
Public Types | |
| typedef desc | desc_t |
| typedef event | event_t |
| typedef std::conditional_t<std::is_void_v<void>, dx::stream::group<device>, void> | 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 dx::stream::control<dx::device<std::string, preference>> | 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 | |
Public Member Functions | |
| virtual desc::configuration | align(const typename desc::configuration& value, const typename desc::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 | |
| struct stream* | align(struct stream* sync_reference) |
| the given stream where it may be the sync reference, else the first one that may - what a stored reference is aligned to when the desc changed under it | |
| uint32_t | align(uint32_t sync_reference) const |
| 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 | |
| template<typename align_t, typename bind_t> | |
| configuration | bound(configuration value, const configuration& current, align_t&& align, bind_t&& bind) const |
| virtual uint64_t | budget(const typename desc::configuration &) |
| the periodic bus time the configuration takes, in ns - a bus device with a periodic budget states it | |
| 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, decltype(super::id)& id) | |
| the desc is the driver's template: the driver that makes a device is this bus's | |
| uint32_t | enumerate(const format& format= any) const |
| enumerate typified pins | |
| void | exception(const dx::exception& exception, bool filtered= false) const noexcept override |
| notification exception handler | |
| template<typename stream_t= struct stream> | |
| stream_t* | find(const decltype(stream_t::target.idx())& target) |
| by the target's index, where the target has one | |
| struct stream* | find(const format& format= any, enum direction::direction direction= direction::any) |
| struct stream* | find(const target_t& target) |
| struct stream* | find(uint32_t& pin, const format& format= any, enum direction::direction direction= direction::any) |
| finds and returns the stream description and pin idx into this stream | |
| virtual uint64_t | frame() 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 | |
| std::shared_ptr<stream<device<desc, preference, stream>>> | open(const typename desc::stream::desc& descdesc, 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 | |
| std::shared_ptr<stream_t> | open(const typename desc::stream::desc& descdesc, 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::stream::config& | operator ()(const struct desc::stream& stream) |
| the stream configuration the device runs the stream in: the stream is one of the desc's | |
| 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 | |
| virtual device& | operator >>(std::ostream &) const |
| the device's own diagnostics, beyond its operator << | |
| group_t& | operator [](const typename desc::stream::desc& stream) |
| the stream's group, created on first use | |
| group_t& | operator [](const typename desc::stream::desc& stream) |
| the stream's group, created on first use | |
| template<typename align_t> | |
| configuration | preferred(align_t&& align) const |
| _device& | reset() |
| 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 | |
| virtual void | sleep() |
| notify system will sleep stub | |
| virtual std::pair<source_t &, bool> | source(const struct desc::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::pair<source_t &, bool> | source(const struct desc::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) |
| uint32_t | sync_reference(struct stream* sync_reference) |
| struct stream* | sync_reference(uint32_t sync_reference) |
| the n-th stream qualifying as sync reference, and the twin below the index of a given one - the two directions of the preference's value | |
| 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 | |
| void | updated(const enumeration::MidiEndpointDeviceInformationUpdatedEventArgs& args) |
| what the watcher says changed at the endpoint: logged | |
| void | wake() override |
Public Attributes | |
| dx::stream::bus::bus | bus{} |
| the bus this device hangs on | |
| struct dx::stream::desc::clock | clock [max_clocks] |
| uint32_t | clocks{} |
| 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 | |
| bool | dflt{} |
| can be selected as default (OS audio) device | |
| dx::driver<decltype(id), preference>& | driver |
| bool | editable{} |
| can be edited | |
| struct dx::stream::desc::firmware | firmware |
| std::map<decltype(desc::stream::group), group_t> | group |
| bool | hidden{} |
| hide device | |
| struct dx::stream::device:: { ... } | hw |
| promoted<std::string>::preference<decltype(super::preference)> | icon |
| const std::string | id |
| enumeration::MidiEndpointDeviceInformation | information |
| promoted<uint32_t>::preference<decltype(super::preference)> | iosize |
| std::atomic<bool> | launched |
| struct dx::stream::desc::name_id | model |
| dx::stream::device::monitor | monitor |
| bool | persistence{} |
| device has capability to store persistent settings (i.e. sample rate; clock source; etc.) | |
| preference | preference |
| 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::stream::target.idx()), source_t> | sources |
| promoted<uint32_t> | start |
| direction::direction | start_stop_order{direction::any} |
| promoted<bool> | started |
| struct dx::stream::desc::stream | stream [max_streams] |
| uint32_t | streams{} |
| number of streams | |
| promoted<structdesc_t::stream *>::template preference<decltype(super::preference), uint32_t> | sync_reference |
| struct dx::stream::desc::name_id | vendor |
| 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 | |
| void | connect(stream<device<desc, preference, stream>>& stream) |
| the session and the connection made by the first stream to run, the callback set ahead of Open() | |
| void | disconnect(stream<device<desc, preference, stream>>& stream) noexcept |
| the last stream to halt closes the connection | |
| 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. | |
| void | release() noexcept |
| void | send(int64_t timestamp, uint32_t count, const uint32_t* words) |
| whole packets to the endpoint, at the moment given - the service schedules them - or at once for 0 | |
Protected Attributes | |
| std::function<void()> | flush_hook |
| std::function<void()> | halt_hook |
| uint32_t | maximum |
| words a transmission takes, read when the connection opens | |
| std::function<void()> | run_hook |
Windows MIDI Services client device.
|
inherited |
|
inherited |
|
inherited |
bus devices driving their groups' tick pass their own group type
|
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
|
inline |
the desc is the driver's template: the driver that makes a device is this bus's
|
inlinevirtualinherited |
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
|
inlineinherited |
the given stream where it may be the sync reference, else the first one that may - what a stored reference is aligned to when the desc changed under it
|
inlineinherited |
|
inlinevirtualinherited |
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
|
inlineinherited |
the consumer's planar channel buffers in the format each direction's buffers carry
|
inlineinherited |
the configuration align(value, current) answers for the wish that the streams carry: bind(idx, config) moves a stream to its aligned stream configuration, one it refuses stands as current has it and the wish is aligned around it again - the result is an answer of align
|
inlinevirtualinherited |
the periodic bus time the configuration takes, in ns - a bus device with a periodic budget states it
|
inlinevirtualinherited |
the periodic bus time the configuration takes, in ns - a bus device with a periodic budget states it
|
inlineoverridenoexceptinherited |
ends every group's session before the device's resources go; the start counts stay with their holders
|
inlineprotectedinherited |
the session and the connection made by the first stream to run, the callback set ahead of Open()
|
inlineprotectednoexceptinherited |
the last stream to halt closes the connection
|
inlineinherited |
enumerate typified pins
|
inlineoverridevirtualnoexceptinherited |
notification exception handler
Implements dx::object.
Reimplemented in dx::service::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >, and dx::wasapi::client::_device< desc, preference, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >.
|
inlineinherited |
by the target's index, where the target has one
|
inlineinherited |
| format | search stream format filter |
| direction | search stream direction filter |
|
inlineinherited |
|
inlineinherited |
finds and returns the stream description and pin idx into this stream
| pin | in: global pin index, out: pin index into returned stream description |
| format | search stream format filter |
| direction | search stream direction filter |
|
inlinevirtualinherited |
|
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
|
inlineprotectedvirtualinherited |
launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
|
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 |
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 |
the stream configuration the device runs the stream in: the stream is one of the desc's
|
inlineinherited |
the stream configuration the device runs the stream in: the stream is one of the desc's
|
inlinevirtualinherited |
the device's own diagnostics, beyond its operator <<
|
inlineinherited |
the stream's group, created on first use
|
inlineinherited |
the stream's group, created on first use
|
inlineinherited |
the richest configuration align admits (it returns the candidate as it stands): the largest sum of channels times bits over the streams that run, on a tie the richer stream configuration to the smaller stream index, then the more streams running - streams without channels (MIDI, raw) score nothing - every combination is tried
|
inlineprotectednoexceptinherited |
|
inlineinherited |
|
inlineprotectedinherited |
whole packets to the endpoint, at the moment given - the service schedules them - or at once for 0
|
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
|
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
|
inlinevirtualinherited |
the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
the n-th stream qualifying as sync reference, and the twin below the index of a given one - the two directions of the preference's value
|
inlinenoexceptinherited |
atomically conclude()s if currently launched; returns whether this call did it
|
inlineinherited |
|
inlineinherited |
what the watcher says changed at the endpoint: logged
|
inlineoverrideinherited |
|
inherited |
the bus this device hangs on
|
inherited |
|
inherited |
number of independent clocks [currenlty only single clock support]
|
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
|
inherited |
can be selected as default (OS audio) device
|
inherited |
|
inherited |
can be edited
|
inherited |
|
protectedinherited |
|
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 |
|
inherited |
hide device
|
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::stream::control<dx::device<std::string, preference>>, desc, stream<device<desc, preference, stream>>, void>::hw |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
protectedinherited |
words a transmission takes, read when the connection opens
|
inherited |
|
inherited |
|
inherited |
device has capability to store persistent settings (i.e. sample rate; clock source; etc.)
|
inherited |
|
inherited |
persistent UID - system unique - could change with location
|
inherited |
persistent universal UID - universally unique ID (i.e. serial number)
|
protectedinherited |
|
inherited |
|
inherited |
source selectors by stream target: a stream with sources gets its own on first use
|
inherited |
|
inherited |
|
inherited |
|
inherited |
|
inherited |
number of streams
|
inherited |
|
inherited |
|
inherited |