dxd - dynax driver framework  3208
cross platform open source driver development framework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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

template<typename device_t = device>
enum dx::usb::pipe::type : unsigned char
strong
Enumerator
control 
isoc 
bulk 
irq 
control 
isoc 
bulk 
irq 
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

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

+ Here is the call graph for this function:

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

+ Here is the call graph for this function:

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

+ Here is the call graph for this function:

Member Function Documentation

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

+ Here is the caller graph for this function:

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

+ Here is the caller graph for this function:

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::clear ( )
inline
template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::clear ( )
inline
template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::exception ( const dx::exception exception)
inlineprotectedvirtualnoexcept
template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::exception ( const dx::exception exception)
inlineprotectedvirtualnoexcept
template<typename device_t = device>
uint64_t dx::usb::pipe< device_t >::frame ( )
inline

+ Here is the call graph for this function:

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

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

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

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

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

+ Here is the caller graph for this function:

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.

+ Here is the call graph for this function:

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.

+ Here is the caller graph for this function:

template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::max_frame_size ( unsigned int  frame_size)
inline
template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::max_frame_size ( unsigned int  frame_size)
inline
dx::event< dx::kernel >::operator const os_event ( ) const
inlinenoexceptinherited
dx::event< dx::kernel >::operator os_event ( )
inlinenoexceptinherited
dx::event< dx::kernel >::operator::HANDLE ( )
inlinenoexceptinherited
template<typename device_t = device>
template<typename data_t >
pipe& dx::usb::pipe< device_t >::operator<< ( const data_t &  data)
inline

+ Here is the call graph for this function:

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

+ Here is the call graph for this function:

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

synchronous USB read request

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

synchronous USB read request

+ Here is the caller graph for this function:

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

asynchronous USB read request

+ Here is the call graph for this function:

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

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

asynchronous USB read request

+ Here is the call graph for this function:

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

+ Here is the call graph for this function:

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 >.

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::received ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual
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 >.

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::received ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual
void dx::event< dx::kernel >::reset ( )
inlineinherited
void dx::event< dx::kernel >::signal ( )
inlineinherited
template<typename device_t = device>
void dx::usb::pipe< device_t >::start ( )
inlineprotected

async IO thread control

+ Here is the call graph for this function:

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

async IO thread control

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

+ Here is the caller graph for this function:

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

asynchronous USB write request

+ Here is the call graph for this function:

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

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

asynchronous USB write request

+ Here is the call graph for this function:

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

+ Here is the call graph for this function:

template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t   
)
inlineprotectedvirtual
template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual
template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t   
)
inlineprotectedvirtual
template<typename device_t = device>
virtual void dx::usb::pipe< device_t >::transmitted ( os_result  ,
size_t  ,
int64_t   
)
inlineprotectedvirtual
static void dx::event< dx::kernel >::wait ( ::HANDLE  handle,
int64_t  timeout = 0 
)
inlinestaticinherited

+ Here is the caller graph for this function:

void dx::event< dx::kernel >::wait ( int64_t  timeout = 0)
inlineinherited
template<typename device_t = device>
pipe& dx::usb::pipe< device_t >::write ( const void *  data,
size_t  size 
)
inline

synchronous USB write request

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

synchronous USB write request

+ Here is the caller graph for this function:

Member Data Documentation

std::deque<union audio<>::descriptor::endpoint> dx::usb::_endpoint::audio
inherited
std::deque<union audio<>::descriptor::endpoint> dx::usb::__endpoint::audio
inherited
template<typename device_t = device>
device_t & pipe::device
protected

async write callback

template<typename device_t = device>
interface & pipe::interface
protected
template<typename device_t = device>
::WINUSB_INTERFACE_HANDLE dx::usb::pipe< device_t >::interface_handle
protected
struct { ... } dx::usb::pipe< device_t >::isoc
struct { ... } dx::usb::pipe< device_t >::isoc
template<typename device_t = device>
dx::log pipe::log {}
template<typename device_t = device>
unsigned int dx::usb::pipe< device_t >::micro_frames = 0
decltype(descriptor::endpoint) typedef dx::usb::__endpoint::super
inherited
decltype(descriptor::endpoint) typedef dx::usb::_endpoint::super
inherited
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 Wed Jun 17 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.