|
| 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 > |
|
| 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 ¤t, 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
|