dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::service::client::device< desc_t, preference_t, stream_t, group_t > Class Template Reference

< the app's consumer group (dx::stream::engine::group) wraps this bus's own More...

#include <dx_service_client_device.h>

Inheritance diagram for dx::service::client::device< desc_t, preference_t, stream_t, group_t >:
Collaboration diagram for dx::service::client::device< desc_t, preference_t, stream_t, group_t >:

Public Types

typedef desc desc_t
typedef shared::event event_t
typedef promoted<uint32_t>::template preference<decltype(super_device_t::preference)> source_t
typedef 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
 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.
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
void hw_clock(abstract::event* event, uint32_t iosize) override
 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 launch() override
 launch notification: object mounted and ready to use. Called only through try_launch() - never call this directly from outside the class hierarchy.
std::shared_ptr<stream<device<desc, preference, stream, group>>> 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<device<desc, preference, stream, group>>& 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(uint32_t idx)
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 wake() override

Public Attributes

dx::stream::bus::bus bus{}
 the bus this device hangs on
dx::promoted<typename super::client_map> clients
struct dx::stream::desc::clock clock [max_clocks]
uint32_t clocks{}
proxy::promoted<service::connection, uint32_t> clocksource
proxy::promoted<service::connection, typename desc::configuration> configuration
proxy::promoted<service::connection, desc> desc
 the service's desc, asked at launch()
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<device<desc, preference, stream, group>>> group
bool hidden{}
 hide device
struct dx::stream::device:: { ... }  hw
promoted<std::string>::preference<decltype(super::preference)> icon
const std::string id
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)
dx::shared::reference reference
 this process' crash-safe hold on the puuid's client-local preference store
proxy::promoted<service::connection, uint32_t> samplerate
 < the service's device settings, mirrored: nothing of them persists here
std::map<decltype(desc::stream::target.idx()), source_t> sources
direction::direction start_stop_order{direction::any}
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

Protected Member Functions

virtual void grouped(group<device<desc, preference, stream, group>> &)
 operator[](): a group just came into existence, a host wires its per-group transports here
virtual void grouped(group_t &)
 operator[](): a group just came into existence, a host wires its per-group transports here

Protected Attributes

service::connection connection

Detailed Description

template<typename desc_t = desc, typename preference_t = preference, template< typename ... > typename stream_t = stream, template< typename ... > typename group_t = group>
class dx::service::client::device< desc_t, preference_t, stream_t, group_t >

< the app's consumer group (dx::stream::engine::group) wraps this bus's own

Member Typedef Documentation

◆ desc_t

◆ event_t

◆ source_t

◆ super_device_t

typedef dx::device<std::string, preference> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::super_device_t
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

Member Function Documentation

◆ align() [1/4]

virtual desc::configuration dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::align(const typename desc::configuration& value, const typename desc::configuration&)
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

◆ align() [2/4]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct stream* dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::align(struct stream* sync_reference)
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

◆ align() [3/4]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
uint32_t dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::align(uint32_t sync_reference) const
inlineinherited
Here is the caller graph for this function:

◆ align() [4/4]

virtual desc_t::configuration dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::align(const typename desc_t::configuration& value, const typename desc_t::configuration&)
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

◆ attach()

void dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::attach(void** io[dx::stream::direction::directions][2], const std::vector<bool>(&) channel_map[2], const dx::stream::format(&) format[2])
inlineinherited

the consumer's planar channel buffers in the format each direction's buffers carry

◆ bound()

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
template<typename align_t, typename bind_t>
configuration dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::bound(configuration value, const configuration& current, align_t&& align, bind_t&& bind) const
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

◆ budget() [1/2]

virtual uint64_t dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::budget(const typename desc::configuration&)
inlinevirtualinherited

the periodic bus time the configuration takes, in ns - a bus device with a periodic budget states it

◆ budget() [2/2]

the periodic bus time the configuration takes, in ns - a bus device with a periodic budget states it

◆ conclude()

void dx::service::client::_device<desc, preference, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::conclude()
inlineoverridevirtualnoexceptinherited

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.

◆ enumerate()

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
uint32_t dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::enumerate(const format& format= any) const
inlineinherited

enumerate typified pins

◆ exception()

void dx::service::client::_device<desc, preference, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::exception(const dx::exception& exception, bool filtered= false) const
inlineoverridevirtualnoexceptinherited

notification exception handler

Reimplemented from dx::device< std::string, preference >.

◆ find() [1/4]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
template<typename stream_t= struct stream>
stream_t* dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::find(const decltype(stream_t::target.idx())& target)
inlineinherited

by the target's index, where the target has one

◆ find() [2/4]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct stream* dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::find(const format& format= any, enum direction::direction direction= direction::any)
inlineinherited
Parameters
formatsearch stream format filter
directionsearch stream direction filter

◆ find() [3/4]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct stream* dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::find(const target_t& target)
inlineinherited

◆ find() [4/4]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct stream* dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::find(uint32_t& pin, const format& format= any, enum direction::direction direction= direction::any)
inlineinherited

finds and returns the stream description and pin idx into this stream

Returns
stream description of indexed pin, pin idx will be altered on return!
Parameters
pinin: global pin index, out: pin index into returned stream description
formatsearch stream format filter
directionsearch stream direction filter
Here is the caller graph for this function:

◆ frame()

◆ grouped() [1/2]

virtual void dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::grouped(group<device<desc, preference, stream, group>>&)
inlineprotectedvirtualinherited

operator[](): a group just came into existence, a host wires its per-group transports here

◆ grouped() [2/2]

virtual void dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::grouped(group_t&)
inlineprotectedvirtualinherited

operator[](): a group just came into existence, a host wires its per-group transports here

◆ hw_clock() [1/2]

virtual bool dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::hw_clock() const
inlinevirtualnoexceptinherited

◆ hw_clock() [2/2]

void dx::service::client::_device<desc, preference, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::hw_clock(abstract::event* event, uint32_t iosize)
inlineoverridevirtualinherited

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 from dx::stream::device< dx::device< std::string, preference >, desc, stream< device< desc, preference, stream, group > >, group< device< desc, preference, stream, group > > >.

◆ launch()

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.

◆ open() [1/2]

std::shared_ptr<stream<device<desc, preference, stream, group>>> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::open(const typename desc::stream::desc& desc, bool client= false)
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

◆ open() [2/2]

std::shared_ptr<stream_t> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::open(const typename desc::stream::desc& desc, bool client= false)
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

◆ operator ()() [1/2]

const struct desc::stream::config& dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::operator ()(const struct desc::stream& stream)
inlineinherited

the stream configuration the device runs the stream in: the stream is one of the desc's

◆ operator ()() [2/2]

const struct desc_t::stream::config& dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::operator ()(const struct desc_t::stream& stream)
inlineinherited

the stream configuration the device runs the stream in: the stream is one of the desc's

◆ operator >>()

virtual device& dx::device<std::string, preference>::operator >>(std::ostream&) const
inlinevirtualinherited

the device's own diagnostics, beyond its operator <<

◆ operator []() [1/2]

group<device<desc, preference, stream, group>>& dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::operator [](const typename desc::stream::desc& stream)
inlineinherited

the stream's group, created on first use

◆ operator []() [2/2]

group_t& dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::operator [](const typename desc::stream::desc& stream)
inlineinherited

the stream's group, created on first use

◆ preferred()

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
template<typename align_t>
configuration dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::preferred(align_t&& align) const
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

◆ reset()

◆ setting()

void dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::setting(dx::stream::setting setting, uint32_t index, f_t&& f)
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

◆ sleep()

virtual void dx::device<std::string, preference>::sleep()
inlinevirtualinherited

notify system will sleep stub

◆ source() [1/2]

virtual std::pair<source_t &, bool> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::source(const struct desc::stream& stream)
inlinevirtualinherited

the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources

◆ source() [2/2]

virtual std::pair<source_t &, bool> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::source(const struct desc::stream& stream)
inlinevirtualinherited

the stream's source selector, created on first use: the preference by stream target, the value an index into the stream's sources

◆ string()

◆ sync_reference() [1/2]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
uint32_t dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::sync_reference(struct stream* sync_reference)
inlineinherited

◆ sync_reference() [2/2]

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct stream* dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::sync_reference(uint32_t sync_reference)
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

Here is the caller graph for this function:

◆ try_conclude()

bool dx::object::try_conclude()
inlinenoexceptinherited

atomically conclude()s if currently launched; returns whether this call did it

◆ try_launch()

bool dx::object::try_launch()
inlineinherited

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

◆ wake()

void dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::wake()
inlineoverrideinherited

Member Data Documentation

◆ bus

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
dx::stream::bus::bus dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::bus{}
inherited

the bus this device hangs on

◆ clients

◆ clock

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct dx::stream::desc::clock dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::clock[max_clocks]
inherited

◆ clocks

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
uint32_t dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::clocks{}
inherited

number of independent clocks [currenlty only single clock support]

◆ clocksource

◆ configuration

the service runs the configuration: its streams' rings are the service's

◆ connection

◆ desc

◆ dflt

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
bool dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::dflt{}
inherited

can be selected as default (OS audio) device

◆ driver

dx::driver<decltype(id), preference>& dx::device<std::string, preference>::driver
inherited

◆ editable

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
bool dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::editable{}
inherited

can be edited

◆ firmware

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct dx::stream::desc::firmware dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::firmware
inherited

◆ group

std::map<decltype(desc::stream::group), group<device<desc, preference, stream, group>>> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::group
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

◆ hidden

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
bool dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::hidden{}
inherited

hide device

◆ hosted

◆ hw

◆ icon

◆ id

const std::string dx::device<std::string, preference>::id
inherited

◆ iosize

◆ launched

std::atomic<bool> dx::object::launched
inherited

◆ model

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct dx::stream::desc::name_id dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::model
inherited

◆ monitor

◆ persistence

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
bool dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::persistence{}
inherited

device has capability to store persistent settings (i.e. sample rate; clock source; etc.)

◆ preference

preference dx::device<std::string, preference>::preference
inherited

◆ puid

std::string dx::device<std::string, preference>::puid
inherited

persistent UID - system unique - could change with location

◆ puuid

std::string dx::device<std::string, preference>::puuid
inherited

persistent universal UID - universally unique ID (i.e. serial number)

◆ reference

this process' crash-safe hold on the puuid's client-local preference store

dx::device::preference (driver.preference[puuid]) is this client process' own settings cache for the device - distinct from the service's own copy. The preference path is namespaced per connecting application (the driver's constructor, process::name()): several instances of the same application share it, so conclude() erases it only where this instance was its last holder - reference is that hold, released by the OS at the process' end even on a crash (dx_shared_reference.h); release() runs the erase where this was the last holder.

◆ samplerate

< the service's device settings, mirrored: nothing of them persists here

◆ sources

std::map<decltype(desc::stream::target.idx()), source_t> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::sources
inherited

source selectors by stream target: a stream with sources gets its own on first use

◆ start_stop_order

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
direction::direction dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::start_stop_order{direction::any}
inherited

◆ stream

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct dx::stream::desc::stream dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::stream[max_streams]
inherited

◆ streams

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
uint32_t dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::streams{}
inherited

number of streams

◆ sync_reference

promoted<structdesc_t::stream*>::template preference<decltype(super::preference), uint32_t> dx::stream::device<dx::device<std::string, preference>, desc, stream<device<desc, preference, stream, group>>, group<device<desc, preference, stream, group>>>::sync_reference
inherited

◆ vendor

template<typename target_t= void_struct, int max_streams= 2, int max_pins= 1, int max_clock_settings= 1, int max_clocks= 1, int max_configurations= 1, int max_sources= 1>
struct dx::stream::desc::name_id dx::stream::desc<target_t, max_streams, max_pins, max_clock_settings, max_clocks, max_configurations, max_sources>::vendor
inherited

◆ version


The documentation for this class was generated from the following file: