dxd - dynax driver framework 3.0.1f223
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::usb::isoc::session< group_t > Struct Template Reference

the streaming session's tick over a group's pipelines, the same in every environment More...

#include <dx_usb_isoc.h>

Public Member Functions

 session (group_t &group)
uint32_t tick (uint64_t frame, correlation &correlation, int64_t period)

Public Attributes

uint8_t feedback [offsetof(dx::circular, data)+2 *sizeof(uint32_t) *max_micro_frames *max_requests]
 the group's feedback: the lines an asynchronous in pipe delivers per micro frame, which an asynchronous out pipe's requests follow a round behind - its lead a round, seeded by every charge; bundled completions swing it around the seed, so its room is two rounds
group_t & group
os_result status {}
 the group's last charge: failed, the group rests

Detailed Description

template<typename group_t>
struct dx::usb::isoc::session< group_t >

the streaming session's tick over a group's pipelines, the same in every environment

One tick at bus frame frame charges the group as a unit - every pipe once as it stands idle after its start(), a failed charge resting the whole group at its default settings and charging it again every 250 ms, so each attempt reserves the group's bandwidth whole or none -, then moves every charged pipe's data by its pipeline and runs the clock domain by the reference stream's advance. The environment's group supplies its thread and timer, and:

  • each(f): visits every isoc pipe of the session as f(idx, pipe), idx its stream's index - the pipes the session charges, rests and moves
  • reference: the stream whose advance drives the clock domain, by the index each() names it
  • os_result readout(uint64_t& frame, int64_t& timestamp) / int64_t now(): the correlation's source
  • void tick(uint32_t samples, uint64_t frame, int64_t timestamp): the clock domain's advance
  • bool locking(): the device's clock is still locking to a sample rate set (desc::clock::lock_delay)
  • void rest(): every pipe's requests ended, its slots its own again (charged cleared), its interface at the default setting

Constructor & Destructor Documentation

◆ session()

template<typename group_t>
dx::usb::isoc::session< group_t >::session ( group_t & group)
inline
Here is the call graph for this function:

Member Function Documentation

◆ tick()

template<typename group_t>
uint32_t dx::usb::isoc::session< group_t >::tick ( uint64_t frame,
correlation & correlation,
int64_t period )
inline
Here is the call graph for this function:

Member Data Documentation

◆ feedback

template<typename group_t>
uint8_t dx::usb::isoc::session< group_t >::feedback[offsetof(dx::circular, data)+2 *sizeof(uint32_t) *max_micro_frames *max_requests]

the group's feedback: the lines an asynchronous in pipe delivers per micro frame, which an asynchronous out pipe's requests follow a round behind - its lead a round, seeded by every charge; bundled completions swing it around the seed, so its room is two rounds

◆ group

template<typename group_t>
group_t& dx::usb::isoc::session< group_t >::group

◆ status

template<typename group_t>
os_result dx::usb::isoc::session< group_t >::status {}

the group's last charge: failed, the group rests


The documentation for this struct was generated from the following file: