|
dxd - dynax driver framework 3.0.2
cross platform open source driver development framework
|
USB bus frame clock source: one tick per bus frame - a high resolution OS timer wait toward the frame objective, optionally handing over to yield/spin polling covering user mode jitter for low latency sessions. More...
#include <dx_usb_clock.h>
Public Types | |
| typedef _clock_t | clock_t |
| typedef _event_t | event_t |
Public Member Functions | |
| os_result | readout(uint64_t& frame, int64_t& timestamp) noexcept |
| the correlation's source: the bus frame counter with its timestamp, the timestamp clock | |
| source(device_t& device, typename dx::stream::settings<device_t>::transport& transport) | |
| virtual void | sync(const typename frame::time_point& now) |
| void | sync(const clock_t::time_point &) override |
| aligns the next tick and the frame↔timestamp correlation to the bus frame counter: one tick per frame - a tick behind by less than a round (the slot array's depth) gets every missed frame ticked in turn, one behind by a round or ahead is resynced | |
| super& | wait(bool= false) override |
Static Public Member Functions | |
| static int64_t | now() |
Public Attributes | |
| std::atomic<dx::stream::clock::strategy> | strategy |
| switchable at runtime: the poll modes run only what the timer left | |
| listener<dx::listen<std::function<void(const uint32_t &)>>> | strategy_listener |
Protected Member Functions | |
| bool | sleep(int64_t remaining) |
| void | wait(int64_t remaining) |
| waits the remaining ns by the strategy | |
Static Protected Member Functions | |
| static void | relax(dx::stream::clock::strategy strategy) |
Protected Attributes | |
| std::condition_variable | condition_variable |
| frame::duration | duration |
| _event_t | event |
| std::mutex | mutex |
| _clock_t::time_point | objective |
| std::atomic<bool> | running |
| os_result | status |
USB bus frame clock source: one tick per bus frame - a high resolution OS timer wait toward the frame objective, optionally handing over to yield/spin polling covering user mode jitter for low latency sessions.
|
inherited |
|
inherited |
|
inline |
|
inlinestatic |
|
inlinenoexcept |
the correlation's source: the bus frame counter with its timestamp, the timestamp clock
|
inlinestaticprotectedinherited |
|
inlinevirtualinherited |
|
inlineoverride |
aligns the next tick and the frame↔timestamp correlation to the bus frame counter: one tick per frame - a tick behind by less than a round (the slot array's depth) gets every missed frame ticked in turn, one behind by a round or ahead is resynced
waits the remaining ns by the strategy
|
inlineoverridevirtual |
Reimplemented from dx::timer< dx::event< kernel >, frame >.
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
|
inherited |
switchable at runtime: the poll modes run only what the timer left
| listener<dx::listen<std::function<void(const uint32_t&)>>> dx::usb::clock::source<device_t>::strategy_listener |