|
dxd - dynax driver framework 3.0.0d222
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 | mask |
| struct | sine |
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 | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END void | operator<< (args &args) try |
| virtual void | operator<< (const args &args) |
| 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 = 0 |
| engine_t * | engine {} |
| this device's streaming engine, the harness's tests run under | |
| uint64_t | tick = 0 |
Protected Types | |
| typedef engine_t::io_t | io_t |
Protected Member Functions | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _clocksource (const args &args={}) try |
| void | _generator (args &args) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _info (const args &) try |
| list device information | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _iosize (const args &args) try |
| set/get I/O streaming block size | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _license (const args &args) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _monitor (const args &args) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _reset (const args &={}) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _safety_offset (args &args, stream::role::role choice_role) try |
| 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 | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _samplerate (const args &args={}) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _source (const args &args={}) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _strategy (args &args) try |
| set/get the wait strategies of the streaming group's transport and clients, both unless one is named | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _streaming_reset (const args &={}) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _string (const args &args={}) try |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | _sync_reference (const args &args) try |
| set/get I/O streaming block size | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| catch (...) | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| DX_PRAGMA_IGNORE_RETURN_VALUE_BEGIN | catch (const dx::exception &__dx_exception) |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| catch (const std::exception &__std_exception) | |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END void | clock_monitor (std::chrono::high_resolution_clock::duration duration) try |
| virtual bool | head () const noexcept |
| virtual void | help (args &args) try |
| virtual void | help_head () const noexcept |
| virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END void | indent (args &args) try |
| virtual DX_PRAGMA_IGNORE_RETURN_VALUE_END void | no_args (const args &args) try |
| void | notify () noexcept |
| void | process (int64_t) noexcept |
| DX_PRAGMA_IGNORE_RETURN_VALUE_END auto | select (const std::string &id) try |
| 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 DX_PRAGMA_IGNORE_RETURN_VALUE_END void | version (const args &args={}) try |
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::chrono::seconds | load_duration {} |
| std::deque< mask > | loopback |
| const char * | name {} |
| struct { | |
| struct { | |
| bool ignore | |
| } error | |
| struct { | |
| union { | |
| struct { | |
| bool err:1 | |
| bool log:1 | |
| bool out:1 | |
| } | |
| uint32_t mask | |
| } | |
| } log | |
| bool quiet | |
| } | 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 = 0 |
| 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 = false |
| sweep target: the transport's lead (kept per wait strategy) if set, else the client's margin | |
| struct { | |
| double attenuation = 1. | |
| double frequency = 440. | |
| mask mask | |
| } | 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 |
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 |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
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 |
| double dx::test::device< super_device_t, _engine_t >::attenuation = 1. |
|
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 = 0 |
| engine_t* dx::test::device< super_device_t, _engine_t >::engine {} |
this device's streaming engine, the harness's tests run under
|
inherited |
| struct { ... } dx::parser::error |
| double dx::test::device< super_device_t, _engine_t >::frequency = 440. |
|
protected |
|
inherited |
|
protected |
| struct { ... } dx::parser::log |
|
inherited |
|
protected |
| mask dx::test::device< super_device_t, _engine_t >::mask |
|
protectedinherited |
|
inherited |
| struct { ... } dx::parser::parameter |
|
protected |
|
inherited |
|
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 = 0 |
| struct { ... } dx::test::device< super_device_t, _engine_t >::tmp |
| (c) copyright 2009 dynamic acoustics e.U. | generated on |