nidas  v1.2-1520
Public Member Functions | Protected Attributes | List of all members
nidas::core::DriverSampleScanner Class Reference

A SampleScanner for reading samples that have been pre-formatted by a device driver - they already have a header consisting of a timetag, and a data length. More...

#include <SampleScanner.h>

Inheritance diagram for nidas::core::DriverSampleScanner:
Inheritance graph
[legend]

Public Member Functions

 DriverSampleScanner (int bufsize=8192)
 
void setMessageParameters (unsigned int, const std::string &, bool) throw (nidas::util::InvalidParameterException)
 setMessageSeparator is not implemented in DriverSampleScanner. More...
 
SamplenextSample (DSMSensor *sensor)
 Extract the next sample from the buffer. More...
 
virtual void init ()
 Initialize the scanner. More...
 
virtual const std::string & getMessageSeparator () const
 Returns an empty string. More...
 
virtual const std::string getBackslashedMessageSeparator () const
 Returns an empty string. More...
 
virtual bool getMessageSeparatorAtEOM () const
 
virtual unsigned int getMessageLength () const
 Returns 0. More...
 
virtual bool getNullTerminate () const
 Should the SampleScanner append a null character, '\0', to the messages. More...
 
void setUsecsPerByte (int val)
 
int getUsecsPerByte () const
 
virtual size_t readBuffer (DSMSensor *sensor, bool &exhausted) throw (nidas::util::IOException)
 Read from the sensor into the internal buffer of this SampleScanner. More...
 
virtual size_t readBuffer (DSMSensor *sensor, bool &exhausted, int msecTimeout) throw (nidas::util::IOException)
 Read from the sensor into the internal buffer of this SampleScanner, providing a timeout in milliseconds. More...
 
virtual void clearBuffer ()
 
unsigned int getBytesInBuffer () const
 
virtual void resetStatistics ()
 
virtual void calcStatistics (unsigned int periodUsec)
 Update the sensor sampling statistics: samples/sec, bytes/sec, min/max sample size, that can be accessed via getObservedSamplingRate(), getObservedDataRate() etc. More...
 
unsigned int getMaxSampleLength () const
 
unsigned int getMinSampleLength () const
 
unsigned int getBadTimeTagCount () const
 
float getObservedSamplingRate () const
 
float getObservedDataRate () const
 
void addNumBytesToStats (size_t val)
 
void addSampleToStats (unsigned int val)
 
void incrementBadTimeTags ()
 

Protected Attributes

const unsigned int BUFSIZE
 Buffer size for reading from sensor. More...
 
char * _buffer
 
unsigned int _bufhead
 
unsigned int _buftail
 
Sample_osamp
 
struct dsm_sample _header
 
unsigned int _outSampRead
 
unsigned int _outSampToRead
 
char * _outSampDataPtr
 
std::string _messageSeparator
 
int _messageLength
 
bool _separatorAtEOM
 
char * _separator
 messageSeparator in a C string. More...
 
int _separatorLen
 Length of messageSeparator. More...
 

Detailed Description

A SampleScanner for reading samples that have been pre-formatted by a device driver - they already have a header consisting of a timetag, and a data length.

This can be used, for example, to read samples from a driver supporting an A/D converter.

Constructor & Destructor Documentation

DriverSampleScanner::DriverSampleScanner ( int  bufsize = 8192)

Member Function Documentation

void nidas::core::SampleScanner::addNumBytesToStats ( size_t  val)
inlineinherited
void nidas::core::SampleScanner::addSampleToStats ( unsigned int  val)
inlineinherited
void SampleScanner::calcStatistics ( unsigned int  periodUsec)
virtualinherited
void SampleScanner::clearBuffer ( )
virtualinherited
virtual const std::string nidas::core::SampleScanner::getBackslashedMessageSeparator ( ) const
inlinevirtualinherited
unsigned int nidas::core::SampleScanner::getBadTimeTagCount ( ) const
inlineinherited
unsigned int nidas::core::SampleScanner::getBytesInBuffer ( ) const
inlineinherited
unsigned int nidas::core::SampleScanner::getMaxSampleLength ( ) const
inlineinherited
virtual unsigned int nidas::core::SampleScanner::getMessageLength ( ) const
inlinevirtualinherited
virtual const std::string& nidas::core::SampleScanner::getMessageSeparator ( ) const
inlinevirtualinherited
virtual bool nidas::core::SampleScanner::getMessageSeparatorAtEOM ( ) const
inlinevirtualinherited
unsigned int nidas::core::SampleScanner::getMinSampleLength ( ) const
inlineinherited
virtual bool nidas::core::SampleScanner::getNullTerminate ( ) const
inlinevirtualinherited

Should the SampleScanner append a null character, '\0', to the messages.

Reimplemented in nidas::core::DatagramSampleScanner, and nidas::core::MessageStreamScanner.

Referenced by nidas::core::CharacterSensor::getNullTerminated().

float SampleScanner::getObservedDataRate ( ) const
inherited
float SampleScanner::getObservedSamplingRate ( ) const
inherited
int nidas::core::SampleScanner::getUsecsPerByte ( ) const
inlineinherited
void nidas::core::SampleScanner::incrementBadTimeTags ( )
inlineinherited
void SampleScanner::init ( )
virtualinherited

Initialize the scanner.

Must be called by a user of SampleScanner prior to calling readSamples().

References nidas::core::SampleScanner::resetStatistics().

Sample * DriverSampleScanner::nextSample ( DSMSensor sensor)
virtual
size_t SampleScanner::readBuffer ( DSMSensor sensor,
bool &  exhausted 
)
throw (nidas::util::IOException
)
virtualinherited
size_t SampleScanner::readBuffer ( DSMSensor sensor,
bool &  exhausted,
int  msecTimeout 
)
throw (nidas::util::IOException
)
virtualinherited

Read from the sensor into the internal buffer of this SampleScanner, providing a timeout in milliseconds.

This will throw nidas::util::IOTimeoutException if the read fails due to a timeout.

Reimplemented in nidas::core::MessageStreamScanner.

References MSECS_PER_SEC, NLOG, NSECS_PER_MSEC, and nidas::core::SampleScanner::readBuffer().

void SampleScanner::resetStatistics ( )
virtualinherited
void nidas::core::DriverSampleScanner::setMessageParameters ( unsigned int  ,
const std::string &  ,
bool   
)
throw (nidas::util::InvalidParameterException
)
inlinevirtual

setMessageSeparator is not implemented in DriverSampleScanner.

Throws nidas::util::InvalidParameterException.

Implements nidas::core::SampleScanner.

Reimplemented in nidas::core::MessageSampleScanner.

void nidas::core::SampleScanner::setUsecsPerByte ( int  val)
inlineinherited

Member Data Documentation

char* nidas::core::SampleScanner::_buffer
protectedinherited
unsigned int nidas::core::SampleScanner::_bufhead
protectedinherited
unsigned int nidas::core::SampleScanner::_buftail
protectedinherited
struct dsm_sample nidas::core::SampleScanner::_header
protectedinherited

Referenced by nextSample().

int nidas::core::SampleScanner::_messageLength
protectedinherited
std::string nidas::core::SampleScanner::_messageSeparator
protectedinherited
Sample* nidas::core::SampleScanner::_osamp
protectedinherited
char* nidas::core::SampleScanner::_outSampDataPtr
protectedinherited
unsigned int nidas::core::SampleScanner::_outSampRead
protectedinherited
unsigned int nidas::core::SampleScanner::_outSampToRead
protectedinherited

Referenced by nextSample().

char* nidas::core::SampleScanner::_separator
protectedinherited
bool nidas::core::SampleScanner::_separatorAtEOM
protectedinherited
int nidas::core::SampleScanner::_separatorLen
protectedinherited
const unsigned int nidas::core::SampleScanner::BUFSIZE
protectedinherited

Buffer size for reading from sensor.


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