dxd - dynax driver framework  3211
cross platform open source driver development framework
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 >:

Public Types

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

Public Member Functions

pipeabort ()
 
pipeabort ()
 
 catchall_rethrow () os_result status() const noexcept
 
pipeclear ()
 
pipeclear ()
 
uint64_t frame ()
 
uint64_t frame ()
 
bool in () const noexcept
 bus initializer (isoc, bulk, pci, etc.) compatibility More...
 
bool in () const noexcept
 bus initializer (isoc, bulk, pci, etc.) compatibility More...
 
pipeinfo () noexcept
 
pipeinfo () noexcept
 
pipemax_frame_size (unsigned int frame_size)
 
pipemax_frame_size (unsigned int frame_size)
 
 operator const os_event () const noexcept
 
 operator os_event () noexcept
 
 operator::HANDLE () noexcept
 
template<typename data_t >
pipeoperator<< (const data_t &data)
 
template<typename data_t >
pipeoperator<< (const data_t &data)
 
template<typename data_t >
pipeoperator>> (data_t &data)
 
template<typename data_t >
pipeoperator>> (data_t &data)
 
 pipe (device_t &device, const dx::usb::endpoint &endpoint)
 
 pipe (device_t &device, const endpoint &endpoint)
 
piperead (void *data, size_t size)
 synchronous USB read request More...
 
piperead (void *data, size_t size)
 synchronous USB read request More...
 
pipereceive (void *data, size_t size)
 asynchronous USB read request More...
 
pipereceive (void *data, uint64_t &sequence, ::USBD_ISO_PACKET_DESCRIPTOR *frame, int frames=1)
 asynchronous USB isoc read request More...
 
pipereceive (void *data, size_t size)
 asynchronous USB read request More...
 
pipereceive (void *data, uint64_t &sequence, ::IOUSBIsocFrame *frame, int frames=1)
 asynchronous USB isoc read request More...
 
void reset ()
 
void signal ()
 
pipetransmit (const void *data, size_t size)
 asynchronous USB write request More...
 
pipetransmit (const void *data, uint64_t &sequence, ::USBD_ISO_PACKET_DESCRIPTOR *frame, int frames=1)
 asynchronous USB isoc write request More...
 
pipetransmit (const void *data, size_t &size)
 asynchronous USB write request More...
 
pipetransmit (const void *data, uint64_t &sequence, ::IOUSBIsocFrame *frame, int frames=1)
 asynchronous USB isoc write request More...
 
void wait (int64_t timeout=0)
 
pipewrite (const void *data, size_t size)
 synchronous USB write request More...
 
pipewrite (const void *data, size_t size)
 synchronous USB write request More...
 

Static Public Member Functions

static void wait (::HANDLE handle, int64_t timeout=0)
 

Public Attributes

std::deque< union audio<>::descriptor::endpoint > audio
 
std::deque< union audio<>::descriptor::endpoint > audio
 
dx::log log {}
 
decltype(descriptor::endpoint) typedef super
 
decltype(descriptor::endpoint) typedef super
 
enum dx::usb::pipe::type type
 
unsigned int micro_frames = 0
 

Protected Member Functions

virtual void exception (const dx::exception &exception) noexcept
 
virtual void exception (const dx::exception &exception) noexcept
 
virtual void received (os_result, size_t)
 virtual async callbacks More...
 
virtual void received (os_result, size_t, int64_t)
 
virtual void received (os_result, size_t)
 virtual async callbacks More...
 
virtual void received (os_result, size_t, int64_t)
 
void start ()
 async IO thread control More...
 
void start ()
 async IO thread control More...
 
void stop () noexcept
 
void stop () noexcept
 
virtual void transmitted (os_result, size_t)
 
virtual void transmitted (os_result, size_t, int64_t)
 
virtual void transmitted (os_result, size_t)
 
virtual void transmitted (os_result, size_t, int64_t)
 
virtual ~pipe () noexcept
 
virtual ~pipe () noexcept
 

Protected Attributes

device_t & device
 async write callback More...
 
interfaceinterface
 
::WINUSB_INTERFACE_HANDLE interface_handle
 
struct {
   unsigned int   micro_frames = 0
 
isoc
 
struct {
   unsigned int   micro_frames = 0
 
isoc
 

Member Enumeration Documentation

◆ type [1/2]

template<typename device_t = device>
enum dx::usb::pipe::type : unsigned char
strong
Enumerator
control 
isoc 
bulk 
irq 
control 
isoc 
bulk 
irq 

◆ type [2/2]

template<typename device_t = device>
enum enum dx::usb::pipe::type pipe::type
strong
Enumerator
control 
isoc 
bulk 
irq 
control 
isoc 
bulk 
irq 

Constructor & Destructor Documentation

◆ ~pipe() [1/2]

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

◆ pipe() [1/2]

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

◆ ~pipe() [2/2]

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

◆ pipe() [2/2]

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

Member Function Documentation

◆ abort() [1/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::abort ( )
inline

◆ abort() [2/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::abort ( )
inline

◆ catchall_rethrow()

template<typename device_t = device>
dx::usb::pipe< device_t >::catchall_rethrow ( ) const
inlinenoexcept

◆ clear() [1/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::clear ( )
inline

◆ clear() [2/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::clear ( )
inline

◆ exception() [1/2]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::exception ( const dx::exception exception)
inlineprotectedvirtualnoexcept

◆ exception() [2/2]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::exception ( const dx::exception exception)
inlineprotectedvirtualnoexcept

◆ frame() [1/2]

template<typename device_t = device>
uint64_t dx::usb::pipe< device_t >::frame ( )
inline
+ Here is the call graph for this function:

◆ frame() [2/2]

template<typename device_t = device>
uint64_t dx::usb::pipe< device_t >::frame ( )
inline

◆ in() [1/2]

template<typename device_t = device>
bool dx::usb::pipe< device_t >::in ( ) const
inlinenoexcept

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

◆ in() [2/2]

template<typename device_t = device>
bool dx::usb::pipe< device_t >::in ( ) const
inlinenoexcept

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

◆ info() [1/2]

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.

◆ info() [2/2]

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() [1/2]

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

◆ max_frame_size() [2/2]

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

◆ operator const os_event()

dx::event< dx::kernel >::operator const os_event ( ) const
inlinenoexceptinherited

◆ operator os_event()

dx::event< dx::kernel >::operator os_event ( )
inlinenoexceptinherited

◆ operator::HANDLE()

dx::event< dx::kernel >::operator::HANDLE ( )
inlinenoexceptinherited

◆ operator<<() [1/2]

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

◆ operator<<() [2/2]

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

◆ operator>>() [1/2]

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

◆ operator>>() [2/2]

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

◆ read() [1/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::read ( void *  data,
size_t  size 
)
inline

synchronous USB read request

◆ read() [2/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::read ( void *  data,
size_t  size 
)
inline

synchronous USB read request

◆ receive() [1/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::receive ( void *  data,
size_t  size 
)
inline

asynchronous USB read request

◆ receive() [2/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::receive ( void *  data,
uint64_t sequence,
::USBD_ISO_PACKET_DESCRIPTOR *  frame,
int  frames = 1 
)
inline

asynchronous USB isoc read request

◆ receive() [3/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::receive ( void *  data,
size_t  size 
)
inline

asynchronous USB read request

◆ receive() [4/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::receive ( void *  data,
uint64_t sequence,
::IOUSBIsocFrame *  frame,
int  frames = 1 
)
inline

asynchronous USB isoc read request

◆ received() [1/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::received ( os_result  ,
size_t   
)
inlineprotectedvirtual

virtual async callbacks

Reimplemented in dx::usb::stream::pin< desc_t, circular_t, device_t >.

◆ received() [2/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::received ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual

◆ received() [3/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::received ( os_result  ,
size_t   
)
inlineprotectedvirtual

virtual async callbacks

Reimplemented in dx::usb::stream::pin< desc_t, circular_t, device_t >.

◆ received() [4/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::received ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual

◆ reset()

void dx::event< dx::kernel >::reset ( )
inlineinherited

◆ signal()

void dx::event< dx::kernel >::signal ( )
inlineinherited

◆ start() [1/2]

template<typename device_t = device>
void dx::usb::pipe< device_t >::start ( )
inlineprotected

async IO thread control

◆ start() [2/2]

template<typename device_t = device>
void dx::usb::pipe< device_t >::start ( )
inlineprotected

async IO thread control

◆ stop() [1/2]

template<typename device_t = device>
void dx::usb::pipe< device_t >::stop ( )
inlineprotectednoexcept

◆ stop() [2/2]

template<typename device_t = device>
void dx::usb::pipe< device_t >::stop ( )
inlineprotectednoexcept

◆ transmit() [1/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::transmit ( const void *  data,
size_t  size 
)
inline

asynchronous USB write request

◆ transmit() [2/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::transmit ( const void *  data,
uint64_t sequence,
::USBD_ISO_PACKET_DESCRIPTOR *  frame,
int  frames = 1 
)
inline

asynchronous USB isoc write request

◆ transmit() [3/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::transmit ( const void *  data,
size_t &  size 
)
inline

asynchronous USB write request

◆ transmit() [4/4]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::transmit ( const void *  data,
uint64_t sequence,
::IOUSBIsocFrame *  frame,
int  frames = 1 
)
inline

asynchronous USB isoc write request

◆ transmitted() [1/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t   
)
inlineprotectedvirtual

◆ transmitted() [2/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual

◆ transmitted() [3/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t   
)
inlineprotectedvirtual

◆ transmitted() [4/4]

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual

◆ wait() [1/2]

static void dx::event< dx::kernel >::wait ( ::HANDLE  handle,
int64_t  timeout = 0 
)
inlinestaticinherited

◆ wait() [2/2]

void dx::event< dx::kernel >::wait ( int64_t  timeout = 0)
inlineinherited

◆ write() [1/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::write ( const void *  data,
size_t  size 
)
inline

synchronous USB write request

◆ write() [2/2]

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::write ( const void *  data,
size_t  size 
)
inline

synchronous USB write request

Member Data Documentation

◆ audio [1/2]

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

◆ audio [2/2]

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

◆ device

template<typename device_t = device>
device_t & pipe::device
protected

async write callback

◆ interface

template<typename device_t = device>
interface & pipe::interface
protected

◆ interface_handle

template<typename device_t = device>
::WINUSB_INTERFACE_HANDLE dx::usb::pipe< device_t >::interface_handle
protected

◆ isoc [1/2]

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

◆ isoc [2/2]

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

◆ log

template<typename device_t = device>
dx::log pipe::log {}

◆ micro_frames

template<typename device_t = device>
unsigned int dx::usb::pipe< device_t >::micro_frames = 0

◆ super [1/2]

decltype(descriptor::endpoint) typedef dx::usb::__endpoint::super
inherited

◆ super [2/2]

decltype(descriptor::endpoint) typedef dx::usb::_endpoint::super
inherited

◆ type

template<typename device_t = device>
enum dx::usb::pipe::type dx::usb::pipe< device_t >::type

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

(c) copyright 2009 dynamic acoustics e.U. generated on Sat Aug 22 2020

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.