nidas v1.2.3
|
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>
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::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 |
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 | ) |
References nidas::core::SampleScanner::_nbytes, and nidas::core::getSample().
Referenced by nidas::core::SampleScanner::readBuffer(), and nidas::core::DatagramSampleScanner::readBuffer().
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().
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, nidas::core::getSample(), 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::MessageSampleScanner, and nidas::core::MessageStreamScanner.
References nidas::core::SampleScanner::_emptyString.
References nidas::core::SampleScanner::_badTimeTags.
Referenced by nidas::core::DSMSensor::getBadTimeTagCount().
References nidas::core::SampleScanner::_bufhead, and nidas::core::SampleScanner::_buftail.
References nidas::core::SampleScanner::_maxSampleLength, and nidas::core::SampleScanner::_reportIndex.
Referenced by nidas::core::DSMSensor::getMaxSampleLength().
Returns 0.
Reimplemented in nidas::core::MessageSampleScanner, and nidas::core::MessageStreamScanner.
|
inlinevirtualinherited |
Returns an empty string.
Reimplemented in nidas::core::MessageSampleScanner, and nidas::core::MessageStreamScanner.
References nidas::core::SampleScanner::_emptyString.
Reimplemented in nidas::core::MessageSampleScanner, and nidas::core::MessageStreamScanner.
Should the SampleScanner append a null character, '\0', to the messages.
Reimplemented in nidas::core::MessageStreamScanner, and nidas::core::DatagramSampleScanner.
Referenced by nidas::core::CharacterSensor::getNullTerminated().
|
inherited |
|
inherited |
|
inlineinherited |
References nidas::core::SampleScanner::_usecsPerByte.
Referenced by nidas::core::MessageStreamScanner::nextSampleByLength(), nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), nidas::core::MessageStreamScanner::readBuffer(), and nidas::core::MessageStreamScanner::readBuffer().
|
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().
Referenced by nidas::core::DSMSensor::open().
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::SampleScanner::addSampleToStats(), nidas::core::Sample::freeReference(), nidas::core::Sample::getDataByteLength(), nidas::core::DSMSensor::getDriverTimeTagUsecs(), nidas::core::DSMSensor::getId(), nidas::core::SampleClock::getInstance(), nidas::core::getSample(), nidas::core::Sample::getVoidDataPtr(), nidas::core::SampleScanner::incrementBadTimeTags(), len, nidas::core::SampleClock::OK, nidas::core::Sample::setDataLength(), nidas::core::Sample::setId(), nidas::core::Sample::setTimeTag(), and SIZEOF_DSM_SAMPLE_HEADER.
Read from the sensor into the internal buffer of this SampleScanner.
nidas::util::IOException |
Reimplemented in nidas::core::MessageStreamScanner, and nidas::core::DatagramSampleScanner.
References nidas::core::SampleScanner::_buffer, nidas::core::SampleScanner::_bufhead, nidas::core::SampleScanner::_buftail, nidas::core::SampleScanner::addNumBytesToStats(), nidas::core::SampleScanner::BUFSIZE, DLOG, nidas::core::DSMSensor::getDSMId(), nidas::core::Project::getInstance(), nidas::core::DSMSensor::getName(), nidas::core::getSample(), nidas::core::DSMSensor::getSensorId(), len, and nidas::core::DSMSensor::read().
Referenced by nidas::core::DSMSensor::readBuffer(), nidas::core::MessageStreamScanner::readBuffer(), 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.
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().
|
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, nidas::core::SampleScanner::_sampleRateObs, and nidas::core::getSample().
Referenced by nidas::core::SampleScanner::init(), and nidas::core::SampleScanner::SampleScanner().
|
inlinevirtual |
setMessageSeparator is not implemented in DriverSampleScanner.
Throws nidas::util::InvalidParameterException.
nidas::util::InvalidParameterException |
Implements nidas::core::SampleScanner.
Reimplemented in nidas::core::MessageSampleScanner.
References nidas::core::SampleScanner::_usecsPerByte, and nidas::core::getSample().
Referenced by nidas::dynld::ModbusRTU::open().
|
protectedinherited |
Referenced by nextSample(), nidas::core::DatagramSampleScanner::nextSample(), nidas::core::MessageStreamScanner::nextSampleByLength(), nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), nidas::core::SampleScanner::readBuffer(), nidas::core::DatagramSampleScanner::readBuffer(), and nidas::core::SampleScanner::~SampleScanner().
Referenced by nidas::core::SampleScanner::clearBuffer(), nidas::core::SampleScanner::getBytesInBuffer(), nextSample(), nidas::core::MessageStreamScanner::nextSampleByLength(), nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), nidas::core::SampleScanner::readBuffer(), and nidas::core::DatagramSampleScanner::readBuffer().
Referenced by nidas::core::SampleScanner::clearBuffer(), nidas::core::SampleScanner::getBytesInBuffer(), nextSample(), nidas::core::DatagramSampleScanner::nextSample(), nidas::core::MessageStreamScanner::nextSampleByLength(), nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), nidas::core::SampleScanner::readBuffer(), and nidas::core::DatagramSampleScanner::readBuffer().
|
privateinherited |
|
privateinherited |
|
privateinherited |
|
protectedinherited |
Referenced by nextSample().
|
privateinherited |
|
protectedinherited |
|
protectedinherited |
Referenced by nidas::core::MessageSampleScanner::getBackslashedMessageSeparator(), nidas::core::MessageStreamScanner::getBackslashedMessageSeparator(), nidas::core::MessageSampleScanner::getMessageSeparator(), nidas::core::MessageStreamScanner::getMessageSeparator(), nidas::core::MessageSampleScanner::setMessageParameters(), and nidas::core::MessageStreamScanner::setMessageParameters().
|
privateinherited |
|
privateinherited |
|
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 |
Referenced by nextSample().
|
privateinherited |
Referenced by nidas::core::SampleScanner::calcStatistics(), nidas::core::SampleScanner::getMaxSampleLength(), nidas::core::SampleScanner::getMinSampleLength(), nidas::core::SampleScanner::getObservedDataRate(), nidas::core::SampleScanner::getObservedSamplingRate(), and nidas::core::SampleScanner::resetStatistics().
|
privateinherited |
Observed number of samples per second.
Referenced by nidas::core::SampleScanner::calcStatistics(), nidas::core::SampleScanner::getObservedSamplingRate(), and nidas::core::SampleScanner::resetStatistics().
|
protectedinherited |
messageSeparator in a C string.
Referenced by nidas::core::MessageStreamScanner::nextSampleSepBOM(), nidas::core::MessageStreamScanner::nextSampleSepEOM(), nidas::core::MessageStreamScanner::setMessageParameters(), and nidas::core::SampleScanner::~SampleScanner().
|
protectedinherited |
|
protectedinherited |
|
privateinherited |
Buffer size for reading from sensor.
Referenced by nidas::core::SampleScanner::readBuffer(), and nidas::core::DatagramSampleScanner::readBuffer().