nidas
v1.2-1520
|
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>
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... | |
Sample * | nextSample (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... | |
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.
DriverSampleScanner::DriverSampleScanner | ( | int | bufsize = 8192 | ) |
|
inlineinherited |
References nidas::core::SampleScanner::_nbytes.
|
inlineinherited |
References nidas::core::SampleScanner::_currentIndex, nidas::core::SampleScanner::_maxSampleLength, nidas::core::SampleScanner::_minSampleLength, and nidas::core::SampleScanner::_nsamples.
Referenced by nextSample(), nidas::core::DatagramSampleScanner::nextSample(), nidas::core::MessageStreamScanner::nextSampleByLength(), nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), and nidas::core::MessageStreamScanner::requestBiggerSample().
|
virtualinherited |
Update the sensor sampling statistics: samples/sec, bytes/sec, min/max sample size, that can be accessed via getObservedSamplingRate(), getObservedDataRate() etc.
Should be called every periodUsec by a user of this sensor.
periodUsec | Statistics period. |
References nidas::core::SampleScanner::_currentIndex, nidas::core::SampleScanner::_dataRateObs, nidas::core::SampleScanner::_maxSampleLength, nidas::core::SampleScanner::_minSampleLength, nidas::core::SampleScanner::_nbytes, nidas::core::SampleScanner::_nsamples, nidas::core::SampleScanner::_reportIndex, nidas::core::SampleScanner::_sampleRateObs, and USECS_PER_SEC.
Referenced by nidas::core::DSMSensor::calcStatistics().
|
virtualinherited |
References nidas::core::SampleScanner::_bufhead, and nidas::core::SampleScanner::_buftail.
Referenced by nidas::core::DSMSensor::clearBuffer().
|
inlinevirtualinherited |
Returns an empty string.
Reimplemented in nidas::core::MessageStreamScanner, and nidas::core::MessageSampleScanner.
References nidas::core::SampleScanner::_emptyString.
|
inlineinherited |
References nidas::core::SampleScanner::_badTimeTags.
Referenced by nidas::core::DSMSensor::getBadTimeTagCount().
|
inlineinherited |
References nidas::core::SampleScanner::_bufhead, and nidas::core::SampleScanner::_buftail.
|
inlineinherited |
References nidas::core::SampleScanner::_maxSampleLength, and nidas::core::SampleScanner::_reportIndex.
Referenced by nidas::core::DSMSensor::getMaxSampleLength().
|
inlinevirtualinherited |
Returns 0.
Reimplemented in nidas::core::MessageStreamScanner, and nidas::core::MessageSampleScanner.
|
inlinevirtualinherited |
Returns an empty string.
Reimplemented in nidas::core::MessageStreamScanner, and nidas::core::MessageSampleScanner.
References nidas::core::SampleScanner::_emptyString.
|
inlinevirtualinherited |
Reimplemented in nidas::core::MessageStreamScanner, and nidas::core::MessageSampleScanner.
|
inlineinherited |
|
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().
|
inherited |
|
inherited |
|
inlineinherited |
|
inlineinherited |
References nidas::core::SampleScanner::_badTimeTags.
Referenced by nextSample().
|
virtualinherited |
Initialize the scanner.
Must be called by a user of SampleScanner prior to calling readSamples().
References nidas::core::SampleScanner::resetStatistics().
Extract the next sample from the buffer.
Returns NULL if there are no more samples in the buffer.
Implements nidas::core::SampleScanner.
References nidas::core::SampleScanner::_buffer, nidas::core::SampleScanner::_bufhead, nidas::core::SampleScanner::_buftail, nidas::core::SampleScanner::_header, nidas::core::SampleScanner::_osamp, nidas::core::SampleScanner::_outSampDataPtr, nidas::core::SampleScanner::_outSampRead, nidas::core::SampleScanner::_outSampToRead, nidas::core::SampleClock::addSampleDate(), nidas::core::SampleScanner::addSampleToStats(), nidas::core::Sample::freeReference(), nidas::core::Sample::getDataByteLength(), nidas::core::DSMSensor::getDriverTimeTagUsecs(), nidas::core::DSMSensor::getId(), nidas::core::SampleClock::getInstance(), nidas::core::Sample::getVoidDataPtr(), nidas::core::SampleScanner::incrementBadTimeTags(), len, dsm_sample::length, nidas::core::SampleClock::OK, nidas::core::Sample::setDataLength(), nidas::core::Sample::setId(), nidas::core::Sample::setTimeTag(), SIZEOF_DSM_SAMPLE_HEADER, and dsm_sample::timetag.
|
virtualinherited |
Read from the sensor into the internal buffer of this SampleScanner.
Reimplemented in nidas::core::DatagramSampleScanner, and nidas::core::MessageStreamScanner.
References DLOG, nidas::core::Project::getInstance(), and len.
Referenced by nidas::core::SampleScanner::readBuffer(), nidas::core::MessageStreamScanner::readBuffer(), and nidas::core::DSMSensor::readBuffer().
|
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().
|
virtualinherited |
References nidas::core::SampleScanner::_badTimeTags, nidas::core::SampleScanner::_currentIndex, nidas::core::SampleScanner::_dataRateObs, nidas::core::SampleScanner::_initialTimeSecs, nidas::core::SampleScanner::_maxSampleLength, nidas::core::SampleScanner::_minSampleLength, nidas::core::SampleScanner::_nbytes, nidas::core::SampleScanner::_nsamples, nidas::core::SampleScanner::_reportIndex, and nidas::core::SampleScanner::_sampleRateObs.
Referenced by nidas::core::SampleScanner::init(), and nidas::core::SampleScanner::SampleScanner().
|
inlinevirtual |
setMessageSeparator is not implemented in DriverSampleScanner.
Throws nidas::util::InvalidParameterException.
Implements nidas::core::SampleScanner.
Reimplemented in nidas::core::MessageSampleScanner.
|
inlineinherited |
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Referenced by nidas::core::SampleScanner::clearBuffer(), nidas::core::SampleScanner::getBytesInBuffer(), nextSample(), nidas::core::DatagramSampleScanner::nextSample(), nidas::core::MessageStreamScanner::nextSampleByLength(), nidas::core::MessageStreamScanner::nextSampleSepBOM(), and nidas::core::MessageStreamScanner::nextSampleSepEOM().
|
protectedinherited |
Referenced by nextSample().
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Referenced by nextSample(), nidas::core::MessageStreamScanner::nextSampleByLength(), nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), nidas::core::MessageStreamScanner::requestBiggerSample(), and nidas::core::SampleScanner::~SampleScanner().
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Referenced by nextSample().
|
protectedinherited |
messageSeparator in a C string.
Referenced by nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), and nidas::core::SampleScanner::~SampleScanner().
|
protectedinherited |
|
protectedinherited |
Length of messageSeparator.
Referenced by nidas::core::MessageStreamScanner::nextSampleSepBOM(), and nidas::core::MessageStreamScanner::nextSampleSepEOM().
|
protectedinherited |
Buffer size for reading from sensor.