|
dxd - dynax driver framework 3.0.1d223
cross platform open source driver development framework
|
the test harness's device: the bus device plus its command line parser, and the streaming engine its tests run under - its own group_t slot, or the app's consumer group on its clock divider More...
#include <dx_test_device.h>
Classes | |
| struct | has_license |
| struct | has_license< type_t, decltype((void) type_t::license, void())> |
| struct | impulse |
| one impulse test: what an analog loop keeps is its timing alone More... | |
| struct | mask |
| the channels a monitor's callback works on: one word per direction, plus the mix target More... | |
| struct | sine |
| one generator tone: the channels it feeds and its phase, carried between callbacks More... | |
Public Types | |
| typedef std::deque< std::string > | args |
| typedef _engine_t | engine_t |
Public Member Functions | |
| void | conclude () noexcept override |
| the pins go while their device still stands: their streams reach its pipe on the way out | |
| template<typename ... initializer_t> | |
| device (decltype(super::driver)&driver, const decltype(super::id)&id, initializer_t... initializer) | |
| void | halt () noexcept |
| void | launch () override |
| the audio pins go into their group, which from then on is this device's streaming engine | |
| virtual void | operator<< (argsargs &argsargs) |
| virtual void | operator<< (const argsargs &argsargs) |
| virtual void | quiet (const args &={}) noexcept |
| void | run () |
| starting/stopping the engine's pins is what starts/stops their group's streaming session | |
Public Attributes | |
| uint32_t | dropout {} |
| engine_t * | engine {} |
| this device's streaming engine, the harness's tests run under | |
| uint64_t | tick {} |
Protected Types | |
| typedef engine_t::io_t | io_t |
Protected Member Functions | |
| void | _clocksource (const argsargs &argsargs={}) |
| void | _generator (argsargs &argsargs) |
| void | _impulse (args &) |
| void | _info (const args &) |
| list device information | |
| void | _iosize (const argsargs &argsargs) |
| set/get I/O streaming block size | |
| void | _license (const argsargs &argsargs) |
| void | _monitor (const argsargs &argsargs) |
| void | _reset (const args &={}) |
| void | _safety_offset (argsargs &argsargs, stream::role::role choice_role) |
| set/get the streaming group's safety offset of its transport (default: the lead the tick keeps to the device, kept per wait strategy) or of its clients (the ring margin), in clock ticks, per direction | |
| void | _samplerate (const argsargs &argsargs={}) |
| void | _source (const argsargs &argsargs={}) |
| void | _strategy (argsargs &argsargs) |
| set/get the wait strategies of the streaming group's transport and clients, both unless one is named | |
| void | _streaming_reset (const args &={}) |
| void | _string (const argsargs &argsargs={}) |
| void | _sync_reference (const argsargs &argsargs) |
| set/get I/O streaming block size | |
| void | clock_monitor (std::chrono::high_resolution_clock::duration duration) |
| virtual bool | head () const noexcept |
| virtual void | help (argsargs &argsargs) |
| virtual void | help_head () const noexcept |
| virtual void | indent (argsargs &argsargs) |
| virtual void | no_args (const argsargs &argsargs) |
| void | notify () noexcept |
| void | process (int64_t) noexcept |
| auto | select (const std::string &id) |
| void | sweep_write (stream::direction::direction direction, uint32_t value) |
| writes the swept value to the engine's client safety_offset, or - if sweep_transport - the streaming group's transport lead | |
| virtual void | version (const argsargs &argsargs={}) |
Protected Attributes | |
| std::optional< engine_t > | consumer |
| the engine where it is not this device's group_t slot | |
| std::map< std::deque< std::string >, dispatch > | dictionary |
| std::deque< sine > | generator |
| std::deque< struct impulse > | impulse |
| std::chrono::seconds | load_duration {} |
| std::deque< mask > | loopback |
| const char * | name {} |
| struct dx::parser:: { ... } | parameter |
| std::deque< mask > | pattern |
| std::deque< std::string > | scenarios |
| load: the scenarios the monitor runs its session under in turn, each for load_duration and closed by its own lead probe | |
| uint32_t | sweep {} |
| safety_offset ratchet: current in/out offset, raised on every pattern-test dropout for whichever direction's isr overload counted it; 0: off | |
| stream::direction::direction | sweep_direction {stream::direction::any} |
| sweep scope: any= both directions seeded/ratcheted, out/in= only that one, the other stays at its own current (manually set) value | |
| bool | sweep_transport {} |
| sweep target: the transport's lead (kept per wait strategy) if set, else the client's margin | |
| struct dx::test::device:: { ... } | tmp |
the test harness's device: the bus device plus its command line parser, and the streaming engine its tests run under - its own group_t slot, or the app's consumer group on its clock divider
|
inherited |
| typedef _engine_t dx::test::device< super_device_t, _engine_t >::engine_t |
|
protected |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
< one sample's turn of the sine, none without
|
inlineprotected |
list device information
|
inlineprotected |
set/get I/O streaming block size
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
set/get the streaming group's safety offset of its transport (default: the lead the tick keeps to the device, kept per wait strategy) or of its clients (the ring margin), in clock ticks, per direction
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
set/get the wait strategies of the streaming group's transport and clients, both unless one is named
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
set/get I/O streaming block size
|
inlineprotected |
< sweep: a pattern lock survived the monitor clear settle - dropouts only count while armed
< sweep: isr[tx]/isr[rx] overload snapshot at arming, to attribute the next dropout to a direction
< sweep: time of the last (re)start at the current value - never locking within a timeout escalates too (the never-lock trap: a start below the floor never arms, so the dropout ratchet alone would hang forever)
< samples per tick: the client margins' unit
the least reserve each lead kept: host out/in from their own cells (frames), local out/in from the ring distances at the pipe's fill/take (bytes -> ticks)
< load: the most each lead needed over the scenarios, by its cell
the lead each side needs: what it had, less the least it kept since the last clear, plus a tick - under whatever load the run saw
< load: the running scenario's threads
|
inlineoverridenoexcept |
the pins go while their device still stands: their streams reach its pipe on the way out
|
inlinenoexcept |
|
inlineprotectedvirtualnoexceptinherited |
Reimplemented in dx::service::parser, and dx::test::driver< super_device_t, device_t, driver_t >.
|
inlineprotectedvirtualinherited |
|
inlineprotectedvirtualnoexceptinherited |
Reimplemented in dx::select< parsers_t >, and dx::test::driver< super_device_t, device_t, driver_t >.
|
inlineprotectedvirtualinherited |
|
inlineoverride |
the audio pins go into their group, which from then on is this device's streaming engine
|
inlineprotectedvirtualinherited |
|
inlineprotectednoexcept |
|
inlinevirtualinherited |
Reimplemented in dx::select< parsers_t >, and dx::test::driver< super_device_t, device_t, driver_t >.
|
inlinevirtualinherited |
|
inlineprotectednoexcept |
|
inlinevirtualnoexceptinherited |
|
inline |
starting/stopping the engine's pins is what starts/stops their group's streaming session
|
inlineprotectedinherited |
|
inlineprotected |
writes the swept value to the engine's client safety_offset, or - if sweep_transport - the streaming group's transport lead
|
inlineprotectedvirtualinherited |
|
protected |
the engine where it is not this device's group_t slot
|
protectedinherited |
| uint32_t dx::test::device< super_device_t, _engine_t >::dropout {} |
| engine_t* dx::test::device< super_device_t, _engine_t >::engine {} |
this device's streaming engine, the harness's tests run under
|
protected |
|
protected |
|
protected |
|
protected |
|
protectedinherited |
| struct { ... } dx::parser::parameter |
|
protected |
|
protected |
load: the scenarios the monitor runs its session under in turn, each for load_duration and closed by its own lead probe
|
protected |
safety_offset ratchet: current in/out offset, raised on every pattern-test dropout for whichever direction's isr overload counted it; 0: off
|
protected |
sweep scope: any= both directions seeded/ratcheted, out/in= only that one, the other stays at its own current (manually set) value
|
protected |
sweep target: the transport's lead (kept per wait strategy) if set, else the client's margin
| uint64_t dx::test::device< super_device_t, _engine_t >::tick {} |
| struct { ... } dx::test::device< super_device_t, _engine_t >::tmp |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |