|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
USB streaming device: the streaming device over the platform's USB device, its streams the endpoints' rings, its clock the bus frame tick. More...
#include <dxd_usb_stream.h>
Public Types | |
| typedef device< base_t, desc_t, clock_server< base_t, desc_t > > | device_t |
| typedef decltype(desc_t{}.stream[0].target) | target |
| the bus's stream address, as the clients spell it | |
Public Member Functions | |
| dxd::client * | client_create () override |
| void | conclude () override |
| the session ends and the device's rings go while the bus below still answers: their pipes abort on a configured device | |
| template<typename... args_t> | |
| device (args_t &&... args) | |
| int | find (const target_t &target) const |
| the stream a client addresses, as the desc spells its target | |
| 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) |
| a kernel endpoint's open: the ring sized as dx::stream::stream::initialize sizes it - a clock domain's stream by ticks of its interval, another by transactions | |
| os_result | open (unsigned int idx, uint32_t linesize, uint32_t buffers) |
| creates the stream's ring on the first client opening it; the device holds its own reference, so the ring outlives its clients for the endpoints ticking on it | |
| ~device () override | |
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 |
| class multichannel::stream<>::clock::monitor | monitor |
| performance counters, allocated with the first client asking for them | |
| promoted< uint32_t, opened_server< device_t > > | opened |
| opened streams over all participants: an open stream holds the domain's rate and iosize like a started one, only the clock waits for a start | |
| promoted< uint32_t, offset_server< device_t > > | safety_offset [dx::stream::direction::directions] |
| promoted< uint32_t, samplerate_server< device_t > > | samplerate |
| promoted< uint32_t, clock_server< base_t, desc_t > > | started |
| started streams over all clients: the clock domain runs while this is not zero | |
Static Public Attributes | |
| static constexpr unsigned int | streams |
| 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 | |
| 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 | |
| virtual void | halt () |
| os_result | launch () override |
| a desc without streams takes them from the selected configuration's audio class descriptors | |
| os_result | rate (const struct desc_t::stream &stream, uint32_t &rate, bool set) |
| the sampling frequency request to a stream's endpoint, which exists in its own alternate setting only: sets the rate, or reads it | |
| uint32_t | rate (uint32_t value) override |
| the domain's rate: every rated endpoint takes it, the first answering the read counts | |
| bool | rated (const struct desc_t::stream &stream) |
| the stream's endpoint takes the sampling frequency control: its class endpoint descriptor states it - or, no endpoint stating it, every one is offered the request (ADC1) | |
| virtual os_result | run () |
| the session's start and end, from started's server: the group's thread; an endpoint owner adds its own | |
| virtual void | tick (uint32_t lines, uint64_t frame, int64_t timestamp) |
| the reference stream advanced, under the mutex: the clock domain follows; an endpoint owner moves its endpoints first | |
Protected Attributes | |
| desc_t | desc |
| dxd::mutex | mutex |
| char | puid [0x80] |
Friends | |
| struct | clock_server< base_t, desc_t > |
| template<typename> | |
| class | group |
| template<typename> | |
| class | pipe |
USB streaming device: the streaming device over the platform's USB device, its streams the endpoints' rings, its clock the bus frame tick.
|
inherited |
|
inherited |
the bus's stream address, as the clients spell it
|
inline |
|
inlineoverride |
|
inlineoverrideinherited |
|
inlineprotectedinherited |
the desc's single clock domain - the buses served here have exactly one
|
inlineoverride |
the session ends and the device's rings go while the bus below still answers: their pipes abort on a configured device
|
inlineprotectedinherited |
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.
|
inlineinherited |
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.
|
inlineinherited |
the format the given stream's ring runs: a participant assigns its own and reads what was adopted
|
inlineprotectedinherited |
samples per clock tick, the unit both the tick and iosize are aligned to
|
inlineprotectedvirtual |
|
inlineoverrideinherited |
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
|
inlineoverrideprotected |
a desc without streams takes them from the selected configuration's audio class descriptors
|
inlineinherited |
a kernel endpoint's open: the ring sized as dx::stream::stream::initialize sizes it - a clock domain's stream by ticks of its interval, another by transactions
|
inlineinherited |
creates the stream's ring on the first client opening it; the device holds its own reference, so the ring outlives its clients for the endpoints ticking on it
|
inlineprotected |
the sampling frequency request to a stream's endpoint, which exists in its own alternate setting only: sets the rate, or reads it
|
inlineoverrideprotectedvirtual |
the domain's rate: every rated endpoint takes it, the first answering the read counts
Reimplemented from dxd::streaming::device< usb::device< base_t >, desc_t, clock_server< base_t, desc_t > >.
|
inlineprotected |
the stream's endpoint takes the sampling frequency control: its class endpoint descriptor states it - or, no endpoint stating it, every one is offered the request (ADC1)
|
inlineprotectedvirtual |
the session's start and end, from started's server: the group's thread; an endpoint owner adds its own
|
inlineprotectedvirtual |
the reference stream advanced, under the mutex: the clock domain follows; an endpoint owner moves its endpoints first
|
friend |
|
protectedinherited |
|
inherited |
the DAW clock: every client rides on it with its own buffer switch event
|
inherited |
the shared ring of each stream, allocated with the first client opening it
|
inherited |
|
inherited |
performance counters, allocated with the first client asking for them
|
protected |
serializes the tick against the clients' stream membership
|
inherited |
opened streams over all participants: an open stream holds the domain's rate and iosize like a started one, only the clock waits for a start
|
protectedinherited |
|
inherited |
|
inherited |
|
inherited |
started streams over all clients: the clock domain runs while this is not zero
|
staticconstexprinherited |
the desc's stream capacity, as its array carries it
| (c) copyright 2009 dynamic acoustics e.U. | generated on |