dxd - dynax driver framework 2.1.0d73
cross platform open source driver development framework
Loading...
Searching...
No Matches
dxd::wavecyclic::stream< circular_t, bus_t, stream_desc_t > Class Template Reference

wavecyclic::stream class More...

#include <dxd_portcls_audio.h>

+ Inheritance diagram for dxd::wavecyclic::stream< circular_t, bus_t, stream_desc_t >:
+ Collaboration diagram for dxd::wavecyclic::stream< circular_t, bus_t, stream_desc_t >:

Public Types

typedef bus_t bus
 
typedef stream_desc_t stream_desc
 

Public Member Functions

virtual os_result start ()
 
virtual void stop ()
 
 stream (::IUnknown *unknown, const::DEVICE_OBJECT *wdm_bus, const dx::stream::open< bus_t > &open, const stream_desc_t &stream_desc, unsigned int idx, const::WAVEFORMATEXTENSIBLE &wave)
 audio stream constructor
 
 ~stream ()
 portcls::stream destructor
 

Public Attributes

os_result status = not_initialized
 

Protected Member Functions

bool cancel ()
 
virtual void completion (os_result)
 
os_result ctl (unsigned int ioctl, bool internal=false)
 
template<class receipt_t >
os_result ictl (unsigned int ioctl, receipt_t &receipt, bool internal=false)
 
template<class post_t , class receipt_t >
os_result ioctl (const post_t &post, unsigned int ioctl, receipt_t &receipt, bool internal=false)
 
os_result ioctl (const void *post, size_t post_size, unsigned int ioctl, void *receipt, size_t receipt_size, bool internal=false)
 IOCTL IRP http://msdn.microsoft.com/en-us/library/windows/hardware/ff540663(v=vs.85).aspx.
 
template<class post_t >
os_result octl (const post_t &post, unsigned int ioctl, bool internal=false)
 
os_result octl (unsigned int post, unsigned int ioctl, bool internal=false)
 
os_result submit (unsigned int ioctl, void *others)
 submit other IRP
 

Protected Attributes

os_event data
 data available event
 
os_event gap
 space available event
 
circular_t * io
 define the I/O class for shared memory
 
uint64_t rx = 0
 
bool started = false
 

Detailed Description

template<typename circular_t, typename bus_t, typename stream_desc_t>
class dxd::wavecyclic::stream< circular_t, bus_t, stream_desc_t >

wavecyclic::stream class

Member Typedef Documentation

◆ bus

template<typename circular_t , typename bus_t , typename stream_desc_t >
typedef bus_t dxd::wavecyclic::stream< circular_t, bus_t, stream_desc_t >::bus

◆ stream_desc

template<typename circular_t , typename bus_t , typename stream_desc_t >
typedef stream_desc_t dxd::portcls::stream< circular_t, bus_t, stream_desc_t >::stream_desc
inherited

Constructor & Destructor Documentation

◆ stream()

template<typename circular_t , typename bus_t , typename stream_desc_t >
dxd::wavecyclic::stream< circular_t, bus_t, stream_desc_t >::stream ( ::IUnknown * unknown,
const::DEVICE_OBJECT * wdm_bus,
const dx::stream< circular_t, bus_t, stream_desc_t >::open< bus_t > & open,
const stream_desc_t & stream_desc,
unsigned int idx,
const::WAVEFORMATEXTENSIBLE & wave )
inline

audio stream constructor

+ Here is the call graph for this function:

◆ ~stream()

template<typename circular_t , typename bus_t , typename stream_desc_t >
dxd::wavecyclic::stream< circular_t, bus_t, stream_desc_t >::~stream ( )
inlinevirtual

portcls::stream destructor

stops streaming,

and closes the stream

Reimplemented from dxd::portcls::stream< circular_t, bus_t, stream_desc_t >.

+ Here is the call graph for this function:

Member Function Documentation

◆ cancel()

template<synchrony synchrony_t = synchrony::sync>
bool dxd::wdm::irp< synchrony_t >::cancel ( )
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ completion()

template<synchrony synchrony_t = synchrony::sync>
virtual void dxd::wdm::irp< synchrony_t >::completion ( os_result )
inlineprotectedvirtualinherited

◆ ctl()

template<synchrony synchrony_t = synchrony::sync>
os_result dxd::wdm::irp< synchrony_t >::ctl ( unsigned int ioctl,
bool internal = false )
inlineinherited
+ Here is the call graph for this function:

◆ ictl()

template<synchrony synchrony_t = synchrony::sync>
template<class receipt_t >
os_result dxd::wdm::irp< synchrony_t >::ictl ( unsigned int ioctl,
receipt_t & receipt,
bool internal = false )
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ioctl() [1/2]

template<synchrony synchrony_t = synchrony::sync>
template<class post_t , class receipt_t >
os_result dxd::wdm::irp< synchrony_t >::ioctl ( const post_t & post,
unsigned int ioctl,
receipt_t & receipt,
bool internal = false )
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ioctl() [2/2]

template<synchrony synchrony_t = synchrony::sync>
os_result dxd::wdm::irp< synchrony_t >::ioctl ( const void * post,
size_t post_size,
unsigned int ioctl,
void * receipt,
size_t receipt_size,
bool internal = false )
inlineinherited

IOCTL IRP http://msdn.microsoft.com/en-us/library/windows/hardware/ff540663(v=vs.85).aspx.

Todo
: check and refuse IRQL; handle completion
Todo
:for asynchronous IRP request: move buffered copy into completion!
+ Here is the call graph for this function:

◆ octl() [1/2]

template<synchrony synchrony_t = synchrony::sync>
template<class post_t >
os_result dxd::wdm::irp< synchrony_t >::octl ( const post_t & post,
unsigned int ioctl,
bool internal = false )
inlineinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ octl() [2/2]

template<synchrony synchrony_t = synchrony::sync>
os_result dxd::wdm::irp< synchrony_t >::octl ( unsigned int post,
unsigned int ioctl,
bool internal = false )
inlineinherited
+ Here is the call graph for this function:

◆ start()

template<typename circular_t , typename bus_t , typename stream_desc_t >
virtual os_result dxd::portcls::stream< circular_t, bus_t, stream_desc_t >::start ( )
inlinevirtualinherited

starts base driver streaming

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ stop()

template<typename circular_t , typename bus_t , typename stream_desc_t >
virtual void dxd::portcls::stream< circular_t, bus_t, stream_desc_t >::stop ( )
inlinevirtualinherited

stops the underlaying base driver streaming

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ submit()

template<synchrony synchrony_t = synchrony::sync>
os_result dxd::wdm::irp< synchrony_t >::submit ( unsigned int ioctl,
void * others )
inlineinherited

submit other IRP

+ Here is the call graph for this function:

Member Data Documentation

◆ data

os_event dxd::stream::opened< circular_t >::data
inherited

data available event

◆ gap

os_event dxd::stream::opened< circular_t >::gap
inherited

space available event

◆ io

circular_t * dxd::stream::opened< circular_t >::io
inherited

define the I/O class for shared memory

◆ rx

template<typename circular_t , typename bus_t , typename stream_desc_t >
uint64_t dxd::portcls::stream< circular_t, bus_t, stream_desc_t >::rx = 0
protectedinherited

◆ started

template<typename circular_t , typename bus_t , typename stream_desc_t >
bool dxd::portcls::stream< circular_t, bus_t, stream_desc_t >::started = false
protectedinherited

◆ status

template<typename circular_t , typename bus_t , typename stream_desc_t >
os_result dxd::portcls::stream< circular_t, bus_t, stream_desc_t >::status = not_initialized
inherited

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

(c) copyright 2009 dynamic acoustics e.U. generated on Thu Nov 28 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.