dxd - dynax driver framework 3.0.1f223
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx_usb.h File Reference
#include "dx_stream.h"
#include <sstream>
#include <iomanip>
Include dependency graph for dx_usb.h:
This graph shows which files directly or indirectly include this file:

Classes

struct  dx::usb::__request_type
 standard USB control request definitions More...
struct  dx::usb::control
 a setup packet: the request and its wValue/wIndex/wLength. length is the data stage's size - a request carrying data with length 0 is stalled by the device More...
union  dx::usb::descriptor
 the standard descriptors over the platform's own declarations: one spelling for the walkers of dx_usb_audio.h, whatever SDK the build takes them from More...
struct  dx::usb::descriptor::string
 a string descriptor at its largest, the same on every platform: UTF-16LE, its length device supplied and untrusted; inside it head is its base's injected class name, so the union's member is named qualified More...
struct  dx::usb::descriptor::type
struct  dx::usb::endpoint
 USB specific errors. More...
struct  dx::usb::endpoint::attributes
 an endpoint's bmAttributes: the transfer type, how an isochronous endpoint synchronizes, and whether it carries data or the feedback for another endpoint More...
union  dx::usb::isoc::frame
 one frame of a request: what was asked for, what the controller delivered and its status - laid over the platform's own frame structure, so a request is filled once and submitted as it stands More...
struct  dx::usb::isoc::result
 completed asynchronous isoc request, as pulled by a platform pipe's poll() More...
struct  dx::usb::request< data_t, typename >

Namespaces

namespace  dx
 dynax driver framework interface namespace
namespace  dx::usb
 USB user mode interface namespace.
namespace  dx::usb::isoc
 the isochronous transfer as both platforms describe it, frame by frame

Macros

#define DX_MEMBERS_USB_ENDPOINT(X)

Enumerations

enum  { dx::usb::isoc::max_micro_frames = 8 , dx::usb::isoc::ticks_per_sec = 1000 , dx::usb::isoc::max_requests = 0x40 }
enum  dx::usb::language : uint16_t { dx::usb::standard = english }

Functions

template<typename desc_t>
desc_t::configuration dx::usb::align (const desc_t &desc, const typename desc_t::configuration &value, const typename desc_t::configuration &current, const void *configuration, size_t length, bool high, uint64_t budget, uint32_t rate) noexcept
 a device configuration its bus carries: per stream, from the stream configuration asked for down its richer-first list, the first one that states the rate, runs the setting another running stream on the same interface runs, and keeps the streams placed so far within the periodic budget (isoc::allocation()) - one past its configurations where none does, the stream off. The streams value leaves as current has them stand and are placed first, the ones it changes then against them. An asynchronous sink naming no sync endpoint takes its rate off an in stream's data (implicit feedback): it runs only beside a running in stream of its group, else it takes the next stream configuration that does without
template<typename desc_t>
uint64_t dx::usb::isoc::allocation (const desc_t &desc, const typename desc_t::configuration &value, const void *configuration, size_t length, bool high) noexcept
dx_packed_end const decltype(descriptor::head) * dx::usb::first (const void *configuration, const uint8_t *end) noexcept
const decltype(descriptor::head) * dx::usb::next (const decltype(descriptor::head) *head, const uint8_t *end) noexcept
 the descriptor after head, nullptr past the end
std::ostream & dx::usb::operator<< (std::ostream &os, const endpoint &endpoint)
std::ostream & dx::usb::operator<< (std::ostream &os, const endpoint::attributes &attributes)
std::ostream & operator<< (std::ostream &os, const decltype(dx::usb::__request_type::direction)&direction)
std::ostream & operator<< (std::ostream &os, const decltype(dx::usb::__request_type::recipient)&recipient)
std::ostream & operator<< (std::ostream &os, const decltype(dx::usb::__request_type::type)&type)
std::ostream & operator<< (std::ostream &os, const decltype(dx::usb::control::request)&request)
std::ostream & operator<< (std::ostream &os, const decltype(dx::usb::descriptor::device)&device)
std::ostream & operator<< (std::ostream &os, const decltype(dx::usb::descriptor::endpoint)&endpoint)
std::ostream & operator<< (std::ostream &os, const decltype(dx::usb::descriptor::interface)&interface)
std::ostream & operator<< (std::ostream &os, const dx::usb::__request_type &request_type)
std::ostream & operator<< (std::ostream &os, const dx::usb::control &control)
template<typename data_t>
std::ostream & operator<< (std::ostream &os, const dx::usb::request< data_t > &request)
constexpr uint64_t dx::usb::isoc::time (bool high, bool in, bool isochronous, uint16_t wMaxPacketSize)
 the bus time the host reserves for a periodic endpoint - isochronous, else interrupt - per (micro) frame, in ns: USB 2.0 5.11.3 at worst case bit stuffing (7/6), no host delay - a high speed endpoint's additional transactions each

Macro Definition Documentation

◆ DX_MEMBERS_USB_ENDPOINT

#define DX_MEMBERS_USB_ENDPOINT ( X)
Value:
X##_value(address) X##_direction(direction)

Function Documentation

◆ operator<<() [1/10]

std::ostream & operator<< ( std::ostream & os,
const decltype(dx::usb::__request_type::direction)& direction )
inline

◆ operator<<() [2/10]

std::ostream & operator<< ( std::ostream & os,
const decltype(dx::usb::__request_type::recipient)& recipient )
inline

◆ operator<<() [3/10]

std::ostream & operator<< ( std::ostream & os,
const decltype(dx::usb::__request_type::type)& type )
inline

◆ operator<<() [4/10]

std::ostream & operator<< ( std::ostream & os,
const decltype(dx::usb::control::request)& request )
inline

◆ operator<<() [5/10]

std::ostream & operator<< ( std::ostream & os,
const decltype(dx::usb::descriptor::device)& device )
inline

◆ operator<<() [6/10]

std::ostream & operator<< ( std::ostream & os,
const decltype(dx::usb::descriptor::endpoint)& endpoint )
inline

◆ operator<<() [7/10]

std::ostream & operator<< ( std::ostream & os,
const decltype(dx::usb::descriptor::interface)& interface )
inline

◆ operator<<() [8/10]

std::ostream & operator<< ( std::ostream & os,
const dx::usb::__request_type & request_type )
inline

◆ operator<<() [9/10]

std::ostream & operator<< ( std::ostream & os,
const dx::usb::control & control )
inline

◆ operator<<() [10/10]

template<typename data_t>
std::ostream & operator<< ( std::ostream & os,
const dx::usb::request< data_t > & request )
inline