|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
generic streaming device: the control interface every bus's clients share More...
#include <dxd_stream_device.h>
Classes | |
| class | ring |
| the ring one stream streams through, sized by the opening client More... | |
Public Types | |
| typedef device< base_t, desc_t, clock_server_t > | device_t |
Public Member Functions | |
| template<typename... args_t> | |
| device (clock_server_t &&server, args_t &&... args) | |
| template<typename target_t> | |
| int | find (const target_t &target) const |
| the stream a client addresses, as the desc spells its target | |
| int | find (dx::stream::direction::direction direction, unsigned int &pin) const |
| the stream carrying the pin of the given direction, that pin's index in pin | |
| auto & | format (unsigned int idx) |
| the format the given stream's ring runs: a participant assigns its own and reads what was adopted | |
| os_result | ioctl (unsigned int ioctl, const void *in, size_t size_in, void *out, size_t size_out, size_t &size) override |
| os_result | open (unsigned int idx, uint32_t linesize, uint32_t buffers) |
| creates the stream's ring on the first client opening it | |
Public Attributes | |
| class domain | hw |
| the DAW clock: every client rides on it with its own buffer switch event | |
| dxd::stream * | io [streams] {} |
| the shared ring of each stream, allocated with the first client opening it | |
| promoted< uint32_t, iosize_server< device_t > > | iosize {iosize_server<device_t>{*this}} |
| class multichannel::stream<>::clock::monitor | monitor |
| performance counters, allocated with the first client asking for them | |
| promoted< uint32_t, offset_server< device_t > > | safety_offset [dx::stream::direction::directions] |
| promoted< uint32_t, samplerate_server< device_t > > | samplerate {samplerate_server<device_t>{*this}} |
| promoted< uint32_t, clock_server_t > | started |
| started streams over all clients: the clock domain runs while this is not zero | |
Static Public Attributes | |
| static constexpr unsigned int | streams = sizeof(desc_t::stream)/ sizeof(desc_t::stream[0]) |
| the desc's stream capacity, as its array carries it | |
Protected Member Functions | |
| auto & | clock_desc () |
| the desc's single clock domain - the buses served here have exactly one | |
| template<typename promoted_t> | |
| os_result | exchange (promoted_t &value, const void *in, size_t size_in, void *out, size_t size_out, size_t &size) |
| promoted value as a get (no input) or set-and-read-back IOCTL | |
| uint32_t | granularity () |
| samples per clock tick, the unit both the tick and iosize are aligned to | |
Protected Attributes | |
| desc_t | desc {} |
| char | puid [0x80] {} |
Friends | |
| struct | iosize_server< device_t > |
| struct | offset_server< device_t > |
| struct | samplerate_server< device_t > |
| template<typename> | |
| class | streaming::client |
generic streaming device: the control interface every bus's clients share
Answers the device and stream IOCTLs of dx::proxy::stream::device from promoted values, leaving the bus its streams and its clock: base_t is the platform's device (dxd::device or dxd::kmdf::device), clock_server_t the functor running and halting the concrete clock as the start reference count leaves and reaches zero.
| typedef device<base_t, desc_t, clock_server_t> dxd::streaming::device< base_t, desc_t, clock_server_t >::device_t |
|
inline |
|
inlineprotected |
the desc's single clock domain - the buses served here have exactly one
|
inlineprotected |
promoted value as a get (no input) or set-and-read-back IOCTL
dx::stream::clock_value carries the clock domain alongside the value; the domain is not evaluated - the buses served here have a single one.
|
inline |
the stream a client addresses, as the desc spells its target
The target is the bus's own stream address - a direction here, an endpoint on USB - so matching it against the desc is what every bus has in common.
|
inline |
the stream carrying the pin of the given direction, that pin's index in pin
|
inline |
the format the given stream's ring runs: a participant assigns its own and reads what was adopted
|
inlineprotected |
samples per clock tick, the unit both the tick and iosize are aligned to
|
inlineoverride |
dx::ioctl::stream::enumerate: the device's whole desc_t
dx::ioctl::stream::desc: the desc as a settable value - the enumerated topology stands
dx::ioctl::stream::puid: persistent device UID
dx::ioctl::stream::clock::start/stop: the clock domain as a whole, one participant
|
inline |
creates the stream's ring on the first client opening it
|
friend |
|
friend |
|
friend |
|
friend |
|
protected |
| class domain dxd::streaming::device< base_t, desc_t, clock_server_t >::hw |
the DAW clock: every client rides on it with its own buffer switch event
| dxd::stream* dxd::streaming::device< base_t, desc_t, clock_server_t >::io[streams] {} |
the shared ring of each stream, allocated with the first client opening it
| promoted<uint32_t, iosize_server<device_t> > dxd::streaming::device< base_t, desc_t, clock_server_t >::iosize {iosize_server<device_t>{*this}} |
| class multichannel::stream<>::clock::monitor dxd::streaming::device< base_t, desc_t, clock_server_t >::monitor |
performance counters, allocated with the first client asking for them
|
protected |
| promoted<uint32_t, offset_server<device_t> > dxd::streaming::device< base_t, desc_t, clock_server_t >::safety_offset[dx::stream::direction::directions] |
| promoted<uint32_t, samplerate_server<device_t> > dxd::streaming::device< base_t, desc_t, clock_server_t >::samplerate {samplerate_server<device_t>{*this}} |
| promoted<uint32_t, clock_server_t> dxd::streaming::device< base_t, desc_t, clock_server_t >::started |
started streams over all clients: the clock domain runs while this is not zero
|
staticconstexpr |
the desc's stream capacity, as its array carries it
| (c) copyright 2009 dynamic acoustics e.U. | generated on |