dxd - dynax driver framework 2.1.0d71
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::usb::pipe< device_t > Class Template Reference

#include <dx_usb_device.h>

+ Inheritance diagram for dx::usb::pipe< device_t >:
+ Collaboration diagram for dx::usb::pipe< device_t >:

Classes

struct  attributes
 

Public Types

enum class  type : uint8_t {
  control =::kUSBControl , isoc = ::kUSBIsoc , bulk = ::kUSBBulk , irq = ::kUSBInterrupt ,
  control =::UsbdPipeTypeControl , isoc = ::UsbdPipeTypeIsochronous , bulk = ::UsbdPipeTypeBulk , irq = ::UsbdPipeTypeInterrupt
}
 
enum class  type : unsigned char {
  control =::kUSBControl , isoc = ::kUSBIsoc , bulk = ::kUSBBulk , irq = ::kUSBInterrupt ,
  control =::UsbdPipeTypeControl , isoc = ::UsbdPipeTypeIsochronous , bulk = ::UsbdPipeTypeBulk , irq = ::UsbdPipeTypeInterrupt
}
 

Public Member Functions

pipeabort () try
 
 dx_catchall_rethrow () os_result status() const noexcept
 
 dx_catchall_rethrow (;,"endpoint:%x interface:%d setting:%d", endpoint.address, endpoint.interface, endpoint.setting) bool in() const noexcept
 
 dx_catchall_rethrow (try {const_cast< pipe * >(this) ->clear();} dx_catchall_handler(this,), "idx:%d size:%lld", idx, sizeof request) template< typename data_t > data_t submit(const control &control) const
 control request to pipe
 
bool in () const noexcept
 bus initializer (isoc, bulk, pci, etc.) compatibility
 
pipeinfo () noexcept
 
pipemax_frame_size (uint32_t frame_size)
 
template<typename data_t >
pipeoperator<< (const data_t &data)
 synchronous USB write request
 
template<typename data_t >
pipeoperator>> (data_t &data)
 synchronous USB read request
 
 pipe (device_t &device, const usb::endpoint &endpoint)
 
virtual void start (uint64_t, unsigned int=1)
 async IO thread control (required for Windows compatibility)
 
virtual void start (uint64_t, unsigned int=1) try
 async IO thread control
 
virtual unsigned int stop (bool=false) noexcept
 
template<typename data_t >
pipesubmit (const request< data_t > &request) const try
 standard request to pipe
 

Public Attributes

const struct dx::usb::pipe::attributes & attributes = reinterpret_cast<const struct attributes&>(bmAttributes)
 
std::deque< union audio::descriptor::endpointaudio
 
device_t & device
 
interface_t & interface
 
enum dx::usb::platform::pipe::type type
 

Protected Member Functions

virtual void exception (const dx::exception &exception, bool filtered=false) const noexcept
 
virtual void exception (const dx::exception &exception, bool filtered=false) const noexcept
 
virtual void received (os_result, size_t)
 virtual async callbacks
 
virtual void received (os_result, size_t)
 virtual async callbacks
 
virtual void received (os_result, size_t, int64_t, usb::isoc::frame *)
 
virtual void received (os_result, size_t, int64_t, usb::isoc::frame *)
 
virtual void transmitted (os_result, size_t)
 
virtual void transmitted (os_result, size_t)
 
virtual void transmitted (os_result, size_t, int64_t, usb::isoc::frame *)
 
virtual void transmitted (os_result, size_t, int64_t, usb::isoc::frame *)
 
 ~pipe () noexcept override
 

Protected Attributes

struct { 
 
address 
 
uint8_t address = 0
 
uint8_t idx = 0
 
struct { 
 
   class buffer
 
   }   buffer 
 
   unsigned int   micro_frames = 0 
 
isoc 
 
struct dx::usb::platform::pipe::isoc isoc
 
struct { 
 
   ::WINUSB_INTERFACE_HANDLE   handle 
 
winusb 
 

Member Enumeration Documentation

◆ type [1/2]

template<typename device_t , typename interface_t >
enum class enum dx::usb::platform::pipe::type dx::usb::platform::pipe< device_t, interface_t >::type
stronginherited
Enumerator
control 
isoc 
bulk 
irq 
control 
isoc 
bulk 
irq 

◆ type [2/2]

template<typename device_t , typename interface_t >
enum class dx::usb::platform::pipe::type : unsigned char
stronginherited
Enumerator
control 
isoc 
bulk 
irq 
control 
isoc 
bulk 
irq 

Constructor & Destructor Documentation

◆ ~pipe()

template<typename device_t = device>
dx::usb::pipe< device_t >::~pipe ( )
inlineoverrideprotectedvirtualnoexcept

◆ pipe()

template<typename device_t = device>
dx::usb::pipe< device_t >::pipe ( device_t & device,
const usb::endpoint & endpoint )
inline

Member Function Documentation

◆ abort()

template<typename device_t , typename interface_t >
pipe & dx::usb::platform::pipe< device_t, interface_t >::abort ( )
inlineinherited

◆ dx_catchall_rethrow() [1/3]

template<typename device_t , typename interface_t >
dx::usb::platform::pipe< device_t, interface_t >::dx_catchall_rethrow ( ) const
inlinenoexceptinherited
+ Here is the call graph for this function:

◆ dx_catchall_rethrow() [2/3]

template<typename device_t = device>
dx::usb::pipe< device_t >::dx_catchall_rethrow ( ; ,
"endpoint:%x interface:%d setting:%d" ,
endpoint. address,
endpoint. interface,
endpoint. setting ) const
inlinenoexcept

◆ dx_catchall_rethrow() [3/3]

template<typename device_t , typename interface_t >
dx::usb::platform::pipe< device_t, interface_t >::dx_catchall_rethrow ( try {const_cast< pipe< device_t, interface_t > * > this) ->clear();} dx_catchall_handler(this,,
"idx:%d size:%lld" ,
idx ,
sizeof request ) const &
inlineinherited

control request to pipe

◆ exception() [1/2]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::exception ( const dx::exception & exception,
bool filtered = false ) const
inlineprotectedvirtualnoexceptinherited
+ Here is the call graph for this function:

◆ exception() [2/2]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::exception ( const dx::exception & exception,
bool filtered = false ) const
inlineprotectedvirtualnoexceptinherited
+ Here is the call graph for this function:

◆ in()

template<typename device_t , typename interface_t >
bool dx::usb::platform::pipe< device_t, interface_t >::in ( ) const
inlinenoexceptinherited

bus initializer (isoc, bulk, pci, etc.) compatibility

◆ info()

template<typename device_t = device>
pipe & dx::usb::pipe< device_t >::info ( )
inlinenoexcept

< Bit D7 indicates a requirement for wMaxPacketSize packets.; D7: MaxPacketsOnly

< D1..0: Pitch Control; D3..2: Data Overrun Control; D5..4: Data Underrun Control; D7..6: Reserved. Must be set to 0.

< Indicates the units used for the wLockDelay field: 0: Undefined; 1: Milliseconds; 2: Decoded PCM samples; 3..255: Reserved

< Indicates the time it takes this endpoint to reliably lock its internal clock recovery circuitry. Units used depend on the value of the bLockDelayUnits field.

< Number of Embedded MIDI Jacks: n.

< ID of the n-th Embedded Jack that is associated with this endpoint.

◆ max_frame_size()

template<typename device_t = device>
pipe & dx::usb::pipe< device_t >::max_frame_size ( uint32_t frame_size)
inline

◆ operator<<()

template<typename device_t = device>
template<typename data_t >
pipe & dx::usb::pipe< device_t >::operator<< ( const data_t & data)
inline

synchronous USB write request

◆ operator>>()

template<typename device_t = device>
template<typename data_t >
pipe & dx::usb::pipe< device_t >::operator>> ( data_t & data)
inline

synchronous USB read request

◆ received() [1/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::received ( os_result ,
size_t  )
inlineprotectedvirtualinherited

◆ received() [2/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::received ( os_result ,
size_t  )
inlineprotectedvirtualinherited

virtual async callbacks

Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.

+ Here is the call graph for this function:

◆ received() [3/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::received ( os_result ,
size_t ,
int64_t ,
usb::isoc::frame *  )
inlineprotectedvirtualinherited

◆ received() [4/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::received ( os_result ,
size_t ,
int64_t ,
usb::isoc::frame *  )
inlineprotectedvirtualinherited

◆ start() [1/2]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::start ( uint64_t ,
unsigned int = 1 )
inlinevirtualinherited

async IO thread control (required for Windows compatibility)

Reimplemented in dx::usb::stream::pipe< desc_t, circular_t >, and dx::usb::stream::pipe< _desc_t, dx::circular >.

◆ start() [2/2]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::start ( uint64_t ,
unsigned int = 1 )
inlinevirtualinherited

◆ stop()

template<typename device_t , typename interface_t >
virtual unsigned int dx::usb::platform::pipe< device_t, interface_t >::stop ( bool = false)
inlinevirtualnoexceptinherited

◆ submit()

template<typename device_t , typename interface_t >
template<typename data_t >
pipe & dx::usb::platform::pipe< device_t, interface_t >::submit ( const request< data_t > & request) const
inlineinherited

standard request to pipe

◆ transmitted() [1/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::transmitted ( os_result ,
size_t  )
inlineprotectedvirtualinherited

◆ transmitted() [2/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::transmitted ( os_result ,
size_t  )
inlineprotectedvirtualinherited
+ Here is the call graph for this function:

◆ transmitted() [3/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::transmitted ( os_result ,
size_t ,
int64_t ,
usb::isoc::frame *  )
inlineprotectedvirtualinherited

◆ transmitted() [4/4]

template<typename device_t , typename interface_t >
virtual void dx::usb::platform::pipe< device_t, interface_t >::transmitted ( os_result ,
size_t ,
int64_t ,
usb::isoc::frame *  )
inlineprotectedvirtualinherited

Member Data Documentation

◆ [struct] [1/2]

struct { ... } dx::usb::platform::pipe< device_t, interface_t >::address

◆ address [2/2]

template<typename device_t , typename interface_t >
uint8_t dx::usb::platform::pipe< device_t, interface_t >::address = 0
protectedinherited

◆ attributes

template<typename device_t = device>
const struct dx::usb::pipe::attributes& dx::usb::pipe< device_t >::attributes = reinterpret_cast<const struct attributes&>(bmAttributes)

◆ audio

std::deque<union audio::descriptor::endpoint> dx::usb::__::endpoint::audio
inherited

◆ [class]

class { ... } ::buffer dx::usb::platform::pipe< device_t, interface_t >::buffer

◆ device

template<typename device_t , typename interface_t >
device_t & dx::usb::platform::pipe< device_t, interface_t >::device
inherited

◆ handle

template<typename device_t , typename interface_t >
::WINUSB_INTERFACE_HANDLE dx::usb::platform::pipe< device_t, interface_t >::handle
inherited

◆ idx

template<typename device_t , typename interface_t >
uint8_t dx::usb::platform::pipe< device_t, interface_t >::idx = 0
protectedinherited

◆ interface

template<typename device_t , typename interface_t >
interface_t & dx::usb::platform::pipe< device_t, interface_t >::interface
inherited

◆ [struct] [1/2]

struct { ... } dx::usb::platform::pipe< device_t, interface_t >::isoc

◆ isoc [2/2]

template<typename device_t , typename interface_t >
struct dx::usb::platform::pipe::isoc dx::usb::platform::pipe< device_t, interface_t >::isoc
protectedinherited

◆ micro_frames

template<typename device_t , typename interface_t >
unsigned int dx::usb::platform::pipe< device_t, interface_t >::micro_frames = 0
inherited

◆ type

template<typename device_t , typename interface_t >
enum dx::usb::platform::pipe::type dx::usb::platform::pipe< device_t, interface_t >::type
inherited

◆ [struct]

struct { ... } dx::usb::platform::pipe< device_t, interface_t >::winusb

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

(c) copyright 2009 dynamic acoustics e.U. generated on Thu Jun 6 2024

a closed source license may be obtained by requesting a written permission from dynamic acoustics e.U.
however - governmental use generally and military use especially is strictly prohibited though.