dxd - dynax driver framework 2.2.0d81
cross platform open source driver development framework
Loading...
Searching...
No Matches
dx::proxy::stream::pin< desc_t, circular_t, device_t > Class Template Reference

OS proxy streaming pin class. More...

#include <dx_proxy_stream_device.h>

+ Inheritance diagram for dx::proxy::stream::pin< desc_t, circular_t, device_t >:
+ Collaboration diagram for dx::proxy::stream::pin< desc_t, circular_t, device_t >:

Public Types

typedef _circular_t circular_t
 
typedef _desc_t desc_t
 
typedef _device_t device_t
 

Public Member Functions

channel_t void attach (channel_t **io[2], uint64_t channel_map[(channels+63)/64]) try
 
virtual void callback ()
 
 catch (...)
 
 catch (...)
 
 catch (...)
 
 catch (...)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const dx::exception &__dx_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
 catch (const std::exception &__std_exception)
 
virtual void conclude () noexcept
 conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.
 
 dx_catchall_rethrow () virtual pin &wait()
 
 dx_catchall_rethrow () virtual uint32_t samplerate() const
 
 dx_catchall_rethrow () void stop(bool force
 
virtual float encoder (dx::stream::encoder::index::type type, int index) const
 
virtual void info (std::ostream &os)
 log object class information
 
virtual pininitialize ()
 
virtual void launch ()
 launch notification: object mounted and ready to use
 
virtual operator circular_t * () const noexcept
 
 operator os_event () noexcept
 
virtual circular_toperator-> () const noexcept
 
 pin (device_t &device, const typename desc_t::stream::desc &stream_desc, const typename desc_t::stream::pin::desc &pin_desc)
 proxy::stream::pin constructor
 
eventreset (uint64_t count=0) try
 
eventsignal (uint64_t count=1) try
 
uint64_t signalled () const
 
void start (uint64_t) override try
 
virtual void stop (bool force=false) noexcept
 
eventwait (bool reset=false) try
 
template<typename rep_t , typename period_t >
bool wait (const std::chrono::duration< rep_t, period_t > &timeout, bool reset=false) try
 
virtual ~pin () noexcept
 closes the pin
 

Public Attributes

dx::stream::channel::controlcontrol = nullptr
 
bool launched {}
 
stream_t & stream
 

Static Public Attributes

static constexpr auto scope = kernel
 

Protected Types

typedef decltype(desc_t::stream::target) bus_t
 

Detailed Description

template<typename desc_t, typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
class dx::proxy::stream::pin< desc_t, circular_t, device_t >

OS proxy streaming pin class.

example:

Exceptions
incase of an error returned by the underlaying API the device class throws a dx::exception.

Member Typedef Documentation

◆ bus_t

template<typename desc_t , typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
typedef decltype(desc_t::stream::target) dx::proxy::stream::pin< desc_t, circular_t, device_t >::bus_t
protected

◆ circular_t

template<typename _desc_t , typename _circular_t , typename _device_t >
typedef _circular_t dx::stream::pin< _desc_t, _circular_t, _device_t >::circular_t
inherited

◆ desc_t

template<typename _desc_t , typename _circular_t , typename _device_t >
typedef _desc_t dx::stream::pin< _desc_t, _circular_t, _device_t >::desc_t
inherited

◆ device_t

template<typename _desc_t , typename _circular_t , typename _device_t >
typedef _device_t dx::stream::pin< _desc_t, _circular_t, _device_t >::device_t
inherited

Constructor & Destructor Documentation

◆ pin()

template<typename desc_t , typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
dx::proxy::stream::pin< desc_t, circular_t, device_t >::pin ( device_t & device,
const typename desc_t::stream::desc & stream_desc,
const typename desc_t::stream::pin< desc_t, circular_t, device_t >::desc & pin_desc )
inline

proxy::stream::pin constructor

Exceptions
n/a

◆ ~pin()

template<typename desc_t , typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
virtual dx::proxy::stream::pin< desc_t, circular_t, device_t >::~pin ( )
inlinevirtualnoexcept

closes the pin

Member Function Documentation

◆ attach()

template<typename desc_t , typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
channel_t void dx::proxy::stream::pin< desc_t, circular_t, device_t >::attach ( channel_t ** io[2],
uint64_t channel_map[(channels+63)/64] )
inline

◆ callback()

virtual void dx::event< kernel >::callback ( )
inlinevirtualinherited

The default implementation is based on event<user> which is signalled when triggered via callback() from kernel. This is to achieve compatibility with Windows events. Its probably more adequate to overwrite callback() and do the work here if feasible.

◆ catch() [1/12]

dx::event< user >::catch ( ...)
inlineinherited

◆ catch() [2/12]

dx::event< user >::catch ( ...)
inlineinherited

◆ catch() [3/12]

dx::event< user >::catch ( ...)
inlineinherited

◆ catch() [4/12]

dx::event< user >::catch ( ...)
inlineinherited

◆ catch() [5/12]

dx::event< user >::catch ( const dx::exception & __dx_exception)
inlineinherited

◆ catch() [6/12]

dx::event< user >::catch ( const dx::exception & __dx_exception)
inlineinherited

◆ catch() [7/12]

dx::event< user >::catch ( const dx::exception & __dx_exception)
inlineinherited

◆ catch() [8/12]

dx::event< user >::catch ( const dx::exception & __dx_exception)
inlineinherited

◆ catch() [9/12]

dx::event< user >::catch ( const std::exception & __std_exception)
inlineinherited

◆ catch() [10/12]

dx::event< user >::catch ( const std::exception & __std_exception)
inlineinherited

◆ catch() [11/12]

dx::event< user >::catch ( const std::exception & __std_exception)
inlineinherited

◆ catch() [12/12]

dx::event< user >::catch ( const std::exception & __std_exception)
inlineinherited

◆ conclude()

virtual void dx::object::conclude ( )
inlinevirtualnoexceptinherited

conclude notification: object will be removed. If you overwrite conclude() you also need to overwrite destructor and check if its needed to be called from there.

Reimplemented in dx::proxy::device, dx::proxy::device, dx::map::driver< device >, and dx::map::driver< device_t >.

+ Here is the caller graph for this function:

◆ dx_catchall_rethrow() [1/3]

template<typename _desc_t , typename _circular_t , typename _device_t >
dx::stream::pin< _desc_t, _circular_t, _device_t >::dx_catchall_rethrow ( ) &
inlineinherited
+ Here is the call graph for this function:

◆ dx_catchall_rethrow() [2/3]

template<typename _desc_t , typename _circular_t , typename _device_t >
dx::stream::pin< _desc_t, _circular_t, _device_t >::dx_catchall_rethrow ( ) const
inlineinherited
+ Here is the call graph for this function:

◆ dx_catchall_rethrow() [3/3]

template<typename desc_t , typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
dx::proxy::stream::pin< desc_t, circular_t, device_t >::dx_catchall_rethrow ( )
virtual

◆ encoder()

template<typename _desc_t , typename _circular_t , typename _device_t >
virtual float dx::stream::pin< _desc_t, _circular_t, _device_t >::encoder ( dx::stream::encoder::index::type type,
int index ) const
inlinevirtualinherited
+ Here is the call graph for this function:

◆ info()

◆ initialize()

template<typename _desc_t , typename _circular_t , typename _device_t >
virtual pin & dx::stream::pin< _desc_t, _circular_t, _device_t >::initialize ( )
inlinevirtualinherited

◆ launch()

◆ operator circular_t *()

template<typename _desc_t , typename _circular_t , typename _device_t >
virtual dx::stream::pin< _desc_t, _circular_t, _device_t >::operator circular_t * ( ) const
inlinevirtualnoexceptinherited

◆ operator os_event()

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

◆ operator->()

template<typename _desc_t , typename _circular_t , typename _device_t >
virtual circular_t * dx::stream::pin< _desc_t, _circular_t, _device_t >::operator-> ( ) const
inlinevirtualnoexceptinherited

◆ reset()

event & dx::event< user >::reset ( uint64_t count = 0)
inlineinherited

◆ signal()

event & dx::event< user >::signal ( uint64_t count = 1)
inlineinherited

◆ signalled()

uint64_t dx::event< user >::signalled ( ) const
inlineinherited

◆ start()

template<typename desc_t , typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
void dx::proxy::stream::pin< desc_t, circular_t, device_t >::start ( uint64_t )
inlineoverride

◆ stop()

template<typename _desc_t , typename _circular_t , typename _device_t >
virtual void dx::stream::pin< _desc_t, _circular_t, _device_t >::stop ( bool force = false)
inlinevirtualnoexceptinherited
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ wait() [1/2]

event & dx::event< user >::wait ( bool reset = false)
inlineinherited

◆ wait() [2/2]

template<typename rep_t , typename period_t >
bool dx::event< user >::wait ( const std::chrono::duration< rep_t, period_t > & timeout,
bool reset = false )
inlineinherited

wait with duration timeout returns true: signalled false: timed out

Member Data Documentation

◆ control

template<typename desc_t , typename circular_t = dx::circular, typename device_t = dx::proxy::stream::device<desc_t>>
dx::stream::channel::control* dx::proxy::stream::pin< desc_t, circular_t, device_t >::control = nullptr

◆ launched

bool dx::object::launched {}
inherited

◆ scope

static constexpr auto dx::event< kernel >::scope = kernel
staticconstexprinherited

◆ stream

template<typename _desc_t , typename _circular_t , typename _device_t >
stream_t& dx::stream::pin< _desc_t, _circular_t, _device_t >::stream
inherited

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

(c) copyright 2009 dynamic acoustics e.U. generated on Fri Dec 20 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.