|
dxd - dynax driver framework 3.0.0d222
cross platform open source driver development framework
|
the bus frame clock's correlation with the timestamp clock, the same in every environment: which frame the tick serves, where the wire is now, when a frame starts More...
#include <dx_usb_isoc.h>
Public Member Functions | |
| int64_t | due (uint64_t frame, int64_t period) const |
| the timestamp of a bus frame's start by the plain correlation: the tick's wait target - locked to the phase it would chase its own slop | |
| template<typename source_t> | |
| void | lock (source_t &source, int64_t period) |
| the phase exactly: spins to a frame edge, at most a frame - a frozen counter (the bus asleep before the session's first charge) leaves it unset | |
| uint64_t | now (int64_t now, int64_t period) const |
| the wire now: the frame under way at now, by the correlation | |
| template<typename source_t> | |
| void | sync (source_t &source, int64_t period, unsigned int ticks) |
| the tick's sync: correlates, keeps the phase, picks the objective; ticks the slots of a round | |
| int64_t | timestamp (uint64_t frame, int64_t period) const |
| the timestamp of a bus frame's start: by the phase, or by the plain correlation until lock() found one | |
Public Attributes | |
| int64_t | anchor {} |
| the phase: the timestamp of frame 0 - unset until lock() saw a frame edge | |
| struct { | |
| uint64_t frame | |
| int64_t timestamp | |
| the timestamp clock at the frame readout More... | |
| } | correlated |
| uint64_t | objective {} |
the bus frame clock's correlation with the timestamp clock, the same in every environment: which frame the tick serves, where the wire is now, when a frame starts
The group's tick syncs once per tick: it reads the bus frame counter with its timestamp (correlated), locks the frame clock's phase (anchor: the least timestamp- frame a readout showed, since a readout falls anywhere within its frame - spun to a frame edge once, crept a µs per tick after, following the bus clock's drift) and picks the frame it serves (objective: one per frame - a tick behind by less than a round gets every missed frame in turn, one behind by a round or ahead is resynced). The environment's source supplies os_result readout(uint64_t& frame, int64_t& timestamp) and int64_t now(), the timestamp clock; the bus frame's period comes with every call, in the timestamp clock's units, the round's slots with the sync.
the timestamp of a bus frame's start by the plain correlation: the tick's wait target - locked to the phase it would chase its own slop
|
inline |
the phase exactly: spins to a frame edge, at most a frame - a frozen counter (the bus asleep before the session's first charge) leaves it unset
the wire now: the frame under way at now, by the correlation
|
inline |
the tick's sync: correlates, keeps the phase, picks the objective; ticks the slots of a round
the timestamp of a bus frame's start: by the phase, or by the plain correlation until lock() found one
| int64_t dx::usb::isoc::correlation::anchor {} |
the phase: the timestamp of frame 0 - unset until lock() saw a frame edge
| struct { ... } dx::usb::isoc::correlation::correlated |
| uint64_t dx::usb::isoc::correlation::frame |
| uint64_t dx::usb::isoc::correlation::objective {} |
the frame the tick serves
| int64_t dx::usb::isoc::correlation::timestamp |
the timestamp clock at the frame readout
| (c) copyright 2009 dynamic acoustics e.U. | generated on |