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

#include <dx_stream_stream.h>

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

Classes

struct  cache
 
class  pause
 

Public Member Functions

virtual streamabort ()
 
template<unsigned int channels, typename channel_t >
streamattach (channel_t **io[2], uint64_t channel_map[(channels+63)/64])
 
virtual streamclear ()
 
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 ()
 
 dx_catchall_rethrow ()
 
 dx_catchall_rethrow (cache.status=exception.error;) virtual stream &flush() noexcept
 
virtual float encoder (dx::stream::encoder::index::type type, unsigned int index) const
 
virtual bool encoder (dx::stream::encoder::index::type type, unsigned int index, float value)
 
void exception (const class exception &exception, bool filtered=false) const noexcept override
 
virtual void exception (const exception &exception, bool filtered=false) const noexcept=0
 notification exception handler
 
virtual void info (std::ostream &os)
 log object class information
 
virtual void initialize ()
 
virtual uint32_t latency () noexcept
 
void launch () override
 launch notification: object mounted and ready to use
 
 operator circular_t * () const noexcept
 
circular_t * operator-> () const noexcept
 
virtual streamreset ()
 
virtual uint32_t samplerate () try
 provisional sample rate handler: needs to move into clock class
 
virtual uint32_t samplerate (uint32_t samplerate) try
 
virtual streamsignal ()
 
virtual void start (uint64_t frame, unsigned int starting=1) try
 
virtual os_result status () noexcept
 
virtual unsigned int stop (bool force=false) noexcept
 
 stream (device_t &device, const desc &desc)
 creates circular streaming backing store and frame buffers
 
virtual uint8_t submit (dx::stream::encoder::index::type type, unsigned int index) const
 
virtual bool submit (dx::stream::encoder::index::type type, unsigned int index, uint8_t value)
 submit encoder stage to device return true if successfully submitted; if false is returned the encode state machine will not update the stage value (i.e. if the stage can't be submitted during streaming pause), given the chance to submit the stage at start().
 
virtual streamwait ()
 
 ~stream () noexcept override
 

Public Attributes

bool launched {}
 
std::atomic< int > started {}
 

Protected Types

typedef struct device_t::desc::stream desc
 

Protected Member Functions

streamfree () noexcept
 

Protected Attributes

struct dx::stream::stream::cache cache
 
circular_t * circular = nullptr
 
device_t & device
 
std::recursive_mutex start_stop_in_progress
 start/stop operation in progress
 

Friends

class pause
 

Member Typedef Documentation

◆ desc

template<typename device_t , typename circular_t = dx::circular>
typedef struct device_t::desc::stream dx::stream::stream< device_t, circular_t >::desc
protected

Constructor & Destructor Documentation

◆ stream()

template<typename device_t , typename circular_t = dx::circular>
dx::stream::stream< device_t, circular_t >::stream ( device_t & device,
const desc & desc )
inline

creates circular streaming backing store and frame buffers

◆ ~stream()

template<typename device_t , typename circular_t = dx::circular>
dx::stream::stream< device_t, circular_t >::~stream ( )
inlineoverridenoexcept

Member Function Documentation

◆ abort()

template<typename device_t , typename circular_t = dx::circular>
virtual stream & dx::stream::stream< device_t, circular_t >::abort ( )
inlinevirtual
+ Here is the caller graph for this function:

◆ attach()

template<typename device_t , typename circular_t = dx::circular>
template<unsigned int channels, typename channel_t >
stream & dx::stream::stream< device_t, circular_t >::attach ( channel_t ** io[2],
uint64_t channel_map[(channels+63)/64] )
inline

◆ clear()

template<typename device_t , typename circular_t = dx::circular>
virtual stream & dx::stream::stream< device_t, circular_t >::clear ( )
inlinevirtual
+ Here is the caller graph for this function:

◆ 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 device_t , typename circular_t = dx::circular>
dx::stream::stream< device_t, circular_t >::dx_catchall_rethrow ( )

◆ dx_catchall_rethrow() [2/3]

template<typename device_t , typename circular_t = dx::circular>
dx::stream::stream< device_t, circular_t >::dx_catchall_rethrow ( )

◆ dx_catchall_rethrow() [3/3]

template<typename device_t , typename circular_t = dx::circular>
dx::stream::stream< device_t, circular_t >::dx_catchall_rethrow ( cache. status = exception.error;) &
inlinenoexcept

◆ encoder() [1/2]

template<typename device_t , typename circular_t = dx::circular>
virtual float dx::stream::stream< device_t, circular_t >::encoder ( dx::stream< device_t, circular_t >::encoder::index::type type,
unsigned int index ) const
inlinevirtual

◆ encoder() [2/2]

template<typename device_t , typename circular_t = dx::circular>
virtual bool dx::stream::stream< device_t, circular_t >::encoder ( dx::stream< device_t, circular_t >::encoder::index::type type,
unsigned int index,
float value )
inlinevirtual
+ Here is the caller graph for this function:

◆ exception() [1/2]

template<typename device_t , typename circular_t = dx::circular>
void dx::stream::stream< device_t, circular_t >::exception ( const class exception & exception,
bool filtered = false ) const
inlineoverridenoexcept

◆ exception() [2/2]

virtual void dx::object::exception ( const exception & exception,
bool filtered = false ) const
pure virtualnoexceptinherited

◆ free()

template<typename device_t , typename circular_t = dx::circular>
stream & dx::stream::stream< device_t, circular_t >::free ( )
inlineprotectednoexcept

◆ info()

◆ initialize()

template<typename device_t , typename circular_t = dx::circular>
virtual void dx::stream::stream< device_t, circular_t >::initialize ( )
inlinevirtual
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ latency()

template<typename device_t , typename circular_t = dx::circular>
virtual uint32_t dx::stream::stream< device_t, circular_t >::latency ( )
inlinevirtualnoexcept

◆ launch()

template<typename device_t , typename circular_t = dx::circular>
void dx::stream::stream< device_t, circular_t >::launch ( )
inlineoverridevirtual

launch notification: object mounted and ready to use

Reimplemented from dx::object.

◆ operator circular_t *()

template<typename device_t , typename circular_t = dx::circular>
dx::stream::stream< device_t, circular_t >::operator circular_t * ( ) const
inlinenoexcept

◆ operator->()

template<typename device_t , typename circular_t = dx::circular>
circular_t * dx::stream::stream< device_t, circular_t >::operator-> ( ) const
inlinenoexcept

◆ reset()

template<typename device_t , typename circular_t = dx::circular>
virtual stream & dx::stream::stream< device_t, circular_t >::reset ( )
inlinevirtual
+ Here is the caller graph for this function:

◆ samplerate() [1/2]

template<typename device_t , typename circular_t = dx::circular>
virtual uint32_t dx::stream::stream< device_t, circular_t >::samplerate ( )
inlinevirtual

provisional sample rate handler: needs to move into clock class

Todo
reference dedicated usb::stream::device::clock class
+ Here is the call graph for this function:

◆ samplerate() [2/2]

template<typename device_t , typename circular_t = dx::circular>
virtual uint32_t dx::stream::stream< device_t, circular_t >::samplerate ( uint32_t samplerate)
inlinevirtual
+ Here is the call graph for this function:

◆ signal()

template<typename device_t , typename circular_t = dx::circular>
virtual stream & dx::stream::stream< device_t, circular_t >::signal ( )
inlinevirtual
+ Here is the caller graph for this function:

◆ start()

template<typename device_t , typename circular_t = dx::circular>
virtual void dx::stream::stream< device_t, circular_t >::start ( uint64_t frame,
unsigned int starting = 1 )
inlinevirtual
+ Here is the call graph for this function:

◆ status()

template<typename device_t , typename circular_t = dx::circular>
virtual os_result dx::stream::stream< device_t, circular_t >::status ( )
inlinevirtualnoexcept

◆ stop()

template<typename device_t , typename circular_t = dx::circular>
virtual unsigned int dx::stream::stream< device_t, circular_t >::stop ( bool force = false)
inlinevirtualnoexcept
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ submit() [1/2]

template<typename device_t , typename circular_t = dx::circular>
virtual uint8_t dx::stream::stream< device_t, circular_t >::submit ( dx::stream< device_t, circular_t >::encoder::index::type type,
unsigned int index ) const
inlinevirtual

◆ submit() [2/2]

template<typename device_t , typename circular_t = dx::circular>
virtual bool dx::stream::stream< device_t, circular_t >::submit ( dx::stream< device_t, circular_t >::encoder::index::type type,
unsigned int index,
uint8_t value )
inlinevirtual

submit encoder stage to device return true if successfully submitted; if false is returned the encode state machine will not update the stage value (i.e. if the stage can't be submitted during streaming pause), given the chance to submit the stage at start().

◆ wait()

template<typename device_t , typename circular_t = dx::circular>
virtual stream & dx::stream::stream< device_t, circular_t >::wait ( )
inlinevirtual
+ Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ pause

template<typename device_t , typename circular_t = dx::circular>
friend class pause
friend

Member Data Documentation

◆ cache

template<typename device_t , typename circular_t = dx::circular>
struct dx::stream::stream::cache dx::stream::stream< device_t, circular_t >::cache
protected

◆ circular

template<typename device_t , typename circular_t = dx::circular>
circular_t* dx::stream::stream< device_t, circular_t >::circular = nullptr
protected

◆ device

template<typename device_t , typename circular_t = dx::circular>
device_t& dx::stream::stream< device_t, circular_t >::device
protected

◆ launched

bool dx::object::launched {}
inherited

◆ start_stop_in_progress

template<typename device_t , typename circular_t = dx::circular>
std::recursive_mutex dx::stream::stream< device_t, circular_t >::start_stop_in_progress
protected

start/stop operation in progress

◆ started

template<typename device_t , typename circular_t = dx::circular>
std::atomic<int> dx::stream::stream< device_t, circular_t >::started {}

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.