nidas v1.2.3
Public Member Functions | Protected Attributes | Private Attributes | List of all members
nidas::core::DatagramSampleScanner Class Reference

#include <SampleScanner.h>

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

Public Member Functions

 DatagramSampleScanner (int bufsize=16384)
 
void setMessageParameters (unsigned int, const std::string &, bool)
 setMessageSeparator is not implemented in DatagramSampleScanner.
 
size_t readBuffer (DSMSensor *sensor, bool &exhausted)
 Read from the sensor into the internal buffer of this SampleScanner.
 
SamplenextSample (DSMSensor *sensor)
 Extract the next sample from the buffer.
 
void setNullTerminate (bool val)
 User of DatagramSampleScanner should specify if they want the samples to be null terminated.
 
bool getNullTerminate () const
 Should the SampleScanner append a null character, '\0', to the messages.
 
virtual void init ()
 Initialize the scanner.
 
virtual const std::string & getMessageSeparator () const
 Returns an empty string.
 
virtual const std::string getBackslashedMessageSeparator () const
 Returns an empty string.
 
virtual bool getMessageSeparatorAtEOM () const
 
virtual unsigned int getMessageLength () const
 Returns 0.
 
void setUsecsPerByte (int val)
 
int getUsecsPerByte () const
 
virtual size_t readBuffer (DSMSensor *sensor, bool &exhausted, int msecTimeout)
 Read from the sensor into the internal buffer of this SampleScanner, providing a timeout in milliseconds.
 
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.
 
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.
 
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.
 
int _separatorLen
 Length of messageSeparator.
 

Private Attributes

std::list< int_packetLengths
 
std::list< dsm_time_t_packetTimes
 
bool _nullTerminate
 
std::string _emptyString
 
time_t _initialTimeSecs
 
unsigned int _minSampleLength [2]
 
unsigned int _maxSampleLength [2]
 
int _currentIndex
 
int _reportIndex
 
size_t _nsamples
 
size_t _nbytes
 
unsigned int _badTimeTags
 
float _sampleRateObs
 Observed number of samples per second.
 
float _dataRateObs
 
int _usecsPerByte
 

Constructor & Destructor Documentation

◆ DatagramSampleScanner()

DatagramSampleScanner::DatagramSampleScanner ( int bufsize = 16384)

Member Function Documentation

◆ addNumBytesToStats()

void nidas::core::SampleScanner::addNumBytesToStats ( size_t val)
inlineinherited

◆ addSampleToStats()

void nidas::core::SampleScanner::addSampleToStats ( unsigned int val)
inlineinherited

◆ calcStatistics()

void SampleScanner::calcStatistics ( unsigned int periodUsec)
virtualinherited

◆ clearBuffer()

void SampleScanner::clearBuffer ( )
virtualinherited

◆ getBackslashedMessageSeparator()

virtual const std::string nidas::core::SampleScanner::getBackslashedMessageSeparator ( ) const
inlinevirtualinherited

◆ getBadTimeTagCount()

unsigned int nidas::core::SampleScanner::getBadTimeTagCount ( ) const
inlineinherited

◆ getBytesInBuffer()

unsigned int nidas::core::SampleScanner::getBytesInBuffer ( ) const
inlineinherited

◆ getMaxSampleLength()

unsigned int nidas::core::SampleScanner::getMaxSampleLength ( ) const
inlineinherited

◆ getMessageLength()

virtual unsigned int nidas::core::SampleScanner::getMessageLength ( ) const
inlinevirtualinherited

◆ getMessageSeparator()

virtual const std::string & nidas::core::SampleScanner::getMessageSeparator ( ) const
inlinevirtualinherited

◆ getMessageSeparatorAtEOM()

virtual bool nidas::core::SampleScanner::getMessageSeparatorAtEOM ( ) const
inlinevirtualinherited

◆ getMinSampleLength()

unsigned int nidas::core::SampleScanner::getMinSampleLength ( ) const
inlineinherited

◆ getNullTerminate()

bool nidas::core::DatagramSampleScanner::getNullTerminate ( ) const
inlinevirtual

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

Reimplemented from nidas::core::SampleScanner.

References _nullTerminate.

Referenced by nextSample().

◆ getObservedDataRate()

float SampleScanner::getObservedDataRate ( ) const
inherited

◆ getObservedSamplingRate()

float SampleScanner::getObservedSamplingRate ( ) const
inherited

◆ getUsecsPerByte()

int nidas::core::SampleScanner::getUsecsPerByte ( ) const
inlineinherited

◆ incrementBadTimeTags()

void nidas::core::SampleScanner::incrementBadTimeTags ( )
inlineinherited

◆ init()

void SampleScanner::init ( )
virtualinherited

Initialize the scanner.

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

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

Referenced by nidas::core::DSMSensor::open().

◆ nextSample()

Sample * DatagramSampleScanner::nextSample ( DSMSensor * sensor)
virtual

◆ readBuffer() [1/2]

size_t DatagramSampleScanner::readBuffer ( DSMSensor * sensor,
bool & exhausted )
virtual

◆ readBuffer() [2/2]

size_t SampleScanner::readBuffer ( DSMSensor * sensor,
bool & exhausted,
int msecTimeout )
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.

Exceptions
nidas::util::IOException

Reimplemented in nidas::core::MessageStreamScanner.

References nidas::core::DSMSensor::getName(), nidas::core::DSMSensor::getReadFd(), nidas::core::getSample(), MSECS_PER_SEC, NLOG, NSECS_PER_MSEC, and nidas::core::SampleScanner::readBuffer().

◆ resetStatistics()

void SampleScanner::resetStatistics ( )
virtualinherited

◆ setMessageParameters()

void nidas::core::DatagramSampleScanner::setMessageParameters ( unsigned int ,
const std::string & ,
bool  )
inlinevirtual

◆ setNullTerminate()

void nidas::core::DatagramSampleScanner::setNullTerminate ( bool val)
inline

User of DatagramSampleScanner should specify if they want the samples to be null terminated.

In general, if this SampleScanner is used by a CharacterSensor with a scanfFormat defined for one or more samples, then the samples should be null terminated.

References _nullTerminate, and nidas::core::getSample().

◆ setUsecsPerByte()

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

Member Data Documentation

◆ _badTimeTags

unsigned int nidas::core::SampleScanner::_badTimeTags
privateinherited

◆ _buffer

char* nidas::core::SampleScanner::_buffer
protectedinherited

◆ _bufhead

unsigned int nidas::core::SampleScanner::_bufhead
protectedinherited

◆ _buftail

unsigned int nidas::core::SampleScanner::_buftail
protectedinherited

◆ _currentIndex

int nidas::core::SampleScanner::_currentIndex
privateinherited

◆ _dataRateObs

float nidas::core::SampleScanner::_dataRateObs
privateinherited

◆ _emptyString

std::string nidas::core::SampleScanner::_emptyString
privateinherited

◆ _header

struct dsm_sample nidas::core::SampleScanner::_header
protectedinherited

◆ _initialTimeSecs

time_t nidas::core::SampleScanner::_initialTimeSecs
privateinherited

◆ _maxSampleLength

unsigned int nidas::core::SampleScanner::_maxSampleLength[2]
privateinherited

◆ _messageLength

int nidas::core::SampleScanner::_messageLength
protectedinherited

◆ _messageSeparator

std::string nidas::core::SampleScanner::_messageSeparator
protectedinherited

◆ _minSampleLength

unsigned int nidas::core::SampleScanner::_minSampleLength[2]
privateinherited

◆ _nbytes

size_t nidas::core::SampleScanner::_nbytes
privateinherited

◆ _nsamples

size_t nidas::core::SampleScanner::_nsamples
privateinherited

◆ _nullTerminate

bool nidas::core::DatagramSampleScanner::_nullTerminate
private

◆ _osamp

Sample* nidas::core::SampleScanner::_osamp
protectedinherited

◆ _outSampDataPtr

char* nidas::core::SampleScanner::_outSampDataPtr
protectedinherited

◆ _outSampRead

unsigned int nidas::core::SampleScanner::_outSampRead
protectedinherited

◆ _outSampToRead

unsigned int nidas::core::SampleScanner::_outSampToRead
protectedinherited

◆ _packetLengths

std::list<int> nidas::core::DatagramSampleScanner::_packetLengths
private

Referenced by nextSample(), and readBuffer().

◆ _packetTimes

std::list<dsm_time_t> nidas::core::DatagramSampleScanner::_packetTimes
private

Referenced by nextSample(), and readBuffer().

◆ _reportIndex

int nidas::core::SampleScanner::_reportIndex
privateinherited

◆ _sampleRateObs

float nidas::core::SampleScanner::_sampleRateObs
privateinherited

◆ _separator

char* nidas::core::SampleScanner::_separator
protectedinherited

◆ _separatorAtEOM

bool nidas::core::SampleScanner::_separatorAtEOM
protectedinherited

◆ _separatorLen

int nidas::core::SampleScanner::_separatorLen
protectedinherited

◆ _usecsPerByte

int nidas::core::SampleScanner::_usecsPerByte
privateinherited

◆ BUFSIZE

const unsigned int nidas::core::SampleScanner::BUFSIZE
protectedinherited

Buffer size for reading from sensor.

Referenced by nidas::core::SampleScanner::readBuffer(), and readBuffer().


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